@evelan/jexity-widget 0.13.1 → 0.15.0
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.mjs +4778 -2242
- package/dist/index.mjs.map +1 -1
- package/dist/react.mjs +5346 -2810
- package/dist/react.mjs.map +1 -1
- package/dist/types/features/chat/components/MagiclineFormMessage.d.ts +34 -0
- package/dist/types/features/chat/components/MagiclineFormMessage.d.ts.map +1 -0
- package/dist/types/features/chat/components/MessageList.d.ts.map +1 -1
- package/dist/types/features/chat/components/magicline/ContractCreationForm.d.ts +34 -0
- package/dist/types/features/chat/components/magicline/ContractCreationForm.d.ts.map +1 -0
- package/dist/types/features/chat/components/magicline/TrialSessionBookingForm.d.ts +34 -0
- package/dist/types/features/chat/components/magicline/TrialSessionBookingForm.d.ts.map +1 -0
- package/dist/types/features/chat/components/magicline/buildWizardSteps.d.ts +26 -0
- package/dist/types/features/chat/components/magicline/buildWizardSteps.d.ts.map +1 -0
- package/dist/types/features/chat/components/magicline/formUtils.d.ts +105 -0
- package/dist/types/features/chat/components/magicline/formUtils.d.ts.map +1 -0
- package/dist/types/features/chat/components/magicline/magiclineConstants.d.ts +21 -0
- package/dist/types/features/chat/components/magicline/magiclineConstants.d.ts.map +1 -0
- package/dist/types/features/chat/components/magicline/useContractCreationState.d.ts +152 -0
- package/dist/types/features/chat/components/magicline/useContractCreationState.d.ts.map +1 -0
- package/dist/types/features/chat/components/magicline/useTrialBookingState.d.ts +87 -0
- package/dist/types/features/chat/components/magicline/useTrialBookingState.d.ts.map +1 -0
- package/dist/types/features/chat/hooks/useMagicline.d.ts +308 -0
- package/dist/types/features/chat/hooks/useMagicline.d.ts.map +1 -0
- package/dist/types/i18n/locales/de.d.ts.map +1 -1
- package/dist/types/i18n/locales/en.d.ts +149 -0
- package/dist/types/i18n/locales/en.d.ts.map +1 -1
- package/dist/widget.js +40 -39
- package/dist/widget.js.map +1 -1
- package/package.json +6 -4
package/dist/widget.js
CHANGED
|
@@ -1,70 +1,71 @@
|
|
|
1
|
-
(function(){"use strict";var Ue,y,Wn,Jn,de,Gn,Kn,Zn,Yn,Ut,Ft,Qt,Xn,Fe={},er=[],wo=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Qe=Array.isArray;function Z(t,e){for(var n in e)t[n]=e[n];return t}function Dt(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function D(t,e,n){var r,i,o,s={};for(o in e)o=="key"?r=e[o]:o=="ref"?i=e[o]:s[o]=e[o];if(arguments.length>2&&(s.children=arguments.length>3?Ue.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return De(t,s,r,i,null)}function De(t,e,n,r,i){var o={type:t,props:e,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++Wn,__i:-1,__u:0};return i==null&&y.vnode!=null&&y.vnode(o),o}function _o(){return{current:null}}function U(t){return t.children}function W(t,e){this.props=t,this.context=e}function ke(t,e){if(e==null)return t.__?ke(t.__,t.__i+1):null;for(var n;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null)return n.__e;return typeof t.type=="function"?ke(t):null}function tr(t){var e,n;if((t=t.__)!=null&&t.__c!=null){for(t.__e=t.__c.base=null,e=0;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null){t.__e=t.__c.base=n.__e;break}return tr(t)}}function Vt(t){(!t.__d&&(t.__d=!0)&&de.push(t)&&!ht.__r++||Gn!=y.debounceRendering)&&((Gn=y.debounceRendering)||Kn)(ht)}function ht(){for(var t,e,n,r,i,o,s,l=1;de.length;)de.length>l&&de.sort(Zn),t=de.shift(),l=de.length,t.__d&&(n=void 0,r=void 0,i=(r=(e=t).__v).__e,o=[],s=[],e.__P&&((n=Z({},r)).__v=r.__v+1,y.vnode&&y.vnode(n),Ht(e.__P,n,r,e.__n,e.__P.namespaceURI,32&r.__u?[i]:null,o,i??ke(r),!!(32&r.__u),s),n.__v=r.__v,n.__.__k[n.__i]=n,sr(o,n,s),r.__e=r.__=null,n.__e!=i&&tr(n)));ht.__r=0}function nr(t,e,n,r,i,o,s,l,a,u,d){var h,f,p,g,m,x,b,v=r&&r.__k||er,L=e.length;for(a=ko(n,e,v,a,L),h=0;h<L;h++)(p=n.__k[h])!=null&&(f=p.__i==-1?Fe:v[p.__i]||Fe,p.__i=h,x=Ht(t,p,f,i,o,s,l,a,u,d),g=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&Jt(f.ref,null,p),d.push(p.ref,p.__c||g,p)),m==null&&g!=null&&(m=g),(b=!!(4&p.__u))||f.__k===p.__k?a=rr(p,a,t,b):typeof p.type=="function"&&x!==void 0?a=x:g&&(a=g.nextSibling),p.__u&=-7);return n.__e=m,a}function ko(t,e,n,r,i){var o,s,l,a,u,d=n.length,h=d,f=0;for(t.__k=new Array(i),o=0;o<i;o++)(s=e[o])!=null&&typeof s!="boolean"&&typeof s!="function"?(a=o+f,(s=t.__k[o]=typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?De(null,s,null,null,null):Qe(s)?De(U,{children:s},null,null,null):s.constructor==null&&s.__b>0?De(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):s).__=t,s.__b=t.__b+1,l=null,(u=s.__i=jo(s,n,a,h))!=-1&&(h--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>d?f--:i<d&&f++),typeof s.type!="function"&&(s.__u|=4)):u!=a&&(u==a-1?f--:u==a+1?f++:(u>a?f--:f++,s.__u|=4))):t.__k[o]=null;if(h)for(o=0;o<d;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=ke(l)),lr(l,l));return r}function rr(t,e,n,r){var i,o;if(typeof t.type=="function"){for(i=t.__k,o=0;i&&o<i.length;o++)i[o]&&(i[o].__=t,e=rr(i[o],e,n,r));return e}t.__e!=e&&(r&&(e&&t.type&&!e.parentNode&&(e=ke(t)),n.insertBefore(t.__e,e||null)),e=t.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function Y(t,e){return e=e||[],t==null||typeof t=="boolean"||(Qe(t)?t.some(function(n){Y(n,e)}):e.push(t)),e}function jo(t,e,n,r){var i,o,s,l=t.key,a=t.type,u=e[n],d=u!=null&&(2&u.__u)==0;if(u===null&&t.key==null||d&&l==u.key&&a==u.type)return n;if(r>(d?1:0)){for(i=n-1,o=n+1;i>=0||o<e.length;)if((u=e[s=i>=0?i--:o++])!=null&&(2&u.__u)==0&&l==u.key&&a==u.type)return s}return-1}function ir(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||wo.test(e)?n:n+"px"}function dt(t,e,n,r,i){var o,s;e:if(e=="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof r=="string"&&(t.style.cssText=r=""),r)for(e in r)n&&e in n||ir(t.style,e,"");if(n)for(e in n)r&&n[e]==r[e]||ir(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")o=e!=(e=e.replace(Yn,"$1")),s=e.toLowerCase(),e=s in t||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+o]=n,n?r?n.u=r.u:(n.u=Ut,t.addEventListener(e,o?Qt:Ft,o)):t.removeEventListener(e,o?Qt:Ft,o);else{if(i=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&n==1?"":n))}}function or(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e.t==null)e.t=Ut++;else if(e.t<n.u)return;return n(y.event?y.event(e):e)}}}function Ht(t,e,n,r,i,o,s,l,a,u){var d,h,f,p,g,m,x,b,v,L,M,F,Q,vo,Bt,ut,Dn,re=e.type;if(e.constructor!=null)return null;128&n.__u&&(a=!!(32&n.__u),o=[l=e.__e=n.__e]),(d=y.__b)&&d(e);e:if(typeof re=="function")try{if(b=e.props,v="prototype"in re&&re.prototype.render,L=(d=re.contextType)&&r[d.__c],M=d?L?L.props.value:d.__:r,n.__c?x=(h=e.__c=n.__c).__=h.__E:(v?e.__c=h=new re(b,M):(e.__c=h=new W(b,M),h.constructor=re,h.render=Co),L&&L.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=r,f=h.__d=!0,h.__h=[],h._sb=[]),v&&h.__s==null&&(h.__s=h.state),v&&re.getDerivedStateFromProps!=null&&(h.__s==h.state&&(h.__s=Z({},h.__s)),Z(h.__s,re.getDerivedStateFromProps(b,h.__s))),p=h.props,g=h.state,h.__v=e,f)v&&re.getDerivedStateFromProps==null&&h.componentWillMount!=null&&h.componentWillMount(),v&&h.componentDidMount!=null&&h.__h.push(h.componentDidMount);else{if(v&&re.getDerivedStateFromProps==null&&b!==p&&h.componentWillReceiveProps!=null&&h.componentWillReceiveProps(b,M),!h.__e&&h.shouldComponentUpdate!=null&&h.shouldComponentUpdate(b,h.__s,M)===!1||e.__v==n.__v){for(e.__v!=n.__v&&(h.props=b,h.state=h.__s,h.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(Be){Be&&(Be.__=e)}),F=0;F<h._sb.length;F++)h.__h.push(h._sb[F]);h._sb=[],h.__h.length&&s.push(h);break e}h.componentWillUpdate!=null&&h.componentWillUpdate(b,h.__s,M),v&&h.componentDidUpdate!=null&&h.__h.push(function(){h.componentDidUpdate(p,g,m)})}if(h.context=M,h.props=b,h.__P=t,h.__e=!1,Q=y.__r,vo=0,v){for(h.state=h.__s,h.__d=!1,Q&&Q(e),d=h.render(h.props,h.state,h.context),Bt=0;Bt<h._sb.length;Bt++)h.__h.push(h._sb[Bt]);h._sb=[]}else do h.__d=!1,Q&&Q(e),d=h.render(h.props,h.state,h.context),h.state=h.__s;while(h.__d&&++vo<25);h.state=h.__s,h.getChildContext!=null&&(r=Z(Z({},r),h.getChildContext())),v&&!f&&h.getSnapshotBeforeUpdate!=null&&(m=h.getSnapshotBeforeUpdate(p,g)),ut=d,d!=null&&d.type===U&&d.key==null&&(ut=ar(d.props.children)),l=nr(t,Qe(ut)?ut:[ut],e,n,r,i,o,s,l,a,u),h.base=e.__e,e.__u&=-161,h.__h.length&&s.push(h),x&&(h.__E=h.__=null)}catch(Be){if(e.__v=null,a||o!=null)if(Be.then){for(e.__u|=a?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o[o.indexOf(l)]=null,e.__e=l}else{for(Dn=o.length;Dn--;)Dt(o[Dn]);Wt(e)}else e.__e=n.__e,e.__k=n.__k,Be.then||Wt(e);y.__e(Be,e,n)}else o==null&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=So(n.__e,e,n,r,i,o,s,a,u);return(d=y.diffed)&&d(e),128&e.__u?void 0:l}function Wt(t){t&&t.__c&&(t.__c.__e=!0),t&&t.__k&&t.__k.forEach(Wt)}function sr(t,e,n){for(var r=0;r<n.length;r++)Jt(n[r],n[++r],n[++r]);y.__c&&y.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){y.__e(o,i.__v)}})}function ar(t){return typeof t!="object"||t==null||t.__b&&t.__b>0?t:Qe(t)?t.map(ar):Z({},t)}function So(t,e,n,r,i,o,s,l,a){var u,d,h,f,p,g,m,x=n.props,b=e.props,v=e.type;if(v=="svg"?i="http://www.w3.org/2000/svg":v=="math"?i="http://www.w3.org/1998/Math/MathML":i||(i="http://www.w3.org/1999/xhtml"),o!=null){for(u=0;u<o.length;u++)if((p=o[u])&&"setAttribute"in p==!!v&&(v?p.localName==v:p.nodeType==3)){t=p,o[u]=null;break}}if(t==null){if(v==null)return document.createTextNode(b);t=document.createElementNS(i,v,b.is&&b),l&&(y.__m&&y.__m(e,o),l=!1),o=null}if(v==null)x===b||l&&t.data==b||(t.data=b);else{if(o=o&&Ue.call(t.childNodes),x=n.props||Fe,!l&&o!=null)for(x={},u=0;u<t.attributes.length;u++)x[(p=t.attributes[u]).name]=p.value;for(u in x)if(p=x[u],u!="children"){if(u=="dangerouslySetInnerHTML")h=p;else if(!(u in b)){if(u=="value"&&"defaultValue"in b||u=="checked"&&"defaultChecked"in b)continue;dt(t,u,null,p,i)}}for(u in b)p=b[u],u=="children"?f=p:u=="dangerouslySetInnerHTML"?d=p:u=="value"?g=p:u=="checked"?m=p:l&&typeof p!="function"||x[u]===p||dt(t,u,p,x[u],i);if(d)l||h&&(d.__html==h.__html||d.__html==t.innerHTML)||(t.innerHTML=d.__html),e.__k=[];else if(h&&(t.innerHTML=""),nr(e.type=="template"?t.content:t,Qe(f)?f:[f],e,n,r,v=="foreignObject"?"http://www.w3.org/1999/xhtml":i,o,s,o?o[0]:n.__k&&ke(n,0),l,a),o!=null)for(u=o.length;u--;)Dt(o[u]);l||(u="value",v=="progress"&&g==null?t.removeAttribute("value"):g!=null&&(g!==t[u]||v=="progress"&&!g||v=="option"&&g!=x[u])&&dt(t,u,g,x[u],i),u="checked",m!=null&&m!=t[u]&&dt(t,u,m,x[u],i))}return t}function Jt(t,e,n){try{if(typeof t=="function"){var r=typeof t.__u=="function";r&&t.__u(),r&&e==null||(t.__u=t(e))}else t.current=e}catch(i){y.__e(i,n)}}function lr(t,e,n){var r,i;if(y.unmount&&y.unmount(t),(r=t.ref)&&(r.current&&r.current!=t.__e||Jt(r,null,e)),(r=t.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){y.__e(o,e)}r.base=r.__P=null}if(r=t.__k)for(i=0;i<r.length;i++)r[i]&&lr(r[i],e,n||typeof t.type!="function");n||Dt(t.__e),t.__c=t.__=t.__e=void 0}function Co(t,e,n){return this.constructor(t,n)}function fe(t,e,n){var r,i,o,s;e==document&&(e=document.documentElement),y.__&&y.__(t,e),i=(r=typeof n=="function")?null:n&&n.__k||e.__k,o=[],s=[],Ht(e,t=(!r&&n||e).__k=D(U,null,[t]),i||Fe,Fe,e.namespaceURI,!r&&n?[n]:i?null:e.firstChild?Ue.call(e.childNodes):null,o,!r&&n?n:i?i.__e:e.firstChild,r,s),sr(o,t,s)}function cr(t,e){fe(t,e,cr)}function To(t,e,n){var r,i,o,s,l=Z({},t.props);for(o in t.type&&t.type.defaultProps&&(s=t.type.defaultProps),e)o=="key"?r=e[o]:o=="ref"?i=e[o]:l[o]=e[o]===void 0&&s!=null?s[o]:e[o];return arguments.length>2&&(l.children=arguments.length>3?Ue.call(arguments,2):n),De(t.type,l,r||t.key,i||t.ref,null)}function Ro(t){function e(n){var r,i;return this.getChildContext||(r=new Set,(i={})[e.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(o){this.props.value!=o.value&&r.forEach(function(s){s.__e=!0,Vt(s)})},this.sub=function(o){r.add(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){r&&r.delete(o),s&&s.call(o)}}),n.children}return e.__c="__cC"+Xn++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,r){return n.children(r)}).contextType=e,e}Ue=er.slice,y={__e:function(t,e,n,r){for(var i,o,s;e=e.__;)if((i=e.__c)&&!i.__)try{if((o=i.constructor)&&o.getDerivedStateFromError!=null&&(i.setState(o.getDerivedStateFromError(t)),s=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(t,r||{}),s=i.__d),s)return i.__E=i}catch(l){t=l}throw t}},Wn=0,Jn=function(t){return t!=null&&t.constructor==null},W.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Z({},this.state),typeof t=="function"&&(t=t(Z({},n),this.props)),t&&Z(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),Vt(this))},W.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),Vt(this))},W.prototype.render=U,de=[],Kn=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Zn=function(t,e){return t.__v.__b-e.__v.__b},ht.__r=0,Yn=/(PointerCapture)$|Capture$/i,Ut=0,Ft=or(!1),Qt=or(!0),Xn=0;var $o=0;function c(t,e,n,r,i,o){e||(e={});var s,l,a=e;if("ref"in a)for(l in a={},e)l=="ref"?s=e[l]:a[l]=e[l];var u={type:t,props:a,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--$o,__i:-1,__u:0,__source:i,__self:o};if(typeof t=="function"&&(s=t.defaultProps))for(l in s)a[l]===void 0&&(a[l]=s[l]);return y.vnode&&y.vnode(u),u}var ae,j,Gt,ur,je=0,hr=[],T=y,dr=T.__b,fr=T.__r,pr=T.diffed,gr=T.__c,mr=T.unmount,xr=T.__;function Se(t,e){T.__h&&T.__h(j,t,je||e),je=0;var n=j.__H||(j.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function C(t){return je=1,Kt(_r,t)}function Kt(t,e,n){var r=Se(ae++,2);if(r.t=t,!r.__c&&(r.__=[n?n(e):_r(void 0,e),function(l){var a=r.__N?r.__N[0]:r.__[0],u=r.t(a,l);a!==u&&(r.__N=[u,r.__[1]],r.__c.setState({}))}],r.__c=j,!j.__f)){var i=function(l,a,u){if(!r.__c.__H)return!0;var d=r.__c.__H.__.filter(function(f){return!!f.__c});if(d.every(function(f){return!f.__N}))return!o||o.call(this,l,a,u);var h=r.__c.props!==l;return d.forEach(function(f){if(f.__N){var p=f.__[0];f.__=f.__N,f.__N=void 0,p!==f.__[0]&&(h=!0)}}),o&&o.call(this,l,a,u)||h};j.__f=!0;var o=j.shouldComponentUpdate,s=j.componentWillUpdate;j.componentWillUpdate=function(l,a,u){if(this.__e){var d=o;o=void 0,i(l,a,u),o=d}s&&s.call(this,l,a,u)},j.shouldComponentUpdate=i}return r.__N||r.__}function S(t,e){var n=Se(ae++,3);!T.__s&&Yt(n.__H,e)&&(n.__=t,n.u=e,j.__H.__h.push(n))}function Ve(t,e){var n=Se(ae++,4);!T.__s&&Yt(n.__H,e)&&(n.__=t,n.u=e,j.__h.push(n))}function le(t){return je=5,J(function(){return{current:t}},[])}function br(t,e,n){je=6,Ve(function(){if(typeof t=="function"){var r=t(e());return function(){t(null),r&&typeof r=="function"&&r()}}if(t)return t.current=e(),function(){return t.current=null}},n==null?n:n.concat(t))}function J(t,e){var n=Se(ae++,7);return Yt(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function Ce(t,e){return je=8,J(function(){return t},e)}function ft(t){var e=j.context[t.__c],n=Se(ae++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(j)),e.props.value):t.__}function yr(t,e){T.useDebugValue&&T.useDebugValue(e?e(t):t)}function vr(){var t=Se(ae++,11);if(!t.__){for(var e=j.__v;e!==null&&!e.__m&&e.__!==null;)e=e.__;var n=e.__m||(e.__m=[0,0]);t.__="P"+n[0]+"-"+n[1]++}return t.__}function Ao(){for(var t;t=hr.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(pt),t.__H.__h.forEach(Zt),t.__H.__h=[]}catch(e){t.__H.__h=[],T.__e(e,t.__v)}}T.__b=function(t){j=null,dr&&dr(t)},T.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),xr&&xr(t,e)},T.__r=function(t){fr&&fr(t),ae=0;var e=(j=t.__c).__H;e&&(Gt===j?(e.__h=[],j.__h=[],e.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.forEach(pt),e.__h.forEach(Zt),e.__h=[],ae=0)),Gt=j},T.diffed=function(t){pr&&pr(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(hr.push(e)!==1&&ur===T.requestAnimationFrame||((ur=T.requestAnimationFrame)||Eo)(Ao)),e.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Gt=j=null},T.__c=function(t,e){e.some(function(n){try{n.__h.forEach(pt),n.__h=n.__h.filter(function(r){return!r.__||Zt(r)})}catch(r){e.some(function(i){i.__h&&(i.__h=[])}),e=[],T.__e(r,n.__v)}}),gr&&gr(t,e)},T.unmount=function(t){mr&&mr(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.forEach(function(r){try{pt(r)}catch(i){e=i}}),n.__H=void 0,e&&T.__e(e,n.__v))};var wr=typeof requestAnimationFrame=="function";function Eo(t){var e,n=function(){clearTimeout(r),wr&&cancelAnimationFrame(e),setTimeout(t)},r=setTimeout(n,35);wr&&(e=requestAnimationFrame(n))}function pt(t){var e=j,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),j=e}function Zt(t){var e=j;t.__c=t.__(),j=e}function Yt(t,e){return!t||t.length!==e.length||e.some(function(n,r){return n!==t[r]})}function _r(t,e){return typeof e=="function"?e(t):e}function kr(t,e){for(var n in e)t[n]=e[n];return t}function Xt(t,e){for(var n in t)if(n!=="__source"&&!(n in e))return!0;for(var r in e)if(r!=="__source"&&t[r]!==e[r])return!0;return!1}function jr(t,e){var n=e(),r=C({t:{__:n,u:e}}),i=r[0].t,o=r[1];return Ve(function(){i.__=n,i.u=e,en(i)&&o({t:i})},[t,n,e]),S(function(){return en(i)&&o({t:i}),t(function(){en(i)&&o({t:i})})},[t]),n}function en(t){var e,n,r=t.u,i=t.__;try{var o=r();return!((e=i)===(n=o)&&(e!==0||1/e==1/n)||e!=e&&n!=n)}catch{return!0}}function Sr(t){t()}function Cr(t){return t}function Tr(){return[!1,Sr]}var Rr=Ve;function tn(t,e){this.props=t,this.context=e}function Po(t,e){function n(i){var o=this.props.ref,s=o==i.ref;return!s&&o&&(o.call?o(null):o.current=null),e?!e(this.props,i)||!s:Xt(this.props,i)}function r(i){return this.shouldComponentUpdate=n,D(t,i)}return r.displayName="Memo("+(t.displayName||t.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r.type=t,r}(tn.prototype=new W).isPureReactComponent=!0,tn.prototype.shouldComponentUpdate=function(t,e){return Xt(this.props,t)||Xt(this.state,e)};var $r=y.__b;y.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),$r&&$r(t)};var Io=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Lo(t){function e(n){var r=kr({},n);return delete r.ref,t(r,n.ref||null)}return e.$$typeof=Io,e.render=t,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e}var Ar=function(t,e){return t==null?null:Y(Y(t).map(e))},Mo={map:Ar,forEach:Ar,count:function(t){return t?Y(t).length:0},only:function(t){var e=Y(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:Y},qo=y.__e;y.__e=function(t,e,n,r){if(t.then){for(var i,o=e;o=o.__;)if((i=o.__c)&&i.__c)return e.__e==null&&(e.__e=n.__e,e.__k=n.__k),i.__c(t,e)}qo(t,e,n,r)};var Er=y.unmount;function Pr(t,e,n){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),t.__c.__H=null),(t=kr({},t)).__c!=null&&(t.__c.__P===n&&(t.__c.__P=e),t.__c.__e=!0,t.__c=null),t.__k=t.__k&&t.__k.map(function(r){return Pr(r,e,n)})),t}function Ir(t,e,n){return t&&n&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(r){return Ir(r,e,n)}),t.__c&&t.__c.__P===e&&(t.__e&&n.appendChild(t.__e),t.__c.__e=!0,t.__c.__P=n)),t}function gt(){this.__u=0,this.o=null,this.__b=null}function Lr(t){var e=t.__.__c;return e&&e.__a&&e.__a(t)}function Oo(t){var e,n,r;function i(o){if(e||(e=t()).then(function(s){n=s.default||s},function(s){r=s}),r)throw r;if(!n)throw e;return D(n,o)}return i.displayName="Lazy",i.__f=!0,i}function He(){this.i=null,this.l=null}y.unmount=function(t){var e=t.__c;e&&e.__R&&e.__R(),e&&32&t.__u&&(t.type=null),Er&&Er(t)},(gt.prototype=new W).__c=function(t,e){var n=e.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var i=Lr(r.__v),o=!1,s=function(){o||(o=!0,n.__R=null,i?i(l):l())};n.__R=s;var l=function(){if(!--r.__u){if(r.state.__a){var a=r.state.__a;r.__v.__k[0]=Ir(a,a.__c.__P,a.__c.__O)}var u;for(r.setState({__a:r.__b=null});u=r.o.pop();)u.forceUpdate()}};r.__u++||32&e.__u||r.setState({__a:r.__b=r.__v.__k[0]}),t.then(s,s)},gt.prototype.componentWillUnmount=function(){this.o=[]},gt.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Pr(this.__b,n,r.__O=r.__P)}this.__b=null}var i=e.__a&&D(U,null,t.fallback);return i&&(i.__u&=-33),[D(U,null,e.__a?null:t.children),i]};var Mr=function(t,e,n){if(++n[1]===n[0]&&t.l.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.l.size))for(n=t.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;t.i=n=n[2]}};function No(t){return this.getChildContext=function(){return t.context},t.children}function zo(t){var e=this,n=t.h;if(e.componentWillUnmount=function(){fe(null,e.v),e.v=null,e.h=null},e.h&&e.h!==n&&e.componentWillUnmount(),!e.v){for(var r=e.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;e.h=n,e.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},insertBefore:function(i,o){this.childNodes.push(i),e.h.insertBefore(i,o)},removeChild:function(i){this.childNodes.splice(this.childNodes.indexOf(i)>>>1,1),e.h.removeChild(i)}}}fe(D(No,{context:e.context},t.__v),e.v)}function Bo(t,e){var n=D(zo,{__v:t,h:e});return n.containerInfo=e,n}(He.prototype=new W).__a=function(t){var e=this,n=Lr(e.__v),r=e.l.get(t);return r[0]++,function(i){var o=function(){e.props.revealOrder?(r.push(i),Mr(e,t,r)):i()};n?n(o):o()}},He.prototype.render=function(t){this.i=null,this.l=new Map;var e=Y(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.l.set(e[n],this.i=[1,0,this.i]);return t.children},He.prototype.componentDidUpdate=He.prototype.componentDidMount=function(){var t=this;this.l.forEach(function(e,n){Mr(t,n,e)})};var qr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Uo=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Fo=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Qo=/[A-Z0-9]/g,Do=typeof document<"u",Vo=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(t)};function Ho(t,e,n){return e.__k==null&&(e.textContent=""),fe(t,e),typeof n=="function"&&n(),t?t.__c:null}function Wo(t,e,n){return cr(t,e),typeof n=="function"&&n(),t?t.__c:null}W.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(W.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Or=y.event;function Jo(){}function Go(){return this.cancelBubble}function Ko(){return this.defaultPrevented}y.event=function(t){return Or&&(t=Or(t)),t.persist=Jo,t.isPropagationStopped=Go,t.isDefaultPrevented=Ko,t.nativeEvent=t};var nn,Zo={enumerable:!1,configurable:!0,get:function(){return this.class}},Nr=y.vnode;y.vnode=function(t){typeof t.type=="string"&&(function(e){var n=e.props,r=e.type,i={},o=r.indexOf("-")===-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||Do&&s==="children"&&r==="noscript"||s==="class"||s==="className")){var a=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":a==="translate"&&l==="no"?l=!1:a[0]==="o"&&a[1]==="n"?a==="ondoubleclick"?s="ondblclick":a!=="onchange"||r!=="input"&&r!=="textarea"||Vo(n.type)?a==="onfocus"?s="onfocusin":a==="onblur"?s="onfocusout":Fo.test(s)&&(s=a):a=s="oninput":o&&Uo.test(s)?s=s.replace(Qo,"-$&").toLowerCase():l===null&&(l=void 0),a==="oninput"&&i[s=a]&&(s="oninputCapture"),i[s]=l}}r=="select"&&i.multiple&&Array.isArray(i.value)&&(i.value=Y(n.children).forEach(function(u){u.props.selected=i.value.indexOf(u.props.value)!=-1})),r=="select"&&i.defaultValue!=null&&(i.value=Y(n.children).forEach(function(u){u.props.selected=i.multiple?i.defaultValue.indexOf(u.props.value)!=-1:i.defaultValue==u.props.value})),n.class&&!n.className?(i.class=n.class,Object.defineProperty(i,"className",Zo)):(n.className&&!n.class||n.class&&n.className)&&(i.class=i.className=n.className),e.props=i})(t),t.$$typeof=qr,Nr&&Nr(t)};var zr=y.__r;y.__r=function(t){zr&&zr(t),nn=t.__c};var Br=y.diffed;y.diffed=function(t){Br&&Br(t);var e=t.props,n=t.__e;n!=null&&t.type==="textarea"&&"value"in e&&e.value!==n.value&&(n.value=e.value==null?"":e.value),nn=null};var Yo={ReactCurrentDispatcher:{current:{readContext:function(t){return nn.__n[t.__c].props.value},useCallback:Ce,useContext:ft,useDebugValue:yr,useDeferredValue:Cr,useEffect:S,useId:vr,useImperativeHandle:br,useInsertionEffect:Rr,useLayoutEffect:Ve,useMemo:J,useReducer:Kt,useRef:le,useState:C,useSyncExternalStore:jr,useTransition:Tr}}};function Xo(t){return D.bind(null,t)}function mt(t){return!!t&&t.$$typeof===qr}function es(t){return mt(t)&&t.type===U}function ts(t){return!!t&&!!t.displayName&&(typeof t.displayName=="string"||t.displayName instanceof String)&&t.displayName.startsWith("Memo(")}function ns(t){return mt(t)?To.apply(null,arguments):t}function rs(t){return!!t.__k&&(fe(null,t),!0)}function is(t){return t&&(t.base||t.nodeType===1&&t)||null}for(var os=function(t,e){return t(e)},ss=function(t,e){return t(e)},as=U,ls=mt,rn={useState:C,useId:vr,useReducer:Kt,useEffect:S,useLayoutEffect:Ve,useInsertionEffect:Rr,useTransition:Tr,useDeferredValue:Cr,useSyncExternalStore:jr,startTransition:Sr,useRef:le,useImperativeHandle:br,useMemo:J,useCallback:Ce,useContext:ft,useDebugValue:yr,version:"18.3.1",Children:Mo,render:Ho,hydrate:Wo,unmountComponentAtNode:rs,createPortal:Bo,createElement:D,createContext:Ro,createFactory:Xo,cloneElement:ns,createRef:_o,Fragment:U,isValidElement:mt,isElement:ls,isFragment:es,isMemo:ts,findDOMNode:is,Component:W,PureComponent:tn,memo:Po,forwardRef:Lo,flushSync:ss,unstable_batchedUpdates:os,StrictMode:as,Suspense:gt,SuspenseList:He,lazy:Oo,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Yo},X=[],V=[],cs=Uint8Array,on="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Te=0,us=on.length;Te<us;++Te)X[Te]=on[Te],V[on.charCodeAt(Te)]=Te;V[45]=62,V[95]=63;function hs(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");n===-1&&(n=e);var r=n===e?0:4-n%4;return[n,r]}function ds(t,e,n){return(e+n)*3/4-n}function We(t){var e,n=hs(t),r=n[0],i=n[1],o=new cs(ds(t,r,i)),s=0,l=i>0?r-4:r,a;for(a=0;a<l;a+=4)e=V[t.charCodeAt(a)]<<18|V[t.charCodeAt(a+1)]<<12|V[t.charCodeAt(a+2)]<<6|V[t.charCodeAt(a+3)],o[s++]=e>>16&255,o[s++]=e>>8&255,o[s++]=e&255;return i===2&&(e=V[t.charCodeAt(a)]<<2|V[t.charCodeAt(a+1)]>>4,o[s++]=e&255),i===1&&(e=V[t.charCodeAt(a)]<<10|V[t.charCodeAt(a+1)]<<4|V[t.charCodeAt(a+2)]>>2,o[s++]=e>>8&255,o[s++]=e&255),o}function fs(t){return X[t>>18&63]+X[t>>12&63]+X[t>>6&63]+X[t&63]}function ps(t,e,n){for(var r,i=[],o=e;o<n;o+=3)r=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(t[o+2]&255),i.push(fs(r));return i.join("")}function Je(t){for(var e,n=t.length,r=n%3,i=[],o=16383,s=0,l=n-r;s<l;s+=o)i.push(ps(t,s,s+o>l?l:s+o));return r===1?(e=t[n-1],i.push(X[e>>2]+X[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],i.push(X[e>>10]+X[e>>4&63]+X[e<<2&63]+"=")),i.join("")}function ie(t){if(t===void 0)return{};if(!Ur(t))throw new Error(`The arguments to a Convex function must be an object. Received: ${t}`);return t}function gs(t){if(typeof t>"u")throw new Error("Client created with undefined deployment address. If you used an environment variable, check that it's set.");if(typeof t!="string")throw new Error(`Invalid deployment address: found ${t}".`);if(!(t.startsWith("http:")||t.startsWith("https:")))throw new Error(`Invalid deployment address: Must start with "https://" or "http://". Found "${t}".`);try{new URL(t)}catch{throw new Error(`Invalid deployment address: "${t}" is not a valid URL. If you believe this URL is correct, use the \`skipConvexDeploymentUrlCheck\` option to bypass this.`)}if(t.endsWith(".convex.site"))throw new Error(`Invalid deployment address: "${t}" ends with .convex.site, which is used for HTTP Actions. Convex deployment URLs typically end with .convex.cloud? If you believe this URL is correct, use the \`skipConvexDeploymentUrlCheck\` option to bypass this.`)}function Ur(t){const e=typeof t=="object",n=Object.getPrototypeOf(t),r=n===null||n===Object.prototype||n?.constructor?.name==="Object";return e&&r}const Fr=!0,Re=BigInt("-9223372036854775808"),sn=BigInt("9223372036854775807"),an=BigInt("0"),ms=BigInt("8"),xs=BigInt("256");function Qr(t){return Number.isNaN(t)||!Number.isFinite(t)||Object.is(t,-0)}function bs(t){t<an&&(t-=Re+Re);let e=t.toString(16);e.length%2===1&&(e="0"+e);const n=new Uint8Array(new ArrayBuffer(8));let r=0;for(const i of e.match(/.{2}/g).reverse())n.set([parseInt(i,16)],r++),t>>=ms;return Je(n)}function ys(t){const e=We(t);if(e.byteLength!==8)throw new Error(`Received ${e.byteLength} bytes, expected 8 for $integer`);let n=an,r=an;for(const i of e)n+=BigInt(i)*xs**r,r++;return n>sn&&(n+=Re+Re),n}function vs(t){if(t<Re||sn<t)throw new Error(`BigInt ${t} does not fit into a 64-bit signed integer.`);const e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,t,!0),Je(new Uint8Array(e))}function ws(t){const e=We(t);if(e.byteLength!==8)throw new Error(`Received ${e.byteLength} bytes, expected 8 for $integer`);return new DataView(e.buffer).getBigInt64(0,!0)}const _s=DataView.prototype.setBigInt64?vs:bs,ks=DataView.prototype.getBigInt64?ws:ys,Dr=1024;function Vr(t){if(t.length>Dr)throw new Error(`Field name ${t} exceeds maximum field name length ${Dr}.`);if(t.startsWith("$"))throw new Error(`Field name ${t} starts with a '$', which is reserved.`);for(let e=0;e<t.length;e+=1){const n=t.charCodeAt(e);if(n<32||n>=127)throw new Error(`Field name ${t} has invalid character '${t[e]}': Field names can only contain non-control ASCII characters`)}}function $e(t){if(t===null||typeof t=="boolean"||typeof t=="number"||typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>$e(r));if(typeof t!="object")throw new Error(`Unexpected type of ${t}`);const e=Object.entries(t);if(e.length===1){const r=e[0][0];if(r==="$bytes"){if(typeof t.$bytes!="string")throw new Error(`Malformed $bytes field on ${t}`);return We(t.$bytes).buffer}if(r==="$integer"){if(typeof t.$integer!="string")throw new Error(`Malformed $integer field on ${t}`);return ks(t.$integer)}if(r==="$float"){if(typeof t.$float!="string")throw new Error(`Malformed $float field on ${t}`);const i=We(t.$float);if(i.byteLength!==8)throw new Error(`Received ${i.byteLength} bytes, expected 8 for $float`);const s=new DataView(i.buffer).getFloat64(0,Fr);if(!Qr(s))throw new Error(`Float ${s} should be encoded as a number`);return s}if(r==="$set")throw new Error("Received a Set which is no longer supported as a Convex type.");if(r==="$map")throw new Error("Received a Map which is no longer supported as a Convex type.")}const n={};for(const[r,i]of Object.entries(t))Vr(r),n[r]=$e(i);return n}const Hr=16384;function Ge(t){const e=JSON.stringify(t,(n,r)=>r===void 0?"undefined":typeof r=="bigint"?`${r.toString()}n`:r);if(e.length>Hr){const n="[...truncated]";let r=Hr-n.length;const i=e.codePointAt(r-1);return i!==void 0&&i>65535&&(r-=1),e.substring(0,r)+n}return e}function ln(t,e,n,r){if(t===void 0){const s=n&&` (present at path ${n} in original object ${Ge(e)})`;throw new Error(`undefined is not a valid Convex value${s}. To learn about Convex's supported types, see https://docs.convex.dev/using/types.`)}if(t===null)return t;if(typeof t=="bigint"){if(t<Re||sn<t)throw new Error(`BigInt ${t} does not fit into a 64-bit signed integer.`);return{$integer:_s(t)}}if(typeof t=="number")if(Qr(t)){const s=new ArrayBuffer(8);return new DataView(s).setFloat64(0,t,Fr),{$float:Je(new Uint8Array(s))}}else return t;if(typeof t=="boolean"||typeof t=="string")return t;if(t instanceof ArrayBuffer)return{$bytes:Je(new Uint8Array(t))};if(Array.isArray(t))return t.map((s,l)=>ln(s,e,n+`[${l}]`));if(t instanceof Set)throw new Error(cn(n,"Set",[...t],e));if(t instanceof Map)throw new Error(cn(n,"Map",[...t],e));if(!Ur(t)){const s=t?.constructor?.name,l=s?`${s} `:"";throw new Error(cn(n,l,t,e))}const i={},o=Object.entries(t);o.sort(([s,l],[a,u])=>s===a?0:s<a?-1:1);for(const[s,l]of o)l!==void 0&&(Vr(s),i[s]=ln(l,e,n+`.${s}`));return i}function cn(t,e,n,r){return t?`${e}${Ge(n)} is not a supported Convex type (present at path ${t} in original object ${Ge(r)}). To learn about Convex's supported types, see https://docs.convex.dev/using/types.`:`${e}${Ge(n)} is not a supported Convex type.`}function ee(t){return ln(t,t,"")}var js=Object.defineProperty,Ss=(t,e,n)=>e in t?js(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,un=(t,e,n)=>Ss(t,typeof e!="symbol"?e+"":e,n),Wr,Jr;const Cs=Symbol.for("ConvexError");class xt extends(Jr=Error,Wr=Cs,Jr){constructor(e){super(typeof e=="string"?e:Ge(e)),un(this,"name","ConvexError"),un(this,"data"),un(this,Wr,!0),this.data=e}}const Gr=()=>Array.from({length:4},()=>0);Gr(),Gr();const Kr="1.39.1";var Ts=Object.defineProperty,Rs=(t,e,n)=>e in t?Ts(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Zr=(t,e,n)=>Rs(t,typeof e!="symbol"?e+"":e,n);const $s="color:rgb(0, 145, 255)";function Yr(t){switch(t){case"query":return"Q";case"mutation":return"M";case"action":return"A";case"any":return"?"}}class Xr{constructor(e){Zr(this,"_onLogLineFuncs"),Zr(this,"_verbose"),this._onLogLineFuncs={},this._verbose=e.verbose}addLogLineListener(e){let n=Math.random().toString(36).substring(2,15);for(let r=0;r<10&&this._onLogLineFuncs[n]!==void 0;r++)n=Math.random().toString(36).substring(2,15);return this._onLogLineFuncs[n]=e,()=>{delete this._onLogLineFuncs[n]}}logVerbose(...e){if(this._verbose)for(const n of Object.values(this._onLogLineFuncs))n("debug",`${new Date().toISOString()}`,...e)}log(...e){for(const n of Object.values(this._onLogLineFuncs))n("info",...e)}warn(...e){for(const n of Object.values(this._onLogLineFuncs))n("warn",...e)}error(...e){for(const n of Object.values(this._onLogLineFuncs))n("error",...e)}}function ei(t){const e=new Xr(t);return e.addLogLineListener((n,...r)=>{switch(n){case"debug":console.debug(...r);break;case"info":console.log(...r);break;case"warn":console.warn(...r);break;case"error":console.error(...r);break;default:console.log(...r)}}),e}function ti(t){return new Xr(t)}function bt(t,e,n,r,i){const o=Yr(n);if(typeof i=="object"&&(i=`ConvexError ${JSON.stringify(i.errorData,null,2)}`),e==="info"){const s=i.match(/^\[.*?\] /);if(s===null){t.error(`[CONVEX ${o}(${r})] Could not parse console.log`);return}const l=i.slice(1,s[0].length-2),a=i.slice(s[0].length);t.log(`%c[CONVEX ${o}(${r})] [${l}]`,$s,a)}else t.error(`[CONVEX ${o}(${r})] ${i}`)}function As(t,e){const n=`[CONVEX FATAL ERROR] ${e}`;return t.error(n),new Error(n)}function Ae(t,e,n){return`[CONVEX ${Yr(t)}(${e})] ${n.errorMessage}
|
|
2
|
-
Called by client`}function hn(t,e){return e.data=t.errorData,e}function pe(t){const e=t.split(":");let n,r;return e.length===1?(n=e[0],r="default"):(n=e.slice(0,e.length-1).join(":"),r=e[e.length-1]),n.endsWith(".js")&&(n=n.slice(0,-3)),`${n}:${r}`}function ge(t,e){return JSON.stringify({udfPath:pe(t),args:ee(e)})}function ni(t,e,n){const{initialNumItems:r,id:i}=n;return JSON.stringify({type:"paginated",udfPath:pe(t),args:ee(e),options:ee({initialNumItems:r,id:i})})}var Es=Object.defineProperty,Ps=(t,e,n)=>e in t?Es(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,te=(t,e,n)=>Ps(t,typeof e!="symbol"?e+"":e,n);class Is{constructor(){te(this,"nextQueryId"),te(this,"querySetVersion"),te(this,"querySet"),te(this,"queryIdToToken"),te(this,"identityVersion"),te(this,"auth"),te(this,"outstandingQueriesOlderThanRestart"),te(this,"outstandingAuthOlderThanRestart"),te(this,"paused"),te(this,"pendingQuerySetModifications"),this.nextQueryId=0,this.querySetVersion=0,this.identityVersion=0,this.querySet=new Map,this.queryIdToToken=new Map,this.outstandingQueriesOlderThanRestart=new Set,this.outstandingAuthOlderThanRestart=!1,this.paused=!1,this.pendingQuerySetModifications=new Map}hasSyncedPastLastReconnect(){return this.outstandingQueriesOlderThanRestart.size===0&&!this.outstandingAuthOlderThanRestart}markAuthCompletion(){this.outstandingAuthOlderThanRestart=!1}subscribe(e,n,r,i){const o=pe(e),s=ge(o,n),l=this.querySet.get(s);if(l!==void 0)return l.numSubscribers+=1,{queryToken:s,modification:null,unsubscribe:()=>this.removeSubscriber(s)};{const a=this.nextQueryId++,u={id:a,canonicalizedUdfPath:o,args:n,numSubscribers:1,journal:r,componentPath:i};this.querySet.set(s,u),this.queryIdToToken.set(a,s);const d=this.querySetVersion,h=this.querySetVersion+1,f={type:"Add",queryId:a,udfPath:o,args:[ee(n)],journal:r,componentPath:i};return this.paused?this.pendingQuerySetModifications.set(a,f):this.querySetVersion=h,{queryToken:s,modification:{type:"ModifyQuerySet",baseVersion:d,newVersion:h,modifications:[f]},unsubscribe:()=>this.removeSubscriber(s)}}}transition(e){for(const n of e.modifications)switch(n.type){case"QueryUpdated":case"QueryFailed":{this.outstandingQueriesOlderThanRestart.delete(n.queryId);const r=n.journal;if(r!==void 0){const i=this.queryIdToToken.get(n.queryId);i!==void 0&&(this.querySet.get(i).journal=r)}break}case"QueryRemoved":{this.outstandingQueriesOlderThanRestart.delete(n.queryId);break}default:throw new Error(`Invalid modification ${n.type}`)}}queryId(e,n){const r=pe(e),i=ge(r,n),o=this.querySet.get(i);return o!==void 0?o.id:null}isCurrentOrNewerAuthVersion(e){return e>=this.identityVersion}getAuth(){return this.auth}setAuth(e){this.auth={tokenType:"User",value:e};const n=this.identityVersion;return this.paused||(this.identityVersion=n+1),{type:"Authenticate",baseVersion:n,...this.auth}}setAdminAuth(e,n){const r={tokenType:"Admin",value:e,impersonating:n};this.auth=r;const i=this.identityVersion;return this.paused||(this.identityVersion=i+1),{type:"Authenticate",baseVersion:i,...r}}clearAuth(){this.auth=void 0,this.markAuthCompletion();const e=this.identityVersion;return this.paused||(this.identityVersion=e+1),{type:"Authenticate",tokenType:"None",baseVersion:e}}hasAuth(){return!!this.auth}isNewAuth(e){return this.auth?.value!==e}queryPath(e){const n=this.queryIdToToken.get(e);return n?this.querySet.get(n).canonicalizedUdfPath:null}queryArgs(e){const n=this.queryIdToToken.get(e);return n?this.querySet.get(n).args:null}queryToken(e){return this.queryIdToToken.get(e)??null}queryJournal(e){return this.querySet.get(e)?.journal}restart(){this.unpause(),this.outstandingQueriesOlderThanRestart.clear();const e=[];for(const i of this.querySet.values()){const o={type:"Add",queryId:i.id,udfPath:i.canonicalizedUdfPath,args:[ee(i.args)],journal:i.journal,componentPath:i.componentPath};e.push(o),this.outstandingQueriesOlderThanRestart.add(i.id)}this.querySetVersion=1;const n={type:"ModifyQuerySet",baseVersion:0,newVersion:1,modifications:e};if(!this.auth)return this.identityVersion=0,[n,void 0];this.outstandingAuthOlderThanRestart=!0;const r={type:"Authenticate",baseVersion:0,...this.auth};return this.identityVersion=1,[n,r]}pause(){this.paused=!0}resume(){const e=this.pendingQuerySetModifications.size>0?{type:"ModifyQuerySet",baseVersion:this.querySetVersion,newVersion:++this.querySetVersion,modifications:Array.from(this.pendingQuerySetModifications.values())}:void 0,n=this.auth!==void 0?{type:"Authenticate",baseVersion:this.identityVersion++,...this.auth}:void 0;return this.unpause(),[e,n]}unpause(){this.paused=!1,this.pendingQuerySetModifications.clear()}removeSubscriber(e){const n=this.querySet.get(e);if(n.numSubscribers>1)return n.numSubscribers-=1,null;{this.querySet.delete(e),this.queryIdToToken.delete(n.id),this.outstandingQueriesOlderThanRestart.delete(n.id);const r=this.querySetVersion,i=this.querySetVersion+1,o={type:"Remove",queryId:n.id};return this.paused?this.pendingQuerySetModifications.has(n.id)?this.pendingQuerySetModifications.delete(n.id):this.pendingQuerySetModifications.set(n.id,o):this.querySetVersion=i,{type:"ModifyQuerySet",baseVersion:r,newVersion:i,modifications:[o]}}}}var Ls=Object.defineProperty,Ms=(t,e,n)=>e in t?Ls(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,yt=(t,e,n)=>Ms(t,typeof e!="symbol"?e+"":e,n);class qs{constructor(e,n){this.logger=e,this.markConnectionStateDirty=n,yt(this,"inflightRequests"),yt(this,"requestsOlderThanRestart"),yt(this,"inflightMutationsCount",0),yt(this,"inflightActionsCount",0),this.inflightRequests=new Map,this.requestsOlderThanRestart=new Set}request(e,n){const r=new Promise(i=>{const o=n?"Requested":"NotSent";this.inflightRequests.set(e.requestId,{message:e,status:{status:o,requestedAt:new Date,onResult:i}}),e.type==="Mutation"?this.inflightMutationsCount++:e.type==="Action"&&this.inflightActionsCount++});return this.markConnectionStateDirty(),r}onResponse(e){const n=this.inflightRequests.get(e.requestId);if(n===void 0||n.status.status==="Completed")return null;const r=n.message.type==="Mutation"?"mutation":"action",i=n.message.udfPath;for(const a of e.logLines)bt(this.logger,"info",r,i,a);const o=n.status;let s,l;if(e.success)s={success:!0,logLines:e.logLines,value:$e(e.result)},l=()=>o.onResult(s);else{const a=e.result,{errorData:u}=e;bt(this.logger,"error",r,i,a),s={success:!1,errorMessage:a,errorData:u!==void 0?$e(u):void 0,logLines:e.logLines},l=()=>o.onResult(s)}return e.type==="ActionResponse"||!e.success?(l(),this.inflightRequests.delete(e.requestId),this.requestsOlderThanRestart.delete(e.requestId),n.message.type==="Action"?this.inflightActionsCount--:n.message.type==="Mutation"&&this.inflightMutationsCount--,this.markConnectionStateDirty(),{requestId:e.requestId,result:s}):(n.status={status:"Completed",result:s,ts:e.ts,onResolve:l},null)}removeCompleted(e){const n=new Map;for(const[r,i]of this.inflightRequests.entries()){const o=i.status;o.status==="Completed"&&o.ts.lessThanOrEqual(e)&&(o.onResolve(),n.set(r,o.result),i.message.type==="Mutation"?this.inflightMutationsCount--:i.message.type==="Action"&&this.inflightActionsCount--,this.inflightRequests.delete(r),this.requestsOlderThanRestart.delete(r))}return n.size>0&&this.markConnectionStateDirty(),n}restart(){this.requestsOlderThanRestart=new Set(this.inflightRequests.keys());const e=[];for(const[n,r]of this.inflightRequests){if(r.status.status==="NotSent"){r.status.status="Requested",e.push(r.message);continue}if(r.message.type==="Mutation")e.push(r.message);else if(r.message.type==="Action"){if(this.inflightRequests.delete(n),this.requestsOlderThanRestart.delete(n),this.inflightActionsCount--,r.status.status==="Completed")throw new Error("Action should never be in 'Completed' state");r.status.onResult({success:!1,errorMessage:"Connection lost while action was in flight",logLines:[]})}}return this.markConnectionStateDirty(),e}resume(){const e=[];for(const[,n]of this.inflightRequests)if(n.status.status==="NotSent"){n.status.status="Requested",e.push(n.message);continue}return e}hasIncompleteRequests(){for(const e of this.inflightRequests.values())if(e.status.status==="Requested")return!0;return!1}hasInflightRequests(){return this.inflightRequests.size>0}hasSyncedPastLastReconnect(){return this.requestsOlderThanRestart.size===0}timeOfOldestInflightRequest(){if(this.inflightRequests.size===0)return null;let e=Date.now();for(const n of this.inflightRequests.values())n.status.status!=="Completed"&&n.status.requestedAt.getTime()<e&&(e=n.status.requestedAt.getTime());return new Date(e)}inflightMutations(){return this.inflightMutationsCount}inflightActions(){return this.inflightActionsCount}}const Ke=Symbol.for("functionName"),Os=Symbol.for("toReferencePath");function Ns(t){return t[Os]??null}function zs(t){return t.startsWith("function://")}function Bs(t){let e;if(typeof t=="string")zs(t)?e={functionHandle:t}:e={name:t};else if(t[Ke])e={name:t[Ke]};else{const n=Ns(t);if(!n)throw new Error(`${t} is not a functionReference`);e={reference:n}}return e}function O(t){const e=Bs(t);if(e.name===void 0)throw e.functionHandle!==void 0?new Error(`Expected function reference like "api.file.func" or "internal.file.func", but received function handle ${e.functionHandle}`):e.reference!==void 0?new Error(`Expected function reference in the current component like "api.file.func" or "internal.file.func", but received reference ${e.reference}`):new Error(`Expected function reference like "api.file.func" or "internal.file.func", but received ${JSON.stringify(e)}`);if(typeof t=="string")return t;const n=t[Ke];if(!n)throw new Error(`${t} is not a functionReference`);return n}function ri(t){return{[Ke]:t}}function ii(t=[]){const e={get(n,r){if(typeof r=="string"){const i=[...t,r];return ii(i)}else if(r===Ke){if(t.length<2){const s=["api",...t].join(".");throw new Error(`API path is expected to be of the form \`api.moduleName.functionName\`. Found: \`${s}\``)}const i=t.slice(0,-1).join("/"),o=t[t.length-1];return o==="default"?i:i+":"+o}else return r===Symbol.toStringTag?"FunctionReference":void 0}};return new Proxy({},e)}ii();var Us=Object.defineProperty,Fs=(t,e,n)=>e in t?Us(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vt=(t,e,n)=>Fs(t,typeof e!="symbol"?e+"":e,n);class Ze{constructor(e){vt(this,"queryResults"),vt(this,"modifiedQueries"),this.queryResults=e,this.modifiedQueries=[]}getQuery(e,...n){const r=ie(n[0]),i=O(e),o=this.queryResults.get(ge(i,r));if(o!==void 0)return Ze.queryValue(o.result)}getAllQueries(e){const n=[],r=O(e);for(const i of this.queryResults.values())i.udfPath===pe(r)&&n.push({args:i.args,value:Ze.queryValue(i.result)});return n}setQuery(e,n,r){const i=ie(n),o=O(e),s=ge(o,i);let l;r===void 0?l=void 0:l={success:!0,value:r,logLines:[]};const a={udfPath:o,args:i,result:l};this.queryResults.set(s,a),this.modifiedQueries.push(s)}static queryValue(e){if(e!==void 0)return e.success?e.value:void 0}}class Qs{constructor(){vt(this,"queryResults"),vt(this,"optimisticUpdates"),this.queryResults=new Map,this.optimisticUpdates=[]}ingestQueryResultsFromServer(e,n){this.optimisticUpdates=this.optimisticUpdates.filter(s=>!n.has(s.mutationId));const r=this.queryResults;this.queryResults=new Map(e);const i=new Ze(this.queryResults);for(const s of this.optimisticUpdates)s.update(i);const o=[];for(const[s,l]of this.queryResults){const a=r.get(s);(a===void 0||a.result!==l.result)&&o.push(s)}return o}applyOptimisticUpdate(e,n){this.optimisticUpdates.push({update:e,mutationId:n});const r=new Ze(this.queryResults);return e(r),r.modifiedQueries}rawQueryResult(e){const n=this.queryResults.get(e);if(n!==void 0)return n.result}queryResult(e){const n=this.queryResults.get(e);if(n===void 0)return;const r=n.result;if(r!==void 0){if(r.success)return r.value;throw r.errorData!==void 0?hn(r,new xt(Ae("query",n.udfPath,r))):new Error(Ae("query",n.udfPath,r))}}hasQueryResult(e){return this.queryResults.get(e)!==void 0}queryLogs(e){return this.queryResults.get(e)?.result?.logLines}}var Ds=Object.defineProperty,Vs=(t,e,n)=>e in t?Ds(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,dn=(t,e,n)=>Vs(t,typeof e!="symbol"?e+"":e,n);class N{constructor(e,n){dn(this,"low"),dn(this,"high"),dn(this,"__isUnsignedLong__"),this.low=e|0,this.high=n|0,this.__isUnsignedLong__=!0}static isLong(e){return(e&&e.__isUnsignedLong__)===!0}static fromBytesLE(e){return new N(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24)}toBytesLE(){const e=this.high,n=this.low;return[n&255,n>>>8&255,n>>>16&255,n>>>24,e&255,e>>>8&255,e>>>16&255,e>>>24]}static fromNumber(e){return isNaN(e)||e<0?oi:e>=Hs?Ws:new N(e%Ye|0,e/Ye|0)}toString(){return(BigInt(this.high)*BigInt(Ye)+BigInt(this.low)).toString()}equals(e){return N.isLong(e)||(e=N.fromValue(e)),this.high>>>31===1&&e.high>>>31===1?!1:this.high===e.high&&this.low===e.low}notEquals(e){return!this.equals(e)}comp(e){return N.isLong(e)||(e=N.fromValue(e)),this.equals(e)?0:e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1}lessThanOrEqual(e){return this.comp(e)<=0}static fromValue(e){return typeof e=="number"?N.fromNumber(e):new N(e.low,e.high)}}const oi=new N(0,0),si=65536,Ye=si*si,Hs=Ye*Ye,Ws=new N(-1,-1);var Js=Object.defineProperty,Gs=(t,e,n)=>e in t?Js(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,wt=(t,e,n)=>Gs(t,typeof e!="symbol"?e+"":e,n);class ai{constructor(e,n){wt(this,"version"),wt(this,"remoteQuerySet"),wt(this,"queryPath"),wt(this,"logger"),this.version={querySet:0,ts:N.fromNumber(0),identity:0},this.remoteQuerySet=new Map,this.queryPath=e,this.logger=n}transition(e){const n=e.startVersion;if(this.version.querySet!==n.querySet||this.version.ts.notEquals(n.ts)||this.version.identity!==n.identity)throw new Error(`Invalid start version: ${n.ts.toString()}:${n.querySet}:${n.identity}, transitioning from ${this.version.ts.toString()}:${this.version.querySet}:${this.version.identity}`);for(const r of e.modifications)switch(r.type){case"QueryUpdated":{const i=this.queryPath(r.queryId);if(i)for(const s of r.logLines)bt(this.logger,"info","query",i,s);const o=$e(r.value??null);this.remoteQuerySet.set(r.queryId,{success:!0,value:o,logLines:r.logLines});break}case"QueryFailed":{const i=this.queryPath(r.queryId);if(i)for(const s of r.logLines)bt(this.logger,"info","query",i,s);const{errorData:o}=r;this.remoteQuerySet.set(r.queryId,{success:!1,errorMessage:r.errorMessage,errorData:o!==void 0?$e(o):void 0,logLines:r.logLines});break}case"QueryRemoved":{this.remoteQuerySet.delete(r.queryId);break}default:throw new Error(`Invalid modification ${r.type}`)}this.version=e.endVersion}remoteQueryResults(){return this.remoteQuerySet}timestamp(){return this.version.ts}}function fn(t){const e=We(t);return N.fromBytesLE(Array.from(e))}function Ks(t){const e=new Uint8Array(t.toBytesLE());return Je(e)}function li(t){switch(t.type){case"FatalError":case"AuthError":case"ActionResponse":case"TransitionChunk":case"Ping":return{...t};case"MutationResponse":return t.success?{...t,ts:fn(t.ts)}:{...t};case"Transition":return{...t,startVersion:{...t.startVersion,ts:fn(t.startVersion.ts)},endVersion:{...t.endVersion,ts:fn(t.endVersion.ts)}}}}function Zs(t){switch(t.type){case"Authenticate":case"ModifyQuerySet":case"Mutation":case"Action":case"Event":return{...t};case"Connect":return t.maxObservedTimestamp!==void 0?{...t,maxObservedTimestamp:Ks(t.maxObservedTimestamp)}:{...t,maxObservedTimestamp:void 0}}}var Ys=Object.defineProperty,Xs=(t,e,n)=>e in t?Ys(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,A=(t,e,n)=>Xs(t,typeof e!="symbol"?e+"":e,n);const ea=1e3,ta=1001,na=1005,ra=4040;let _t;function Ee(){return _t===void 0&&(_t=Date.now()),typeof performance>"u"||!performance.now?Date.now():Math.round(_t+performance.now())}function ci(){return`t=${Math.round((Ee()-_t)/100)/10}s`}const ui={InternalServerError:{timeout:1e3},SubscriptionsWorkerFullError:{timeout:3e3},TooManyConcurrentRequests:{timeout:3e3},CommitterFullError:{timeout:3e3},AwsTooManyRequestsException:{timeout:3e3},ExecuteFullError:{timeout:3e3},SystemTimeoutError:{timeout:3e3},ExpiredInQueue:{timeout:3e3},VectorIndexesUnavailable:{timeout:1e3},SearchIndexesUnavailable:{timeout:1e3},TableSummariesUnavailable:{timeout:1e3},VectorIndexTooLarge:{timeout:3e3},SearchIndexTooLarge:{timeout:3e3},TooManyWritesInTimePeriod:{timeout:3e3}};function ia(t){if(t===void 0)return"Unknown";for(const e of Object.keys(ui))if(t.startsWith(e))return e;return"Unknown"}class oa{constructor(e,n,r,i,o,s){this.markConnectionStateDirty=o,this.debug=s,A(this,"socket"),A(this,"connectionCount"),A(this,"_hasEverConnected",!1),A(this,"lastCloseReason"),A(this,"transitionChunkBuffer",null),A(this,"defaultInitialBackoff"),A(this,"maxBackoff"),A(this,"retries"),A(this,"serverInactivityThreshold"),A(this,"reconnectDueToServerInactivityTimeout"),A(this,"scheduledReconnect",null),A(this,"networkOnlineHandler",null),A(this,"pendingNetworkRecoveryInfo",null),A(this,"uri"),A(this,"onOpen"),A(this,"onResume"),A(this,"onMessage"),A(this,"webSocketConstructor"),A(this,"logger"),A(this,"onServerDisconnectError"),this.webSocketConstructor=r,this.socket={state:"disconnected"},this.connectionCount=0,this.lastCloseReason="InitialConnect",this.defaultInitialBackoff=1e3,this.maxBackoff=16e3,this.retries=0,this.serverInactivityThreshold=6e4,this.reconnectDueToServerInactivityTimeout=null,this.uri=e,this.onOpen=n.onOpen,this.onResume=n.onResume,this.onMessage=n.onMessage,this.onServerDisconnectError=n.onServerDisconnectError,this.logger=i,this.setupNetworkListener(),this.connect()}setSocketState(e){this.socket=e,this._logVerbose(`socket state changed: ${this.socket.state}, paused: ${"paused"in this.socket?this.socket.paused:void 0}`),this.markConnectionStateDirty()}setupNetworkListener(){typeof window>"u"||typeof window.addEventListener!="function"||this.networkOnlineHandler===null&&(this.networkOnlineHandler=()=>{this._logVerbose("network online event detected"),this.tryReconnectImmediately()},window.addEventListener("online",this.networkOnlineHandler),this._logVerbose("network online event listener registered"))}cleanupNetworkListener(){this.networkOnlineHandler&&typeof window<"u"&&typeof window.removeEventListener=="function"&&(window.removeEventListener("online",this.networkOnlineHandler),this.networkOnlineHandler=null,this._logVerbose("network online event listener removed"))}assembleTransition(e){if(e.partNumber<0||e.partNumber>=e.totalParts||e.totalParts===0||this.transitionChunkBuffer&&(this.transitionChunkBuffer.totalParts!==e.totalParts||this.transitionChunkBuffer.transitionId!==e.transitionId))throw this.transitionChunkBuffer=null,new Error("Invalid TransitionChunk");if(this.transitionChunkBuffer===null&&(this.transitionChunkBuffer={chunks:[],totalParts:e.totalParts,transitionId:e.transitionId}),e.partNumber!==this.transitionChunkBuffer.chunks.length){const n=this.transitionChunkBuffer.chunks.length;throw this.transitionChunkBuffer=null,new Error(`TransitionChunk received out of order: expected part ${n}, got ${e.partNumber}`)}if(this.transitionChunkBuffer.chunks.push(e.chunk),this.transitionChunkBuffer.chunks.length===e.totalParts){const n=this.transitionChunkBuffer.chunks.join("");this.transitionChunkBuffer=null;const r=li(JSON.parse(n));if(r.type!=="Transition")throw new Error(`Expected Transition, got ${r.type} after assembling chunks`);return r}return null}connect(){if(this.socket.state==="terminated")return;if(this.socket.state!=="disconnected"&&this.socket.state!=="stopped")throw new Error("Didn't start connection from disconnected state: "+this.socket.state);const e=new this.webSocketConstructor(this.uri);this._logVerbose("constructed WebSocket"),this.setSocketState({state:"connecting",ws:e,paused:"no"}),this.resetServerInactivityTimeout(),e.onopen=()=>{if(this.logger.logVerbose("begin ws.onopen"),this.socket.state!=="connecting")throw new Error("onopen called with socket not in connecting state");if(this.setSocketState({state:"ready",ws:e,paused:this.socket.paused==="yes"?"uninitialized":"no"}),this.resetServerInactivityTimeout(),this.socket.paused==="no"&&(this._hasEverConnected=!0,this.onOpen({connectionCount:this.connectionCount,lastCloseReason:this.lastCloseReason,clientTs:Ee()})),this.lastCloseReason!=="InitialConnect"&&(this.lastCloseReason?this.logger.log("WebSocket reconnected at",ci(),"after disconnect due to",this.lastCloseReason):this.logger.log("WebSocket reconnected at",ci())),this.connectionCount+=1,this.lastCloseReason=null,this.pendingNetworkRecoveryInfo!==null){const{timeSavedMs:n}=this.pendingNetworkRecoveryInfo;this.pendingNetworkRecoveryInfo=null,this.sendMessage({type:"Event",eventType:"NetworkRecoveryReconnect",event:{timeSavedMs:n}}),this.logger.log(`Network recovery reconnect saved ~${Math.round(n/1e3)}s of waiting`)}},e.onerror=n=>{this.transitionChunkBuffer=null;const r=n.message;r&&this.logger.log(`WebSocket error message: ${r}`)},e.onmessage=n=>{this.resetServerInactivityTimeout();const r=n.data.length;let i=li(JSON.parse(n.data));if(this._logVerbose(`received ws message with type ${i.type}`),i.type==="Ping")return;if(i.type==="TransitionChunk"){const s=this.assembleTransition(i);if(!s)return;i=s,this._logVerbose(`assembled full ws message of type ${i.type}`)}this.transitionChunkBuffer!==null&&(this.transitionChunkBuffer=null,this.logger.log(`Received unexpected ${i.type} while buffering TransitionChunks`)),i.type==="Transition"&&this.reportLargeTransition({messageLength:r,transition:i}),this.onMessage(i).hasSyncedPastLastReconnect&&(this.retries=0,this.markConnectionStateDirty())},e.onclose=n=>{if(this._logVerbose("begin ws.onclose"),this.transitionChunkBuffer=null,this.lastCloseReason===null&&(this.lastCloseReason=n.reason||`closed with code ${n.code}`),n.code!==ea&&n.code!==ta&&n.code!==na&&n.code!==ra){let i=`WebSocket closed with code ${n.code}`;n.reason&&(i+=`: ${n.reason}`),this.logger.log(i),this.onServerDisconnectError&&n.reason&&this.onServerDisconnectError(i)}const r=ia(n.reason);this.scheduleReconnect(r)}}socketState(){return this.socket.state}sendMessage(e){const n={type:e.type,...e.type==="Authenticate"&&e.tokenType==="User"?{value:`...${e.value.slice(-7)}`}:{}};if(this.socket.state==="ready"&&this.socket.paused==="no"){const r=Zs(e),i=JSON.stringify(r);let o=!1;try{this.socket.ws.send(i),o=!0}catch(s){this.logger.log(`Failed to send message on WebSocket, reconnecting: ${s}`),this.closeAndReconnect("FailedToSendMessage")}return this._logVerbose(`${o?"sent":"failed to send"} message with type ${e.type}: ${JSON.stringify(n)}`),!0}return this._logVerbose(`message not sent (socket state: ${this.socket.state}, paused: ${"paused"in this.socket?this.socket.paused:void 0}): ${JSON.stringify(n)}`),!1}resetServerInactivityTimeout(){this.socket.state!=="terminated"&&(this.reconnectDueToServerInactivityTimeout!==null&&(clearTimeout(this.reconnectDueToServerInactivityTimeout),this.reconnectDueToServerInactivityTimeout=null),this.reconnectDueToServerInactivityTimeout=setTimeout(()=>{this.closeAndReconnect("InactiveServer")},this.serverInactivityThreshold))}scheduleReconnect(e){this.scheduledReconnect&&(clearTimeout(this.scheduledReconnect.timeout),this.scheduledReconnect=null),this.socket={state:"disconnected"};const n=this.nextBackoff(e);this.markConnectionStateDirty(),this.logger.log(`Attempting reconnect in ${Math.round(n)}ms`);const r=Ee(),i=setTimeout(()=>{this.scheduledReconnect?.timeout===i&&(this.scheduledReconnect=null,this.connect())},n);this.scheduledReconnect={timeout:i,scheduledAt:r,backoffMs:n}}closeAndReconnect(e){switch(this._logVerbose(`begin closeAndReconnect with reason ${e}`),this.socket.state){case"disconnected":case"terminated":case"stopped":return;case"connecting":case"ready":{this.lastCloseReason=e,this.close(),this.scheduleReconnect("client");return}default:this.socket}}close(){switch(this.transitionChunkBuffer=null,this.socket.state){case"disconnected":case"terminated":case"stopped":return Promise.resolve();case"connecting":{const e=this.socket.ws;return e.onmessage=n=>{this._logVerbose("Ignoring message received after close")},new Promise(n=>{e.onclose=()=>{this._logVerbose("Closed after connecting"),n()},e.onopen=()=>{this._logVerbose("Opened after connecting"),e.close()}})}case"ready":{this._logVerbose("ws.close called");const e=this.socket.ws;e.onmessage=r=>{this._logVerbose("Ignoring message received after close")};const n=new Promise(r=>{e.onclose=()=>{r()}});return e.close(),n}default:return this.socket,Promise.resolve()}}terminate(){switch(this.reconnectDueToServerInactivityTimeout&&clearTimeout(this.reconnectDueToServerInactivityTimeout),this.scheduledReconnect&&(clearTimeout(this.scheduledReconnect.timeout),this.scheduledReconnect=null),this.cleanupNetworkListener(),this.socket.state){case"terminated":case"stopped":case"disconnected":case"connecting":case"ready":{const e=this.close();return this.setSocketState({state:"terminated"}),e}default:throw this.socket,new Error(`Invalid websocket state: ${this.socket.state}`)}}stop(){switch(this.socket.state){case"terminated":return Promise.resolve();case"connecting":case"stopped":case"disconnected":case"ready":{this.cleanupNetworkListener();const e=this.close();return this.socket={state:"stopped"},e}default:return this.socket,Promise.resolve()}}tryRestart(){switch(this.socket.state){case"stopped":break;case"terminated":case"connecting":case"ready":case"disconnected":this.logger.logVerbose("Restart called without stopping first");return;default:this.socket}this.setupNetworkListener(),this.connect()}pause(){switch(this.socket.state){case"disconnected":case"stopped":case"terminated":return;case"connecting":case"ready":{this.socket={...this.socket,paused:"yes"};return}default:{this.socket;return}}}tryReconnectImmediately(){if(this._logVerbose("tryReconnectImmediately called"),this.socket.state!=="disconnected"){this._logVerbose(`tryReconnectImmediately called but socket state is ${this.socket.state}, no action taken`);return}let e=null;if(this.scheduledReconnect){const n=Ee()-this.scheduledReconnect.scheduledAt;e=Math.max(0,this.scheduledReconnect.backoffMs-n),this._logVerbose(`would have waited ${Math.round(e)}ms more (backoff was ${Math.round(this.scheduledReconnect.backoffMs)}ms, elapsed ${Math.round(n)}ms)`),clearTimeout(this.scheduledReconnect.timeout),this.scheduledReconnect=null,this._logVerbose("canceled scheduled reconnect")}this.logger.log("Network recovery detected, reconnecting immediately"),this.pendingNetworkRecoveryInfo=e!==null?{timeSavedMs:e}:null,this.connect()}resume(){switch(this.socket.state){case"connecting":this.socket={...this.socket,paused:"no"};return;case"ready":this.socket.paused==="uninitialized"?(this.socket={...this.socket,paused:"no"},this._hasEverConnected=!0,this.onOpen({connectionCount:this.connectionCount,lastCloseReason:this.lastCloseReason,clientTs:Ee()})):this.socket.paused==="yes"&&(this.socket={...this.socket,paused:"no"},this.onResume());return;case"terminated":case"stopped":case"disconnected":return;default:this.socket}this.connect()}connectionState(){return{isConnected:this.socket.state==="ready",hasEverConnected:this._hasEverConnected,connectionCount:this.connectionCount,connectionRetries:this.retries}}_logVerbose(e){this.logger.logVerbose(e)}nextBackoff(e){const r=(e==="client"?100:e==="Unknown"?this.defaultInitialBackoff:ui[e].timeout)*Math.pow(2,this.retries);this.retries+=1;const i=Math.min(r,this.maxBackoff),o=i*(Math.random()-.5);return i+o}reportLargeTransition({transition:e,messageLength:n}){if(e.clientClockSkew===void 0||e.serverTs===void 0)return;const r=Ee()-e.clientClockSkew-e.serverTs/1e6,i=`${Math.round(r)}ms`,o=`${Math.round(n/1e4)/100}MB`,s=n/(r/1e3),l=`${Math.round(s/1e4)/100}MB per second`;this._logVerbose(`received ${o} transition in ${i} at ${l}`),n>2e7?this.logger.log(`received query results totaling more that 20MB (${o}) which will take a long time to download on slower connections`):r>2e4&&this.logger.log(`received query results totaling ${o} which took more than 20s to arrive (${i})`),this.debug&&this.sendMessage({type:"Event",eventType:"ClientReceivedTransition",event:{transitionTransitTime:r,messageLength:n}})}}function sa(){return aa()}function aa(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}class Xe extends Error{}Xe.prototype.name="InvalidTokenError";function la(t){return decodeURIComponent(atob(t).replace(/(.)/g,(e,n)=>{let r=n.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}function ca(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return la(e)}catch{return atob(e)}}function hi(t,e){if(typeof t!="string")throw new Xe("Invalid token specified: must be a string");e||(e={});const n=e.header===!0?0:1,r=t.split(".")[n];if(typeof r!="string")throw new Xe(`Invalid token specified: missing part #${n+1}`);let i;try{i=ca(r)}catch(o){throw new Xe(`Invalid token specified: invalid base64 for part #${n+1} (${o.message})`)}try{return JSON.parse(i)}catch(o){throw new Xe(`Invalid token specified: invalid json for part #${n+1} (${o.message})`)}}var ua=Object.defineProperty,ha=(t,e,n)=>e in t?ua(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,H=(t,e,n)=>ha(t,typeof e!="symbol"?e+"":e,n);const da=480*60*60*1e3,di=2;class fa{constructor(e,n,r){H(this,"authState",{state:"noAuth"}),H(this,"configVersion",0),H(this,"syncState"),H(this,"authenticate"),H(this,"stopSocket"),H(this,"tryRestartSocket"),H(this,"pauseSocket"),H(this,"resumeSocket"),H(this,"clearAuth"),H(this,"logger"),H(this,"refreshTokenLeewaySeconds"),H(this,"tokenConfirmationAttempts",0),this.syncState=e,this.authenticate=n.authenticate,this.stopSocket=n.stopSocket,this.tryRestartSocket=n.tryRestartSocket,this.pauseSocket=n.pauseSocket,this.resumeSocket=n.resumeSocket,this.clearAuth=n.clearAuth,this.logger=r.logger,this.refreshTokenLeewaySeconds=r.refreshTokenLeewaySeconds}async setConfig(e,n){this.resetAuthState(),this._logVerbose("pausing WS for auth token fetch"),this.pauseSocket();const r=await this.fetchTokenAndGuardAgainstRace(e,{forceRefreshToken:!1});r.isFromOutdatedConfig||(r.value?(this.setAuthState({state:"waitingForServerConfirmationOfCachedToken",config:{fetchToken:e,onAuthChange:n},hasRetried:!1}),this.authenticate(r.value)):(this.setAuthState({state:"initialRefetch",config:{fetchToken:e,onAuthChange:n}}),await this.refetchToken()),this._logVerbose("resuming WS after auth token fetch"),this.resumeSocket())}onTransition(e){if(this.syncState.isCurrentOrNewerAuthVersion(e.endVersion.identity)&&!(e.endVersion.identity<=e.startVersion.identity)){if(this._logVerbose(`auth state is ${this.authState.state} when handling transition`),this.syncState.markAuthCompletion(),this.authState.state==="waitingForServerConfirmationOfCachedToken"){this._logVerbose("server confirmed auth token is valid"),this.refetchToken(),this.authState.config.onAuthChange(!0);return}this.authState.state==="waitingForServerConfirmationOfFreshToken"&&(this._logVerbose("server confirmed new auth token is valid"),this.scheduleTokenRefetch(this.authState.token),this.tokenConfirmationAttempts=0,this.authState.hadAuth||this.authState.config.onAuthChange(!0))}}onAuthError(e){if(e.authUpdateAttempted===!1&&(this.authState.state==="waitingForServerConfirmationOfFreshToken"||this.authState.state==="waitingForServerConfirmationOfCachedToken")){this._logVerbose("ignoring non-auth token expired error");return}const{baseVersion:n}=e;if(!this.syncState.isCurrentOrNewerAuthVersion(n+1)){this._logVerbose("ignoring auth error for previous auth attempt");return}this.tryToReauthenticate(e)}async tryToReauthenticate(e){if(this._logVerbose(`attempting to reauthenticate: ${e.error}`),this.authState.state==="noAuth"||this.authState.state==="waitingForServerConfirmationOfFreshToken"&&this.tokenConfirmationAttempts>=di){this.logger.error(`Failed to authenticate: "${e.error}", check your server auth config`),this.syncState.hasAuth()&&this.syncState.clearAuth(),this.authState.state!=="noAuth"&&this.setAndReportAuthFailed(this.authState.config.onAuthChange);return}this.authState.state==="waitingForServerConfirmationOfFreshToken"&&(this.tokenConfirmationAttempts++,this._logVerbose(`retrying reauthentication, ${di-this.tokenConfirmationAttempts} attempts remaining`)),await this.stopSocket();const n=await this.fetchTokenAndGuardAgainstRace(this.authState.config.fetchToken,{forceRefreshToken:!0});n.isFromOutdatedConfig||(n.value&&this.syncState.isNewAuth(n.value)?(this.authenticate(n.value),this.setAuthState({state:"waitingForServerConfirmationOfFreshToken",config:this.authState.config,token:n.value,hadAuth:this.authState.state==="notRefetching"||this.authState.state==="waitingForScheduledRefetch"})):(this._logVerbose("reauthentication failed, could not fetch a new token"),this.syncState.hasAuth()&&this.syncState.clearAuth(),this.setAndReportAuthFailed(this.authState.config.onAuthChange)),this.tryRestartSocket())}async refetchToken(){if(this.authState.state==="noAuth")return;this._logVerbose("refetching auth token");const e=await this.fetchTokenAndGuardAgainstRace(this.authState.config.fetchToken,{forceRefreshToken:!0});e.isFromOutdatedConfig||(e.value?this.syncState.isNewAuth(e.value)?(this.setAuthState({state:"waitingForServerConfirmationOfFreshToken",hadAuth:this.syncState.hasAuth(),token:e.value,config:this.authState.config}),this.authenticate(e.value)):this.setAuthState({state:"notRefetching",config:this.authState.config}):(this._logVerbose("refetching token failed"),this.syncState.hasAuth()&&this.clearAuth(),this.setAndReportAuthFailed(this.authState.config.onAuthChange)),this._logVerbose("restarting WS after auth token fetch (if currently stopped)"),this.tryRestartSocket())}scheduleTokenRefetch(e){if(this.authState.state==="noAuth")return;const n=this.decodeToken(e);if(!n){this.logger.error("Auth token is not a valid JWT, cannot refetch the token");return}const{iat:r,exp:i}=n;if(!r||!i){this.logger.error("Auth token does not have required fields, cannot refetch the token");return}const o=i-r;if(o<=2){this.logger.error("Auth token does not live long enough, cannot refetch the token");return}let s=Math.min(da,(o-this.refreshTokenLeewaySeconds)*1e3);s<=0&&(this.logger.warn(`Refetching auth token immediately, configured leeway ${this.refreshTokenLeewaySeconds}s is larger than the token's lifetime ${o}s`),s=0);const l=setTimeout(()=>{this._logVerbose("running scheduled token refetch"),this.refetchToken()},s);this.setAuthState({state:"waitingForScheduledRefetch",refetchTokenTimeoutId:l,config:this.authState.config}),this._logVerbose(`scheduled preemptive auth token refetching in ${s}ms`)}async fetchTokenAndGuardAgainstRace(e,n){const r=++this.configVersion;this._logVerbose(`fetching token with config version ${r}`);const i=await e(n);return this.configVersion!==r?(this._logVerbose(`stale config version, expected ${r}, got ${this.configVersion}`),{isFromOutdatedConfig:!0}):{isFromOutdatedConfig:!1,value:i}}stop(){this.resetAuthState(),this.configVersion++,this._logVerbose(`config version bumped to ${this.configVersion}`)}setAndReportAuthFailed(e){e(!1),this.resetAuthState()}resetAuthState(){this.setAuthState({state:"noAuth"})}setAuthState(e){const n=e.state==="waitingForServerConfirmationOfFreshToken"?{hadAuth:e.hadAuth,state:e.state,token:`...${e.token.slice(-7)}`}:{state:e.state};switch(this._logVerbose(`setting auth state to ${JSON.stringify(n)}`),e.state){case"waitingForScheduledRefetch":case"notRefetching":case"noAuth":this.tokenConfirmationAttempts=0;break}this.authState.state==="waitingForScheduledRefetch"&&clearTimeout(this.authState.refetchTokenTimeoutId),this.authState=e}decodeToken(e){try{return hi(e)}catch(n){return this._logVerbose(`Error decoding token: ${n instanceof Error?n.message:"Unknown error"}`),null}}_logVerbose(e){this.logger.logVerbose(`${e} [v${this.configVersion}]`)}}const pa=["convexClientConstructed","convexWebSocketOpen","convexFirstMessageReceived"];function ga(t,e){const n={sessionId:e};typeof performance>"u"||!performance.mark||performance.mark(t,{detail:n})}function ma(t){let e=t.name.slice(6);return e=e.charAt(0).toLowerCase()+e.slice(1),{name:e,startTime:t.startTime}}function xa(t){if(typeof performance>"u"||!performance.getEntriesByName)return[];const e=[];for(const n of pa){const r=performance.getEntriesByName(n).filter(i=>i.entryType==="mark").filter(i=>i.detail.sessionId===t);e.push(...r)}return e.map(ma)}var ba=Object.defineProperty,ya=(t,e,n)=>e in t?ba(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,E=(t,e,n)=>ya(t,typeof e!="symbol"?e+"":e,n);class va{constructor(e,n,r){if(E(this,"address"),E(this,"state"),E(this,"requestManager"),E(this,"webSocketManager"),E(this,"authenticationManager"),E(this,"remoteQuerySet"),E(this,"optimisticQueryResults"),E(this,"_transitionHandlerCounter",0),E(this,"_nextRequestId"),E(this,"_onTransitionFns",new Map),E(this,"_sessionId"),E(this,"firstMessageReceived",!1),E(this,"debug"),E(this,"logger"),E(this,"maxObservedTimestamp"),E(this,"connectionStateSubscribers",new Map),E(this,"nextConnectionStateSubscriberId",0),E(this,"_lastPublishedConnectionState"),E(this,"markConnectionStateDirty",()=>{Promise.resolve().then(()=>{const p=this.connectionState();if(JSON.stringify(p)!==JSON.stringify(this._lastPublishedConnectionState)){this._lastPublishedConnectionState=p;for(const g of this.connectionStateSubscribers.values())g(p)}})}),E(this,"mark",p=>{this.debug&&ga(p,this.sessionId)}),typeof e=="object")throw new Error("Passing a ClientConfig object is no longer supported. Pass the URL of the Convex deployment as a string directly.");r?.skipConvexDeploymentUrlCheck!==!0&&gs(e),r={...r};const i=r.authRefreshTokenLeewaySeconds??10;let o=r.webSocketConstructor;if(!o&&typeof WebSocket>"u")throw new Error("No WebSocket global variable defined! To use Convex in an environment without WebSocket try the HTTP client: https://docs.convex.dev/api/classes/browser.ConvexHttpClient");o=o||WebSocket,this.debug=r.reportDebugInfoToConvex??!1,this.address=e,this.logger=r.logger===!1?ti({verbose:r.verbose??!1}):r.logger!==!0&&r.logger?r.logger:ei({verbose:r.verbose??!1});const s=e.search("://");if(s===-1)throw new Error("Provided address was not an absolute URL.");const l=e.substring(s+3),a=e.substring(0,s);let u;if(a==="http")u="ws";else if(a==="https")u="wss";else throw new Error(`Unknown parent protocol ${a}`);const d=`${u}://${l}/api/${Kr}/sync`;this.state=new Is,this.remoteQuerySet=new ai(p=>this.state.queryPath(p),this.logger),this.requestManager=new qs(this.logger,this.markConnectionStateDirty);const h=()=>{this.webSocketManager.pause(),this.state.pause()};this.authenticationManager=new fa(this.state,{authenticate:p=>{const g=this.state.setAuth(p);return this.webSocketManager.sendMessage(g),g.baseVersion},stopSocket:()=>this.webSocketManager.stop(),tryRestartSocket:()=>this.webSocketManager.tryRestart(),pauseSocket:h,resumeSocket:()=>this.webSocketManager.resume(),clearAuth:()=>{this.clearAuth()}},{logger:this.logger,refreshTokenLeewaySeconds:i}),this.optimisticQueryResults=new Qs,this.addOnTransitionHandler(p=>{n(p.queries.map(g=>g.token))}),this._nextRequestId=0,this._sessionId=sa();const{unsavedChangesWarning:f}=r;if(typeof window>"u"||typeof window.addEventListener>"u"){if(f===!0)throw new Error("unsavedChangesWarning requested, but window.addEventListener not found! Remove {unsavedChangesWarning: true} from Convex client options.")}else f!==!1&&window.addEventListener("beforeunload",p=>{if(this.requestManager.hasIncompleteRequests()){p.preventDefault();const g="Are you sure you want to leave? Your changes may not be saved.";return(p||window.event).returnValue=g,g}});this.webSocketManager=new oa(d,{onOpen:p=>{this.mark("convexWebSocketOpen"),this.webSocketManager.sendMessage({...p,type:"Connect",sessionId:this._sessionId,maxObservedTimestamp:this.maxObservedTimestamp}),this.remoteQuerySet=new ai(x=>this.state.queryPath(x),this.logger);const[g,m]=this.state.restart();m&&this.webSocketManager.sendMessage(m),this.webSocketManager.sendMessage(g);for(const x of this.requestManager.restart())this.webSocketManager.sendMessage(x)},onResume:()=>{const[p,g]=this.state.resume();g&&this.webSocketManager.sendMessage(g),p&&this.webSocketManager.sendMessage(p);for(const m of this.requestManager.resume())this.webSocketManager.sendMessage(m)},onMessage:p=>{switch(this.firstMessageReceived||(this.firstMessageReceived=!0,this.mark("convexFirstMessageReceived"),this.reportMarks()),p.type){case"Transition":{this.observedTimestamp(p.endVersion.ts),this.authenticationManager.onTransition(p),this.remoteQuerySet.transition(p),this.state.transition(p);const g=this.requestManager.removeCompleted(this.remoteQuerySet.timestamp());this.notifyOnQueryResultChanges(g);break}case"MutationResponse":{p.success&&this.observedTimestamp(p.ts);const g=this.requestManager.onResponse(p);g!==null&&this.notifyOnQueryResultChanges(new Map([[g.requestId,g.result]]));break}case"ActionResponse":{this.requestManager.onResponse(p);break}case"AuthError":{this.authenticationManager.onAuthError(p);break}case"FatalError":{const g=As(this.logger,p.error);throw this.webSocketManager.terminate(),g}}return{hasSyncedPastLastReconnect:this.hasSyncedPastLastReconnect()}},onServerDisconnectError:r.onServerDisconnectError},o,this.logger,this.markConnectionStateDirty,this.debug),this.mark("convexClientConstructed"),r.expectAuth&&h()}hasSyncedPastLastReconnect(){return this.requestManager.hasSyncedPastLastReconnect()&&this.state.hasSyncedPastLastReconnect()}observedTimestamp(e){(this.maxObservedTimestamp===void 0||this.maxObservedTimestamp.lessThanOrEqual(e))&&(this.maxObservedTimestamp=e)}getMaxObservedTimestamp(){return this.maxObservedTimestamp}notifyOnQueryResultChanges(e){const n=this.remoteQuerySet.remoteQueryResults(),r=new Map;for(const[o,s]of n){const l=this.state.queryToken(o);if(l!==null){const a={result:s,udfPath:this.state.queryPath(o),args:this.state.queryArgs(o)};r.set(l,a)}}const i=this.optimisticQueryResults.ingestQueryResultsFromServer(r,new Set(e.keys()));this.handleTransition({queries:i.map(o=>{const s=this.optimisticQueryResults.rawQueryResult(o);return{token:o,modification:{kind:"Updated",result:s}}}),reflectedMutations:Array.from(e).map(([o,s])=>({requestId:o,result:s})),timestamp:this.remoteQuerySet.timestamp()})}handleTransition(e){for(const n of this._onTransitionFns.values())n(e)}addOnTransitionHandler(e){const n=this._transitionHandlerCounter++;return this._onTransitionFns.set(n,e),()=>this._onTransitionFns.delete(n)}getCurrentAuthClaims(){const e=this.state.getAuth();let n={};if(e&&e.tokenType==="User")try{n=e?hi(e.value):{}}catch{n={}}else return;return{token:e.value,decoded:n}}setAuth(e,n){this.authenticationManager.setConfig(e,n)}hasAuth(){return this.state.hasAuth()}setAdminAuth(e,n){const r=this.state.setAdminAuth(e,n);this.webSocketManager.sendMessage(r)}clearAuth(){const e=this.state.clearAuth();this.webSocketManager.sendMessage(e)}subscribe(e,n,r){const i=ie(n),{modification:o,queryToken:s,unsubscribe:l}=this.state.subscribe(e,i,r?.journal,r?.componentPath);return o!==null&&this.webSocketManager.sendMessage(o),{queryToken:s,unsubscribe:()=>{const a=l();a&&this.webSocketManager.sendMessage(a)}}}localQueryResult(e,n){const r=ie(n),i=ge(e,r);return this.optimisticQueryResults.queryResult(i)}localQueryResultByToken(e){return this.optimisticQueryResults.queryResult(e)}hasLocalQueryResultByToken(e){return this.optimisticQueryResults.hasQueryResult(e)}localQueryLogs(e,n){const r=ie(n),i=ge(e,r);return this.optimisticQueryResults.queryLogs(i)}queryJournal(e,n){const r=ie(n),i=ge(e,r);return this.state.queryJournal(i)}connectionState(){const e=this.webSocketManager.connectionState();return{hasInflightRequests:this.requestManager.hasInflightRequests(),isWebSocketConnected:e.isConnected,hasEverConnected:e.hasEverConnected,connectionCount:e.connectionCount,connectionRetries:e.connectionRetries,timeOfOldestInflightRequest:this.requestManager.timeOfOldestInflightRequest(),inflightMutations:this.requestManager.inflightMutations(),inflightActions:this.requestManager.inflightActions()}}subscribeToConnectionState(e){const n=this.nextConnectionStateSubscriberId++;return this.connectionStateSubscribers.set(n,e),()=>{this.connectionStateSubscribers.delete(n)}}async mutation(e,n,r){const i=await this.mutationInternal(e,n,r);if(!i.success)throw i.errorData!==void 0?hn(i,new xt(Ae("mutation",e,i))):new Error(Ae("mutation",e,i));return i.value}async mutationInternal(e,n,r,i){const{mutationPromise:o}=this.enqueueMutation(e,n,r,i);return o}enqueueMutation(e,n,r,i){const o=ie(n);this.tryReportLongDisconnect();const s=this.nextRequestId;if(this._nextRequestId++,r!==void 0){const d=r.optimisticUpdate;if(d!==void 0){const h=g=>{d(g,o)instanceof Promise&&this.logger.warn("Optimistic update handler returned a Promise. Optimistic updates should be synchronous.")},p=this.optimisticQueryResults.applyOptimisticUpdate(h,s).map(g=>{const m=this.localQueryResultByToken(g);return{token:g,modification:{kind:"Updated",result:m===void 0?void 0:{success:!0,value:m,logLines:[]}}}});this.handleTransition({queries:p,reflectedMutations:[],timestamp:this.remoteQuerySet.timestamp()})}}const l={type:"Mutation",requestId:s,udfPath:e,componentPath:i,args:[ee(o)]},a=this.webSocketManager.sendMessage(l),u=this.requestManager.request(l,a);return{requestId:s,mutationPromise:u}}async action(e,n){const r=await this.actionInternal(e,n);if(!r.success)throw r.errorData!==void 0?hn(r,new xt(Ae("action",e,r))):new Error(Ae("action",e,r));return r.value}async actionInternal(e,n,r){const i=ie(n),o=this.nextRequestId;this._nextRequestId++,this.tryReportLongDisconnect();const s={type:"Action",requestId:o,udfPath:e,componentPath:r,args:[ee(i)]},l=this.webSocketManager.sendMessage(s);return this.requestManager.request(s,l)}async close(){return this.authenticationManager.stop(),this.webSocketManager.terminate()}get url(){return this.address}get nextRequestId(){return this._nextRequestId}get sessionId(){return this._sessionId}reportMarks(){if(this.debug){const e=xa(this.sessionId);this.webSocketManager.sendMessage({type:"Event",eventType:"ClientConnect",event:e})}}tryReportLongDisconnect(){if(!this.debug)return;const e=this.connectionState().timeOfOldestInflightRequest;if(e===null||Date.now()-e.getTime()<=60*1e3)return;const n=`${this.address}/api/debug_event`;fetch(n,{method:"POST",headers:{"Content-Type":"application/json","Convex-Client":`npm-${Kr}`},body:JSON.stringify({event:"LongWebsocketDisconnect"})}).then(r=>{r.ok||this.logger.warn("Analytics request failed with response:",r.body)}).catch(r=>{this.logger.warn("Analytics response failed with error:",r)})}}function pn(t){if(typeof t!="object"||t===null||!Array.isArray(t.page)||typeof t.isDone!="boolean"||typeof t.continueCursor!="string")throw new Error(`Not a valid paginated query result: ${t?.toString()}`);return t}var wa=Object.defineProperty,_a=(t,e,n)=>e in t?wa(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,fi=(t,e,n)=>_a(t,typeof e!="symbol"?e+"":e,n);class ka{constructor(e,n){this.client=e,this.onTransition=n,fi(this,"paginatedQuerySet",new Map),fi(this,"lastTransitionTs"),this.lastTransitionTs=N.fromNumber(0),this.client.addOnTransitionHandler(r=>this.onBaseTransition(r))}subscribe(e,n,r){const i=pe(e),o=ni(i,n,r),s=()=>this.removePaginatedQuerySubscriber(o),l=this.paginatedQuerySet.get(o);return l?(l.numSubscribers+=1,{paginatedQueryToken:o,unsubscribe:s}):(this.paginatedQuerySet.set(o,{token:o,canonicalizedUdfPath:i,args:n,numSubscribers:1,options:{initialNumItems:r.initialNumItems},nextPageKey:0,pageKeys:[],pageKeyToQuery:new Map,ongoingSplits:new Map,skip:!1,id:r.id}),this.addPageToPaginatedQuery(o,null,r.initialNumItems),{paginatedQueryToken:o,unsubscribe:s})}localQueryResult(e,n,r){const i=pe(e),o=ni(i,n,r);return this.localQueryResultByToken(o)}localQueryResultByToken(e){const n=this.paginatedQuerySet.get(e);if(!n)return;const r=this.activePageQueryTokens(n);if(r.length===0)return{results:[],status:"LoadingFirstPage",loadMore:a=>this.loadMoreOfPaginatedQuery(e,a)};let i=[],o=!1,s=!1;for(const a of r){const u=this.client.localQueryResultByToken(a);if(u===void 0){o=!0,s=!1;continue}const d=pn(u);i=i.concat(d.page),s=!!d.isDone}let l;return o?l=i.length===0?"LoadingFirstPage":"LoadingMore":s?l="Exhausted":l="CanLoadMore",{results:i,status:l,loadMore:a=>this.loadMoreOfPaginatedQuery(e,a)}}onBaseTransition(e){const n=e.queries.map(s=>s.token),r=this.queriesContainingTokens(n);let i=[];r.length>0&&(this.processPaginatedQuerySplits(r,s=>this.client.localQueryResultByToken(s)),i=r.map(s=>({token:s,modification:{kind:"Updated",result:this.localQueryResultByToken(s)}})));const o={...e,paginatedQueries:i};this.onTransition(o)}loadMoreOfPaginatedQuery(e,n){this.mustGetPaginatedQuery(e);const r=this.queryTokenForLastPageOfPaginatedQuery(e),i=this.client.localQueryResultByToken(r);if(!i)return!1;const o=pn(i);if(o.isDone)return!1;this.addPageToPaginatedQuery(e,o.continueCursor,n);const s={timestamp:this.lastTransitionTs,reflectedMutations:[],queries:[],paginatedQueries:[{token:e,modification:{kind:"Updated",result:this.localQueryResultByToken(e)}}]};return this.onTransition(s),!0}queriesContainingTokens(e){if(e.length===0)return[];const n=[],r=new Set(e);for(const[i,o]of this.paginatedQuerySet)for(const s of this.allQueryTokens(o))if(r.has(s)){n.push(i);break}return n}processPaginatedQuerySplits(e,n){for(const r of e){const i=this.mustGetPaginatedQuery(r),{ongoingSplits:o,pageKeyToQuery:s,pageKeys:l}=i;for(const[a,[u,d]]of o)n(s.get(u).queryToken)!==void 0&&n(s.get(d).queryToken)!==void 0&&this.completePaginatedQuerySplit(i,a,u,d);for(const a of l){if(o.has(a))continue;const u=s.get(a).queryToken,d=n(u);if(!d)continue;const h=pn(d);h.splitCursor&&(h.pageStatus==="SplitRecommended"||h.pageStatus==="SplitRequired"||h.page.length>i.options.initialNumItems*2)&&this.splitPaginatedQueryPage(i,a,h.splitCursor,h.continueCursor)}}}splitPaginatedQueryPage(e,n,r,i){const o=e.nextPageKey++,s=e.nextPageKey++,l={cursor:i,numItems:e.options.initialNumItems,id:e.id},a=this.client.subscribe(e.canonicalizedUdfPath,{...e.args,paginationOpts:{...l,cursor:null,endCursor:r}});e.pageKeyToQuery.set(o,a);const u=this.client.subscribe(e.canonicalizedUdfPath,{...e.args,paginationOpts:{...l,cursor:r,endCursor:i}});e.pageKeyToQuery.set(s,u),e.ongoingSplits.set(n,[o,s])}addPageToPaginatedQuery(e,n,r){const i=this.mustGetPaginatedQuery(e),o=i.nextPageKey++,s={cursor:n,numItems:r,id:i.id},l={...i.args,paginationOpts:s},a=this.client.subscribe(i.canonicalizedUdfPath,l);return i.pageKeys.push(o),i.pageKeyToQuery.set(o,a),a}removePaginatedQuerySubscriber(e){const n=this.paginatedQuerySet.get(e);if(n&&(n.numSubscribers-=1,!(n.numSubscribers>0))){for(const r of n.pageKeyToQuery.values())r.unsubscribe();this.paginatedQuerySet.delete(e)}}completePaginatedQuerySplit(e,n,r,i){const o=e.pageKeyToQuery.get(n);e.pageKeyToQuery.delete(n);const s=e.pageKeys.indexOf(n);e.pageKeys.splice(s,1,r,i),e.ongoingSplits.delete(n),o.unsubscribe()}activePageQueryTokens(e){return e.pageKeys.map(n=>e.pageKeyToQuery.get(n).queryToken)}allQueryTokens(e){return Array.from(e.pageKeyToQuery.values()).map(n=>n.queryToken)}queryTokenForLastPageOfPaginatedQuery(e){const n=this.mustGetPaginatedQuery(e),r=n.pageKeys[n.pageKeys.length-1];if(r===void 0)throw new Error(`No pages for paginated query ${e}`);return n.pageKeyToQuery.get(r).queryToken}mustGetPaginatedQuery(e){const n=this.paginatedQuerySet.get(e);if(!n)throw new Error("paginated query no longer exists for token "+e);return n}}function ja({getCurrentValue:t,subscribe:e}){const[n,r]=C(()=>({getCurrentValue:t,subscribe:e,value:t()}));let i=n.value;return(n.getCurrentValue!==t||n.subscribe!==e)&&(i=t(),r({getCurrentValue:t,subscribe:e,value:i})),S(()=>{let o=!1;const s=()=>{o||r(a=>{if(a.getCurrentValue!==t||a.subscribe!==e)return a;const u=t();return a.value===u?a:{...a,value:u}})},l=e(s);return s(),()=>{o=!0,l()}},[t,e]),i}var Sa=Object.defineProperty,Ca=(t,e,n)=>e in t?Sa(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,oe=(t,e,n)=>Ca(t,typeof e!="symbol"?e+"":e,n);const Ta=5e3;if(typeof rn>"u")throw new Error("Required dependency 'react' not found");function pi(t,e,n){function r(i){return Ea(i),e.mutation(t,i,{optimisticUpdate:n})}return r.withOptimisticUpdate=function(o){if(n!==void 0)throw new Error(`Already specified optimistic update for mutation ${O(t)}`);return pi(t,e,o)},r}class Ra{constructor(e,n){if(oe(this,"address"),oe(this,"cachedSync"),oe(this,"cachedPaginatedQueryClient"),oe(this,"listeners"),oe(this,"options"),oe(this,"closed",!1),oe(this,"_logger"),oe(this,"adminAuth"),oe(this,"fakeUserIdentity"),e===void 0)throw new Error("No address provided to ConvexReactClient.\nIf trying to deploy to production, make sure to follow all the instructions found at https://docs.convex.dev/production/hosting/\nIf running locally, make sure to run `convex dev` and ensure the .env.local file is populated.");if(typeof e!="string")throw new Error(`ConvexReactClient requires a URL like 'https://happy-otter-123.convex.cloud', received something of type ${typeof e} instead.`);if(!e.includes("://"))throw new Error("Provided address was not an absolute URL.");this.address=e,this.listeners=new Map,this._logger=n?.logger===!1?ti({verbose:n?.verbose??!1}):n?.logger!==!0&&n?.logger?n.logger:ei({verbose:n?.verbose??!1}),this.options={...n,logger:this._logger}}get url(){return this.address}get sync(){if(this.closed)throw new Error("ConvexReactClient has already been closed.");return this.cachedSync?this.cachedSync:(this.cachedSync=new va(this.address,()=>{},this.options),this.adminAuth&&this.cachedSync.setAdminAuth(this.adminAuth,this.fakeUserIdentity),this.cachedPaginatedQueryClient=new ka(this.cachedSync,e=>this.handleTransition(e)),this.cachedSync)}get paginatedQueryClient(){if(this.sync,this.cachedPaginatedQueryClient)return this.cachedPaginatedQueryClient;throw new Error("Should already be instantiated")}setAuth(e,n){if(typeof e=="string")throw new Error("Passing a string to ConvexReactClient.setAuth is no longer supported, please upgrade to passing in an async function to handle reauthentication.");this.sync.setAuth(e,n??(()=>{}))}clearAuth(){this.sync.clearAuth()}setAdminAuth(e,n){if(this.adminAuth=e,this.fakeUserIdentity=n,this.closed)throw new Error("ConvexReactClient has already been closed.");this.cachedSync&&this.sync.setAdminAuth(e,n)}watchQuery(e,...n){const[r,i]=n,o=O(e);return{onUpdate:s=>{const{queryToken:l,unsubscribe:a}=this.sync.subscribe(o,r,i),u=this.listeners.get(l);return u!==void 0?u.add(s):this.listeners.set(l,new Set([s])),()=>{if(this.closed)return;const d=this.listeners.get(l);d.delete(s),d.size===0&&this.listeners.delete(l),a()}},localQueryResult:()=>{if(this.cachedSync)return this.cachedSync.localQueryResult(o,r)},localQueryLogs:()=>{if(this.cachedSync)return this.cachedSync.localQueryLogs(o,r)},journal:()=>{if(this.cachedSync)return this.cachedSync.queryJournal(o,r)}}}prewarmQuery(e){const n=e.extendSubscriptionFor??Ta,i=this.watchQuery(e.query,e.args||{}).onUpdate(()=>{});setTimeout(i,n)}watchPaginatedQuery(e,n,r){const i=O(e);return{onUpdate:o=>{const{paginatedQueryToken:s,unsubscribe:l}=this.paginatedQueryClient.subscribe(i,n||{},r),a=this.listeners.get(s);return a!==void 0?a.add(o):this.listeners.set(s,new Set([o])),()=>{if(this.closed)return;const u=this.listeners.get(s);u.delete(o),u.size===0&&this.listeners.delete(s),l()}},localQueryResult:()=>this.paginatedQueryClient.localQueryResult(i,n,r)}}mutation(e,...n){const[r,i]=n,o=O(e);return this.sync.mutation(o,r,i)}action(e,...n){const r=O(e);return this.sync.action(r,...n)}query(e,...n){const r=this.watchQuery(e,...n),i=r.localQueryResult();return i!==void 0?Promise.resolve(i):new Promise((o,s)=>{const l=r.onUpdate(()=>{l();try{o(r.localQueryResult())}catch(a){s(a)}})})}connectionState(){return this.sync.connectionState()}subscribeToConnectionState(e){return this.sync.subscribeToConnectionState(e)}get logger(){return this._logger}async close(){if(this.closed=!0,this.listeners=new Map,this.cachedPaginatedQueryClient&&(this.cachedPaginatedQueryClient=void 0),this.cachedSync){const e=this.cachedSync;this.cachedSync=void 0,await e.close()}}handleTransition(e){const n=e.queries.map(i=>i.token),r=e.paginatedQueries.map(i=>i.token);this.transition([...n,...r])}transition(e){for(const n of e){const r=this.listeners.get(n);if(r)for(const i of r)i()}}}const gn=rn.createContext(void 0);function $a(){return ft(gn)}const Aa=({client:t,children:e})=>rn.createElement(gn.Provider,{value:t},e);function gi(t,...e){const n=e[0]==="skip",r=e[0]==="skip"?{}:ie(e[0]),i=typeof t=="string"?ri(t):t,o=O(i),s=J(()=>n?{}:{query:{query:i,args:r}},[JSON.stringify(ee(r)),o,n]),a=Ma(s).query;if(a instanceof Error)throw a;return a}function kt(t){const e=typeof t=="string"?ri(t):t,n=ft(gn);if(n===void 0)throw new Error("Could not find Convex client! `useMutation` must be used in the React component tree under `ConvexProvider`. Did you forget it? See https://docs.convex.dev/quick-start#set-up-convex-in-your-react-app");return J(()=>pi(e,n),[n,O(e)])}function Ea(t){if(typeof t=="object"&&t!==null&&"bubbles"in t&&"persist"in t&&"isDefaultPrevented"in t)throw new Error("Convex function called with SyntheticEvent object. Did you use a Convex function as an event handler directly? Event handlers like onClick receive an event object as their first argument. These SyntheticEvent objects are not valid Convex values. Try wrapping the function like `const handler = () => myMutation();` and using `handler` in the event handler.")}var Pa=Object.defineProperty,Ia=(t,e,n)=>e in t?Pa(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,mn=(t,e,n)=>Ia(t,typeof e!="symbol"?e+"":e,n);class La{constructor(e){mn(this,"createWatch"),mn(this,"queries"),mn(this,"listeners"),this.createWatch=e,this.queries={},this.listeners=new Set}setQueries(e){for(const n of Object.keys(e)){const{query:r,args:i,paginationOptions:o}=e[n];if(O(r),this.queries[n]===void 0)this.addQuery(n,r,i,o?{paginationOptions:o}:{});else{const s=this.queries[n];(O(r)!==O(s.query)||JSON.stringify(ee(i))!==JSON.stringify(ee(s.args))||JSON.stringify(o)!==JSON.stringify(s.paginationOptions))&&(this.removeQuery(n),this.addQuery(n,r,i,o?{paginationOptions:o}:{}))}}for(const n of Object.keys(this.queries))e[n]===void 0&&this.removeQuery(n)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getLocalResults(e){const n={};for(const r of Object.keys(e)){const{query:i,args:o}=e[r],s=e[r].paginationOptions;O(i);const l=this.createWatch(i,o,s?{paginationOptions:s}:{});let a;try{a=l.localQueryResult()}catch(u){if(u instanceof Error)a=u;else throw u}n[r]=a}return n}setCreateWatch(e){this.createWatch=e;for(const n of Object.keys(this.queries)){const{query:r,args:i,watch:o,paginationOptions:s}=this.queries[n],l="journal"in o?o.journal():void 0;this.removeQuery(n),this.addQuery(n,r,i,{...l?{journal:l}:[],...s?{paginationOptions:s}:{}})}}destroy(){for(const e of Object.keys(this.queries))this.removeQuery(e);this.listeners=new Set}addQuery(e,n,r,{paginationOptions:i,journal:o}){if(this.queries[e]!==void 0)throw new Error(`Tried to add a new query with identifier ${e} when it already exists.`);const s=this.createWatch(n,r,{...o?{journal:o}:[],...i?{paginationOptions:i}:{}}),l=s.onUpdate(()=>this.notifyListeners());this.queries[e]={query:n,args:r,watch:s,unsubscribe:l,...i?{paginationOptions:i}:{}}}removeQuery(e){const n=this.queries[e];if(n===void 0)throw new Error(`No query found with identifier ${e}.`);n.unsubscribe(),delete this.queries[e]}notifyListeners(){for(const e of this.listeners)e()}}function Ma(t){const e=$a();if(e===void 0)throw new Error("Could not find Convex client! `useQuery` must be used in the React component tree under `ConvexProvider`. Did you forget it? See https://docs.convex.dev/quick-start#set-up-convex-in-your-react-app");const n=J(()=>(r,i,{journal:o,paginationOptions:s})=>s?e.watchPaginatedQuery(r,i,s):e.watchQuery(r,i,o?{journal:o}:{}),[e]);return qa(t,n)}function qa(t,e){const[n]=C(()=>new La(e));n.createWatch!==e&&n.setCreateWatch(e),S(()=>()=>n.destroy(),[n]);const r=J(()=>({getCurrentValue:()=>n.getLocalResults(t),subscribe:i=>(n.setQueries(t),n.subscribe(i))}),[n,t]);return ja(r)}var Oa=Symbol.for("preact-signals");function jt(){if(ce>1)ce--;else{for(var t,e=!1;et!==void 0;){var n=et;for(et=void 0,xn++;n!==void 0;){var r=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&bi(n))try{n.c()}catch(i){e||(t=i,e=!0)}n=r}}if(xn=0,ce--,e)throw t}}function Na(t){if(ce>0)return t();ce++;try{return t()}finally{jt()}}var _=void 0;function mi(t){var e=_;_=void 0;try{return t()}finally{_=e}}var et=void 0,ce=0,xn=0,St=0;function xi(t){if(_!==void 0){var e=t.n;if(e===void 0||e.t!==_)return e={i:0,S:t,p:_.s,n:void 0,t:_,e:void 0,x:void 0,r:e},_.s!==void 0&&(_.s.n=e),_.s=e,t.n=e,32&_.f&&t.S(e),e;if(e.i===-1)return e.i=0,e.n!==void 0&&(e.n.p=e.p,e.p!==void 0&&(e.p.n=e.n),e.p=_.s,e.n=void 0,_.s.n=e,_.s=e),e}}function I(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}I.prototype.brand=Oa,I.prototype.h=function(){return!0},I.prototype.S=function(t){var e=this,n=this.t;n!==t&&t.e===void 0&&(t.x=n,this.t=t,n!==void 0?n.e=t:mi(function(){var r;(r=e.W)==null||r.call(e)}))},I.prototype.U=function(t){var e=this;if(this.t!==void 0){var n=t.e,r=t.x;n!==void 0&&(n.x=r,t.e=void 0),r!==void 0&&(r.e=n,t.x=void 0),t===this.t&&(this.t=r,r===void 0&&mi(function(){var i;(i=e.Z)==null||i.call(e)}))}},I.prototype.subscribe=function(t){var e=this;return tt(function(){var n=e.value,r=_;_=void 0;try{t(n)}finally{_=r}},{name:"sub"})},I.prototype.valueOf=function(){return this.value},I.prototype.toString=function(){return this.value+""},I.prototype.toJSON=function(){return this.value},I.prototype.peek=function(){var t=_;_=void 0;try{return this.value}finally{_=t}},Object.defineProperty(I.prototype,"value",{get:function(){var t=xi(this);return t!==void 0&&(t.i=this.i),this.v},set:function(t){if(t!==this.v){if(xn>100)throw new Error("Cycle detected");this.v=t,this.i++,St++,ce++;try{for(var e=this.t;e!==void 0;e=e.x)e.t.N()}finally{jt()}}}});function R(t,e){return new I(t,e)}function bi(t){for(var e=t.s;e!==void 0;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function yi(t){for(var e=t.s;e!==void 0;e=e.n){var n=e.S.n;if(n!==void 0&&(e.r=n),e.S.n=e,e.i=-1,e.n===void 0){t.s=e;break}}}function vi(t){for(var e=t.s,n=void 0;e!==void 0;){var r=e.p;e.i===-1?(e.S.U(e),r!==void 0&&(r.n=e.n),e.n!==void 0&&(e.n.p=r)):n=e,e.S.n=e.r,e.r!==void 0&&(e.r=void 0),e=r}t.s=n}function me(t,e){I.call(this,void 0),this.x=t,this.s=void 0,this.g=St-1,this.f=4,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}me.prototype=new I,me.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===St))return!0;if(this.g=St,this.f|=1,this.i>0&&!bi(this))return this.f&=-2,!0;var t=_;try{yi(this),_=this;var e=this.x();(16&this.f||this.v!==e||this.i===0)&&(this.v=e,this.f&=-17,this.i++)}catch(n){this.v=n,this.f|=16,this.i++}return _=t,vi(this),this.f&=-2,!0},me.prototype.S=function(t){if(this.t===void 0){this.f|=36;for(var e=this.s;e!==void 0;e=e.n)e.S.S(e)}I.prototype.S.call(this,t)},me.prototype.U=function(t){if(this.t!==void 0&&(I.prototype.U.call(this,t),this.t===void 0)){this.f&=-33;for(var e=this.s;e!==void 0;e=e.n)e.S.U(e)}},me.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;t!==void 0;t=t.x)t.t.N()}},Object.defineProperty(me.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var t=xi(this);if(this.h(),t!==void 0&&(t.i=this.i),16&this.f)throw this.v;return this.v}});function bn(t,e){return new me(t,e)}function wi(t){var e=t.u;if(t.u=void 0,typeof e=="function"){ce++;var n=_;_=void 0;try{e()}catch(r){throw t.f&=-2,t.f|=8,yn(t),r}finally{_=n,jt()}}}function yn(t){for(var e=t.s;e!==void 0;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,wi(t)}function za(t){if(_!==this)throw new Error("Out-of-order effect");vi(this),_=t,this.f&=-2,8&this.f&&yn(this),jt()}function Pe(t,e){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=e?.name}Pe.prototype.c=function(){var t=this.S();try{if(8&this.f||this.x===void 0)return;var e=this.x();typeof e=="function"&&(this.u=e)}finally{t()}},Pe.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,wi(this),yi(this),ce++;var t=_;return _=this,za.bind(this,t)},Pe.prototype.N=function(){2&this.f||(this.f|=2,this.o=et,et=this)},Pe.prototype.d=function(){this.f|=8,1&this.f||yn(this)},Pe.prototype.dispose=function(){this.d()};function tt(t,e){var n=new Pe(t,e);try{n.c()}catch(i){throw n.d(),i}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var _i,Ct,Ba=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__,ki=[];tt(function(){_i=this.N})();function Ie(t,e){y[t]=e.bind(null,y[t]||function(){})}function Tt(t){if(Ct){var e=Ct;Ct=void 0,e()}Ct=t&&t.S()}function ji(t){var e=this,n=t.data,r=Le(n);r.value=n;var i=J(function(){for(var l=e,a=e.__v;a=a.__;)if(a.__c){a.__c.__$f|=4;break}var u=bn(function(){var p=r.value.value;return p===0?0:p===!0?"":p||""}),d=bn(function(){return!Array.isArray(u.value)&&!Jn(u.value)}),h=tt(function(){if(this.N=Si,d.value){var p=u.value;l.__v&&l.__v.__e&&l.__v.__e.nodeType===3&&(l.__v.__e.data=p)}}),f=e.__$u.d;return e.__$u.d=function(){h(),f.call(this)},[d,u]},[]),o=i[0],s=i[1];return o.value?s.peek():s.value}ji.displayName="ReactiveTextNode",Object.defineProperties(I.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:ji},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}}),Ie("__b",function(t,e){if(typeof e.type=="string"){var n,r=e.props;for(var i in r)if(i!=="children"){var o=r[i];o instanceof I&&(n||(e.__np=n={}),n[i]=o,r[i]=o.peek())}}t(e)}),Ie("__r",function(t,e){if(t(e),e.type!==U){Tt();var n,r=e.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=(function(i,o){var s;return tt(function(){s=this},{name:o}),s.c=i,s})(function(){var i;Ba&&((i=n.y)==null||i.call(n)),r.__$f|=1,r.setState({})},typeof e.type=="function"?e.type.displayName||e.type.name:""))),Tt(n)}}),Ie("__e",function(t,e,n,r){Tt(),t(e,n,r)}),Ie("diffed",function(t,e){Tt();var n;if(typeof e.type=="string"&&(n=e.__e)){var r=e.__np,i=e.props;if(r){var o=n.U;if(o)for(var s in o){var l=o[s];l!==void 0&&!(s in r)&&(l.d(),o[s]=void 0)}else o={},n.U=o;for(var a in r){var u=o[a],d=r[a];u===void 0?(u=Ua(n,a,d,i),o[a]=u):u.o(d,i)}}}t(e)});function Ua(t,e,n,r){var i=e in t&&t.ownerSVGElement===void 0,o=R(n);return{o:function(s,l){o.value=s,r=l},d:tt(function(){this.N=Si;var s=o.value.value;r[e]!==s&&(r[e]=s,i?t[e]=s:s!=null&&(s!==!1||e[4]==="-")?t.setAttribute(e,s):t.removeAttribute(e))})}}Ie("unmount",function(t,e){if(typeof e.type=="string"){var n=e.__e;if(n){var r=n.U;if(r){n.U=void 0;for(var i in r){var o=r[i];o&&o.d()}}}}else{var s=e.__c;if(s){var l=s.__$u;l&&(s.__$u=void 0,l.d())}}t(e)}),Ie("__h",function(t,e,n,r){(r<3||r===9)&&(e.__$f|=2),t(e,n,r)}),W.prototype.shouldComponentUpdate=function(t,e){if(this.__R)return!0;var n=this.__$u,r=n&&n.s!==void 0;for(var i in e)return!0;if(this.__f||typeof this.u=="boolean"&&this.u===!0){var o=2&this.__$f;if(!(r||o||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(var s in t)if(s!=="__source"&&t[s]!==this.props[s])return!0;for(var l in this.props)if(!(l in t))return!0;return!1};function Le(t,e){return J(function(){return R(t,e)},[])}var Fa=function(t){queueMicrotask(function(){queueMicrotask(t)})};function Qa(){Na(function(){for(var t;t=ki.shift();)_i.call(t)})}function Si(){ki.push(this)===1&&(y.requestAnimationFrame||Fa)(Qa)}const P=R(!1),Rt=R(void 0),$t="https://jexitychat.de/privacy",At=R($t),Ci=R("chip"),ue=R(void 0),vn=R([]),wn=R([]),Ti=R(null);function Da(t){return t.replace(/\.convex\.site\b/,".convex.cloud")}function _n(t){return t.replace(/\.convex\.cloud\b/,".convex.site")}function Va(t){const e=t?.trim();if(e)try{const n=new URL(e);if(n.protocol==="http:"||n.protocol==="https:")return e}catch{return}}function Ha(t,e){const n=t.title??e?.title??"Assistant",r=t.privacyPolicyMode??e?.privacyPolicyMode??"platform",i=Wa(t.privacyNoticeStyle??e?.privacyNoticeStyle);return{title:n,greeting:t.greeting??e?.welcomeMessage??`Hi! I'm ${n}. How can I help?`,locale:t.locale??e?.locale,position:t.position??e?.position,colorScheme:t.colorScheme??e?.colorScheme,hideBranding:t.hideBranding??e?.hideBranding??!1,privacyPolicyMode:r,privacyPolicyUrl:r==="custom"?Va(t.privacyPolicyUrl??e?.privacyPolicyUrl):void 0,privacyNoticeStyle:i,triggerIcon:t.triggerIcon??e?.triggerIcon??"chat",triggerRadius:t.triggerRadius??e?.triggerRadius??"full",triggerLabel:t.triggerLabel??e?.triggerLabel??"Chatte mit uns",mode:t.mode??"floating",primaryColor:t.primaryColor??e?.primaryColor,accentColor:t.accentColor??e?.accentColor,fontFamily:t.fontFamily??e?.fontFamily,fontSize:t.fontSize??e?.fontSize,borderRadius:t.borderRadius??e?.borderRadius,windowWidth:t.windowWidth??e?.windowWidth,windowHeight:t.windowHeight??e?.windowHeight}}function Wa(t){return t==="explicit"||t==="sheet"?"explicit":"chip"}async function Ja(t,e,n,r){const i=new URL(`${t}/widget/config`);i.searchParams.set("orgSlug",e),r&&i.searchParams.set("projSlug",r);const o=await fetch(i.toString(),{signal:n});return o.ok?o.json():null}function Ga(t,e,n){const[r,i]=C(null);return S(()=>{i(null);const o=n??"https://festive-mouse-978.eu-west-1.convex.cloud",s=o?_n(o):void 0;if(!s||!t)return;const l=new AbortController;async function a(u){try{const d=await Ja(u,t,l.signal,e);d&&i(d)}catch(d){if(d instanceof Error&&d.name==="AbortError")return}}return a(s),()=>{l.abort()}},[t,e,n]),r}async function kn(t,e,n){try{const r=await fetch(`${e}/widget/bootstrap`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n?{orgSlug:t,projSlug:n}:{orgSlug:t}),credentials:"omit"});if(r.ok){const i=await r.json(),o=i.allowedUrls??(i.allowedUrl?[i.allowedUrl]:[]);return{ok:!0,token:i.token,excludePaths:i.excludePaths,allowedUrls:o}}return r.status===403?{ok:!1,error:"unauthorized"}:r.status===404?{ok:!1,error:"not_found"}:r.status===429?{ok:!1,error:"rate_limited",retryAfterSec:Number(r.headers.get("Retry-After"))||60}:{ok:!1,error:"network"}}catch{return{ok:!1,error:"network"}}}function Ka(t,e){return e.some(n=>n==="/"?t==="/":t===n||t.startsWith(n+"/"))}function jn(t,e){try{const n=new URL(t),r=new URL(e);if(n.origin!==r.origin)return!1;const i=r.pathname.replace(/\/$/,"");if(!i)return!0;const o=n.pathname.replace(/\/$/,"");return o===i||o.startsWith(i+"/")}catch{return!1}}function Za({orgSlug:t,projSlug:e,preToken:n,convexUrl:r,preAllowedUrls:i,preExcludedPaths:o}){S(()=>{const s=r??"https://festive-mouse-978.eu-west-1.convex.cloud",l=s?_n(s):void 0;if(!l||!t)return;if(Ti.value={orgSlug:t,projSlug:e,siteUrl:l},n){vn.value=i??[],wn.value=o??[];return}let a=!1;return(async()=>{const u=await kn(t,l,e);if(!a)if(u.ok)ue.value=u.token,vn.value=u.allowedUrls,wn.value=u.excludePaths;else{const d=e?`project '${t}/${e}'`:`org '${t}'`;u.error==="unauthorized"?console.warn(`[JexityChat] Domain not authorized for ${d}. Check the widget's domain rules.`):u.error==="not_found"?console.error(`[JexityChat] No active widget config found for ${d}.`):u.error==="rate_limited"?console.error(`[JexityChat] Bootstrap rate-limited for ${d}. Retry after ${u.retryAfterSec??60}s.`):console.error(`[JexityChat] Bootstrap failed: ${u.error}`)}})(),()=>{a=!0}},[t,e,n,r])}const Et=new Set;let Ri=!1;function Ya(){if(Ri)return;Ri=!0;const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=function(...n){t(...n),Et.forEach(r=>r())},history.replaceState=function(...n){e(...n),Et.forEach(r=>r())}}function Xa(t){return Et.add(t),window.addEventListener("popstate",t),Ya(),()=>{Et.delete(t),window.removeEventListener("popstate",t)}}function el(){const t=Le(window.location.href);S(()=>Xa(()=>{t.value=window.location.href}),[]);const e=vn.value,n=wn.value,r=new URL(t.value).pathname,i=Ka(r,n);return S(()=>{i?console.warn(`[JexityChat] Widget hidden — current path is in the exclude list: ${r}`):e.length>0&&!e.some(o=>jn(t.value,o))&&console.warn(`[JexityChat] Widget hidden — current page does not match path rule. Allowed: ${e.join(", ")}`)},[t.value,e,n]),i?!1:e.length===0?!0:e.some(o=>jn(t.value,o))}const $i={title:"Assistant",statusOnline:"Online · Responds in seconds",inputPlaceholder:"Type a message…",aiThinking:"AI is responding…",sendAriaLabel:"Send message",attachImagesAriaLabel:"Attach images",attachComingSoon:"File attachments — coming soon",removeAttachmentAriaLabel:"Remove attachment",openChatAriaLabel:"Open chat",closeChatAriaLabel:"Close chat",errorNetwork:"Network error. Please try again.",errorQuota:"Message limit reached. Please try again later.",errorRateLimited:"Too many messages. Try again in {seconds}s.",errorSessionNoToken:"Could not connect to chat. Check your connection and try again.",errorSessionUnauthorized:"This chat is not authorised on this page. Please reload.",localeLabelDe:"DE",localeLabelEn:"EN",resumeConversation:"Resuming conversation…",startingConversation:"Starting conversation…",sessionNotFound:"Your previous session was not found. Starting a new conversation.",startNewConversation:"Start new conversation",chatWith:"Chat with {title}",haveReferenceNumber:"Have a reference number?",referencePlaceholder:"e.g. JEX-A3B7C2",resume:"Resume",howCanWeHelp:"How can we help?",getInstantHelp:"Get instant help",submitTicket:"Submit a ticket",replyByEmail:"We'll reply by email",ticketSubmitted:"Ticket submitted",yourReferenceNumber:"Your reference number:",sentToEmailHint:"We've sent it to your email. Use this number to follow up.",done:"Done",submittingTicket:"Submitting your ticket…",yourName:"Your name",yourEmail:"Your email",submit:"Submit",back:"Go back",escalationFormTitle:"Leave your details",escalationSubtitle:"Our team will get back to you by email so you don’t have to wait here.",escalationNameLabel:"Your name",escalationEmailLabel:"Your email",escalationSubmit:"Send to team",escalationSubmitting:"Sending…",escalationSubmitted:"Request submitted",escalationConsent:"By submitting, you agree to our",escalationPrivacyLinkText:"Privacy Policy",escalationSkip:"Skip, I’ll wait here",escalationPromptTitle:"Talk to our team",escalationPromptSubtitle:"We can notify you by email when our team replies.",escalationPromptSubmit:"Leave details",escalationSubmitFailed:"Failed to submit. Please try again.",sessionNotFoundPrompt:"Session not found. Would you like to start a new conversation?",sessionLocked:"For your privacy, this conversation was closed after a period of inactivity. Enter your reference to resume, or start a new conversation.",sessionResolved:"This conversation has been resolved.",tryAgain:"Try again",goBack:"Go back",somethingWentWrong:"Something went wrong",fabLabel:"Chat with us",chatNoLongerAvailable:"This chat is no longer available.",talkToHuman:"Talk to human",talkToHumanAria:"Talk to a human agent",handoffPending:"Connecting you to a human agent…",handoffFailed:"Could not request a human agent. Try again.",handoffRateLimited:"You requested an agent recently. Please wait before trying again.",resumeListLabel:"Continue conversation",resumeListTimestamp:"{minutes}m ago",noticeAgentJoined:"{name} has joined the conversation.",noticeHumanRequested:"You requested to speak with a human agent.",noticeHumanRequestedForm:"You requested to speak with a human agent. Please share your contact details below.",noticeEscalationConfirmed:`Thank you {name}! A human agent will be available soon.
|
|
1
|
+
(function(){"use strict";var ht,w,wr,kr,Be,_r,jr,Sr,Cr,pn,gn,mn,Tr,ft={},Rr=[],sa=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,pt=Array.isArray;function ye(t,e){for(var n in e)t[n]=e[n];return t}function xn(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function ue(t,e,n){var r,i,o,a={};for(o in e)o=="key"?r=e[o]:o=="ref"?i=e[o]:a[o]=e[o];if(arguments.length>2&&(a.children=arguments.length>3?ht.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(o in t.defaultProps)a[o]===void 0&&(a[o]=t.defaultProps[o]);return gt(t,a,r,i,null)}function gt(t,e,n,r,i){var o={type:t,props:e,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++wr,__i:-1,__u:0};return i==null&&w.vnode!=null&&w.vnode(o),o}function la(){return{current:null}}function q(t){return t.children}function me(t,e){this.props=t,this.context=e}function Ye(t,e){if(e==null)return t.__?Ye(t.__,t.__i+1):null;for(var n;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null)return n.__e;return typeof t.type=="function"?Ye(t):null}function Ar(t){var e,n;if((t=t.__)!=null&&t.__c!=null){for(t.__e=t.__c.base=null,e=0;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null){t.__e=t.__c.base=n.__e;break}return Ar(t)}}function bn(t){(!t.__d&&(t.__d=!0)&&Be.push(t)&&!Bt.__r++||_r!=w.debounceRendering)&&((_r=w.debounceRendering)||jr)(Bt)}function Bt(){for(var t,e,n,r,i,o,a,l=1;Be.length;)Be.length>l&&Be.sort(Sr),t=Be.shift(),l=Be.length,t.__d&&(n=void 0,r=void 0,i=(r=(e=t).__v).__e,o=[],a=[],e.__P&&((n=ye({},r)).__v=r.__v+1,w.vnode&&w.vnode(n),vn(e.__P,n,r,e.__n,e.__P.namespaceURI,32&r.__u?[i]:null,o,i??Ye(r),!!(32&r.__u),a),n.__v=r.__v,n.__.__k[n.__i]=n,qr(o,n,a),r.__e=r.__=null,n.__e!=i&&Ar(n)));Bt.__r=0}function $r(t,e,n,r,i,o,a,l,c,u,h){var d,f,p,g,b,v,x,m=r&&r.__k||Rr,S=e.length;for(c=ca(n,e,m,c,S),d=0;d<S;d++)(p=n.__k[d])!=null&&(f=p.__i==-1?ft:m[p.__i]||ft,p.__i=d,v=vn(t,p,f,i,o,a,l,c,u,h),g=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&wn(f.ref,null,p),h.push(p.ref,p.__c||g,p)),b==null&&g!=null&&(b=g),(x=!!(4&p.__u))||f.__k===p.__k?c=Ir(p,c,t,x):typeof p.type=="function"&&v!==void 0?c=v:g&&(c=g.nextSibling),p.__u&=-7);return n.__e=b,c}function ca(t,e,n,r,i){var o,a,l,c,u,h=n.length,d=h,f=0;for(t.__k=new Array(i),o=0;o<i;o++)(a=e[o])!=null&&typeof a!="boolean"&&typeof a!="function"?(c=o+f,(a=t.__k[o]=typeof a=="string"||typeof a=="number"||typeof a=="bigint"||a.constructor==String?gt(null,a,null,null,null):pt(a)?gt(q,{children:a},null,null,null):a.constructor==null&&a.__b>0?gt(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):a).__=t,a.__b=t.__b+1,l=null,(u=a.__i=ua(a,n,c,d))!=-1&&(d--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>h?f--:i<h&&f++),typeof a.type!="function"&&(a.__u|=4)):u!=c&&(u==c-1?f--:u==c+1?f++:(u>c?f--:f++,a.__u|=4))):t.__k[o]=null;if(d)for(o=0;o<h;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=Ye(l)),Nr(l,l));return r}function Ir(t,e,n,r){var i,o;if(typeof t.type=="function"){for(i=t.__k,o=0;i&&o<i.length;o++)i[o]&&(i[o].__=t,e=Ir(i[o],e,n,r));return e}t.__e!=e&&(r&&(e&&t.type&&!e.parentNode&&(e=Ye(t)),n.insertBefore(t.__e,e||null)),e=t.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function we(t,e){return e=e||[],t==null||typeof t=="boolean"||(pt(t)?t.some(function(n){we(n,e)}):e.push(t)),e}function ua(t,e,n,r){var i,o,a,l=t.key,c=t.type,u=e[n],h=u!=null&&(2&u.__u)==0;if(u===null&&t.key==null||h&&l==u.key&&c==u.type)return n;if(r>(h?1:0)){for(i=n-1,o=n+1;i>=0||o<e.length;)if((u=e[a=i>=0?i--:o++])!=null&&(2&u.__u)==0&&l==u.key&&c==u.type)return a}return-1}function Er(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||sa.test(e)?n:n+"px"}function Ft(t,e,n,r,i){var o,a;e:if(e=="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof r=="string"&&(t.style.cssText=r=""),r)for(e in r)n&&e in n||Er(t.style,e,"");if(n)for(e in n)r&&n[e]==r[e]||Er(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")o=e!=(e=e.replace(Cr,"$1")),a=e.toLowerCase(),e=a in t||e=="onFocusOut"||e=="onFocusIn"?a.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+o]=n,n?r?n.u=r.u:(n.u=pn,t.addEventListener(e,o?mn:gn,o)):t.removeEventListener(e,o?mn:gn,o);else{if(i=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&n==1?"":n))}}function Pr(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e.t==null)e.t=pn++;else if(e.t<n.u)return;return n(w.event?w.event(e):e)}}}function vn(t,e,n,r,i,o,a,l,c,u){var h,d,f,p,g,b,v,x,m,S,N,F,O,G,ve,le,ce,D=e.type;if(e.constructor!=null)return null;128&n.__u&&(c=!!(32&n.__u),o=[l=e.__e=n.__e]),(h=w.__b)&&h(e);e:if(typeof D=="function")try{if(x=e.props,m="prototype"in D&&D.prototype.render,S=(h=D.contextType)&&r[h.__c],N=h?S?S.props.value:h.__:r,n.__c?v=(d=e.__c=n.__c).__=d.__E:(m?e.__c=d=new D(x,N):(e.__c=d=new me(x,N),d.constructor=D,d.render=ha),S&&S.sub(d),d.props=x,d.state||(d.state={}),d.context=N,d.__n=r,f=d.__d=!0,d.__h=[],d._sb=[]),m&&d.__s==null&&(d.__s=d.state),m&&D.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=ye({},d.__s)),ye(d.__s,D.getDerivedStateFromProps(x,d.__s))),p=d.props,g=d.state,d.__v=e,f)m&&D.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),m&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(m&&D.getDerivedStateFromProps==null&&x!==p&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(x,N),!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(x,d.__s,N)===!1||e.__v==n.__v){for(e.__v!=n.__v&&(d.props=x,d.state=d.__s,d.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(J){J&&(J.__=e)}),F=0;F<d._sb.length;F++)d.__h.push(d._sb[F]);d._sb=[],d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(x,d.__s,N),m&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(p,g,b)})}if(d.context=N,d.props=x,d.__P=t,d.__e=!1,O=w.__r,G=0,m){for(d.state=d.__s,d.__d=!1,O&&O(e),h=d.render(d.props,d.state,d.context),ve=0;ve<d._sb.length;ve++)d.__h.push(d._sb[ve]);d._sb=[]}else do d.__d=!1,O&&O(e),h=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++G<25);d.state=d.__s,d.getChildContext!=null&&(r=ye(ye({},r),d.getChildContext())),m&&!f&&d.getSnapshotBeforeUpdate!=null&&(b=d.getSnapshotBeforeUpdate(p,g)),le=h,h!=null&&h.type===q&&h.key==null&&(le=Mr(h.props.children)),l=$r(t,pt(le)?le:[le],e,n,r,i,o,a,l,c,u),d.base=e.__e,e.__u&=-161,d.__h.length&&a.push(d),v&&(d.__E=d.__=null)}catch(J){if(e.__v=null,c||o!=null)if(J.then){for(e.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o[o.indexOf(l)]=null,e.__e=l}else{for(ce=o.length;ce--;)xn(o[ce]);yn(e)}else e.__e=n.__e,e.__k=n.__k,J.then||yn(e);w.__e(J,e,n)}else o==null&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=da(n.__e,e,n,r,i,o,a,c,u);return(h=w.diffed)&&h(e),128&e.__u?void 0:l}function yn(t){t&&t.__c&&(t.__c.__e=!0),t&&t.__k&&t.__k.forEach(yn)}function qr(t,e,n){for(var r=0;r<n.length;r++)wn(n[r],n[++r],n[++r]);w.__c&&w.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){w.__e(o,i.__v)}})}function Mr(t){return typeof t!="object"||t==null||t.__b&&t.__b>0?t:pt(t)?t.map(Mr):ye({},t)}function da(t,e,n,r,i,o,a,l,c){var u,h,d,f,p,g,b,v=n.props,x=e.props,m=e.type;if(m=="svg"?i="http://www.w3.org/2000/svg":m=="math"?i="http://www.w3.org/1998/Math/MathML":i||(i="http://www.w3.org/1999/xhtml"),o!=null){for(u=0;u<o.length;u++)if((p=o[u])&&"setAttribute"in p==!!m&&(m?p.localName==m:p.nodeType==3)){t=p,o[u]=null;break}}if(t==null){if(m==null)return document.createTextNode(x);t=document.createElementNS(i,m,x.is&&x),l&&(w.__m&&w.__m(e,o),l=!1),o=null}if(m==null)v===x||l&&t.data==x||(t.data=x);else{if(o=o&&ht.call(t.childNodes),v=n.props||ft,!l&&o!=null)for(v={},u=0;u<t.attributes.length;u++)v[(p=t.attributes[u]).name]=p.value;for(u in v)if(p=v[u],u!="children"){if(u=="dangerouslySetInnerHTML")d=p;else if(!(u in x)){if(u=="value"&&"defaultValue"in x||u=="checked"&&"defaultChecked"in x)continue;Ft(t,u,null,p,i)}}for(u in x)p=x[u],u=="children"?f=p:u=="dangerouslySetInnerHTML"?h=p:u=="value"?g=p:u=="checked"?b=p:l&&typeof p!="function"||v[u]===p||Ft(t,u,p,v[u],i);if(h)l||d&&(h.__html==d.__html||h.__html==t.innerHTML)||(t.innerHTML=h.__html),e.__k=[];else if(d&&(t.innerHTML=""),$r(e.type=="template"?t.content:t,pt(f)?f:[f],e,n,r,m=="foreignObject"?"http://www.w3.org/1999/xhtml":i,o,a,o?o[0]:n.__k&&Ye(n,0),l,c),o!=null)for(u=o.length;u--;)xn(o[u]);l||(u="value",m=="progress"&&g==null?t.removeAttribute("value"):g!=null&&(g!==t[u]||m=="progress"&&!g||m=="option"&&g!=v[u])&&Ft(t,u,g,v[u],i),u="checked",b!=null&&b!=t[u]&&Ft(t,u,b,v[u],i))}return t}function wn(t,e,n){try{if(typeof t=="function"){var r=typeof t.__u=="function";r&&t.__u(),r&&e==null||(t.__u=t(e))}else t.current=e}catch(i){w.__e(i,n)}}function Nr(t,e,n){var r,i;if(w.unmount&&w.unmount(t),(r=t.ref)&&(r.current&&r.current!=t.__e||wn(r,null,e)),(r=t.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){w.__e(o,e)}r.base=r.__P=null}if(r=t.__k)for(i=0;i<r.length;i++)r[i]&&Nr(r[i],e,n||typeof t.type!="function");n||xn(t.__e),t.__c=t.__=t.__e=void 0}function ha(t,e,n){return this.constructor(t,n)}function Fe(t,e,n){var r,i,o,a;e==document&&(e=document.documentElement),w.__&&w.__(t,e),i=(r=typeof n=="function")?null:n&&n.__k||e.__k,o=[],a=[],vn(e,t=(!r&&n||e).__k=ue(q,null,[t]),i||ft,ft,e.namespaceURI,!r&&n?[n]:i?null:e.firstChild?ht.call(e.childNodes):null,o,!r&&n?n:i?i.__e:e.firstChild,r,a),qr(o,t,a)}function Lr(t,e){Fe(t,e,Lr)}function fa(t,e,n){var r,i,o,a,l=ye({},t.props);for(o in t.type&&t.type.defaultProps&&(a=t.type.defaultProps),e)o=="key"?r=e[o]:o=="ref"?i=e[o]:l[o]=e[o]===void 0&&a!=null?a[o]:e[o];return arguments.length>2&&(l.children=arguments.length>3?ht.call(arguments,2):n),gt(t.type,l,r||t.key,i||t.ref,null)}function pa(t){function e(n){var r,i;return this.getChildContext||(r=new Set,(i={})[e.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(o){this.props.value!=o.value&&r.forEach(function(a){a.__e=!0,bn(a)})},this.sub=function(o){r.add(o);var a=o.componentWillUnmount;o.componentWillUnmount=function(){r&&r.delete(o),a&&a.call(o)}}),n.children}return e.__c="__cC"+Tr++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,r){return n.children(r)}).contextType=e,e}ht=Rr.slice,w={__e:function(t,e,n,r){for(var i,o,a;e=e.__;)if((i=e.__c)&&!i.__)try{if((o=i.constructor)&&o.getDerivedStateFromError!=null&&(i.setState(o.getDerivedStateFromError(t)),a=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(t,r||{}),a=i.__d),a)return i.__E=i}catch(l){t=l}throw t}},wr=0,kr=function(t){return t!=null&&t.constructor==null},me.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=ye({},this.state),typeof t=="function"&&(t=t(ye({},n),this.props)),t&&ye(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),bn(this))},me.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),bn(this))},me.prototype.render=q,Be=[],jr=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Sr=function(t,e){return t.__v.__b-e.__v.__b},Bt.__r=0,Cr=/(PointerCapture)$|Capture$/i,pn=0,gn=Pr(!1),mn=Pr(!0),Tr=0;var ga=0;function s(t,e,n,r,i,o){e||(e={});var a,l,c=e;if("ref"in c)for(l in c={},e)l=="ref"?a=e[l]:c[l]=e[l];var u={type:t,props:c,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ga,__i:-1,__u:0,__source:i,__self:o};if(typeof t=="function"&&(a=t.defaultProps))for(l in a)c[l]===void 0&&(c[l]=a[l]);return w.vnode&&w.vnode(u),u}var Pe,M,kn,zr,Ze=0,Or=[],L=w,Br=L.__b,Fr=L.__r,Dr=L.diffed,Ur=L.__c,Qr=L.unmount,Vr=L.__;function Xe(t,e){L.__h&&L.__h(M,t,Ze||e),Ze=0;var n=M.__H||(M.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function T(t){return Ze=1,de(Jr,t)}function de(t,e,n){var r=Xe(Pe++,2);if(r.t=t,!r.__c&&(r.__=[n?n(e):Jr(void 0,e),function(l){var c=r.__N?r.__N[0]:r.__[0],u=r.t(c,l);c!==u&&(r.__N=[u,r.__[1]],r.__c.setState({}))}],r.__c=M,!M.__f)){var i=function(l,c,u){if(!r.__c.__H)return!0;var h=r.__c.__H.__.filter(function(f){return!!f.__c});if(h.every(function(f){return!f.__N}))return!o||o.call(this,l,c,u);var d=r.__c.props!==l;return h.forEach(function(f){if(f.__N){var p=f.__[0];f.__=f.__N,f.__N=void 0,p!==f.__[0]&&(d=!0)}}),o&&o.call(this,l,c,u)||d};M.__f=!0;var o=M.shouldComponentUpdate,a=M.componentWillUpdate;M.componentWillUpdate=function(l,c,u){if(this.__e){var h=o;o=void 0,i(l,c,u),o=h}a&&a.call(this,l,c,u)},M.shouldComponentUpdate=i}return r.__N||r.__}function A(t,e){var n=Xe(Pe++,3);!L.__s&&jn(n.__H,e)&&(n.__=t,n.u=e,M.__H.__h.push(n))}function mt(t,e){var n=Xe(Pe++,4);!L.__s&&jn(n.__H,e)&&(n.__=t,n.u=e,M.__h.push(n))}function qe(t){return Ze=5,U(function(){return{current:t}},[])}function Hr(t,e,n){Ze=6,mt(function(){if(typeof t=="function"){var r=t(e());return function(){t(null),r&&typeof r=="function"&&r()}}if(t)return t.current=e(),function(){return t.current=null}},n==null?n:n.concat(t))}function U(t,e){var n=Xe(Pe++,7);return jn(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function B(t,e){return Ze=8,U(function(){return t},e)}function xt(t){var e=M.context[t.__c],n=Xe(Pe++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(M)),e.props.value):t.__}function Wr(t,e){L.useDebugValue&&L.useDebugValue(e?e(t):t)}function Kr(){var t=Xe(Pe++,11);if(!t.__){for(var e=M.__v;e!==null&&!e.__m&&e.__!==null;)e=e.__;var n=e.__m||(e.__m=[0,0]);t.__="P"+n[0]+"-"+n[1]++}return t.__}function ma(){for(var t;t=Or.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(Dt),t.__H.__h.forEach(_n),t.__H.__h=[]}catch(e){t.__H.__h=[],L.__e(e,t.__v)}}L.__b=function(t){M=null,Br&&Br(t)},L.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),Vr&&Vr(t,e)},L.__r=function(t){Fr&&Fr(t),Pe=0;var e=(M=t.__c).__H;e&&(kn===M?(e.__h=[],M.__h=[],e.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.forEach(Dt),e.__h.forEach(_n),e.__h=[],Pe=0)),kn=M},L.diffed=function(t){Dr&&Dr(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(Or.push(e)!==1&&zr===L.requestAnimationFrame||((zr=L.requestAnimationFrame)||xa)(ma)),e.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),kn=M=null},L.__c=function(t,e){e.some(function(n){try{n.__h.forEach(Dt),n.__h=n.__h.filter(function(r){return!r.__||_n(r)})}catch(r){e.some(function(i){i.__h&&(i.__h=[])}),e=[],L.__e(r,n.__v)}}),Ur&&Ur(t,e)},L.unmount=function(t){Qr&&Qr(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.forEach(function(r){try{Dt(r)}catch(i){e=i}}),n.__H=void 0,e&&L.__e(e,n.__v))};var Gr=typeof requestAnimationFrame=="function";function xa(t){var e,n=function(){clearTimeout(r),Gr&&cancelAnimationFrame(e),setTimeout(t)},r=setTimeout(n,35);Gr&&(e=requestAnimationFrame(n))}function Dt(t){var e=M,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),M=e}function _n(t){var e=M;t.__c=t.__(),M=e}function jn(t,e){return!t||t.length!==e.length||e.some(function(n,r){return n!==t[r]})}function Jr(t,e){return typeof e=="function"?e(t):e}function Yr(t,e){for(var n in e)t[n]=e[n];return t}function Sn(t,e){for(var n in t)if(n!=="__source"&&!(n in e))return!0;for(var r in e)if(r!=="__source"&&t[r]!==e[r])return!0;return!1}function Zr(t,e){var n=e(),r=T({t:{__:n,u:e}}),i=r[0].t,o=r[1];return mt(function(){i.__=n,i.u=e,Cn(i)&&o({t:i})},[t,n,e]),A(function(){return Cn(i)&&o({t:i}),t(function(){Cn(i)&&o({t:i})})},[t]),n}function Cn(t){var e,n,r=t.u,i=t.__;try{var o=r();return!((e=i)===(n=o)&&(e!==0||1/e==1/n)||e!=e&&n!=n)}catch{return!0}}function Xr(t){t()}function ei(t){return t}function ti(){return[!1,Xr]}var ni=mt;function Tn(t,e){this.props=t,this.context=e}function ba(t,e){function n(i){var o=this.props.ref,a=o==i.ref;return!a&&o&&(o.call?o(null):o.current=null),e?!e(this.props,i)||!a:Sn(this.props,i)}function r(i){return this.shouldComponentUpdate=n,ue(t,i)}return r.displayName="Memo("+(t.displayName||t.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r.type=t,r}(Tn.prototype=new me).isPureReactComponent=!0,Tn.prototype.shouldComponentUpdate=function(t,e){return Sn(this.props,t)||Sn(this.state,e)};var ri=w.__b;w.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),ri&&ri(t)};var va=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function ya(t){function e(n){var r=Yr({},n);return delete r.ref,t(r,n.ref||null)}return e.$$typeof=va,e.render=t,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e}var ii=function(t,e){return t==null?null:we(we(t).map(e))},wa={map:ii,forEach:ii,count:function(t){return t?we(t).length:0},only:function(t){var e=we(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:we},ka=w.__e;w.__e=function(t,e,n,r){if(t.then){for(var i,o=e;o=o.__;)if((i=o.__c)&&i.__c)return e.__e==null&&(e.__e=n.__e,e.__k=n.__k),i.__c(t,e)}ka(t,e,n,r)};var oi=w.unmount;function ai(t,e,n){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),t.__c.__H=null),(t=Yr({},t)).__c!=null&&(t.__c.__P===n&&(t.__c.__P=e),t.__c.__e=!0,t.__c=null),t.__k=t.__k&&t.__k.map(function(r){return ai(r,e,n)})),t}function si(t,e,n){return t&&n&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(r){return si(r,e,n)}),t.__c&&t.__c.__P===e&&(t.__e&&n.appendChild(t.__e),t.__c.__e=!0,t.__c.__P=n)),t}function Ut(){this.__u=0,this.o=null,this.__b=null}function li(t){var e=t.__.__c;return e&&e.__a&&e.__a(t)}function _a(t){var e,n,r;function i(o){if(e||(e=t()).then(function(a){n=a.default||a},function(a){r=a}),r)throw r;if(!n)throw e;return ue(n,o)}return i.displayName="Lazy",i.__f=!0,i}function bt(){this.i=null,this.l=null}w.unmount=function(t){var e=t.__c;e&&e.__R&&e.__R(),e&&32&t.__u&&(t.type=null),oi&&oi(t)},(Ut.prototype=new me).__c=function(t,e){var n=e.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var i=li(r.__v),o=!1,a=function(){o||(o=!0,n.__R=null,i?i(l):l())};n.__R=a;var l=function(){if(!--r.__u){if(r.state.__a){var c=r.state.__a;r.__v.__k[0]=si(c,c.__c.__P,c.__c.__O)}var u;for(r.setState({__a:r.__b=null});u=r.o.pop();)u.forceUpdate()}};r.__u++||32&e.__u||r.setState({__a:r.__b=r.__v.__k[0]}),t.then(a,a)},Ut.prototype.componentWillUnmount=function(){this.o=[]},Ut.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=ai(this.__b,n,r.__O=r.__P)}this.__b=null}var i=e.__a&&ue(q,null,t.fallback);return i&&(i.__u&=-33),[ue(q,null,e.__a?null:t.children),i]};var ci=function(t,e,n){if(++n[1]===n[0]&&t.l.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.l.size))for(n=t.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;t.i=n=n[2]}};function ja(t){return this.getChildContext=function(){return t.context},t.children}function Sa(t){var e=this,n=t.h;if(e.componentWillUnmount=function(){Fe(null,e.v),e.v=null,e.h=null},e.h&&e.h!==n&&e.componentWillUnmount(),!e.v){for(var r=e.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;e.h=n,e.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},insertBefore:function(i,o){this.childNodes.push(i),e.h.insertBefore(i,o)},removeChild:function(i){this.childNodes.splice(this.childNodes.indexOf(i)>>>1,1),e.h.removeChild(i)}}}Fe(ue(ja,{context:e.context},t.__v),e.v)}function Ca(t,e){var n=ue(Sa,{__v:t,h:e});return n.containerInfo=e,n}(bt.prototype=new me).__a=function(t){var e=this,n=li(e.__v),r=e.l.get(t);return r[0]++,function(i){var o=function(){e.props.revealOrder?(r.push(i),ci(e,t,r)):i()};n?n(o):o()}},bt.prototype.render=function(t){this.i=null,this.l=new Map;var e=we(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.l.set(e[n],this.i=[1,0,this.i]);return t.children},bt.prototype.componentDidUpdate=bt.prototype.componentDidMount=function(){var t=this;this.l.forEach(function(e,n){ci(t,n,e)})};var ui=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Ta=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Ra=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Aa=/[A-Z0-9]/g,$a=typeof document<"u",Ia=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(t)};function Ea(t,e,n){return e.__k==null&&(e.textContent=""),Fe(t,e),typeof n=="function"&&n(),t?t.__c:null}function Pa(t,e,n){return Lr(t,e),typeof n=="function"&&n(),t?t.__c:null}me.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(me.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var di=w.event;function qa(){}function Ma(){return this.cancelBubble}function Na(){return this.defaultPrevented}w.event=function(t){return di&&(t=di(t)),t.persist=qa,t.isPropagationStopped=Ma,t.isDefaultPrevented=Na,t.nativeEvent=t};var Rn,La={enumerable:!1,configurable:!0,get:function(){return this.class}},hi=w.vnode;w.vnode=function(t){typeof t.type=="string"&&(function(e){var n=e.props,r=e.type,i={},o=r.indexOf("-")===-1;for(var a in n){var l=n[a];if(!(a==="value"&&"defaultValue"in n&&l==null||$a&&a==="children"&&r==="noscript"||a==="class"||a==="className")){var c=a.toLowerCase();a==="defaultValue"&&"value"in n&&n.value==null?a="value":a==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?a="ondblclick":c!=="onchange"||r!=="input"&&r!=="textarea"||Ia(n.type)?c==="onfocus"?a="onfocusin":c==="onblur"?a="onfocusout":Ra.test(a)&&(a=c):c=a="oninput":o&&Ta.test(a)?a=a.replace(Aa,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&i[a=c]&&(a="oninputCapture"),i[a]=l}}r=="select"&&i.multiple&&Array.isArray(i.value)&&(i.value=we(n.children).forEach(function(u){u.props.selected=i.value.indexOf(u.props.value)!=-1})),r=="select"&&i.defaultValue!=null&&(i.value=we(n.children).forEach(function(u){u.props.selected=i.multiple?i.defaultValue.indexOf(u.props.value)!=-1:i.defaultValue==u.props.value})),n.class&&!n.className?(i.class=n.class,Object.defineProperty(i,"className",La)):(n.className&&!n.class||n.class&&n.className)&&(i.class=i.className=n.className),e.props=i})(t),t.$$typeof=ui,hi&&hi(t)};var fi=w.__r;w.__r=function(t){fi&&fi(t),Rn=t.__c};var pi=w.diffed;w.diffed=function(t){pi&&pi(t);var e=t.props,n=t.__e;n!=null&&t.type==="textarea"&&"value"in e&&e.value!==n.value&&(n.value=e.value==null?"":e.value),Rn=null};var za={ReactCurrentDispatcher:{current:{readContext:function(t){return Rn.__n[t.__c].props.value},useCallback:B,useContext:xt,useDebugValue:Wr,useDeferredValue:ei,useEffect:A,useId:Kr,useImperativeHandle:Hr,useInsertionEffect:ni,useLayoutEffect:mt,useMemo:U,useReducer:de,useRef:qe,useState:T,useSyncExternalStore:Zr,useTransition:ti}}};function Oa(t){return ue.bind(null,t)}function Qt(t){return!!t&&t.$$typeof===ui}function Ba(t){return Qt(t)&&t.type===q}function Fa(t){return!!t&&!!t.displayName&&(typeof t.displayName=="string"||t.displayName instanceof String)&&t.displayName.startsWith("Memo(")}function Da(t){return Qt(t)?fa.apply(null,arguments):t}function Ua(t){return!!t.__k&&(Fe(null,t),!0)}function Qa(t){return t&&(t.base||t.nodeType===1&&t)||null}for(var Va=function(t,e){return t(e)},Ha=function(t,e){return t(e)},Wa=q,Ka=Qt,An={useState:T,useId:Kr,useReducer:de,useEffect:A,useLayoutEffect:mt,useInsertionEffect:ni,useTransition:ti,useDeferredValue:ei,useSyncExternalStore:Zr,startTransition:Xr,useRef:qe,useImperativeHandle:Hr,useMemo:U,useCallback:B,useContext:xt,useDebugValue:Wr,version:"18.3.1",Children:wa,render:Ea,hydrate:Pa,unmountComponentAtNode:Ua,createPortal:Ca,createElement:ue,createContext:pa,createFactory:Oa,cloneElement:Da,createRef:la,Fragment:q,isValidElement:Qt,isElement:Ka,isFragment:Ba,isMemo:Fa,findDOMNode:Qa,Component:me,PureComponent:Tn,memo:ba,forwardRef:ya,flushSync:Ha,unstable_batchedUpdates:Va,StrictMode:Wa,Suspense:Ut,SuspenseList:bt,lazy:_a,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:za},ke=[],he=[],Ga=Uint8Array,$n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",et=0,Ja=$n.length;et<Ja;++et)ke[et]=$n[et],he[$n.charCodeAt(et)]=et;he[45]=62,he[95]=63;function Ya(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");n===-1&&(n=e);var r=n===e?0:4-n%4;return[n,r]}function Za(t,e,n){return(e+n)*3/4-n}function vt(t){var e,n=Ya(t),r=n[0],i=n[1],o=new Ga(Za(t,r,i)),a=0,l=i>0?r-4:r,c;for(c=0;c<l;c+=4)e=he[t.charCodeAt(c)]<<18|he[t.charCodeAt(c+1)]<<12|he[t.charCodeAt(c+2)]<<6|he[t.charCodeAt(c+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=e&255;return i===2&&(e=he[t.charCodeAt(c)]<<2|he[t.charCodeAt(c+1)]>>4,o[a++]=e&255),i===1&&(e=he[t.charCodeAt(c)]<<10|he[t.charCodeAt(c+1)]<<4|he[t.charCodeAt(c+2)]>>2,o[a++]=e>>8&255,o[a++]=e&255),o}function Xa(t){return ke[t>>18&63]+ke[t>>12&63]+ke[t>>6&63]+ke[t&63]}function es(t,e,n){for(var r,i=[],o=e;o<n;o+=3)r=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(t[o+2]&255),i.push(Xa(r));return i.join("")}function yt(t){for(var e,n=t.length,r=n%3,i=[],o=16383,a=0,l=n-r;a<l;a+=o)i.push(es(t,a,a+o>l?l:a+o));return r===1?(e=t[n-1],i.push(ke[e>>2]+ke[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],i.push(ke[e>>10]+ke[e>>4&63]+ke[e<<2&63]+"=")),i.join("")}function Ae(t){if(t===void 0)return{};if(!gi(t))throw new Error(`The arguments to a Convex function must be an object. Received: ${t}`);return t}function ts(t){if(typeof t>"u")throw new Error("Client created with undefined deployment address. If you used an environment variable, check that it's set.");if(typeof t!="string")throw new Error(`Invalid deployment address: found ${t}".`);if(!(t.startsWith("http:")||t.startsWith("https:")))throw new Error(`Invalid deployment address: Must start with "https://" or "http://". Found "${t}".`);try{new URL(t)}catch{throw new Error(`Invalid deployment address: "${t}" is not a valid URL. If you believe this URL is correct, use the \`skipConvexDeploymentUrlCheck\` option to bypass this.`)}if(t.endsWith(".convex.site"))throw new Error(`Invalid deployment address: "${t}" ends with .convex.site, which is used for HTTP Actions. Convex deployment URLs typically end with .convex.cloud? If you believe this URL is correct, use the \`skipConvexDeploymentUrlCheck\` option to bypass this.`)}function gi(t){const e=typeof t=="object",n=Object.getPrototypeOf(t),r=n===null||n===Object.prototype||n?.constructor?.name==="Object";return e&&r}const mi=!0,tt=BigInt("-9223372036854775808"),In=BigInt("9223372036854775807"),En=BigInt("0"),ns=BigInt("8"),rs=BigInt("256");function xi(t){return Number.isNaN(t)||!Number.isFinite(t)||Object.is(t,-0)}function is(t){t<En&&(t-=tt+tt);let e=t.toString(16);e.length%2===1&&(e="0"+e);const n=new Uint8Array(new ArrayBuffer(8));let r=0;for(const i of e.match(/.{2}/g).reverse())n.set([parseInt(i,16)],r++),t>>=ns;return yt(n)}function os(t){const e=vt(t);if(e.byteLength!==8)throw new Error(`Received ${e.byteLength} bytes, expected 8 for $integer`);let n=En,r=En;for(const i of e)n+=BigInt(i)*rs**r,r++;return n>In&&(n+=tt+tt),n}function as(t){if(t<tt||In<t)throw new Error(`BigInt ${t} does not fit into a 64-bit signed integer.`);const e=new ArrayBuffer(8);return new DataView(e).setBigInt64(0,t,!0),yt(new Uint8Array(e))}function ss(t){const e=vt(t);if(e.byteLength!==8)throw new Error(`Received ${e.byteLength} bytes, expected 8 for $integer`);return new DataView(e.buffer).getBigInt64(0,!0)}const ls=DataView.prototype.setBigInt64?as:is,cs=DataView.prototype.getBigInt64?ss:os,bi=1024;function vi(t){if(t.length>bi)throw new Error(`Field name ${t} exceeds maximum field name length ${bi}.`);if(t.startsWith("$"))throw new Error(`Field name ${t} starts with a '$', which is reserved.`);for(let e=0;e<t.length;e+=1){const n=t.charCodeAt(e);if(n<32||n>=127)throw new Error(`Field name ${t} has invalid character '${t[e]}': Field names can only contain non-control ASCII characters`)}}function nt(t){if(t===null||typeof t=="boolean"||typeof t=="number"||typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>nt(r));if(typeof t!="object")throw new Error(`Unexpected type of ${t}`);const e=Object.entries(t);if(e.length===1){const r=e[0][0];if(r==="$bytes"){if(typeof t.$bytes!="string")throw new Error(`Malformed $bytes field on ${t}`);return vt(t.$bytes).buffer}if(r==="$integer"){if(typeof t.$integer!="string")throw new Error(`Malformed $integer field on ${t}`);return cs(t.$integer)}if(r==="$float"){if(typeof t.$float!="string")throw new Error(`Malformed $float field on ${t}`);const i=vt(t.$float);if(i.byteLength!==8)throw new Error(`Received ${i.byteLength} bytes, expected 8 for $float`);const a=new DataView(i.buffer).getFloat64(0,mi);if(!xi(a))throw new Error(`Float ${a} should be encoded as a number`);return a}if(r==="$set")throw new Error("Received a Set which is no longer supported as a Convex type.");if(r==="$map")throw new Error("Received a Map which is no longer supported as a Convex type.")}const n={};for(const[r,i]of Object.entries(t))vi(r),n[r]=nt(i);return n}const yi=16384;function wt(t){const e=JSON.stringify(t,(n,r)=>r===void 0?"undefined":typeof r=="bigint"?`${r.toString()}n`:r);if(e.length>yi){const n="[...truncated]";let r=yi-n.length;const i=e.codePointAt(r-1);return i!==void 0&&i>65535&&(r-=1),e.substring(0,r)+n}return e}function Pn(t,e,n,r){if(t===void 0){const a=n&&` (present at path ${n} in original object ${wt(e)})`;throw new Error(`undefined is not a valid Convex value${a}. To learn about Convex's supported types, see https://docs.convex.dev/using/types.`)}if(t===null)return t;if(typeof t=="bigint"){if(t<tt||In<t)throw new Error(`BigInt ${t} does not fit into a 64-bit signed integer.`);return{$integer:ls(t)}}if(typeof t=="number")if(xi(t)){const a=new ArrayBuffer(8);return new DataView(a).setFloat64(0,t,mi),{$float:yt(new Uint8Array(a))}}else return t;if(typeof t=="boolean"||typeof t=="string")return t;if(t instanceof ArrayBuffer)return{$bytes:yt(new Uint8Array(t))};if(Array.isArray(t))return t.map((a,l)=>Pn(a,e,n+`[${l}]`));if(t instanceof Set)throw new Error(qn(n,"Set",[...t],e));if(t instanceof Map)throw new Error(qn(n,"Map",[...t],e));if(!gi(t)){const a=t?.constructor?.name,l=a?`${a} `:"";throw new Error(qn(n,l,t,e))}const i={},o=Object.entries(t);o.sort(([a,l],[c,u])=>a===c?0:a<c?-1:1);for(const[a,l]of o)l!==void 0&&(vi(a),i[a]=Pn(l,e,n+`.${a}`));return i}function qn(t,e,n,r){return t?`${e}${wt(n)} is not a supported Convex type (present at path ${t} in original object ${wt(r)}). To learn about Convex's supported types, see https://docs.convex.dev/using/types.`:`${e}${wt(n)} is not a supported Convex type.`}function _e(t){return Pn(t,t,"")}var us=Object.defineProperty,ds=(t,e,n)=>e in t?us(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Mn=(t,e,n)=>ds(t,typeof e!="symbol"?e+"":e,n),wi,ki;const hs=Symbol.for("ConvexError");class Vt extends(ki=Error,wi=hs,ki){constructor(e){super(typeof e=="string"?e:wt(e)),Mn(this,"name","ConvexError"),Mn(this,"data"),Mn(this,wi,!0),this.data=e}}const _i=()=>Array.from({length:4},()=>0);_i(),_i();const ji="1.40.0";var fs=Object.defineProperty,ps=(t,e,n)=>e in t?fs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Si=(t,e,n)=>ps(t,typeof e!="symbol"?e+"":e,n);const gs="color:rgb(0, 145, 255)";function Ci(t){switch(t){case"query":return"Q";case"mutation":return"M";case"action":return"A";case"any":return"?"}}class Ti{constructor(e){Si(this,"_onLogLineFuncs"),Si(this,"_verbose"),this._onLogLineFuncs={},this._verbose=e.verbose}addLogLineListener(e){let n=Math.random().toString(36).substring(2,15);for(let r=0;r<10&&this._onLogLineFuncs[n]!==void 0;r++)n=Math.random().toString(36).substring(2,15);return this._onLogLineFuncs[n]=e,()=>{delete this._onLogLineFuncs[n]}}logVerbose(...e){if(this._verbose)for(const n of Object.values(this._onLogLineFuncs))n("debug",`${new Date().toISOString()}`,...e)}log(...e){for(const n of Object.values(this._onLogLineFuncs))n("info",...e)}warn(...e){for(const n of Object.values(this._onLogLineFuncs))n("warn",...e)}error(...e){for(const n of Object.values(this._onLogLineFuncs))n("error",...e)}}function Ri(t){const e=new Ti(t);return e.addLogLineListener((n,...r)=>{switch(n){case"debug":console.debug(...r);break;case"info":console.log(...r);break;case"warn":console.warn(...r);break;case"error":console.error(...r);break;default:console.log(...r)}}),e}function Ai(t){return new Ti(t)}function Ht(t,e,n,r,i){const o=Ci(n);if(typeof i=="object"&&(i=`ConvexError ${JSON.stringify(i.errorData,null,2)}`),e==="info"){const a=i.match(/^\[.*?\] /);if(a===null){t.error(`[CONVEX ${o}(${r})] Could not parse console.log`);return}const l=i.slice(1,a[0].length-2),c=i.slice(a[0].length);t.log(`%c[CONVEX ${o}(${r})] [${l}]`,gs,c)}else t.error(`[CONVEX ${o}(${r})] ${i}`)}function ms(t,e){const n=`[CONVEX FATAL ERROR] ${e}`;return t.error(n),new Error(n)}function rt(t,e,n){return`[CONVEX ${Ci(t)}(${e})] ${n.errorMessage}
|
|
2
|
+
Called by client`}function Nn(t,e){return e.data=t.errorData,e}function De(t){const e=t.split(":");let n,r;return e.length===1?(n=e[0],r="default"):(n=e.slice(0,e.length-1).join(":"),r=e[e.length-1]),n.endsWith(".js")&&(n=n.slice(0,-3)),`${n}:${r}`}function Ue(t,e){return JSON.stringify({udfPath:De(t),args:_e(e)})}function $i(t,e,n){const{initialNumItems:r,id:i}=n;return JSON.stringify({type:"paginated",udfPath:De(t),args:_e(e),options:_e({initialNumItems:r,id:i})})}var xs=Object.defineProperty,bs=(t,e,n)=>e in t?xs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,je=(t,e,n)=>bs(t,typeof e!="symbol"?e+"":e,n);class vs{constructor(){je(this,"nextQueryId"),je(this,"querySetVersion"),je(this,"querySet"),je(this,"queryIdToToken"),je(this,"identityVersion"),je(this,"auth"),je(this,"outstandingQueriesOlderThanRestart"),je(this,"outstandingAuthOlderThanRestart"),je(this,"paused"),je(this,"pendingQuerySetModifications"),this.nextQueryId=0,this.querySetVersion=0,this.identityVersion=0,this.querySet=new Map,this.queryIdToToken=new Map,this.outstandingQueriesOlderThanRestart=new Set,this.outstandingAuthOlderThanRestart=!1,this.paused=!1,this.pendingQuerySetModifications=new Map}hasSyncedPastLastReconnect(){return this.outstandingQueriesOlderThanRestart.size===0&&!this.outstandingAuthOlderThanRestart}markAuthCompletion(){this.outstandingAuthOlderThanRestart=!1}subscribe(e,n,r,i){const o=De(e),a=Ue(o,n),l=this.querySet.get(a);if(l!==void 0)return l.numSubscribers+=1,{queryToken:a,modification:null,unsubscribe:()=>this.removeSubscriber(a)};{const c=this.nextQueryId++,u={id:c,canonicalizedUdfPath:o,args:n,numSubscribers:1,journal:r,componentPath:i};this.querySet.set(a,u),this.queryIdToToken.set(c,a);const h=this.querySetVersion,d=this.querySetVersion+1,f={type:"Add",queryId:c,udfPath:o,args:[_e(n)],journal:r,componentPath:i};return this.paused?this.pendingQuerySetModifications.set(c,f):this.querySetVersion=d,{queryToken:a,modification:{type:"ModifyQuerySet",baseVersion:h,newVersion:d,modifications:[f]},unsubscribe:()=>this.removeSubscriber(a)}}}transition(e){for(const n of e.modifications)switch(n.type){case"QueryUpdated":case"QueryFailed":{this.outstandingQueriesOlderThanRestart.delete(n.queryId);const r=n.journal;if(r!==void 0){const i=this.queryIdToToken.get(n.queryId);i!==void 0&&(this.querySet.get(i).journal=r)}break}case"QueryRemoved":{this.outstandingQueriesOlderThanRestart.delete(n.queryId);break}default:throw new Error(`Invalid modification ${n.type}`)}}queryId(e,n){const r=De(e),i=Ue(r,n),o=this.querySet.get(i);return o!==void 0?o.id:null}isCurrentOrNewerAuthVersion(e){return e>=this.identityVersion}getAuth(){return this.auth}setAuth(e){this.auth={tokenType:"User",value:e};const n=this.identityVersion;return this.paused||(this.identityVersion=n+1),{type:"Authenticate",baseVersion:n,...this.auth}}setAdminAuth(e,n){const r={tokenType:"Admin",value:e,impersonating:n};this.auth=r;const i=this.identityVersion;return this.paused||(this.identityVersion=i+1),{type:"Authenticate",baseVersion:i,...r}}clearAuth(){this.auth=void 0,this.markAuthCompletion();const e=this.identityVersion;return this.paused||(this.identityVersion=e+1),{type:"Authenticate",tokenType:"None",baseVersion:e}}hasAuth(){return!!this.auth}isNewAuth(e){return this.auth?.value!==e}queryPath(e){const n=this.queryIdToToken.get(e);return n?this.querySet.get(n).canonicalizedUdfPath:null}queryArgs(e){const n=this.queryIdToToken.get(e);return n?this.querySet.get(n).args:null}queryToken(e){return this.queryIdToToken.get(e)??null}queryJournal(e){return this.querySet.get(e)?.journal}restart(){this.unpause(),this.outstandingQueriesOlderThanRestart.clear();const e=[];for(const i of this.querySet.values()){const o={type:"Add",queryId:i.id,udfPath:i.canonicalizedUdfPath,args:[_e(i.args)],journal:i.journal,componentPath:i.componentPath};e.push(o),this.outstandingQueriesOlderThanRestart.add(i.id)}this.querySetVersion=1;const n={type:"ModifyQuerySet",baseVersion:0,newVersion:1,modifications:e};if(!this.auth)return this.identityVersion=0,[n,void 0];this.outstandingAuthOlderThanRestart=!0;const r={type:"Authenticate",baseVersion:0,...this.auth};return this.identityVersion=1,[n,r]}pause(){this.paused=!0}resume(){const e=this.pendingQuerySetModifications.size>0?{type:"ModifyQuerySet",baseVersion:this.querySetVersion,newVersion:++this.querySetVersion,modifications:Array.from(this.pendingQuerySetModifications.values())}:void 0,n=this.auth!==void 0?{type:"Authenticate",baseVersion:this.identityVersion++,...this.auth}:void 0;return this.unpause(),[e,n]}unpause(){this.paused=!1,this.pendingQuerySetModifications.clear()}removeSubscriber(e){const n=this.querySet.get(e);if(n.numSubscribers>1)return n.numSubscribers-=1,null;{this.querySet.delete(e),this.queryIdToToken.delete(n.id),this.outstandingQueriesOlderThanRestart.delete(n.id);const r=this.querySetVersion,i=this.querySetVersion+1,o={type:"Remove",queryId:n.id};return this.paused?this.pendingQuerySetModifications.has(n.id)?this.pendingQuerySetModifications.delete(n.id):this.pendingQuerySetModifications.set(n.id,o):this.querySetVersion=i,{type:"ModifyQuerySet",baseVersion:r,newVersion:i,modifications:[o]}}}}var ys=Object.defineProperty,ws=(t,e,n)=>e in t?ys(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Wt=(t,e,n)=>ws(t,typeof e!="symbol"?e+"":e,n);class ks{constructor(e,n){this.logger=e,this.markConnectionStateDirty=n,Wt(this,"inflightRequests"),Wt(this,"requestsOlderThanRestart"),Wt(this,"inflightMutationsCount",0),Wt(this,"inflightActionsCount",0),this.inflightRequests=new Map,this.requestsOlderThanRestart=new Set}request(e,n){const r=new Promise(i=>{const o=n?"Requested":"NotSent";this.inflightRequests.set(e.requestId,{message:e,status:{status:o,requestedAt:new Date,onResult:i}}),e.type==="Mutation"?this.inflightMutationsCount++:e.type==="Action"&&this.inflightActionsCount++});return this.markConnectionStateDirty(),r}onResponse(e){const n=this.inflightRequests.get(e.requestId);if(n===void 0||n.status.status==="Completed")return null;const r=n.message.type==="Mutation"?"mutation":"action",i=n.message.udfPath;for(const c of e.logLines)Ht(this.logger,"info",r,i,c);const o=n.status;let a,l;if(e.success)a={success:!0,logLines:e.logLines,value:nt(e.result)},l=()=>o.onResult(a);else{const c=e.result,{errorData:u}=e;Ht(this.logger,"error",r,i,c),a={success:!1,errorMessage:c,errorData:u!==void 0?nt(u):void 0,logLines:e.logLines},l=()=>o.onResult(a)}return e.type==="ActionResponse"||!e.success?(l(),this.inflightRequests.delete(e.requestId),this.requestsOlderThanRestart.delete(e.requestId),n.message.type==="Action"?this.inflightActionsCount--:n.message.type==="Mutation"&&this.inflightMutationsCount--,this.markConnectionStateDirty(),{requestId:e.requestId,result:a}):(n.status={status:"Completed",result:a,ts:e.ts,onResolve:l},null)}removeCompleted(e){const n=new Map;for(const[r,i]of this.inflightRequests.entries()){const o=i.status;o.status==="Completed"&&o.ts.lessThanOrEqual(e)&&(o.onResolve(),n.set(r,o.result),i.message.type==="Mutation"?this.inflightMutationsCount--:i.message.type==="Action"&&this.inflightActionsCount--,this.inflightRequests.delete(r),this.requestsOlderThanRestart.delete(r))}return n.size>0&&this.markConnectionStateDirty(),n}restart(){this.requestsOlderThanRestart=new Set(this.inflightRequests.keys());const e=[];for(const[n,r]of this.inflightRequests){if(r.status.status==="NotSent"){r.status.status="Requested",e.push(r.message);continue}if(r.message.type==="Mutation")e.push(r.message);else if(r.message.type==="Action"){if(this.inflightRequests.delete(n),this.requestsOlderThanRestart.delete(n),this.inflightActionsCount--,r.status.status==="Completed")throw new Error("Action should never be in 'Completed' state");r.status.onResult({success:!1,errorMessage:"Connection lost while action was in flight",logLines:[]})}}return this.markConnectionStateDirty(),e}resume(){const e=[];for(const[,n]of this.inflightRequests)if(n.status.status==="NotSent"){n.status.status="Requested",e.push(n.message);continue}return e}hasIncompleteRequests(){for(const e of this.inflightRequests.values())if(e.status.status==="Requested")return!0;return!1}hasInflightRequests(){return this.inflightRequests.size>0}hasSyncedPastLastReconnect(){return this.requestsOlderThanRestart.size===0}timeOfOldestInflightRequest(){if(this.inflightRequests.size===0)return null;let e=Date.now();for(const n of this.inflightRequests.values())n.status.status!=="Completed"&&n.status.requestedAt.getTime()<e&&(e=n.status.requestedAt.getTime());return new Date(e)}inflightMutations(){return this.inflightMutationsCount}inflightActions(){return this.inflightActionsCount}}const kt=Symbol.for("functionName"),Ii=Symbol.for("toReferencePath");function _s(t){return t[Ii]??null}function js(t){return t.startsWith("function://")}function Ss(t){let e;if(typeof t=="string")js(t)?e={functionHandle:t}:e={name:t};else if(t[kt])e={name:t[kt]};else{const n=_s(t);if(!n)throw new Error(`${t} is not a functionReference`);e={reference:n}}return e}function Z(t){const e=Ss(t);if(e.name===void 0)throw e.functionHandle!==void 0?new Error(`Expected function reference like "api.file.func" or "internal.file.func", but received function handle ${e.functionHandle}`):e.reference!==void 0?new Error(`Expected function reference in the current component like "api.file.func" or "internal.file.func", but received reference ${e.reference}`):new Error(`Expected function reference like "api.file.func" or "internal.file.func", but received ${JSON.stringify(e)}`);if(typeof t=="string")return t;const n=t[kt];if(!n)throw new Error(`${t} is not a functionReference`);return n}function Ln(t){return{[kt]:t}}function Ei(t=[]){const e={get(n,r){if(typeof r=="string"){const i=[...t,r];return Ei(i)}else if(r===kt){if(t.length<2){const a=["api",...t].join(".");throw new Error(`API path is expected to be of the form \`api.moduleName.functionName\`. Found: \`${a}\``)}const i=t.slice(0,-1).join("/"),o=t[t.length-1];return o==="default"?i:i+":"+o}else return r===Symbol.toStringTag?"FunctionReference":void 0}};return new Proxy({},e)}const Cs=Ei();var Ts=Object.defineProperty,Rs=(t,e,n)=>e in t?Ts(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Kt=(t,e,n)=>Rs(t,typeof e!="symbol"?e+"":e,n);class _t{constructor(e){Kt(this,"queryResults"),Kt(this,"modifiedQueries"),this.queryResults=e,this.modifiedQueries=[]}getQuery(e,...n){const r=Ae(n[0]),i=Z(e),o=this.queryResults.get(Ue(i,r));if(o!==void 0)return _t.queryValue(o.result)}getAllQueries(e){const n=[],r=Z(e);for(const i of this.queryResults.values())i.udfPath===De(r)&&n.push({args:i.args,value:_t.queryValue(i.result)});return n}setQuery(e,n,r){const i=Ae(n),o=Z(e),a=Ue(o,i);let l;r===void 0?l=void 0:l={success:!0,value:r,logLines:[]};const c={udfPath:o,args:i,result:l};this.queryResults.set(a,c),this.modifiedQueries.push(a)}static queryValue(e){if(e!==void 0)return e.success?e.value:void 0}}class As{constructor(){Kt(this,"queryResults"),Kt(this,"optimisticUpdates"),this.queryResults=new Map,this.optimisticUpdates=[]}ingestQueryResultsFromServer(e,n){this.optimisticUpdates=this.optimisticUpdates.filter(a=>!n.has(a.mutationId));const r=this.queryResults;this.queryResults=new Map(e);const i=new _t(this.queryResults);for(const a of this.optimisticUpdates)a.update(i);const o=[];for(const[a,l]of this.queryResults){const c=r.get(a);(c===void 0||c.result!==l.result)&&o.push(a)}return o}applyOptimisticUpdate(e,n){this.optimisticUpdates.push({update:e,mutationId:n});const r=new _t(this.queryResults);return e(r),r.modifiedQueries}rawQueryResult(e){const n=this.queryResults.get(e);if(n!==void 0)return n.result}queryResult(e){const n=this.queryResults.get(e);if(n===void 0)return;const r=n.result;if(r!==void 0){if(r.success)return r.value;throw r.errorData!==void 0?Nn(r,new Vt(rt("query",n.udfPath,r))):new Error(rt("query",n.udfPath,r))}}hasQueryResult(e){return this.queryResults.get(e)!==void 0}queryLogs(e){return this.queryResults.get(e)?.result?.logLines}}var $s=Object.defineProperty,Is=(t,e,n)=>e in t?$s(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,zn=(t,e,n)=>Is(t,typeof e!="symbol"?e+"":e,n);class te{constructor(e,n){zn(this,"low"),zn(this,"high"),zn(this,"__isUnsignedLong__"),this.low=e|0,this.high=n|0,this.__isUnsignedLong__=!0}static isLong(e){return(e&&e.__isUnsignedLong__)===!0}static fromBytesLE(e){return new te(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24)}toBytesLE(){const e=this.high,n=this.low;return[n&255,n>>>8&255,n>>>16&255,n>>>24,e&255,e>>>8&255,e>>>16&255,e>>>24]}static fromNumber(e){return isNaN(e)||e<0?Pi:e>=Es?Ps:new te(e%jt|0,e/jt|0)}toString(){return(BigInt(this.high)*BigInt(jt)+BigInt(this.low)).toString()}equals(e){return te.isLong(e)||(e=te.fromValue(e)),this.high>>>31===1&&e.high>>>31===1?!1:this.high===e.high&&this.low===e.low}notEquals(e){return!this.equals(e)}comp(e){return te.isLong(e)||(e=te.fromValue(e)),this.equals(e)?0:e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1}lessThanOrEqual(e){return this.comp(e)<=0}static fromValue(e){return typeof e=="number"?te.fromNumber(e):new te(e.low,e.high)}}const Pi=new te(0,0),qi=65536,jt=qi*qi,Es=jt*jt,Ps=new te(-1,-1);var qs=Object.defineProperty,Ms=(t,e,n)=>e in t?qs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Gt=(t,e,n)=>Ms(t,typeof e!="symbol"?e+"":e,n);class Mi{constructor(e,n){Gt(this,"version"),Gt(this,"remoteQuerySet"),Gt(this,"queryPath"),Gt(this,"logger"),this.version={querySet:0,ts:te.fromNumber(0),identity:0},this.remoteQuerySet=new Map,this.queryPath=e,this.logger=n}transition(e){const n=e.startVersion;if(this.version.querySet!==n.querySet||this.version.ts.notEquals(n.ts)||this.version.identity!==n.identity)throw new Error(`Invalid start version: ${n.ts.toString()}:${n.querySet}:${n.identity}, transitioning from ${this.version.ts.toString()}:${this.version.querySet}:${this.version.identity}`);for(const r of e.modifications)switch(r.type){case"QueryUpdated":{const i=this.queryPath(r.queryId);if(i)for(const a of r.logLines)Ht(this.logger,"info","query",i,a);const o=nt(r.value??null);this.remoteQuerySet.set(r.queryId,{success:!0,value:o,logLines:r.logLines});break}case"QueryFailed":{const i=this.queryPath(r.queryId);if(i)for(const a of r.logLines)Ht(this.logger,"info","query",i,a);const{errorData:o}=r;this.remoteQuerySet.set(r.queryId,{success:!1,errorMessage:r.errorMessage,errorData:o!==void 0?nt(o):void 0,logLines:r.logLines});break}case"QueryRemoved":{this.remoteQuerySet.delete(r.queryId);break}default:throw new Error(`Invalid modification ${r.type}`)}this.version=e.endVersion}remoteQueryResults(){return this.remoteQuerySet}timestamp(){return this.version.ts}}function On(t){const e=vt(t);return te.fromBytesLE(Array.from(e))}function Ns(t){const e=new Uint8Array(t.toBytesLE());return yt(e)}function Ni(t){switch(t.type){case"FatalError":case"AuthError":case"ActionResponse":case"TransitionChunk":case"Ping":return{...t};case"MutationResponse":return t.success?{...t,ts:On(t.ts)}:{...t};case"Transition":return{...t,startVersion:{...t.startVersion,ts:On(t.startVersion.ts)},endVersion:{...t.endVersion,ts:On(t.endVersion.ts)}}}}function Ls(t){switch(t.type){case"Authenticate":case"ModifyQuerySet":case"Mutation":case"Action":case"Event":return{...t};case"Connect":return t.maxObservedTimestamp!==void 0?{...t,maxObservedTimestamp:Ns(t.maxObservedTimestamp)}:{...t,maxObservedTimestamp:void 0}}}var zs=Object.defineProperty,Os=(t,e,n)=>e in t?zs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Q=(t,e,n)=>Os(t,typeof e!="symbol"?e+"":e,n);const Bs=1e3,Fs=1001,Ds=1005,Us=4040;let Jt;function it(){return Jt===void 0&&(Jt=Date.now()),typeof performance>"u"||!performance.now?Date.now():Math.round(Jt+performance.now())}function Li(){return`t=${Math.round((it()-Jt)/100)/10}s`}const zi={InternalServerError:{timeout:1e3},SubscriptionsWorkerFullError:{timeout:3e3},TooManyConcurrentRequests:{timeout:3e3},CommitterFullError:{timeout:3e3},AwsTooManyRequestsException:{timeout:3e3},ExecuteFullError:{timeout:3e3},SystemTimeoutError:{timeout:3e3},ExpiredInQueue:{timeout:3e3},VectorIndexesUnavailable:{timeout:1e3},SearchIndexesUnavailable:{timeout:1e3},TableSummariesUnavailable:{timeout:1e3},VectorIndexTooLarge:{timeout:3e3},SearchIndexTooLarge:{timeout:3e3},TooManyWritesInTimePeriod:{timeout:3e3}};function Qs(t){if(t===void 0)return"Unknown";for(const e of Object.keys(zi))if(t.startsWith(e))return e;return"Unknown"}class Vs{constructor(e,n,r,i,o,a){this.markConnectionStateDirty=o,this.debug=a,Q(this,"socket"),Q(this,"connectionCount"),Q(this,"_hasEverConnected",!1),Q(this,"lastCloseReason"),Q(this,"transitionChunkBuffer",null),Q(this,"defaultInitialBackoff"),Q(this,"maxBackoff"),Q(this,"retries"),Q(this,"serverInactivityThreshold"),Q(this,"reconnectDueToServerInactivityTimeout"),Q(this,"scheduledReconnect",null),Q(this,"networkOnlineHandler",null),Q(this,"pendingNetworkRecoveryInfo",null),Q(this,"uri"),Q(this,"onOpen"),Q(this,"onResume"),Q(this,"onMessage"),Q(this,"webSocketConstructor"),Q(this,"logger"),Q(this,"onServerDisconnectError"),this.webSocketConstructor=r,this.socket={state:"disconnected"},this.connectionCount=0,this.lastCloseReason="InitialConnect",this.defaultInitialBackoff=1e3,this.maxBackoff=16e3,this.retries=0,this.serverInactivityThreshold=6e4,this.reconnectDueToServerInactivityTimeout=null,this.uri=e,this.onOpen=n.onOpen,this.onResume=n.onResume,this.onMessage=n.onMessage,this.onServerDisconnectError=n.onServerDisconnectError,this.logger=i,this.setupNetworkListener(),this.connect()}setSocketState(e){this.socket=e,this._logVerbose(`socket state changed: ${this.socket.state}, paused: ${"paused"in this.socket?this.socket.paused:void 0}`),this.markConnectionStateDirty()}setupNetworkListener(){typeof window>"u"||typeof window.addEventListener!="function"||this.networkOnlineHandler===null&&(this.networkOnlineHandler=()=>{this._logVerbose("network online event detected"),this.tryReconnectImmediately()},window.addEventListener("online",this.networkOnlineHandler),this._logVerbose("network online event listener registered"))}cleanupNetworkListener(){this.networkOnlineHandler&&typeof window<"u"&&typeof window.removeEventListener=="function"&&(window.removeEventListener("online",this.networkOnlineHandler),this.networkOnlineHandler=null,this._logVerbose("network online event listener removed"))}assembleTransition(e){if(e.partNumber<0||e.partNumber>=e.totalParts||e.totalParts===0||this.transitionChunkBuffer&&(this.transitionChunkBuffer.totalParts!==e.totalParts||this.transitionChunkBuffer.transitionId!==e.transitionId))throw this.transitionChunkBuffer=null,new Error("Invalid TransitionChunk");if(this.transitionChunkBuffer===null&&(this.transitionChunkBuffer={chunks:[],totalParts:e.totalParts,transitionId:e.transitionId}),e.partNumber!==this.transitionChunkBuffer.chunks.length){const n=this.transitionChunkBuffer.chunks.length;throw this.transitionChunkBuffer=null,new Error(`TransitionChunk received out of order: expected part ${n}, got ${e.partNumber}`)}if(this.transitionChunkBuffer.chunks.push(e.chunk),this.transitionChunkBuffer.chunks.length===e.totalParts){const n=this.transitionChunkBuffer.chunks.join("");this.transitionChunkBuffer=null;const r=Ni(JSON.parse(n));if(r.type!=="Transition")throw new Error(`Expected Transition, got ${r.type} after assembling chunks`);return r}return null}connect(){if(this.socket.state==="terminated")return;if(this.socket.state!=="disconnected"&&this.socket.state!=="stopped")throw new Error("Didn't start connection from disconnected state: "+this.socket.state);const e=new this.webSocketConstructor(this.uri);this._logVerbose("constructed WebSocket"),this.setSocketState({state:"connecting",ws:e,paused:"no"}),this.resetServerInactivityTimeout(),e.onopen=()=>{if(this.logger.logVerbose("begin ws.onopen"),this.socket.state!=="connecting")throw new Error("onopen called with socket not in connecting state");if(this.setSocketState({state:"ready",ws:e,paused:this.socket.paused==="yes"?"uninitialized":"no"}),this.resetServerInactivityTimeout(),this.socket.paused==="no"&&(this._hasEverConnected=!0,this.onOpen({connectionCount:this.connectionCount,lastCloseReason:this.lastCloseReason,clientTs:it()})),this.lastCloseReason!=="InitialConnect"&&(this.lastCloseReason?this.logger.log("WebSocket reconnected at",Li(),"after disconnect due to",this.lastCloseReason):this.logger.log("WebSocket reconnected at",Li())),this.connectionCount+=1,this.lastCloseReason=null,this.pendingNetworkRecoveryInfo!==null){const{timeSavedMs:n}=this.pendingNetworkRecoveryInfo;this.pendingNetworkRecoveryInfo=null,this.sendMessage({type:"Event",eventType:"NetworkRecoveryReconnect",event:{timeSavedMs:n}}),this.logger.log(`Network recovery reconnect saved ~${Math.round(n/1e3)}s of waiting`)}},e.onerror=n=>{this.transitionChunkBuffer=null;const r=n.message;r&&this.logger.log(`WebSocket error message: ${r}`)},e.onmessage=n=>{this.resetServerInactivityTimeout();const r=n.data.length;let i=Ni(JSON.parse(n.data));if(this._logVerbose(`received ws message with type ${i.type}`),i.type==="Ping")return;if(i.type==="TransitionChunk"){const a=this.assembleTransition(i);if(!a)return;i=a,this._logVerbose(`assembled full ws message of type ${i.type}`)}this.transitionChunkBuffer!==null&&(this.transitionChunkBuffer=null,this.logger.log(`Received unexpected ${i.type} while buffering TransitionChunks`)),i.type==="Transition"&&this.reportLargeTransition({messageLength:r,transition:i}),this.onMessage(i).hasSyncedPastLastReconnect&&(this.retries=0,this.markConnectionStateDirty())},e.onclose=n=>{if(this._logVerbose("begin ws.onclose"),this.transitionChunkBuffer=null,this.lastCloseReason===null&&(this.lastCloseReason=n.reason||`closed with code ${n.code}`),n.code!==Bs&&n.code!==Fs&&n.code!==Ds&&n.code!==Us){let i=`WebSocket closed with code ${n.code}`;n.reason&&(i+=`: ${n.reason}`),this.logger.log(i),this.onServerDisconnectError&&n.reason&&this.onServerDisconnectError(i)}const r=Qs(n.reason);this.scheduleReconnect(r)}}socketState(){return this.socket.state}sendMessage(e){const n={type:e.type,...e.type==="Authenticate"&&e.tokenType==="User"?{value:`...${e.value.slice(-7)}`}:{}};if(this.socket.state==="ready"&&this.socket.paused==="no"){const r=Ls(e),i=JSON.stringify(r);let o=!1;try{this.socket.ws.send(i),o=!0}catch(a){this.logger.log(`Failed to send message on WebSocket, reconnecting: ${a}`),this.closeAndReconnect("FailedToSendMessage")}return this._logVerbose(`${o?"sent":"failed to send"} message with type ${e.type}: ${JSON.stringify(n)}`),!0}return this._logVerbose(`message not sent (socket state: ${this.socket.state}, paused: ${"paused"in this.socket?this.socket.paused:void 0}): ${JSON.stringify(n)}`),!1}resetServerInactivityTimeout(){this.socket.state!=="terminated"&&(this.reconnectDueToServerInactivityTimeout!==null&&(clearTimeout(this.reconnectDueToServerInactivityTimeout),this.reconnectDueToServerInactivityTimeout=null),this.reconnectDueToServerInactivityTimeout=setTimeout(()=>{this.closeAndReconnect("InactiveServer")},this.serverInactivityThreshold))}scheduleReconnect(e){this.scheduledReconnect&&(clearTimeout(this.scheduledReconnect.timeout),this.scheduledReconnect=null),this.socket={state:"disconnected"};const n=this.nextBackoff(e);this.markConnectionStateDirty(),this.logger.log(`Attempting reconnect in ${Math.round(n)}ms`);const r=it(),i=setTimeout(()=>{this.scheduledReconnect?.timeout===i&&(this.scheduledReconnect=null,this.connect())},n);this.scheduledReconnect={timeout:i,scheduledAt:r,backoffMs:n}}closeAndReconnect(e){switch(this._logVerbose(`begin closeAndReconnect with reason ${e}`),this.socket.state){case"disconnected":case"terminated":case"stopped":return;case"connecting":case"ready":{this.lastCloseReason=e,this.close(),this.scheduleReconnect("client");return}default:this.socket}}close(){switch(this.transitionChunkBuffer=null,this.socket.state){case"disconnected":case"terminated":case"stopped":return Promise.resolve();case"connecting":{const e=this.socket.ws;return e.onmessage=n=>{this._logVerbose("Ignoring message received after close")},new Promise(n=>{e.onclose=()=>{this._logVerbose("Closed after connecting"),n()},e.onopen=()=>{this._logVerbose("Opened after connecting"),e.close()}})}case"ready":{this._logVerbose("ws.close called");const e=this.socket.ws;e.onmessage=r=>{this._logVerbose("Ignoring message received after close")};const n=new Promise(r=>{e.onclose=()=>{r()}});return e.close(),n}default:return this.socket,Promise.resolve()}}terminate(){switch(this.reconnectDueToServerInactivityTimeout&&clearTimeout(this.reconnectDueToServerInactivityTimeout),this.scheduledReconnect&&(clearTimeout(this.scheduledReconnect.timeout),this.scheduledReconnect=null),this.cleanupNetworkListener(),this.socket.state){case"terminated":case"stopped":case"disconnected":case"connecting":case"ready":{const e=this.close();return this.setSocketState({state:"terminated"}),e}default:throw this.socket,new Error(`Invalid websocket state: ${this.socket.state}`)}}stop(){switch(this.socket.state){case"terminated":return Promise.resolve();case"connecting":case"stopped":case"disconnected":case"ready":{this.cleanupNetworkListener();const e=this.close();return this.socket={state:"stopped"},e}default:return this.socket,Promise.resolve()}}tryRestart(){switch(this.socket.state){case"stopped":break;case"terminated":case"connecting":case"ready":case"disconnected":this.logger.logVerbose("Restart called without stopping first");return;default:this.socket}this.setupNetworkListener(),this.connect()}pause(){switch(this.socket.state){case"disconnected":case"stopped":case"terminated":return;case"connecting":case"ready":{this.socket={...this.socket,paused:"yes"};return}default:{this.socket;return}}}tryReconnectImmediately(){if(this._logVerbose("tryReconnectImmediately called"),this.socket.state!=="disconnected"){this._logVerbose(`tryReconnectImmediately called but socket state is ${this.socket.state}, no action taken`);return}let e=null;if(this.scheduledReconnect){const n=it()-this.scheduledReconnect.scheduledAt;e=Math.max(0,this.scheduledReconnect.backoffMs-n),this._logVerbose(`would have waited ${Math.round(e)}ms more (backoff was ${Math.round(this.scheduledReconnect.backoffMs)}ms, elapsed ${Math.round(n)}ms)`),clearTimeout(this.scheduledReconnect.timeout),this.scheduledReconnect=null,this._logVerbose("canceled scheduled reconnect")}this.logger.log("Network recovery detected, reconnecting immediately"),this.pendingNetworkRecoveryInfo=e!==null?{timeSavedMs:e}:null,this.connect()}resume(){switch(this.socket.state){case"connecting":this.socket={...this.socket,paused:"no"};return;case"ready":this.socket.paused==="uninitialized"?(this.socket={...this.socket,paused:"no"},this._hasEverConnected=!0,this.onOpen({connectionCount:this.connectionCount,lastCloseReason:this.lastCloseReason,clientTs:it()})):this.socket.paused==="yes"&&(this.socket={...this.socket,paused:"no"},this.onResume());return;case"terminated":case"stopped":case"disconnected":return;default:this.socket}this.connect()}connectionState(){return{isConnected:this.socket.state==="ready",hasEverConnected:this._hasEverConnected,connectionCount:this.connectionCount,connectionRetries:this.retries}}_logVerbose(e){this.logger.logVerbose(e)}nextBackoff(e){const r=(e==="client"?100:e==="Unknown"?this.defaultInitialBackoff:zi[e].timeout)*Math.pow(2,this.retries);this.retries+=1;const i=Math.min(r,this.maxBackoff),o=i*(Math.random()-.5);return i+o}reportLargeTransition({transition:e,messageLength:n}){if(e.clientClockSkew===void 0||e.serverTs===void 0)return;const r=it()-e.clientClockSkew-e.serverTs/1e6,i=`${Math.round(r)}ms`,o=`${Math.round(n/1e4)/100}MB`,a=n/(r/1e3),l=`${Math.round(a/1e4)/100}MB per second`;this._logVerbose(`received ${o} transition in ${i} at ${l}`),n>2e7?this.logger.log(`received query results totaling more that 20MB (${o}) which will take a long time to download on slower connections`):r>2e4&&this.logger.log(`received query results totaling ${o} which took more than 20s to arrive (${i})`),this.debug&&this.sendMessage({type:"Event",eventType:"ClientReceivedTransition",event:{transitionTransitTime:r,messageLength:n}})}}function Hs(){return Ws()}function Ws(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}class St extends Error{}St.prototype.name="InvalidTokenError";function Ks(t){return decodeURIComponent(atob(t).replace(/(.)/g,(e,n)=>{let r=n.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}function Gs(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return Ks(e)}catch{return atob(e)}}function Oi(t,e){if(typeof t!="string")throw new St("Invalid token specified: must be a string");e||(e={});const n=e.header===!0?0:1,r=t.split(".")[n];if(typeof r!="string")throw new St(`Invalid token specified: missing part #${n+1}`);let i;try{i=Gs(r)}catch(o){throw new St(`Invalid token specified: invalid base64 for part #${n+1} (${o.message})`)}try{return JSON.parse(i)}catch(o){throw new St(`Invalid token specified: invalid json for part #${n+1} (${o.message})`)}}var Js=Object.defineProperty,Ys=(t,e,n)=>e in t?Js(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ae=(t,e,n)=>Ys(t,typeof e!="symbol"?e+"":e,n);const Zs=480*60*60*1e3,Bi=2;class Xs{constructor(e,n,r){ae(this,"authState",{state:"noAuth"}),ae(this,"configVersion",0),ae(this,"syncState"),ae(this,"authenticate"),ae(this,"stopSocket"),ae(this,"tryRestartSocket"),ae(this,"pauseSocket"),ae(this,"resumeSocket"),ae(this,"clearAuth"),ae(this,"logger"),ae(this,"refreshTokenLeewaySeconds"),ae(this,"lastRefreshChange"),ae(this,"tokenConfirmationAttempts",0),this.syncState=e,this.authenticate=n.authenticate,this.stopSocket=n.stopSocket,this.tryRestartSocket=n.tryRestartSocket,this.pauseSocket=n.pauseSocket,this.resumeSocket=n.resumeSocket,this.clearAuth=n.clearAuth,this.logger=r.logger,this.refreshTokenLeewaySeconds=r.refreshTokenLeewaySeconds,this.lastRefreshChange=!1}notifyRefreshChange(e){this.authState.state!=="noAuth"&&this.authState.state!=="initialRefetch"&&this.authState.config.onRefreshChange&&this.lastRefreshChange!==e&&(this.lastRefreshChange=e,this.authState.config.onRefreshChange(e))}async setConfig(e,n,r){this.resetAuthState(),this._logVerbose("pausing WS for auth token fetch"),this.pauseSocket();const i=await this.fetchTokenAndGuardAgainstRace(e,{forceRefreshToken:!1});if(i.isFromOutdatedConfig)return;const o={fetchToken:e,onAuthChange:n,onRefreshChange:r};i.value?(this.setAuthState({state:"waitingForServerConfirmationOfCachedToken",config:o,hasRetried:!1}),this.authenticate(i.value)):(this.setAuthState({state:"initialRefetch",config:o}),await this.refetchToken()),this._logVerbose("resuming WS after auth token fetch"),this.resumeSocket()}onTransition(e){if(this.syncState.isCurrentOrNewerAuthVersion(e.endVersion.identity)&&!(e.endVersion.identity<=e.startVersion.identity)){if(this._logVerbose(`auth state is ${this.authState.state} when handling transition`),this.syncState.markAuthCompletion(),this.authState.state==="waitingForServerConfirmationOfCachedToken"){this._logVerbose("server confirmed auth token is valid"),this.refetchToken(),this.authState.config.onAuthChange(!0);return}this.authState.state==="waitingForServerConfirmationOfFreshToken"&&(this._logVerbose("server confirmed new auth token is valid"),this.notifyRefreshChange(!1),this.scheduleTokenRefetch(this.authState.token),this.tokenConfirmationAttempts=0,this.authState.hadAuth||this.authState.config.onAuthChange(!0))}}onAuthError(e){if(e.authUpdateAttempted===!1&&(this.authState.state==="waitingForServerConfirmationOfFreshToken"||this.authState.state==="waitingForServerConfirmationOfCachedToken")){this._logVerbose("ignoring non-auth token expired error");return}const{baseVersion:n}=e;if(!this.syncState.isCurrentOrNewerAuthVersion(n+1)){this._logVerbose("ignoring auth error for previous auth attempt");return}this.tryToReauthenticate(e)}async tryToReauthenticate(e){if(this._logVerbose(`attempting to reauthenticate: ${e.error}`),this.authState.state==="noAuth"||this.authState.state==="waitingForServerConfirmationOfFreshToken"&&this.tokenConfirmationAttempts>=Bi){this.logger.error(`Failed to authenticate: "${e.error}", check your server auth config`),this.syncState.hasAuth()&&this.syncState.clearAuth(),this.authState.state!=="noAuth"&&this.setAndReportAuthFailed(this.authState.config.onAuthChange);return}if(this.authState.state==="waitingForServerConfirmationOfFreshToken"&&(this.tokenConfirmationAttempts++,this._logVerbose(`retrying reauthentication, ${Bi-this.tokenConfirmationAttempts} attempts remaining`)),this.notifyRefreshChange(!0),await this.stopSocket(),this.authState.state==="noAuth")return;const n=await this.fetchTokenAndGuardAgainstRace(this.authState.config.fetchToken,{forceRefreshToken:!0});n.isFromOutdatedConfig||(n.value&&this.syncState.isNewAuth(n.value)?(this.authenticate(n.value),this.setAuthState({state:"waitingForServerConfirmationOfFreshToken",config:this.authState.config,token:n.value,hadAuth:this.authState.state==="notRefetching"||this.authState.state==="waitingForScheduledRefetch"})):(this._logVerbose("reauthentication failed, could not fetch a new token"),this.syncState.hasAuth()&&this.syncState.clearAuth(),this.setAndReportAuthFailed(this.authState.config.onAuthChange)),this.tryRestartSocket())}async refetchToken(){if(this.authState.state==="noAuth")return;this._logVerbose("refetching auth token");const e=await this.fetchTokenAndGuardAgainstRace(this.authState.config.fetchToken,{forceRefreshToken:!0});e.isFromOutdatedConfig||(e.value?this.syncState.isNewAuth(e.value)?(this.setAuthState({state:"waitingForServerConfirmationOfFreshToken",hadAuth:this.syncState.hasAuth(),token:e.value,config:this.authState.config}),this.authenticate(e.value)):this.setAuthState({state:"notRefetching",config:this.authState.config}):(this._logVerbose("refetching token failed"),this.syncState.hasAuth()&&this.clearAuth(),this.setAndReportAuthFailed(this.authState.config.onAuthChange)),this._logVerbose("restarting WS after auth token fetch (if currently stopped)"),this.tryRestartSocket())}scheduleTokenRefetch(e){if(this.authState.state==="noAuth")return;const n=this.decodeToken(e);if(!n){this.logger.error("Auth token is not a valid JWT, cannot refetch the token");return}const{iat:r,exp:i}=n;if(!r||!i){this.logger.error("Auth token does not have required fields, cannot refetch the token");return}const o=i-r;if(o<=2){this.logger.error("Auth token does not live long enough, cannot refetch the token");return}let a=Math.min(Zs,(o-this.refreshTokenLeewaySeconds)*1e3);a<=0&&(this.logger.warn(`Refetching auth token immediately, configured leeway ${this.refreshTokenLeewaySeconds}s is larger than the token's lifetime ${o}s`),a=0);const l=setTimeout(()=>{this._logVerbose("running scheduled token refetch"),this.refetchToken()},a);this.setAuthState({state:"waitingForScheduledRefetch",refetchTokenTimeoutId:l,config:this.authState.config}),this._logVerbose(`scheduled preemptive auth token refetching in ${a}ms`)}async fetchTokenAndGuardAgainstRace(e,n){const r=++this.configVersion;this._logVerbose(`fetching token with config version ${r}`);const i=await e(n);return this.configVersion!==r?(this._logVerbose(`stale config version, expected ${r}, got ${this.configVersion}`),{isFromOutdatedConfig:!0}):{isFromOutdatedConfig:!1,value:i}}stop(){this.resetAuthState(),this.configVersion++,this._logVerbose(`config version bumped to ${this.configVersion}`)}setAndReportAuthFailed(e){e(!1),this.resetAuthState()}resetAuthState(){this.notifyRefreshChange(!1),this.setAuthState({state:"noAuth"})}setAuthState(e){const n=e.state==="waitingForServerConfirmationOfFreshToken"?{hadAuth:e.hadAuth,state:e.state,token:`...${e.token.slice(-7)}`}:{state:e.state};switch(this._logVerbose(`setting auth state to ${JSON.stringify(n)}`),e.state){case"waitingForScheduledRefetch":case"notRefetching":case"noAuth":this.tokenConfirmationAttempts=0;break}this.authState.state==="waitingForScheduledRefetch"&&clearTimeout(this.authState.refetchTokenTimeoutId),this.authState=e}decodeToken(e){try{return Oi(e)}catch(n){return this._logVerbose(`Error decoding token: ${n instanceof Error?n.message:"Unknown error"}`),null}}_logVerbose(e){this.logger.logVerbose(`${e} [v${this.configVersion}]`)}}const el=["convexClientConstructed","convexWebSocketOpen","convexFirstMessageReceived"];function tl(t,e){const n={sessionId:e};typeof performance>"u"||!performance.mark||performance.mark(t,{detail:n})}function nl(t){let e=t.name.slice(6);return e=e.charAt(0).toLowerCase()+e.slice(1),{name:e,startTime:t.startTime}}function rl(t){if(typeof performance>"u"||!performance.getEntriesByName)return[];const e=[];for(const n of el){const r=performance.getEntriesByName(n).filter(i=>i.entryType==="mark").filter(i=>i.detail.sessionId===t);e.push(...r)}return e.map(nl)}var il=Object.defineProperty,ol=(t,e,n)=>e in t?il(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,V=(t,e,n)=>ol(t,typeof e!="symbol"?e+"":e,n);class al{constructor(e,n,r){if(V(this,"address"),V(this,"state"),V(this,"requestManager"),V(this,"webSocketManager"),V(this,"authenticationManager"),V(this,"remoteQuerySet"),V(this,"optimisticQueryResults"),V(this,"_transitionHandlerCounter",0),V(this,"_nextRequestId"),V(this,"_onTransitionFns",new Map),V(this,"_sessionId"),V(this,"firstMessageReceived",!1),V(this,"debug"),V(this,"logger"),V(this,"maxObservedTimestamp"),V(this,"connectionStateSubscribers",new Map),V(this,"nextConnectionStateSubscriberId",0),V(this,"_lastPublishedConnectionState"),V(this,"markConnectionStateDirty",()=>{Promise.resolve().then(()=>{const p=this.connectionState();if(JSON.stringify(p)!==JSON.stringify(this._lastPublishedConnectionState)){this._lastPublishedConnectionState=p;for(const g of this.connectionStateSubscribers.values())g(p)}})}),V(this,"mark",p=>{this.debug&&tl(p,this.sessionId)}),typeof e=="object")throw new Error("Passing a ClientConfig object is no longer supported. Pass the URL of the Convex deployment as a string directly.");r?.skipConvexDeploymentUrlCheck!==!0&&ts(e),r={...r};const i=r.authRefreshTokenLeewaySeconds??10;let o=r.webSocketConstructor;if(!o&&typeof WebSocket>"u")throw new Error("No WebSocket global variable defined! To use Convex in an environment without WebSocket try the HTTP client: https://docs.convex.dev/api/classes/browser.ConvexHttpClient");o=o||WebSocket,this.debug=r.reportDebugInfoToConvex??!1,this.address=e,this.logger=r.logger===!1?Ai({verbose:r.verbose??!1}):r.logger!==!0&&r.logger?r.logger:Ri({verbose:r.verbose??!1});const a=e.search("://");if(a===-1)throw new Error("Provided address was not an absolute URL.");const l=e.substring(a+3),c=e.substring(0,a);let u;if(c==="http")u="ws";else if(c==="https")u="wss";else throw new Error(`Unknown parent protocol ${c}`);const h=`${u}://${l}/api/${ji}/sync`;this.state=new vs,this.remoteQuerySet=new Mi(p=>this.state.queryPath(p),this.logger),this.requestManager=new ks(this.logger,this.markConnectionStateDirty);const d=()=>{this.webSocketManager.pause(),this.state.pause()};this.authenticationManager=new Xs(this.state,{authenticate:p=>{const g=this.state.setAuth(p);return this.webSocketManager.sendMessage(g),g.baseVersion},stopSocket:()=>this.webSocketManager.stop(),tryRestartSocket:()=>this.webSocketManager.tryRestart(),pauseSocket:d,resumeSocket:()=>this.webSocketManager.resume(),clearAuth:()=>{this.clearAuth()}},{logger:this.logger,refreshTokenLeewaySeconds:i}),this.optimisticQueryResults=new As,this.addOnTransitionHandler(p=>{n(p.queries.map(g=>g.token))}),this._nextRequestId=0,this._sessionId=Hs();const{unsavedChangesWarning:f}=r;if(typeof window>"u"||typeof window.addEventListener>"u"){if(f===!0)throw new Error("unsavedChangesWarning requested, but window.addEventListener not found! Remove {unsavedChangesWarning: true} from Convex client options.")}else f!==!1&&window.addEventListener("beforeunload",p=>{if(this.requestManager.hasIncompleteRequests()){p.preventDefault();const g="Are you sure you want to leave? Your changes may not be saved.";return(p||window.event).returnValue=g,g}});this.webSocketManager=new Vs(h,{onOpen:p=>{this.mark("convexWebSocketOpen"),this.webSocketManager.sendMessage({...p,type:"Connect",sessionId:this._sessionId,maxObservedTimestamp:this.maxObservedTimestamp}),this.remoteQuerySet=new Mi(v=>this.state.queryPath(v),this.logger);const[g,b]=this.state.restart();b&&this.webSocketManager.sendMessage(b),this.webSocketManager.sendMessage(g);for(const v of this.requestManager.restart())this.webSocketManager.sendMessage(v)},onResume:()=>{const[p,g]=this.state.resume();g&&this.webSocketManager.sendMessage(g),p&&this.webSocketManager.sendMessage(p);for(const b of this.requestManager.resume())this.webSocketManager.sendMessage(b)},onMessage:p=>{switch(this.firstMessageReceived||(this.firstMessageReceived=!0,this.mark("convexFirstMessageReceived"),this.reportMarks()),p.type){case"Transition":{this.observedTimestamp(p.endVersion.ts),this.authenticationManager.onTransition(p),this.remoteQuerySet.transition(p),this.state.transition(p);const g=this.requestManager.removeCompleted(this.remoteQuerySet.timestamp());this.notifyOnQueryResultChanges(g);break}case"MutationResponse":{p.success&&this.observedTimestamp(p.ts);const g=this.requestManager.onResponse(p);g!==null&&this.notifyOnQueryResultChanges(new Map([[g.requestId,g.result]]));break}case"ActionResponse":{this.requestManager.onResponse(p);break}case"AuthError":{this.authenticationManager.onAuthError(p);break}case"FatalError":{const g=ms(this.logger,p.error);throw this.webSocketManager.terminate(),g}}return{hasSyncedPastLastReconnect:this.hasSyncedPastLastReconnect()}},onServerDisconnectError:r.onServerDisconnectError},o,this.logger,this.markConnectionStateDirty,this.debug),this.mark("convexClientConstructed"),r.expectAuth&&d()}hasSyncedPastLastReconnect(){return this.requestManager.hasSyncedPastLastReconnect()&&this.state.hasSyncedPastLastReconnect()}observedTimestamp(e){(this.maxObservedTimestamp===void 0||this.maxObservedTimestamp.lessThanOrEqual(e))&&(this.maxObservedTimestamp=e)}getMaxObservedTimestamp(){return this.maxObservedTimestamp}notifyOnQueryResultChanges(e){const n=this.remoteQuerySet.remoteQueryResults(),r=new Map;for(const[o,a]of n){const l=this.state.queryToken(o);if(l!==null){const c={result:a,udfPath:this.state.queryPath(o),args:this.state.queryArgs(o)};r.set(l,c)}}const i=this.optimisticQueryResults.ingestQueryResultsFromServer(r,new Set(e.keys()));this.handleTransition({queries:i.map(o=>{const a=this.optimisticQueryResults.rawQueryResult(o);return{token:o,modification:{kind:"Updated",result:a}}}),reflectedMutations:Array.from(e).map(([o,a])=>({requestId:o,result:a})),timestamp:this.remoteQuerySet.timestamp()})}handleTransition(e){for(const n of this._onTransitionFns.values())n(e)}addOnTransitionHandler(e){const n=this._transitionHandlerCounter++;return this._onTransitionFns.set(n,e),()=>this._onTransitionFns.delete(n)}getCurrentAuthClaims(){const e=this.state.getAuth();let n={};if(e&&e.tokenType==="User")try{n=e?Oi(e.value):{}}catch{n={}}else return;return{token:e.value,decoded:n}}setAuth(e,n,r){this.authenticationManager.setConfig(e,n,r)}hasAuth(){return this.state.hasAuth()}setAdminAuth(e,n){const r=this.state.setAdminAuth(e,n);this.webSocketManager.sendMessage(r)}clearAuth(){const e=this.state.clearAuth();this.webSocketManager.sendMessage(e)}subscribe(e,n,r){const i=Ae(n),{modification:o,queryToken:a,unsubscribe:l}=this.state.subscribe(e,i,r?.journal,r?.componentPath);return o!==null&&this.webSocketManager.sendMessage(o),{queryToken:a,unsubscribe:()=>{const c=l();c&&this.webSocketManager.sendMessage(c)}}}localQueryResult(e,n){const r=Ae(n),i=Ue(e,r);return this.optimisticQueryResults.queryResult(i)}localQueryResultByToken(e){return this.optimisticQueryResults.queryResult(e)}hasLocalQueryResultByToken(e){return this.optimisticQueryResults.hasQueryResult(e)}localQueryLogs(e,n){const r=Ae(n),i=Ue(e,r);return this.optimisticQueryResults.queryLogs(i)}queryJournal(e,n){const r=Ae(n),i=Ue(e,r);return this.state.queryJournal(i)}connectionState(){const e=this.webSocketManager.connectionState();return{hasInflightRequests:this.requestManager.hasInflightRequests(),isWebSocketConnected:e.isConnected,hasEverConnected:e.hasEverConnected,connectionCount:e.connectionCount,connectionRetries:e.connectionRetries,timeOfOldestInflightRequest:this.requestManager.timeOfOldestInflightRequest(),inflightMutations:this.requestManager.inflightMutations(),inflightActions:this.requestManager.inflightActions()}}subscribeToConnectionState(e){const n=this.nextConnectionStateSubscriberId++;return this.connectionStateSubscribers.set(n,e),()=>{this.connectionStateSubscribers.delete(n)}}async mutation(e,n,r){const i=await this.mutationInternal(e,n,r);if(!i.success)throw i.errorData!==void 0?Nn(i,new Vt(rt("mutation",e,i))):new Error(rt("mutation",e,i));return i.value}async mutationInternal(e,n,r,i){const{mutationPromise:o}=this.enqueueMutation(e,n,r,i);return o}enqueueMutation(e,n,r,i){const o=Ae(n);this.tryReportLongDisconnect();const a=this.nextRequestId;if(this._nextRequestId++,r!==void 0){const h=r.optimisticUpdate;if(h!==void 0){const d=g=>{h(g,o)instanceof Promise&&this.logger.warn("Optimistic update handler returned a Promise. Optimistic updates should be synchronous.")},p=this.optimisticQueryResults.applyOptimisticUpdate(d,a).map(g=>{const b=this.localQueryResultByToken(g);return{token:g,modification:{kind:"Updated",result:b===void 0?void 0:{success:!0,value:b,logLines:[]}}}});this.handleTransition({queries:p,reflectedMutations:[],timestamp:this.remoteQuerySet.timestamp()})}}const l={type:"Mutation",requestId:a,udfPath:e,componentPath:i,args:[_e(o)]},c=this.webSocketManager.sendMessage(l),u=this.requestManager.request(l,c);return{requestId:a,mutationPromise:u}}async action(e,n){const r=await this.actionInternal(e,n);if(!r.success)throw r.errorData!==void 0?Nn(r,new Vt(rt("action",e,r))):new Error(rt("action",e,r));return r.value}async actionInternal(e,n,r){const i=Ae(n),o=this.nextRequestId;this._nextRequestId++,this.tryReportLongDisconnect();const a={type:"Action",requestId:o,udfPath:e,componentPath:r,args:[_e(i)]},l=this.webSocketManager.sendMessage(a);return this.requestManager.request(a,l)}async close(){return this.authenticationManager.stop(),this.webSocketManager.terminate()}get url(){return this.address}get nextRequestId(){return this._nextRequestId}get sessionId(){return this._sessionId}reportMarks(){if(this.debug){const e=rl(this.sessionId);this.webSocketManager.sendMessage({type:"Event",eventType:"ClientConnect",event:e})}}tryReportLongDisconnect(){if(!this.debug)return;const e=this.connectionState().timeOfOldestInflightRequest;if(e===null||Date.now()-e.getTime()<=60*1e3)return;const n=`${this.address}/api/debug_event`;fetch(n,{method:"POST",headers:{"Content-Type":"application/json","Convex-Client":`npm-${ji}`},body:JSON.stringify({event:"LongWebsocketDisconnect"})}).then(r=>{r.ok||this.logger.warn("Analytics request failed with response:",r.body)}).catch(r=>{this.logger.warn("Analytics response failed with error:",r)})}}function Bn(t){if(typeof t!="object"||t===null||!Array.isArray(t.page)||typeof t.isDone!="boolean"||typeof t.continueCursor!="string")throw new Error(`Not a valid paginated query result: ${t?.toString()}`);return t}var sl=Object.defineProperty,ll=(t,e,n)=>e in t?sl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Fi=(t,e,n)=>ll(t,typeof e!="symbol"?e+"":e,n);class cl{constructor(e,n){this.client=e,this.onTransition=n,Fi(this,"paginatedQuerySet",new Map),Fi(this,"lastTransitionTs"),this.lastTransitionTs=te.fromNumber(0),this.client.addOnTransitionHandler(r=>this.onBaseTransition(r))}subscribe(e,n,r){const i=De(e),o=$i(i,n,r),a=()=>this.removePaginatedQuerySubscriber(o),l=this.paginatedQuerySet.get(o);return l?(l.numSubscribers+=1,{paginatedQueryToken:o,unsubscribe:a}):(this.paginatedQuerySet.set(o,{token:o,canonicalizedUdfPath:i,args:n,numSubscribers:1,options:{initialNumItems:r.initialNumItems},nextPageKey:0,pageKeys:[],pageKeyToQuery:new Map,ongoingSplits:new Map,skip:!1,id:r.id}),this.addPageToPaginatedQuery(o,null,r.initialNumItems),{paginatedQueryToken:o,unsubscribe:a})}localQueryResult(e,n,r){const i=De(e),o=$i(i,n,r);return this.localQueryResultByToken(o)}localQueryResultByToken(e){const n=this.paginatedQuerySet.get(e);if(!n)return;const r=this.activePageQueryTokens(n);if(r.length===0)return{results:[],status:"LoadingFirstPage",loadMore:c=>this.loadMoreOfPaginatedQuery(e,c)};let i=[],o=!1,a=!1;for(const c of r){const u=this.client.localQueryResultByToken(c);if(u===void 0){o=!0,a=!1;continue}const h=Bn(u);i=i.concat(h.page),a=!!h.isDone}let l;return o?l=i.length===0?"LoadingFirstPage":"LoadingMore":a?l="Exhausted":l="CanLoadMore",{results:i,status:l,loadMore:c=>this.loadMoreOfPaginatedQuery(e,c)}}onBaseTransition(e){const n=e.queries.map(a=>a.token),r=this.queriesContainingTokens(n);let i=[];r.length>0&&(this.processPaginatedQuerySplits(r,a=>this.client.localQueryResultByToken(a)),i=r.map(a=>({token:a,modification:{kind:"Updated",result:this.localQueryResultByToken(a)}})));const o={...e,paginatedQueries:i};this.onTransition(o)}loadMoreOfPaginatedQuery(e,n){this.mustGetPaginatedQuery(e);const r=this.queryTokenForLastPageOfPaginatedQuery(e),i=this.client.localQueryResultByToken(r);if(!i)return!1;const o=Bn(i);if(o.isDone)return!1;this.addPageToPaginatedQuery(e,o.continueCursor,n);const a={timestamp:this.lastTransitionTs,reflectedMutations:[],queries:[],paginatedQueries:[{token:e,modification:{kind:"Updated",result:this.localQueryResultByToken(e)}}]};return this.onTransition(a),!0}queriesContainingTokens(e){if(e.length===0)return[];const n=[],r=new Set(e);for(const[i,o]of this.paginatedQuerySet)for(const a of this.allQueryTokens(o))if(r.has(a)){n.push(i);break}return n}processPaginatedQuerySplits(e,n){for(const r of e){const i=this.mustGetPaginatedQuery(r),{ongoingSplits:o,pageKeyToQuery:a,pageKeys:l}=i;for(const[c,[u,h]]of o)n(a.get(u).queryToken)!==void 0&&n(a.get(h).queryToken)!==void 0&&this.completePaginatedQuerySplit(i,c,u,h);for(const c of l){if(o.has(c))continue;const u=a.get(c).queryToken,h=n(u);if(!h)continue;const d=Bn(h);d.splitCursor&&(d.pageStatus==="SplitRecommended"||d.pageStatus==="SplitRequired"||d.page.length>i.options.initialNumItems*2)&&this.splitPaginatedQueryPage(i,c,d.splitCursor,d.continueCursor)}}}splitPaginatedQueryPage(e,n,r,i){const o=e.nextPageKey++,a=e.nextPageKey++,l={cursor:i,numItems:e.options.initialNumItems,id:e.id},c=this.client.subscribe(e.canonicalizedUdfPath,{...e.args,paginationOpts:{...l,cursor:null,endCursor:r}});e.pageKeyToQuery.set(o,c);const u=this.client.subscribe(e.canonicalizedUdfPath,{...e.args,paginationOpts:{...l,cursor:r,endCursor:i}});e.pageKeyToQuery.set(a,u),e.ongoingSplits.set(n,[o,a])}addPageToPaginatedQuery(e,n,r){const i=this.mustGetPaginatedQuery(e),o=i.nextPageKey++,a={cursor:n,numItems:r,id:i.id},l={...i.args,paginationOpts:a},c=this.client.subscribe(i.canonicalizedUdfPath,l);return i.pageKeys.push(o),i.pageKeyToQuery.set(o,c),c}removePaginatedQuerySubscriber(e){const n=this.paginatedQuerySet.get(e);if(n&&(n.numSubscribers-=1,!(n.numSubscribers>0))){for(const r of n.pageKeyToQuery.values())r.unsubscribe();this.paginatedQuerySet.delete(e)}}completePaginatedQuerySplit(e,n,r,i){const o=e.pageKeyToQuery.get(n);e.pageKeyToQuery.delete(n);const a=e.pageKeys.indexOf(n);e.pageKeys.splice(a,1,r,i),e.ongoingSplits.delete(n),o.unsubscribe()}activePageQueryTokens(e){return e.pageKeys.map(n=>e.pageKeyToQuery.get(n).queryToken)}allQueryTokens(e){return Array.from(e.pageKeyToQuery.values()).map(n=>n.queryToken)}queryTokenForLastPageOfPaginatedQuery(e){const n=this.mustGetPaginatedQuery(e),r=n.pageKeys[n.pageKeys.length-1];if(r===void 0)throw new Error(`No pages for paginated query ${e}`);return n.pageKeyToQuery.get(r).queryToken}mustGetPaginatedQuery(e){const n=this.paginatedQuerySet.get(e);if(!n)throw new Error("paginated query no longer exists for token "+e);return n}}function ul({getCurrentValue:t,subscribe:e}){const[n,r]=T(()=>({getCurrentValue:t,subscribe:e,value:t()}));let i=n.value;return(n.getCurrentValue!==t||n.subscribe!==e)&&(i=t(),r({getCurrentValue:t,subscribe:e,value:i})),A(()=>{let o=!1;const a=()=>{o||r(c=>{if(c.getCurrentValue!==t||c.subscribe!==e)return c;const u=t();return c.value===u?c:{...c,value:u}})},l=e(a);return a(),()=>{o=!0,l()}},[t,e]),i}var dl=Object.defineProperty,hl=(t,e,n)=>e in t?dl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,$e=(t,e,n)=>hl(t,typeof e!="symbol"?e+"":e,n);const fl=5e3;if(typeof An>"u")throw new Error("Required dependency 'react' not found");function Di(t,e,n){function r(i){return bl(i),e.mutation(t,i,{optimisticUpdate:n})}return r.withOptimisticUpdate=function(o){if(n!==void 0)throw new Error(`Already specified optimistic update for mutation ${Z(t)}`);return Di(t,e,o)},r}function pl(t,e){return function(n){return e.action(t,n)}}class gl{constructor(e,n){if($e(this,"address"),$e(this,"cachedSync"),$e(this,"cachedPaginatedQueryClient"),$e(this,"listeners"),$e(this,"options"),$e(this,"closed",!1),$e(this,"_logger"),$e(this,"adminAuth"),$e(this,"fakeUserIdentity"),e===void 0)throw new Error("No address provided to ConvexReactClient.\nIf trying to deploy to production, make sure to follow all the instructions found at https://docs.convex.dev/production/hosting/\nIf running locally, make sure to run `convex dev` and ensure the .env.local file is populated.");if(typeof e!="string")throw new Error(`ConvexReactClient requires a URL like 'https://happy-otter-123.convex.cloud', received something of type ${typeof e} instead.`);if(!e.includes("://"))throw new Error("Provided address was not an absolute URL.");this.address=e,this.listeners=new Map,this._logger=n?.logger===!1?Ai({verbose:n?.verbose??!1}):n?.logger!==!0&&n?.logger?n.logger:Ri({verbose:n?.verbose??!1}),this.options={...n,logger:this._logger}}get url(){return this.address}get sync(){if(this.closed)throw new Error("ConvexReactClient has already been closed.");return this.cachedSync?this.cachedSync:(this.cachedSync=new al(this.address,()=>{},this.options),this.adminAuth&&this.cachedSync.setAdminAuth(this.adminAuth,this.fakeUserIdentity),this.cachedPaginatedQueryClient=new cl(this.cachedSync,e=>this.handleTransition(e)),this.cachedSync)}get paginatedQueryClient(){if(this.sync,this.cachedPaginatedQueryClient)return this.cachedPaginatedQueryClient;throw new Error("Should already be instantiated")}setAuth(e,n,r){if(typeof e=="string")throw new Error("Passing a string to ConvexReactClient.setAuth is no longer supported, please upgrade to passing in an async function to handle reauthentication.");this.sync.setAuth(e,n??(()=>{}),r)}clearAuth(){this.sync.clearAuth()}setAdminAuth(e,n){if(this.adminAuth=e,this.fakeUserIdentity=n,this.closed)throw new Error("ConvexReactClient has already been closed.");this.cachedSync&&this.sync.setAdminAuth(e,n)}watchQuery(e,...n){const[r,i]=n,o=Z(e);return{onUpdate:a=>{const{queryToken:l,unsubscribe:c}=this.sync.subscribe(o,r,i),u=this.listeners.get(l);return u!==void 0?u.add(a):this.listeners.set(l,new Set([a])),()=>{if(this.closed)return;const h=this.listeners.get(l);h.delete(a),h.size===0&&this.listeners.delete(l),c()}},localQueryResult:()=>{if(this.cachedSync)return this.cachedSync.localQueryResult(o,r)},localQueryLogs:()=>{if(this.cachedSync)return this.cachedSync.localQueryLogs(o,r)},journal:()=>{if(this.cachedSync)return this.cachedSync.queryJournal(o,r)}}}prewarmQuery(e){const n=e.extendSubscriptionFor??fl,i=this.watchQuery(e.query,e.args||{}).onUpdate(()=>{});setTimeout(i,n)}watchPaginatedQuery(e,n,r){const i=Z(e);return{onUpdate:o=>{const{paginatedQueryToken:a,unsubscribe:l}=this.paginatedQueryClient.subscribe(i,n||{},r),c=this.listeners.get(a);return c!==void 0?c.add(o):this.listeners.set(a,new Set([o])),()=>{if(this.closed)return;const u=this.listeners.get(a);u.delete(o),u.size===0&&this.listeners.delete(a),l()}},localQueryResult:()=>this.paginatedQueryClient.localQueryResult(i,n,r)}}mutation(e,...n){const[r,i]=n,o=Z(e);return this.sync.mutation(o,r,i)}action(e,...n){const r=Z(e);return this.sync.action(r,...n)}query(e,...n){const r=this.watchQuery(e,...n),i=r.localQueryResult();return i!==void 0?Promise.resolve(i):new Promise((o,a)=>{const l=r.onUpdate(()=>{l();try{o(r.localQueryResult())}catch(c){a(c)}})})}connectionState(){return this.sync.connectionState()}subscribeToConnectionState(e){return this.sync.subscribeToConnectionState(e)}get logger(){return this._logger}async close(){if(this.closed=!0,this.listeners=new Map,this.cachedPaginatedQueryClient&&(this.cachedPaginatedQueryClient=void 0),this.cachedSync){const e=this.cachedSync;this.cachedSync=void 0,await e.close()}}handleTransition(e){const n=e.queries.map(i=>i.token),r=e.paginatedQueries.map(i=>i.token);this.transition([...n,...r])}transition(e){for(const n of e){const r=this.listeners.get(n);if(r)for(const i of r)i()}}}const Yt=An.createContext(void 0);function ml(){return xt(Yt)}const xl=({client:t,children:e})=>An.createElement(Yt.Provider,{value:t},e);function Fn(t,...e){const n=e[0]==="skip",r=e[0]==="skip"?{}:Ae(e[0]),i=typeof t=="string"?Ln(t):t,o=Z(i),a=U(()=>n?{}:{query:{query:i,args:r}},[JSON.stringify(_e(r)),o,n]),c=kl(a).query;if(c instanceof Error)throw c;return c}function Ct(t){const e=typeof t=="string"?Ln(t):t,n=xt(Yt);if(n===void 0)throw new Error("Could not find Convex client! `useMutation` must be used in the React component tree under `ConvexProvider`. Did you forget it? See https://docs.convex.dev/quick-start#set-up-convex-in-your-react-app");return U(()=>Di(e,n),[n,Z(e)])}function Tt(t){const e=xt(Yt),n=typeof t=="string"?Ln(t):t;if(e===void 0)throw new Error("Could not find Convex client! `useAction` must be used in the React component tree under `ConvexProvider`. Did you forget it? See https://docs.convex.dev/quick-start#set-up-convex-in-your-react-app");return U(()=>pl(n,e),[e,Z(n)])}function bl(t){if(typeof t=="object"&&t!==null&&"bubbles"in t&&"persist"in t&&"isDefaultPrevented"in t)throw new Error("Convex function called with SyntheticEvent object. Did you use a Convex function as an event handler directly? Event handlers like onClick receive an event object as their first argument. These SyntheticEvent objects are not valid Convex values. Try wrapping the function like `const handler = () => myMutation();` and using `handler` in the event handler.")}var vl=Object.defineProperty,yl=(t,e,n)=>e in t?vl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Dn=(t,e,n)=>yl(t,typeof e!="symbol"?e+"":e,n);class wl{constructor(e){Dn(this,"createWatch"),Dn(this,"queries"),Dn(this,"listeners"),this.createWatch=e,this.queries={},this.listeners=new Set}setQueries(e){for(const n of Object.keys(e)){const{query:r,args:i,paginationOptions:o}=e[n];if(Z(r),this.queries[n]===void 0)this.addQuery(n,r,i,o?{paginationOptions:o}:{});else{const a=this.queries[n];(Z(r)!==Z(a.query)||JSON.stringify(_e(i))!==JSON.stringify(_e(a.args))||JSON.stringify(o)!==JSON.stringify(a.paginationOptions))&&(this.removeQuery(n),this.addQuery(n,r,i,o?{paginationOptions:o}:{}))}}for(const n of Object.keys(this.queries))e[n]===void 0&&this.removeQuery(n)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getLocalResults(e){const n={};for(const r of Object.keys(e)){const{query:i,args:o}=e[r],a=e[r].paginationOptions;Z(i);const l=this.createWatch(i,o,a?{paginationOptions:a}:{});let c;try{c=l.localQueryResult()}catch(u){if(u instanceof Error)c=u;else throw u}n[r]=c}return n}setCreateWatch(e){this.createWatch=e;for(const n of Object.keys(this.queries)){const{query:r,args:i,watch:o,paginationOptions:a}=this.queries[n],l="journal"in o?o.journal():void 0;this.removeQuery(n),this.addQuery(n,r,i,{...l?{journal:l}:[],...a?{paginationOptions:a}:{}})}}destroy(){for(const e of Object.keys(this.queries))this.removeQuery(e);this.listeners=new Set}addQuery(e,n,r,{paginationOptions:i,journal:o}){if(this.queries[e]!==void 0)throw new Error(`Tried to add a new query with identifier ${e} when it already exists.`);const a=this.createWatch(n,r,{...o?{journal:o}:[],...i?{paginationOptions:i}:{}}),l=a.onUpdate(()=>this.notifyListeners());this.queries[e]={query:n,args:r,watch:a,unsubscribe:l,...i?{paginationOptions:i}:{}}}removeQuery(e){const n=this.queries[e];if(n===void 0)throw new Error(`No query found with identifier ${e}.`);n.unsubscribe(),delete this.queries[e]}notifyListeners(){for(const e of this.listeners)e()}}function kl(t){const e=ml();if(e===void 0)throw new Error("Could not find Convex client! `useQuery` must be used in the React component tree under `ConvexProvider`. Did you forget it? See https://docs.convex.dev/quick-start#set-up-convex-in-your-react-app");const n=U(()=>(r,i,{journal:o,paginationOptions:a})=>a?e.watchPaginatedQuery(r,i,a):e.watchQuery(r,i,o?{journal:o}:{}),[e]);return _l(t,n)}function _l(t,e){const[n]=T(()=>new wl(e));n.createWatch!==e&&n.setCreateWatch(e),A(()=>()=>n.destroy(),[n]);const r=U(()=>({getCurrentValue:()=>n.getLocalResults(t),subscribe:i=>(n.setQueries(t),n.subscribe(i))}),[n,t]);return ul(r)}var jl=Symbol.for("preact-signals");function Zt(){if(Me>1)Me--;else{for(var t,e=!1;Rt!==void 0;){var n=Rt;for(Rt=void 0,Un++;n!==void 0;){var r=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&Vi(n))try{n.c()}catch(i){e||(t=i,e=!0)}n=r}}if(Un=0,Me--,e)throw t}}function Sl(t){if(Me>0)return t();Me++;try{return t()}finally{Zt()}}var $=void 0;function Ui(t){var e=$;$=void 0;try{return t()}finally{$=e}}var Rt=void 0,Me=0,Un=0,Xt=0;function Qi(t){if($!==void 0){var e=t.n;if(e===void 0||e.t!==$)return e={i:0,S:t,p:$.s,n:void 0,t:$,e:void 0,x:void 0,r:e},$.s!==void 0&&($.s.n=e),$.s=e,t.n=e,32&$.f&&t.S(e),e;if(e.i===-1)return e.i=0,e.n!==void 0&&(e.n.p=e.p,e.p!==void 0&&(e.p.n=e.n),e.p=$.s,e.n=void 0,$.s.n=e,$.s=e),e}}function K(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}K.prototype.brand=jl,K.prototype.h=function(){return!0},K.prototype.S=function(t){var e=this,n=this.t;n!==t&&t.e===void 0&&(t.x=n,this.t=t,n!==void 0?n.e=t:Ui(function(){var r;(r=e.W)==null||r.call(e)}))},K.prototype.U=function(t){var e=this;if(this.t!==void 0){var n=t.e,r=t.x;n!==void 0&&(n.x=r,t.e=void 0),r!==void 0&&(r.e=n,t.x=void 0),t===this.t&&(this.t=r,r===void 0&&Ui(function(){var i;(i=e.Z)==null||i.call(e)}))}},K.prototype.subscribe=function(t){var e=this;return At(function(){var n=e.value,r=$;$=void 0;try{t(n)}finally{$=r}},{name:"sub"})},K.prototype.valueOf=function(){return this.value},K.prototype.toString=function(){return this.value+""},K.prototype.toJSON=function(){return this.value},K.prototype.peek=function(){var t=$;$=void 0;try{return this.value}finally{$=t}},Object.defineProperty(K.prototype,"value",{get:function(){var t=Qi(this);return t!==void 0&&(t.i=this.i),this.v},set:function(t){if(t!==this.v){if(Un>100)throw new Error("Cycle detected");this.v=t,this.i++,Xt++,Me++;try{for(var e=this.t;e!==void 0;e=e.x)e.t.N()}finally{Zt()}}}});function z(t,e){return new K(t,e)}function Vi(t){for(var e=t.s;e!==void 0;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function Hi(t){for(var e=t.s;e!==void 0;e=e.n){var n=e.S.n;if(n!==void 0&&(e.r=n),e.S.n=e,e.i=-1,e.n===void 0){t.s=e;break}}}function Wi(t){for(var e=t.s,n=void 0;e!==void 0;){var r=e.p;e.i===-1?(e.S.U(e),r!==void 0&&(r.n=e.n),e.n!==void 0&&(e.n.p=r)):n=e,e.S.n=e.r,e.r!==void 0&&(e.r=void 0),e=r}t.s=n}function Qe(t,e){K.call(this,void 0),this.x=t,this.s=void 0,this.g=Xt-1,this.f=4,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}Qe.prototype=new K,Qe.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Xt))return!0;if(this.g=Xt,this.f|=1,this.i>0&&!Vi(this))return this.f&=-2,!0;var t=$;try{Hi(this),$=this;var e=this.x();(16&this.f||this.v!==e||this.i===0)&&(this.v=e,this.f&=-17,this.i++)}catch(n){this.v=n,this.f|=16,this.i++}return $=t,Wi(this),this.f&=-2,!0},Qe.prototype.S=function(t){if(this.t===void 0){this.f|=36;for(var e=this.s;e!==void 0;e=e.n)e.S.S(e)}K.prototype.S.call(this,t)},Qe.prototype.U=function(t){if(this.t!==void 0&&(K.prototype.U.call(this,t),this.t===void 0)){this.f&=-33;for(var e=this.s;e!==void 0;e=e.n)e.S.U(e)}},Qe.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;t!==void 0;t=t.x)t.t.N()}},Object.defineProperty(Qe.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var t=Qi(this);if(this.h(),t!==void 0&&(t.i=this.i),16&this.f)throw this.v;return this.v}});function Qn(t,e){return new Qe(t,e)}function Ki(t){var e=t.u;if(t.u=void 0,typeof e=="function"){Me++;var n=$;$=void 0;try{e()}catch(r){throw t.f&=-2,t.f|=8,Vn(t),r}finally{$=n,Zt()}}}function Vn(t){for(var e=t.s;e!==void 0;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,Ki(t)}function Cl(t){if($!==this)throw new Error("Out-of-order effect");Wi(this),$=t,this.f&=-2,8&this.f&&Vn(this),Zt()}function ot(t,e){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=e?.name}ot.prototype.c=function(){var t=this.S();try{if(8&this.f||this.x===void 0)return;var e=this.x();typeof e=="function"&&(this.u=e)}finally{t()}},ot.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Ki(this),Hi(this),Me++;var t=$;return $=this,Cl.bind(this,t)},ot.prototype.N=function(){2&this.f||(this.f|=2,this.o=Rt,Rt=this)},ot.prototype.d=function(){this.f|=8,1&this.f||Vn(this)},ot.prototype.dispose=function(){this.d()};function At(t,e){var n=new ot(t,e);try{n.c()}catch(i){throw n.d(),i}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var Gi,en,Tl=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__,Ji=[];At(function(){Gi=this.N})();function at(t,e){w[t]=e.bind(null,w[t]||function(){})}function tn(t){if(en){var e=en;en=void 0,e()}en=t&&t.S()}function Yi(t){var e=this,n=t.data,r=st(n);r.value=n;var i=U(function(){for(var l=e,c=e.__v;c=c.__;)if(c.__c){c.__c.__$f|=4;break}var u=Qn(function(){var p=r.value.value;return p===0?0:p===!0?"":p||""}),h=Qn(function(){return!Array.isArray(u.value)&&!kr(u.value)}),d=At(function(){if(this.N=Zi,h.value){var p=u.value;l.__v&&l.__v.__e&&l.__v.__e.nodeType===3&&(l.__v.__e.data=p)}}),f=e.__$u.d;return e.__$u.d=function(){d(),f.call(this)},[h,u]},[]),o=i[0],a=i[1];return o.value?a.peek():a.value}Yi.displayName="ReactiveTextNode",Object.defineProperties(K.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:Yi},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}}),at("__b",function(t,e){if(typeof e.type=="string"){var n,r=e.props;for(var i in r)if(i!=="children"){var o=r[i];o instanceof K&&(n||(e.__np=n={}),n[i]=o,r[i]=o.peek())}}t(e)}),at("__r",function(t,e){if(t(e),e.type!==q){tn();var n,r=e.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=(function(i,o){var a;return At(function(){a=this},{name:o}),a.c=i,a})(function(){var i;Tl&&((i=n.y)==null||i.call(n)),r.__$f|=1,r.setState({})},typeof e.type=="function"?e.type.displayName||e.type.name:""))),tn(n)}}),at("__e",function(t,e,n,r){tn(),t(e,n,r)}),at("diffed",function(t,e){tn();var n;if(typeof e.type=="string"&&(n=e.__e)){var r=e.__np,i=e.props;if(r){var o=n.U;if(o)for(var a in o){var l=o[a];l!==void 0&&!(a in r)&&(l.d(),o[a]=void 0)}else o={},n.U=o;for(var c in r){var u=o[c],h=r[c];u===void 0?(u=Rl(n,c,h,i),o[c]=u):u.o(h,i)}}}t(e)});function Rl(t,e,n,r){var i=e in t&&t.ownerSVGElement===void 0,o=z(n);return{o:function(a,l){o.value=a,r=l},d:At(function(){this.N=Zi;var a=o.value.value;r[e]!==a&&(r[e]=a,i?t[e]=a:a!=null&&(a!==!1||e[4]==="-")?t.setAttribute(e,a):t.removeAttribute(e))})}}at("unmount",function(t,e){if(typeof e.type=="string"){var n=e.__e;if(n){var r=n.U;if(r){n.U=void 0;for(var i in r){var o=r[i];o&&o.d()}}}}else{var a=e.__c;if(a){var l=a.__$u;l&&(a.__$u=void 0,l.d())}}t(e)}),at("__h",function(t,e,n,r){(r<3||r===9)&&(e.__$f|=2),t(e,n,r)}),me.prototype.shouldComponentUpdate=function(t,e){if(this.__R)return!0;var n=this.__$u,r=n&&n.s!==void 0;for(var i in e)return!0;if(this.__f||typeof this.u=="boolean"&&this.u===!0){var o=2&this.__$f;if(!(r||o||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(var a in t)if(a!=="__source"&&t[a]!==this.props[a])return!0;for(var l in this.props)if(!(l in t))return!0;return!1};function st(t,e){return U(function(){return z(t,e)},[])}var Al=function(t){queueMicrotask(function(){queueMicrotask(t)})};function $l(){Sl(function(){for(var t;t=Ji.shift();)Gi.call(t)})}function Zi(){Ji.push(this)===1&&(w.requestAnimationFrame||Al)($l)}const W=z(!1),nn=z(void 0),$t="https://jexitychat.de/privacy",It=z($t),Xi=z("chip"),Ne=z(void 0),Hn=z([]),Wn=z([]),eo=z(null);function Il(t){return t.replace(/\.convex\.site\b/,".convex.cloud")}function Kn(t){return t.replace(/\.convex\.cloud\b/,".convex.site")}function El(t){const e=t?.trim();if(e)try{const n=new URL(e);if(n.protocol==="http:"||n.protocol==="https:")return e}catch{return}}function Pl(t,e){const n=t.title??e?.title??"Assistant",r=t.privacyPolicyMode??e?.privacyPolicyMode??"platform",i=ql(t.privacyNoticeStyle??e?.privacyNoticeStyle);return{title:n,greeting:t.greeting??e?.welcomeMessage??`Hi! I'm ${n}. How can I help?`,locale:t.locale??e?.locale,position:t.position??e?.position,colorScheme:t.colorScheme??e?.colorScheme,hideBranding:t.hideBranding??e?.hideBranding??!1,privacyPolicyMode:r,privacyPolicyUrl:r==="custom"?El(t.privacyPolicyUrl??e?.privacyPolicyUrl):void 0,privacyNoticeStyle:i,triggerIcon:t.triggerIcon??e?.triggerIcon??"chat",triggerRadius:t.triggerRadius??e?.triggerRadius??"full",triggerLabel:t.triggerLabel??e?.triggerLabel??"Chatte mit uns",mode:t.mode??"floating",primaryColor:t.primaryColor??e?.primaryColor,accentColor:t.accentColor??e?.accentColor,fontFamily:t.fontFamily??e?.fontFamily,fontSize:t.fontSize??e?.fontSize,borderRadius:t.borderRadius??e?.borderRadius,windowWidth:t.windowWidth??e?.windowWidth,windowHeight:t.windowHeight??e?.windowHeight}}function ql(t){return t==="explicit"||t==="sheet"?"explicit":"chip"}async function Ml(t,e,n,r){const i=new URL(`${t}/widget/config`);i.searchParams.set("orgSlug",e),r&&i.searchParams.set("projSlug",r);const o=await fetch(i.toString(),{signal:n});return o.ok?o.json():null}function Nl(t,e,n){const[r,i]=T(null);return A(()=>{i(null);const o=n??"https://festive-mouse-978.eu-west-1.convex.cloud",a=o?Kn(o):void 0;if(!a||!t)return;const l=new AbortController;async function c(u){try{const h=await Ml(u,t,l.signal,e);h&&i(h)}catch(h){if(h instanceof Error&&h.name==="AbortError")return}}return c(a),()=>{l.abort()}},[t,e,n]),r}async function Gn(t,e,n){try{const r=await fetch(`${e}/widget/bootstrap`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n?{orgSlug:t,projSlug:n}:{orgSlug:t}),credentials:"omit"});if(r.ok){const i=await r.json(),o=i.allowedUrls??(i.allowedUrl?[i.allowedUrl]:[]);return{ok:!0,token:i.token,excludePaths:i.excludePaths,allowedUrls:o}}return r.status===403?{ok:!1,error:"unauthorized"}:r.status===404?{ok:!1,error:"not_found"}:r.status===429?{ok:!1,error:"rate_limited",retryAfterSec:Number(r.headers.get("Retry-After"))||60}:{ok:!1,error:"network"}}catch{return{ok:!1,error:"network"}}}function Ll(t,e){return e.some(n=>n==="/"?t==="/":t===n||t.startsWith(n+"/"))}function Jn(t,e){try{const n=new URL(t),r=new URL(e);if(n.origin!==r.origin)return!1;const i=r.pathname.replace(/\/$/,"");if(!i)return!0;const o=n.pathname.replace(/\/$/,"");return o===i||o.startsWith(i+"/")}catch{return!1}}function zl({orgSlug:t,projSlug:e,preToken:n,convexUrl:r,preAllowedUrls:i,preExcludedPaths:o}){A(()=>{const a=r??"https://festive-mouse-978.eu-west-1.convex.cloud",l=a?Kn(a):void 0;if(!l||!t)return;if(eo.value={orgSlug:t,projSlug:e,siteUrl:l},n){Hn.value=i??[],Wn.value=o??[];return}let c=!1;return(async()=>{const u=await Gn(t,l,e);if(!c)if(u.ok)Ne.value=u.token,Hn.value=u.allowedUrls,Wn.value=u.excludePaths;else{const h=e?`project '${t}/${e}'`:`org '${t}'`;u.error==="unauthorized"?console.warn(`[JexityChat] Domain not authorized for ${h}. Check the widget's domain rules.`):u.error==="not_found"?console.error(`[JexityChat] No active widget config found for ${h}.`):u.error==="rate_limited"?console.error(`[JexityChat] Bootstrap rate-limited for ${h}. Retry after ${u.retryAfterSec??60}s.`):console.error(`[JexityChat] Bootstrap failed: ${u.error}`)}})(),()=>{c=!0}},[t,e,n,r])}const rn=new Set;let to=!1;function Ol(){if(to)return;to=!0;const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=function(...n){t(...n),rn.forEach(r=>r())},history.replaceState=function(...n){e(...n),rn.forEach(r=>r())}}function Bl(t){return rn.add(t),window.addEventListener("popstate",t),Ol(),()=>{rn.delete(t),window.removeEventListener("popstate",t)}}function Fl(){const t=st(window.location.href);A(()=>Bl(()=>{t.value=window.location.href}),[]);const e=Hn.value,n=Wn.value,r=new URL(t.value).pathname,i=Ll(r,n);return A(()=>{i?console.warn(`[JexityChat] Widget hidden — current path is in the exclude list: ${r}`):e.length>0&&!e.some(o=>Jn(t.value,o))&&console.warn(`[JexityChat] Widget hidden — current page does not match path rule. Allowed: ${e.join(", ")}`)},[t.value,e,n]),i?!1:e.length===0?!0:e.some(o=>Jn(t.value,o))}const Yn={title:"Assistant",statusOnline:"Online · Responds in seconds",inputPlaceholder:"Type a message…",aiThinking:"AI is responding…",sendAriaLabel:"Send message",attachImagesAriaLabel:"Attach images",attachComingSoon:"File attachments — coming soon",removeAttachmentAriaLabel:"Remove attachment",openChatAriaLabel:"Open chat",closeChatAriaLabel:"Close chat",errorNetwork:"Network error. Please try again.",errorQuota:"Message limit reached. Please try again later.",errorRateLimited:"Too many messages. Try again in {seconds}s.",errorSessionNoToken:"Could not connect to chat. Check your connection and try again.",errorSessionUnauthorized:"This chat is not authorised on this page. Please reload.",localeLabelDe:"DE",localeLabelEn:"EN",resumeConversation:"Resuming conversation…",startingConversation:"Starting conversation…",sessionNotFound:"Your previous session was not found. Starting a new conversation.",startNewConversation:"Start new conversation",chatWith:"Chat with {title}",haveReferenceNumber:"Have a reference number?",referencePlaceholder:"e.g. JEX-A3B7C2",resume:"Resume",howCanWeHelp:"How can we help?",getInstantHelp:"Get instant help",submitTicket:"Submit a ticket",replyByEmail:"We'll reply by email",ticketSubmitted:"Ticket submitted",yourReferenceNumber:"Your reference number:",sentToEmailHint:"We've sent it to your email. Use this number to follow up.",done:"Done",submittingTicket:"Submitting your ticket…",yourName:"Your name",yourEmail:"Your email",submit:"Submit",back:"Go back",escalationFormTitle:"Leave your details",escalationSubtitle:"Our team will get back to you by email so you don’t have to wait here.",escalationNameLabel:"Your name",escalationEmailLabel:"Your email",escalationSubmit:"Send to team",escalationSubmitting:"Sending…",escalationSubmitted:"Request submitted",escalationConsent:"By submitting, you agree to our",escalationPrivacyLinkText:"Privacy Policy",escalationSkip:"Skip, I’ll wait here",escalationPromptTitle:"Talk to our team",escalationPromptSubtitle:"We can notify you by email when our team replies.",escalationPromptSubmit:"Leave details",escalationSubmitFailed:"Failed to submit. Please try again.",sessionNotFoundPrompt:"Session not found. Would you like to start a new conversation?",sessionLocked:"For your privacy, this conversation was closed after a period of inactivity. Enter your reference to resume, or start a new conversation.",sessionResolved:"This conversation has been resolved.",tryAgain:"Try again",goBack:"Go back",somethingWentWrong:"Something went wrong",fabLabel:"Chat with us",chatNoLongerAvailable:"This chat is no longer available.",talkToHuman:"Talk to human",talkToHumanAria:"Talk to a human agent",handoffPending:"Connecting you to a human agent…",handoffFailed:"Could not request a human agent. Try again.",handoffRateLimited:"You requested an agent recently. Please wait before trying again.",resumeListLabel:"Continue conversation",resumeListTimestamp:"{minutes}m ago",noticeAgentJoined:"{name} has joined the conversation.",noticeHumanRequested:"You requested to speak with a human agent.",noticeHumanRequestedForm:"You requested to speak with a human agent. Please share your contact details below.",noticeEscalationConfirmed:`Thank you {name}! A human agent will be available soon.
|
|
3
3
|
We will contact you at {email} when an agent is ready.
|
|
4
4
|
|
|
5
5
|
Your reference: **{ref}**
|
|
6
|
-
Use it to resume this conversation from any device.`,noticeMessageReceived:"Your message has been received. A team member will respond shortly.",noticeAgentHandling:"Your conversation is with a human agent who will respond shortly.",replyTo:"Reply to {name}",sourcesCountOne:"{count} source",sourcesCountOther:"{count} sources",privacyNoticePre:"By chatting, you agree to our",privacyPolicyLinkText:"Privacy Policy",privacyChipText:"We respect your privacy - read our policy",privacyExplicitTitle:"Before you send",privacyExplicitBodyPre:"Messages are processed to assist you. By continuing you agree to our",privacyExplicitButton:"Got it, continue"},tl={title:"Assistent",statusOnline:"Online · Antwortet in Sekunden",inputPlaceholder:"Nachricht eingeben…",aiThinking:"KI antwortet…",sendAriaLabel:"Nachricht senden",attachImagesAriaLabel:"Bilder anhängen",attachComingSoon:"Dateianhänge — bald verfügbar",removeAttachmentAriaLabel:"Anhang entfernen",openChatAriaLabel:"Chat öffnen",closeChatAriaLabel:"Chat schließen",errorNetwork:"Netzwerkfehler. Bitte versuche es erneut.",errorQuota:"Nachrichtenlimit erreicht. Bitte versuche es später erneut.",errorRateLimited:"Zu viele Nachrichten. Bitte in {seconds} Sek. erneut versuchen.",errorSessionNoToken:"Verbindung zum Chat fehlgeschlagen. Bitte Internet prüfen und erneut versuchen.",errorSessionUnauthorized:"Dieser Chat ist auf dieser Seite nicht autorisiert. Bitte neu laden.",localeLabelDe:"DE",localeLabelEn:"EN",resumeConversation:"Gespräch wird fortgesetzt…",startingConversation:"Konversation wird gestartet…",sessionNotFound:"Ihre vorherige Sitzung wurde nicht gefunden. Ein neues Gespräch wird gestartet.",startNewConversation:"Neues Gespräch beginnen",chatWith:"Chatte mit {title}",haveReferenceNumber:"Hast du eine Referenznummer?",referencePlaceholder:"z.B. JEX-A3B7C2",resume:"Fortsetzen",howCanWeHelp:"Wie können wir helfen?",getInstantHelp:"Soforthilfe erhalten",submitTicket:"Ticket einreichen",replyByEmail:"Wir antworten per E-Mail",ticketSubmitted:"Ticket eingereicht",yourReferenceNumber:"Deine Referenznummer:",sentToEmailHint:"Wir haben sie an deine E-Mail gesendet. Verwende diese Nummer für Rückfragen.",done:"Fertig",submittingTicket:"Dein Ticket wird übermittelt…",yourName:"Dein Name",yourEmail:"Deine E-Mail",submit:"Absenden",back:"Zurück",escalationFormTitle:"Hinterlassen Sie Ihre Daten",escalationSubtitle:"Unser Team meldet sich per E-Mail bei Ihnen — Sie müssen nicht hier warten.",escalationNameLabel:"Ihr Name",escalationEmailLabel:"Ihre E-Mail",escalationSubmit:"An Team senden",escalationSubmitting:"Wird gesendet…",escalationSubmitted:"Anfrage gesendet",escalationConsent:"Mit dem Absenden stimmen Sie unserer",escalationPrivacyLinkText:"Datenschutzerklärung",escalationSkip:"Überspringen, ich warte hier",escalationPromptTitle:"Sprechen Sie mit unserem Team",escalationPromptSubtitle:"Wir benachrichtigen Sie per E-Mail, wenn wir antworten.",escalationPromptSubmit:"Daten hinterlassen",escalationSubmitFailed:"Senden fehlgeschlagen. Bitte versuche es erneut.",sessionNotFoundPrompt:"Sitzung nicht gefunden. Möchten Sie ein neues Gespräch beginnen?",sessionLocked:"Aus Datenschutzgründen wurde dieses Gespräch nach einer Inaktivitätszeit geschlossen. Geben Sie Ihre Referenz ein, um fortzufahren, oder beginnen Sie ein neues Gespräch.",sessionResolved:"Diese Unterhaltung wurde abgeschlossen.",tryAgain:"Erneut versuchen",goBack:"Zurück",somethingWentWrong:"Etwas ist schiefgelaufen",fabLabel:"Chatte mit uns",chatNoLongerAvailable:"Dieser Chat ist nicht mehr verfügbar.",talkToHuman:"Mit Mitarbeiter sprechen",talkToHumanAria:"Mit einem menschlichen Mitarbeiter sprechen",handoffPending:"Sie werden mit einem Mitarbeiter verbunden…",handoffFailed:"Anfrage konnte nicht gesendet werden. Erneut versuchen.",handoffRateLimited:"Sie haben kürzlich einen Mitarbeiter angefragt. Bitte warten Sie.",resumeListLabel:"Unterhaltung fortsetzen",resumeListTimestamp:"vor {minutes} Min.",noticeAgentJoined:"{name} ist der Unterhaltung beigetreten.",noticeHumanRequested:"Sie haben darum gebeten, mit einem Mitarbeiter zu sprechen.",noticeHumanRequestedForm:"Sie haben darum gebeten, mit einem Mitarbeiter zu sprechen. Bitte teilen Sie unten Ihre Kontaktdaten mit.",noticeEscalationConfirmed:`Vielen Dank, {name}! Ein Mitarbeiter wird in Kürze verfügbar sein.
|
|
6
|
+
Use it to resume this conversation from any device.`,noticeMessageReceived:"Your message has been received. A team member will respond shortly.",noticeAgentHandling:"Your conversation is with a human agent who will respond shortly.",replyTo:"Reply to {name}",sourcesCountOne:"{count} source",sourcesCountOther:"{count} sources",privacyNoticePre:"By chatting, you agree to our",privacyPolicyLinkText:"Privacy Policy",privacyChipText:"We respect your privacy - read our policy",privacyExplicitTitle:"Before you send",privacyExplicitBodyPre:"Messages are processed to assist you. By continuing you agree to our",privacyExplicitButton:"Got it, continue",magiclineTrialTitle:"Book a trial session",magiclineLeadTitle:"Request more information",magiclineFirstName:"First name",magiclineLastName:"Last name",magiclineEmail:"Email",magiclinePhone:"Phone",magiclineBirthDate:"Date of birth",magiclineInterest:"What are you interested in? (optional)",magiclineMessage:"Message (optional)",magiclineSlotLabel:"Preferred time",magiclineSlotPlaceholder:"Select a time…",magiclineLoadingSlots:"Loading available times…",magiclineNoSlots:"No trial times are available right now. Please check back later or ask us for help.",magiclineSubmit:"Submit",magiclineSubmitting:"Submitting…",magiclineSubmitted:"Request submitted",magiclineSubmittedDetail:"We’ve received your request and will be in touch shortly.",magiclineFailed:"Submission failed",magiclineFailedDetail:"Something went wrong submitting your request. Please try again.",magiclineConsent:"I agree to the processing of my data in accordance with the",magiclinePrivacyLinkText:"Privacy Policy",magiclineRequiredError:"Please fill in all required fields.",magiclineEmailError:"Please enter a valid email address.",magiclineConsentError:"Please accept the privacy policy to continue.",magiclineConfigLoading:"Loading the booking form…",magiclineConfigUnsupported:"Online trial booking is not supported for this studio. Please ask us for help.",magiclineConfigInconsistent:"The booking form is temporarily misconfigured. Please ask us for help.",magiclineConfigUnavailable:"Trial booking is not available right now. Please try again later or ask us for help.",magiclineGender:"Gender",magiclineGenderPlaceholder:"Select gender…",magiclineGenderMale:"Male",magiclineGenderFemale:"Female",magiclineGenderUnisex:"Diverse",magiclineStreet:"Street",magiclineHouseNumber:"House number",magiclineZip:"Postal code",magiclineCity:"City",magiclineCountry:"Country",magiclineCountryPlaceholder:"Select a country…",magiclineNote:"Note (optional)",magiclineOptionalSuffix:" (optional)",magiclineTrainerRequired:"I want a trainer present",magiclineMinAgeError:"You must be at least {age} years old to book a trial.",magiclineSlotRequiredError:"Please select an available time.",magiclineSlotUnavailableNotice:"That time is no longer available. Please pick another time below.",magiclineStepTrainer:"Trainer",magiclineStepSlot:"Choose a time",magiclineStepPersonal:"Your details",magiclineStepAddress:"Your address",magiclineStepConfirm:"Confirm",magiclineStepCounter:"Step {n} of {total}",magiclineWizardBack:"Back",magiclineWizardNext:"Next",magiclineTrainerWith:"Trial session with trainer",magiclineTrainerWithout:"Trial session without trainer",magiclineSummaryTrainer:"Trainer",magiclineSummarySlot:"Time",magiclineSummaryName:"Name",magiclineRetry:"Try again",magiclineSlotsError:"We couldn’t load available times right now. Please try again.",magiclineContractTitle:"Become a member",magiclineStepOffer:"Choose a membership",magiclineStepUpgrades:"Add-ons",magiclineStepPayment:"Payment",magiclineStepReview:"Review",magiclineOffersLoading:"Loading memberships…",magiclineOffersError:"We couldn’t load the memberships right now. Please try again.",magiclineNoOffers:"No memberships are available to sign up for online right now. Please ask us for help.",magiclineTermLength:"{value} {unit}",magiclineFreqPerDay:"per day",magiclineFreqPerWeek:"per week",magiclineFreqPerMonth:"per month",magiclineFreqPerYear:"per year",magiclineFreqEveryDays:"every {n} days",magiclineFreqEveryWeeks:"every {n} weeks",magiclineFreqEveryMonths:"every {n} months",magiclineFreqEveryYears:"every {n} years",magiclineModulePerTerm:"per term",magiclineModuleOneTime:"one-time",magiclineModuleIncluded:"included",magiclineRenewalNone:"No automatic renewal",magiclineRenewalTerm:"Renewal: {n} {unit}",magiclineCancellationPeriod:"Cancellation period",magiclineStarterPackage:"Starter package",magiclineFlatFee:"One-time fee",magiclineIncludedModules:"Included",magiclineDetails:"Details",magiclineRequired:"Required",magiclineUpgradesIntro:"Add optional upgrades to your membership.",magiclineUpgradesNone:"No optional upgrades are available for this membership.",magiclineUpgradeAdd:"Add",magiclineUpgradeAdded:"Added",magiclineUpgradeOneTime:"one-time",magiclineUpgradeConsentError:"Please accept the terms for your selected upgrade to keep it.",magiclineOfferRequiredError:"Please select a membership.",magiclineCountryStatic:"Germany",magiclineAccountHolder:"Account holder",magiclineIban:"IBAN",magiclineIbanInvalidError:"Please enter a valid IBAN.",magiclineSepaConsent:"I authorise the studio to collect payments from my account by SEPA direct debit and instruct my bank to honour these debits.",magiclineReviewLoading:"Calculating your price…",magiclineReviewError:"We couldn’t calculate your price right now. Please try again.",magiclineReviewOffer:"Membership",magiclineReviewPriceSummary:"Price summary",magiclineReviewBasePrice:"Price per month",magiclineReviewOneTimeFees:"One-time fees",magiclineReviewPreUseCharge:"Pre-use charge",magiclineReviewSelectedUpgrades:"Your selected upgrades",magiclineReviewContractVolume:"Total contract volume",magiclineReviewStartsOn:"Starts on",magiclineReviewPayment:"Payment",magiclineReviewTerms:"Terms & conditions",magiclineConfirmPrompt:"Please confirm the following to continue:",magiclineConfirmRequiredError:"Please confirm all required terms before submitting.",magiclineSummaryAddress:"Address",magiclineContractSubmitted:"Your membership is confirmed and the studio will be in touch shortly.",magiclineCustomerNumber:"Your customer number: {number}",magiclinePriceChangedNotice:"The price has changed. Please review the new price and confirm again.",magiclineOfferUnavailableNotice:"That membership is no longer available. Please choose another one.",magiclineConfirmationRequiredNotice:"Please confirm all required terms before submitting.",magiclineLiveSubmissionDisabled:"Live submission is disabled for this project — please contact the studio.",magiclineDuplicateNotice:"A membership for this offer was already created recently.",magiclineUnknownOutcome:"We couldn’t confirm your signup. The studio will verify it and contact you — please do not submit again.",magiclineFeeStarterPackage:"Starter package",magiclineFeeTrainerFee:"Trainer fee"},no={title:"Assistent",statusOnline:"Online · Antwortet in Sekunden",inputPlaceholder:"Nachricht eingeben…",aiThinking:"KI antwortet…",sendAriaLabel:"Nachricht senden",attachImagesAriaLabel:"Bilder anhängen",attachComingSoon:"Dateianhänge — bald verfügbar",removeAttachmentAriaLabel:"Anhang entfernen",openChatAriaLabel:"Chat öffnen",closeChatAriaLabel:"Chat schließen",errorNetwork:"Netzwerkfehler. Bitte versuche es erneut.",errorQuota:"Nachrichtenlimit erreicht. Bitte versuche es später erneut.",errorRateLimited:"Zu viele Nachrichten. Bitte in {seconds} Sek. erneut versuchen.",errorSessionNoToken:"Verbindung zum Chat fehlgeschlagen. Bitte Internet prüfen und erneut versuchen.",errorSessionUnauthorized:"Dieser Chat ist auf dieser Seite nicht autorisiert. Bitte neu laden.",localeLabelDe:"DE",localeLabelEn:"EN",resumeConversation:"Gespräch wird fortgesetzt…",startingConversation:"Konversation wird gestartet…",sessionNotFound:"Ihre vorherige Sitzung wurde nicht gefunden. Ein neues Gespräch wird gestartet.",startNewConversation:"Neues Gespräch beginnen",chatWith:"Chatte mit {title}",haveReferenceNumber:"Hast du eine Referenznummer?",referencePlaceholder:"z.B. JEX-A3B7C2",resume:"Fortsetzen",howCanWeHelp:"Wie können wir helfen?",getInstantHelp:"Soforthilfe erhalten",submitTicket:"Ticket einreichen",replyByEmail:"Wir antworten per E-Mail",ticketSubmitted:"Ticket eingereicht",yourReferenceNumber:"Deine Referenznummer:",sentToEmailHint:"Wir haben sie an deine E-Mail gesendet. Verwende diese Nummer für Rückfragen.",done:"Fertig",submittingTicket:"Dein Ticket wird übermittelt…",yourName:"Dein Name",yourEmail:"Deine E-Mail",submit:"Absenden",back:"Zurück",escalationFormTitle:"Hinterlassen Sie Ihre Daten",escalationSubtitle:"Unser Team meldet sich per E-Mail bei Ihnen — Sie müssen nicht hier warten.",escalationNameLabel:"Ihr Name",escalationEmailLabel:"Ihre E-Mail",escalationSubmit:"An Team senden",escalationSubmitting:"Wird gesendet…",escalationSubmitted:"Anfrage gesendet",escalationConsent:"Mit dem Absenden stimmen Sie unserer",escalationPrivacyLinkText:"Datenschutzerklärung",escalationSkip:"Überspringen, ich warte hier",escalationPromptTitle:"Sprechen Sie mit unserem Team",escalationPromptSubtitle:"Wir benachrichtigen Sie per E-Mail, wenn wir antworten.",escalationPromptSubmit:"Daten hinterlassen",escalationSubmitFailed:"Senden fehlgeschlagen. Bitte versuche es erneut.",sessionNotFoundPrompt:"Sitzung nicht gefunden. Möchten Sie ein neues Gespräch beginnen?",sessionLocked:"Aus Datenschutzgründen wurde dieses Gespräch nach einer Inaktivitätszeit geschlossen. Geben Sie Ihre Referenz ein, um fortzufahren, oder beginnen Sie ein neues Gespräch.",sessionResolved:"Diese Unterhaltung wurde abgeschlossen.",tryAgain:"Erneut versuchen",goBack:"Zurück",somethingWentWrong:"Etwas ist schiefgelaufen",fabLabel:"Chatte mit uns",chatNoLongerAvailable:"Dieser Chat ist nicht mehr verfügbar.",talkToHuman:"Mit Mitarbeiter sprechen",talkToHumanAria:"Mit einem menschlichen Mitarbeiter sprechen",handoffPending:"Sie werden mit einem Mitarbeiter verbunden…",handoffFailed:"Anfrage konnte nicht gesendet werden. Erneut versuchen.",handoffRateLimited:"Sie haben kürzlich einen Mitarbeiter angefragt. Bitte warten Sie.",resumeListLabel:"Unterhaltung fortsetzen",resumeListTimestamp:"vor {minutes} Min.",noticeAgentJoined:"{name} ist der Unterhaltung beigetreten.",noticeHumanRequested:"Sie haben darum gebeten, mit einem Mitarbeiter zu sprechen.",noticeHumanRequestedForm:"Sie haben darum gebeten, mit einem Mitarbeiter zu sprechen. Bitte teilen Sie unten Ihre Kontaktdaten mit.",noticeEscalationConfirmed:`Vielen Dank, {name}! Ein Mitarbeiter wird in Kürze verfügbar sein.
|
|
7
7
|
Wir kontaktieren Sie unter {email}, sobald ein Mitarbeiter bereit ist.
|
|
8
8
|
|
|
9
9
|
Ihre Referenz: **{ref}**
|
|
10
|
-
Verwenden Sie sie, um diese Unterhaltung auf jedem Gerät fortzusetzen.`,noticeMessageReceived:"Ihre Nachricht ist eingegangen. Ein Mitarbeiter wird in Kürze antworten.",noticeAgentHandling:"Ihre Unterhaltung wird von einem menschlichen Mitarbeiter betreut, der in Kürze antwortet.",replyTo:"Antworten an {name}",sourcesCountOne:"{count} Quelle",sourcesCountOther:"{count} Quellen",privacyNoticePre:"Mit dem Chatten stimmst du unserer",privacyPolicyLinkText:"Datenschutzerklärung",privacyChipText:"Wir respektieren Ihre Privatsphäre - Richtlinie lesen",privacyExplicitTitle:"Vor dem Senden",privacyExplicitBodyPre:"Nachrichten werden verarbeitet, um Ihnen zu helfen. Durch Fortfahren stimmen Sie unserer",privacyExplicitButton:"Verstanden, fortfahren"},nl=[{value:"de",label:"Deutsch",flag:"🇩🇪"},{value:"en",label:"English",flag:"🇬🇧"}],rl="de",il="jex-locale",xe=R("de"),ol={en:$i,de:tl};function $(){return ol[xe.value]??$i}function Sn(t){if(!t)return null;const e=(t.split("-")[0]??"").toLowerCase();return nl.some(r=>r.value===e)?e:null}function Ai(t){const e=Sn(t);if(e)return e;try{const n=Sn(localStorage.getItem(il));if(n)return n}catch{}if(typeof navigator<"u"){const n=Sn(navigator.language);if(n)return n}return rl}function sl(t){S(()=>{function e(n){const r=t??window.location.origin;if(n.origin!==r||n.data?.type!=="jexity:config")return;const{locale:i}=n.data.payload;i&&(xe.value=Ai(i))}return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t])}const Ei="jex-session-history",Pi=Ei,Ii=3600*1e3,z=R([]),be=R(null),Li=bn(()=>z.value.length>0),nt=R(null);function al(){return"JEX-"+Math.random().toString(36).slice(2,8).toUpperCase()}function ll(t){try{const e=sessionStorage.getItem(Pi);if(!e)return[];const n=JSON.parse(e);return n.v!==1||!Array.isArray(n.entries)?[]:n.entries.filter(r=>t-r.lastActivityAt<=Ii)}catch{return[]}}function Pt(t){try{const e={v:1,entries:t};sessionStorage.setItem(Pi,JSON.stringify(e))}catch{}}function cl(){const t=Date.now(),e=ll(t);z.value=e,Pt(e),be.value=e[e.length-1]?.ref??null}function Mi(){const t=al(),e=Date.now(),n=[...z.value,{ref:t,startedAt:e,lastActivityAt:e}];return z.value=n,be.value=t,Pt(n),t}function qi(t){const e=Date.now(),n=z.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);z.value=n,be.value=t,Pt(n)}function Cn(t){if(!t)return;const e=Date.now(),n=z.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);z.value=n,Pt(n)}const B=R(Oi());function Oi(){return Li.value?[{id:"home"}]:[{id:"chat"}]}function ul(){B.value=Oi()}const hl=R("screen");function ye(t){B.value=[...B.value,t]}function It(){B.value.length>1&&(B.value=B.value.slice(0,-1))}function Tn(t){B.value=[...B.value.slice(0,-1),t]}const dl=6e4,rt=R(!1),Rn=R(!1),$n=new Set;function fl(t){return $n.add(t),()=>{$n.delete(t)}}function pl(){const t=be.value;return t?z.value.find(n=>n.ref===t)?.lastActivityAt??null:null}function gl(t){const e=pl();return e===null?!1:Date.now()-e>t}function Ni(){if(!(rt.value&&z.value.length===0)){z.value=[],be.value=null;try{sessionStorage.removeItem(Ei)}catch(t){console.warn("[JexityChat] Idle-lock storage clear failed:",t)}for(const t of $n)try{t()}catch(e){console.warn("[JexityChat] Lock reset callback threw:",e)}B.value=[{id:"home"}],rt.value=!0}}function An(){rt.value&&(rt.value=!1)}function ml(t=Ii){let e=null;const n=()=>{if(document.visibilityState==="hidden"){e=Date.now();return}e!==null&&Date.now()-e>t&&Ni(),e=null};document.addEventListener("visibilitychange",n);const r=setInterval(()=>{Rn.value||gl(t)&&Ni()},dl);return()=>{document.removeEventListener("visibilitychange",n),clearInterval(r),e=null}}function xl(t){const e={},{primaryColor:n,theme:r}=t;if(n&&(e["--jex-primary"]=n,e["--jex-bg-trigger"]=n,e["--jex-bg-header"]=n,e["--jex-bg-msg-user"]=n,e["--jex-bg-send-btn"]=n),t.accentColor&&(e["--jex-accent"]=t.accentColor),r?.bg){const i=r.bg;i.trigger&&(e["--jex-bg-trigger"]=i.trigger),i.header&&(e["--jex-bg-header"]=i.header),i.msgUser&&(e["--jex-bg-msg-user"]=i.msgUser),i.msgBot&&(e["--jex-bg-msg-bot"]=i.msgBot),i.window&&(e["--jex-bg-window"]=i.window),i.sendBtn&&(e["--jex-bg-send-btn"]=i.sendBtn)}if(r?.text){const i=r.text;i.header&&(e["--jex-text-header"]=i.header),i.msgUser&&(e["--jex-text-msg-user"]=i.msgUser),i.msgBot&&(e["--jex-text-msg-bot"]=i.msgBot),i.main&&(e["--jex-text-main"]=i.main),i.muted&&(e["--jex-text-muted"]=i.muted)}if(r?.border){const i=r.border;i.window&&(e["--jex-border-window"]=i.window),i.input&&(e["--jex-border-input"]=i.input)}return t.fontFamily&&(e["--jex-font-family"]=t.fontFamily),t.fontSize&&(e["--jex-font-size"]=`${t.fontSize}px`),t.borderRadius&&(e["--jex-radius"]=t.borderRadius),t.windowWidth&&(e["--jex-window-width"]=`${t.windowWidth}px`),t.windowHeight&&(e["--jex-window-height"]=`${t.windowHeight}px`),Object.keys(e).length>0?e:void 0}function En({size:t=24}){return c("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[c("path",{d:"M12 8V4H8"}),c("rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"}),c("path",{d:"M2 14h2"}),c("path",{d:"M20 14h2"}),c("path",{d:"M15 13v2"}),c("path",{d:"M9 13v2"})]})}function bl(){const t=$();return B.value.length>1?c("button",{class:"jex-header-back",onClick:It,"aria-label":t.back||"Go back",children:c("svg",{width:20,height:20,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:c("path",{d:"m15 18-6-6 6-6"})})}):c(En,{size:24})}function yl({title:t}){const e=$();return c("div",{class:"jex-header-info",children:[c("h3",{children:t}),c("p",{children:e.statusOnline})]})}function zi({size:t=28}){return c("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[c("path",{d:"M18 6 6 18"}),c("path",{d:"m6 6 12 12"})]})}function vl(){const t=$();return c("button",{class:"jex-header-close",type:"button",onClick:()=>{P.value=!1},"aria-label":t.closeChatAriaLabel,title:t.closeChatAriaLabel,children:c(zi,{size:18})})}function wl({action:t,showClose:e=!0}){return!t&&!e?null:c("div",{class:"jex-header-right",children:[t,e&&c(vl,{})]})}function Bi({title:t,rightAction:e,showClose:n=!0}){return c("header",{class:"jex-chat-header",children:[c(bl,{}),c(yl,{title:t}),c(wl,{action:e,showClose:n})]})}function _l({size:t=14}){return c("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:c("path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"})})}function Ui(){return c("div",{class:"jex-widget-footer",children:c("a",{href:"https://jexitychat.de",target:"_blank",rel:"noopener noreferrer",class:"jex-branding",children:[c(_l,{size:14}),c("span",{children:["Powered by ",c("strong",{children:"Jexity"})]})]})})}function Fi({size:t=28}){return c("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:c("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}function kl({size:t=24,...e}){return c("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",...e,children:c("path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"})})}const jl={chat:c(Fi,{size:28}),bot:c(En,{size:28}),sparkles:c(kl,{size:28})},Sl={none:"0px",sm:"0.5rem",md:"0.75rem",lg:"1.25rem",full:"9999px"};function Cl({radius:t="full",iconOption:e="chat",label:n}){const r=$(),i=n??r.fabLabel,o=i!=="";return c("button",{class:`jex-floating-button ${!P.value&&o?"jex-has-label":""}`,style:{borderRadius:Sl[t]??"9999px"},onClick:()=>{P.value=!P.value},"aria-label":P.value?r.closeChatAriaLabel:r.openChatAriaLabel,children:P.value?c(zi,{size:28}):c("div",{class:"jex-fab-inner",children:[jl[e],o&&c("span",{class:"jex-fab-label",children:i})]})})}function Tl({title:t,onStartFresh:e,onResetSession:n}){const r=$(),[i,o]=C("");function s(){An(),nt.value="fresh",n(),e(),ye({id:"chat"})}function l(u){An(),nt.value="resume",n(),qi(u),ye({id:"chat"})}function a(u){u.preventDefault();const d=i.trim().toUpperCase();d&&(An(),nt.value="resume",n(),qi(d),ye({id:"chat"}))}return c("div",{class:"jex-home",children:[rt.value&&c("div",{class:"jex-session-prompt",role:"status",children:c("div",{class:"jex-session-prompt-text",children:r.sessionLocked})}),c("div",{class:"jex-home-hero",children:[c("div",{class:"jex-home-avatar",children:[c(Fi,{size:24}),c("span",{class:"jex-home-status-dot"})]}),c("div",{class:"jex-home-hero-text",children:[c("h2",{class:"jex-home-title",children:t}),c("span",{class:"jex-home-status",children:r.statusOnline})]})]}),c("form",{class:"jex-home-lookup",onSubmit:a,children:[c("input",{class:"jex-home-lookup-input",type:"text",placeholder:r.referencePlaceholder,value:i,onInput:u=>{o(u.currentTarget.value)}}),c("button",{class:"jex-home-lookup-submit",type:"submit",disabled:!i.trim(),children:r.resume})]}),c("div",{class:"jex-home-actions",children:[z.value.length>0&&c("div",{class:"jex-home-history",children:z.value.slice().reverse().map(u=>c("button",{class:"jex-home-resume-card",onClick:()=>{l(u.ref)},children:[c("div",{class:"jex-home-resume-top",children:[c("span",{class:"jex-home-resume-label",children:r.resumeListLabel}),c("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",class:"jex-home-resume-arrow",children:c("path",{d:"M6 3l5 5-5 5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})})]}),c("span",{class:"jex-home-resume-ref",children:u.ref}),c("span",{class:"jex-home-resume-meta",children:r.resumeListTimestamp.replace("{minutes}",String(Math.max(1,Math.round((Date.now()-u.lastActivityAt)/6e4))))})]},u.ref))}),c("button",{class:"jex-home-new-btn",onClick:s,children:z.value.length>0?r.startNewConversation:r.chatWith.replace("{title}",t)})]})]})}function Rl({title:t}){const e=$();return c("div",{class:"jex-selection",children:[c("h2",{class:"jex-selection-title",children:e.howCanWeHelp}),c("div",{class:"jex-selection-options",children:[c("button",{class:"jex-selection-option",onClick:()=>ye({id:"chat"}),children:[c("span",{class:"jex-selection-icon",children:"💬"}),c("span",{class:"jex-selection-label",children:e.chatWith.replace("{title}",t)}),c("span",{class:"jex-selection-sub",children:e.getInstantHelp})]}),c("button",{class:"jex-selection-option",onClick:()=>ye({id:"form"}),children:[c("span",{class:"jex-selection-icon",children:"📝"}),c("span",{class:"jex-selection-label",children:e.submitTicket}),c("span",{class:"jex-selection-sub",children:e.replyByEmail})]})]})]})}const $l=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const Qi=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const Al=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const Di=t=>{const e=Al(t);return e.charAt(0).toUpperCase()+e.slice(1)};var El={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"};const Pl=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const Il=({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:r,children:i,iconNode:o,class:s="",...l})=>D("svg",{...El,width:String(e),height:e,stroke:t,"stroke-width":r?Number(n)*24/Number(e):n,class:["lucide",s].join(" "),...!i&&!Pl(l)&&{"aria-hidden":"true"},...l},[...o.map(([a,u])=>D(a,u)),...Y(i)]);const Ll=(t,e)=>{const n=({class:r="",className:i="",children:o,...s})=>D(Il,{...s,iconNode:e,class:$l(`lucide-${Qi(Di(t))}`,`lucide-${Qi(t)}`,r,i)},o);return n.displayName=Di(t),n};const Ml=Ll("corner-up-left",[["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}],["path",{d:"M9 14 4 9l5-5",key:"102s5s"}]]);function Pn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ve=Pn();function Vi(t){ve=t}var we={exec:()=>null};function w(t,e=""){let n=typeof t=="string"?t:t.source,r={replace:(i,o)=>{let s=typeof o=="string"?o:o.source;return s=s.replace(q.caret,"$1"),n=n.replace(i,s),r},getRegex:()=>new RegExp(n,e)};return r}var ql=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),q={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}>`)},Ol=/^(?:[ \t]*(?:\n|$))+/,Nl=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,zl=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,it=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Bl=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,In=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Hi=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Wi=w(Hi).replace(/bull/g,In).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Ul=w(Hi).replace(/bull/g,In).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ln=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Fl=/^[^\n]+/,Mn=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ql=w(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Mn).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Dl=w(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,In).getRegex(),Lt="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|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",qn=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Vl=w("^ {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|$))","i").replace("comment",qn).replace("tag",Lt).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ji=w(Ln).replace("hr",it).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[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Lt).getRegex(),Hl=w(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ji).getRegex(),On={blockquote:Hl,code:Nl,def:Ql,fences:zl,heading:Bl,hr:it,html:Vl,lheading:Wi,list:Dl,newline:Ol,paragraph:Ji,table:we,text:Fl},Gi=w("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",it).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Lt).getRegex(),Wl={...On,lheading:Ul,table:Gi,paragraph:w(Ln).replace("hr",it).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Gi).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Lt).getRegex()},Jl={...On,html:w(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",qn).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:we,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:w(Ln).replace("hr",it).replace("heading",` *#{1,6} *[^
|
|
11
|
-
]`).replace("lheading",
|
|
12
|
-
`).map(o=>{let
|
|
13
|
-
`)}var
|
|
14
|
-
`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],r=
|
|
15
|
-
`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=
|
|
10
|
+
Verwenden Sie sie, um diese Unterhaltung auf jedem Gerät fortzusetzen.`,noticeMessageReceived:"Ihre Nachricht ist eingegangen. Ein Mitarbeiter wird in Kürze antworten.",noticeAgentHandling:"Ihre Unterhaltung wird von einem menschlichen Mitarbeiter betreut, der in Kürze antwortet.",replyTo:"Antworten an {name}",sourcesCountOne:"{count} Quelle",sourcesCountOther:"{count} Quellen",privacyNoticePre:"Mit dem Chatten stimmst du unserer",privacyPolicyLinkText:"Datenschutzerklärung",privacyChipText:"Wir respektieren Ihre Privatsphäre - Richtlinie lesen",privacyExplicitTitle:"Vor dem Senden",privacyExplicitBodyPre:"Nachrichten werden verarbeitet, um Ihnen zu helfen. Durch Fortfahren stimmen Sie unserer",privacyExplicitButton:"Verstanden, fortfahren",magiclineTrialTitle:"Probetraining buchen",magiclineLeadTitle:"Weitere Informationen anfordern",magiclineFirstName:"Vorname",magiclineLastName:"Nachname",magiclineEmail:"E-Mail",magiclinePhone:"Telefon",magiclineBirthDate:"Geburtsdatum",magiclineInterest:"Wofür interessieren Sie sich? (optional)",magiclineMessage:"Nachricht (optional)",magiclineSlotLabel:"Wunschtermin",magiclineSlotPlaceholder:"Termin auswählen…",magiclineLoadingSlots:"Verfügbare Termine werden geladen…",magiclineNoSlots:"Derzeit sind keine Probetermine verfügbar. Bitte versuchen Sie es später erneut oder fragen Sie uns um Hilfe.",magiclineSubmit:"Absenden",magiclineSubmitting:"Wird gesendet…",magiclineSubmitted:"Anfrage gesendet",magiclineSubmittedDetail:"Wir haben Ihre Anfrage erhalten und melden uns in Kürze bei Ihnen.",magiclineFailed:"Senden fehlgeschlagen",magiclineFailedDetail:"Beim Senden Ihrer Anfrage ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",magiclineConsent:"Ich stimme der Verarbeitung meiner Daten gemäß der",magiclinePrivacyLinkText:"Datenschutzerklärung",magiclineRequiredError:"Bitte füllen Sie alle Pflichtfelder aus.",magiclineEmailError:"Bitte geben Sie eine gültige E-Mail-Adresse ein.",magiclineConsentError:"Bitte akzeptieren Sie die Datenschutzerklärung, um fortzufahren.",magiclineConfigLoading:"Buchungsformular wird geladen…",magiclineConfigUnsupported:"Die Online-Buchung eines Probetrainings wird für dieses Studio nicht unterstützt. Bitte fragen Sie uns um Hilfe.",magiclineConfigInconsistent:"Das Buchungsformular ist vorübergehend falsch konfiguriert. Bitte fragen Sie uns um Hilfe.",magiclineConfigUnavailable:"Die Buchung eines Probetrainings ist derzeit nicht verfügbar. Bitte versuchen Sie es später erneut oder fragen Sie uns um Hilfe.",magiclineGender:"Geschlecht",magiclineGenderPlaceholder:"Geschlecht auswählen…",magiclineGenderMale:"Männlich",magiclineGenderFemale:"Weiblich",magiclineGenderUnisex:"Divers",magiclineStreet:"Straße",magiclineHouseNumber:"Hausnummer",magiclineZip:"Postleitzahl",magiclineCity:"Stadt",magiclineCountry:"Land",magiclineCountryPlaceholder:"Land auswählen…",magiclineNote:"Anmerkung (optional)",magiclineOptionalSuffix:" (optional)",magiclineTrainerRequired:"Ich wünsche einen Trainer vor Ort",magiclineMinAgeError:"Sie müssen mindestens {age} Jahre alt sein, um ein Probetraining zu buchen.",magiclineSlotRequiredError:"Bitte wählen Sie einen verfügbaren Termin aus.",magiclineSlotUnavailableNotice:"Dieser Termin ist nicht mehr verfügbar. Bitte wählen Sie unten einen anderen Termin aus.",magiclineStepTrainer:"Trainer",magiclineStepSlot:"Termin wählen",magiclineStepPersonal:"Ihre Daten",magiclineStepAddress:"Ihre Adresse",magiclineStepConfirm:"Bestätigen",magiclineStepCounter:"Schritt {n} von {total}",magiclineWizardBack:"Zurück",magiclineWizardNext:"Weiter",magiclineTrainerWith:"Probetraining mit Trainer",magiclineTrainerWithout:"Probetraining ohne Trainer",magiclineSummaryTrainer:"Trainer",magiclineSummarySlot:"Termin",magiclineSummaryName:"Name",magiclineRetry:"Erneut versuchen",magiclineSlotsError:"Die verfügbaren Termine konnten gerade nicht geladen werden. Bitte versuchen Sie es erneut.",magiclineContractTitle:"Mitglied werden",magiclineStepOffer:"Mitgliedschaft wählen",magiclineStepUpgrades:"Zusatzoptionen",magiclineStepPayment:"Zahlung",magiclineStepReview:"Überprüfen",magiclineOffersLoading:"Mitgliedschaften werden geladen…",magiclineOffersError:"Die Mitgliedschaften konnten gerade nicht geladen werden. Bitte versuchen Sie es erneut.",magiclineNoOffers:"Derzeit sind keine Mitgliedschaften für den Online-Abschluss verfügbar. Bitte fragen Sie uns um Hilfe.",magiclineTermLength:"{value} {unit}",magiclineFreqPerDay:"pro Tag",magiclineFreqPerWeek:"pro Woche",magiclineFreqPerMonth:"pro Monat",magiclineFreqPerYear:"pro Jahr",magiclineFreqEveryDays:"alle {n} Tage",magiclineFreqEveryWeeks:"alle {n} Wochen",magiclineFreqEveryMonths:"alle {n} Monate",magiclineFreqEveryYears:"alle {n} Jahre",magiclineModulePerTerm:"pro Laufzeit",magiclineModuleOneTime:"einmalig",magiclineModuleIncluded:"inklusive",magiclineRenewalNone:"Keine automatische Verlängerung",magiclineRenewalTerm:"Verlängerung: {n} {unit}",magiclineCancellationPeriod:"Kündigungsfrist",magiclineStarterPackage:"Startpaket",magiclineFlatFee:"Einmalige Gebühr",magiclineIncludedModules:"Inklusive",magiclineDetails:"Details",magiclineRequired:"Erforderlich",magiclineUpgradesIntro:"Fügen Sie Ihrer Mitgliedschaft optionale Zusatzoptionen hinzu.",magiclineUpgradesNone:"Für diese Mitgliedschaft sind keine optionalen Zusatzoptionen verfügbar.",magiclineUpgradeAdd:"Hinzufügen",magiclineUpgradeAdded:"Hinzugefügt",magiclineUpgradeOneTime:"einmalig",magiclineUpgradeConsentError:"Bitte akzeptieren Sie die Bedingungen für Ihre gewählte Zusatzoption, um sie beizubehalten.",magiclineOfferRequiredError:"Bitte wählen Sie eine Mitgliedschaft aus.",magiclineCountryStatic:"Deutschland",magiclineAccountHolder:"Kontoinhaber",magiclineIban:"IBAN",magiclineIbanInvalidError:"Bitte geben Sie eine gültige IBAN ein.",magiclineSepaConsent:"Ich ermächtige das Studio, Zahlungen von meinem Konto per SEPA-Lastschrift einzuziehen, und weise mein Kreditinstitut an, diese Lastschriften einzulösen.",magiclineReviewLoading:"Ihr Preis wird berechnet…",magiclineReviewError:"Ihr Preis konnte gerade nicht berechnet werden. Bitte versuchen Sie es erneut.",magiclineReviewOffer:"Mitgliedschaft",magiclineReviewPriceSummary:"Preisübersicht",magiclineReviewBasePrice:"Preis pro Monat",magiclineReviewOneTimeFees:"Einmalige Gebühren",magiclineReviewPreUseCharge:"Vorab-Nutzungsgebühr",magiclineReviewSelectedUpgrades:"Deine gewählten Zusatzoptionen",magiclineReviewContractVolume:"Gesamtes Vertragsvolumen",magiclineReviewStartsOn:"Beginnt am",magiclineReviewPayment:"Zahlung",magiclineReviewTerms:"Vertragsbedingungen",magiclineConfirmPrompt:"Bitte bestätigen Sie zum Fortfahren das Folgende:",magiclineConfirmRequiredError:"Bitte bestätigen Sie alle erforderlichen Bedingungen vor dem Absenden.",magiclineSummaryAddress:"Adresse",magiclineContractSubmitted:"Ihre Mitgliedschaft ist bestätigt. Das Studio meldet sich in Kürze bei Ihnen.",magiclineCustomerNumber:"Ihre Kundennummer: {number}",magiclinePriceChangedNotice:"Der Preis hat sich geändert. Bitte prüfen Sie den neuen Preis und bestätigen Sie erneut.",magiclineOfferUnavailableNotice:"Diese Mitgliedschaft ist nicht mehr verfügbar. Bitte wählen Sie eine andere aus.",magiclineConfirmationRequiredNotice:"Bitte bestätigen Sie alle erforderlichen Bedingungen vor dem Absenden.",magiclineLiveSubmissionDisabled:"Die Live-Übermittlung ist für dieses Projekt deaktiviert — bitte wenden Sie sich an das Studio.",magiclineDuplicateNotice:"Für dieses Angebot wurde kürzlich bereits eine Mitgliedschaft erstellt.",magiclineUnknownOutcome:"Wir konnten Ihre Anmeldung nicht bestätigen. Das Studio prüft sie und meldet sich bei Ihnen — bitte senden Sie das Formular nicht erneut ab.",magiclineFeeStarterPackage:"Startpaket",magiclineFeeTrainerFee:"Trainerpauschale"},Dl=[{value:"de",label:"Deutsch",flag:"🇩🇪"},{value:"en",label:"English",flag:"🇬🇧"}],Ul="de",Ql="jex-locale",Se=z("de"),Vl={en:Yn,de:no};function k(){return Vl[Se.value]??Yn}function Zn(t){if(!t)return null;const e=(t.split("-")[0]??"").toLowerCase();return Dl.some(r=>r.value===e)?e:null}function ro(t){const e=Zn(t);if(e)return e;try{const n=Zn(localStorage.getItem(Ql));if(n)return n}catch{}if(typeof navigator<"u"){const n=Zn(navigator.language);if(n)return n}return Ul}function Hl(t){A(()=>{function e(n){const r=t??window.location.origin;if(n.origin!==r||n.data?.type!=="jexity:config")return;const{locale:i}=n.data.payload;i&&(Se.value=ro(i))}return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t])}const io="jex-session-history",oo=io,ao=3600*1e3,ne=z([]),Ve=z(null),so=Qn(()=>ne.value.length>0),Et=z(null);function Wl(){return"JEX-"+Math.random().toString(36).slice(2,8).toUpperCase()}function Kl(t){try{const e=sessionStorage.getItem(oo);if(!e)return[];const n=JSON.parse(e);return n.v!==1||!Array.isArray(n.entries)?[]:n.entries.filter(r=>t-r.lastActivityAt<=ao)}catch{return[]}}function on(t){try{const e={v:1,entries:t};sessionStorage.setItem(oo,JSON.stringify(e))}catch{}}function Gl(){const t=Date.now(),e=Kl(t);ne.value=e,on(e),Ve.value=e[e.length-1]?.ref??null}function lo(){const t=Wl(),e=Date.now(),n=[...ne.value,{ref:t,startedAt:e,lastActivityAt:e}];return ne.value=n,Ve.value=t,on(n),t}function co(t){const e=Date.now(),n=ne.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);ne.value=n,Ve.value=t,on(n)}function Xn(t){if(!t)return;const e=Date.now(),n=ne.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);ne.value=n,on(n)}const re=z(uo());function uo(){return so.value?[{id:"home"}]:[{id:"chat"}]}function Jl(){re.value=uo()}const Yl=z("screen");function He(t){re.value=[...re.value,t]}function an(){re.value.length>1&&(re.value=re.value.slice(0,-1))}function er(t){re.value=[...re.value.slice(0,-1),t]}const Zl=6e4,Pt=z(!1),tr=z(!1),nr=new Set;function Xl(t){return nr.add(t),()=>{nr.delete(t)}}function ec(){const t=Ve.value;return t?ne.value.find(n=>n.ref===t)?.lastActivityAt??null:null}function tc(t){const e=ec();return e===null?!1:Date.now()-e>t}function ho(){if(!(Pt.value&&ne.value.length===0)){ne.value=[],Ve.value=null;try{sessionStorage.removeItem(io)}catch(t){console.warn("[JexityChat] Idle-lock storage clear failed:",t)}for(const t of nr)try{t()}catch(e){console.warn("[JexityChat] Lock reset callback threw:",e)}re.value=[{id:"home"}],Pt.value=!0}}function rr(){Pt.value&&(Pt.value=!1)}function nc(t=ao){let e=null;const n=()=>{if(document.visibilityState==="hidden"){e=Date.now();return}e!==null&&Date.now()-e>t&&ho(),e=null};document.addEventListener("visibilitychange",n);const r=setInterval(()=>{tr.value||tc(t)&&ho()},Zl);return()=>{document.removeEventListener("visibilitychange",n),clearInterval(r),e=null}}function rc(t){const e={},{primaryColor:n,theme:r}=t;if(n&&(e["--jex-primary"]=n,e["--jex-bg-trigger"]=n,e["--jex-bg-header"]=n,e["--jex-bg-msg-user"]=n,e["--jex-bg-send-btn"]=n),t.accentColor&&(e["--jex-accent"]=t.accentColor),r?.bg){const i=r.bg;i.trigger&&(e["--jex-bg-trigger"]=i.trigger),i.header&&(e["--jex-bg-header"]=i.header),i.msgUser&&(e["--jex-bg-msg-user"]=i.msgUser),i.msgBot&&(e["--jex-bg-msg-bot"]=i.msgBot),i.window&&(e["--jex-bg-window"]=i.window),i.sendBtn&&(e["--jex-bg-send-btn"]=i.sendBtn)}if(r?.text){const i=r.text;i.header&&(e["--jex-text-header"]=i.header),i.msgUser&&(e["--jex-text-msg-user"]=i.msgUser),i.msgBot&&(e["--jex-text-msg-bot"]=i.msgBot),i.main&&(e["--jex-text-main"]=i.main),i.muted&&(e["--jex-text-muted"]=i.muted)}if(r?.border){const i=r.border;i.window&&(e["--jex-border-window"]=i.window),i.input&&(e["--jex-border-input"]=i.input)}return t.fontFamily&&(e["--jex-font-family"]=t.fontFamily),t.fontSize&&(e["--jex-font-size"]=`${t.fontSize}px`),t.borderRadius&&(e["--jex-radius"]=t.borderRadius),t.windowWidth&&(e["--jex-window-width"]=`${t.windowWidth}px`),t.windowHeight&&(e["--jex-window-height"]=`${t.windowHeight}px`),Object.keys(e).length>0?e:void 0}function ir({size:t=24}){return s("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[s("path",{d:"M12 8V4H8"}),s("rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"}),s("path",{d:"M2 14h2"}),s("path",{d:"M20 14h2"}),s("path",{d:"M15 13v2"}),s("path",{d:"M9 13v2"})]})}function ic(){const t=k();return re.value.length>1?s("button",{class:"jex-header-back",onClick:an,"aria-label":t.back||"Go back",children:s("svg",{width:20,height:20,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:s("path",{d:"m15 18-6-6 6-6"})})}):s(ir,{size:24})}function oc({title:t}){const e=k();return s("div",{class:"jex-header-info",children:[s("h3",{children:t}),s("p",{children:e.statusOnline})]})}function fo({size:t=28}){return s("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[s("path",{d:"M18 6 6 18"}),s("path",{d:"m6 6 12 12"})]})}function ac(){const t=k();return s("button",{class:"jex-header-close",type:"button",onClick:()=>{W.value=!1},"aria-label":t.closeChatAriaLabel,title:t.closeChatAriaLabel,children:s(fo,{size:18})})}function sc({action:t,showClose:e=!0}){return!t&&!e?null:s("div",{class:"jex-header-right",children:[t,e&&s(ac,{})]})}function po({title:t,rightAction:e,showClose:n=!0}){return s("header",{class:"jex-chat-header",children:[s(ic,{}),s(oc,{title:t}),s(sc,{action:e,showClose:n})]})}function lc({size:t=14}){return s("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:s("path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"})})}function go(){return s("div",{class:"jex-widget-footer",children:s("a",{href:"https://jexitychat.de",target:"_blank",rel:"noopener noreferrer",class:"jex-branding",children:[s(lc,{size:14}),s("span",{children:["Powered by ",s("strong",{children:"Jexity"})]})]})})}function mo({size:t=28}){return s("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:s("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}function cc({size:t=24,...e}){return s("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",...e,children:s("path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"})})}const uc={chat:s(mo,{size:28}),bot:s(ir,{size:28}),sparkles:s(cc,{size:28})},dc={none:"0px",sm:"0.5rem",md:"0.75rem",lg:"1.25rem",full:"9999px"};function hc({radius:t="full",iconOption:e="chat",label:n}){const r=k(),i=n??r.fabLabel,o=i!=="";return s("button",{class:`jex-floating-button ${!W.value&&o?"jex-has-label":""}`,style:{borderRadius:dc[t]??"9999px"},onClick:()=>{W.value=!W.value},"aria-label":W.value?r.closeChatAriaLabel:r.openChatAriaLabel,children:W.value?s(fo,{size:28}):s("div",{class:"jex-fab-inner",children:[uc[e],o&&s("span",{class:"jex-fab-label",children:i})]})})}function fc({title:t,onStartFresh:e,onResetSession:n}){const r=k(),[i,o]=T("");function a(){rr(),Et.value="fresh",n(),e(),He({id:"chat"})}function l(u){rr(),Et.value="resume",n(),co(u),He({id:"chat"})}function c(u){u.preventDefault();const h=i.trim().toUpperCase();h&&(rr(),Et.value="resume",n(),co(h),He({id:"chat"}))}return s("div",{class:"jex-home",children:[Pt.value&&s("div",{class:"jex-session-prompt",role:"status",children:s("div",{class:"jex-session-prompt-text",children:r.sessionLocked})}),s("div",{class:"jex-home-hero",children:[s("div",{class:"jex-home-avatar",children:[s(mo,{size:24}),s("span",{class:"jex-home-status-dot"})]}),s("div",{class:"jex-home-hero-text",children:[s("h2",{class:"jex-home-title",children:t}),s("span",{class:"jex-home-status",children:r.statusOnline})]})]}),s("form",{class:"jex-home-lookup",onSubmit:c,children:[s("input",{class:"jex-home-lookup-input",type:"text",placeholder:r.referencePlaceholder,value:i,onInput:u=>{o(u.currentTarget.value)}}),s("button",{class:"jex-home-lookup-submit",type:"submit",disabled:!i.trim(),children:r.resume})]}),s("div",{class:"jex-home-actions",children:[ne.value.length>0&&s("div",{class:"jex-home-history",children:ne.value.slice().reverse().map(u=>s("button",{class:"jex-home-resume-card",onClick:()=>{l(u.ref)},children:[s("div",{class:"jex-home-resume-top",children:[s("span",{class:"jex-home-resume-label",children:r.resumeListLabel}),s("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",class:"jex-home-resume-arrow",children:s("path",{d:"M6 3l5 5-5 5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})})]}),s("span",{class:"jex-home-resume-ref",children:u.ref}),s("span",{class:"jex-home-resume-meta",children:r.resumeListTimestamp.replace("{minutes}",String(Math.max(1,Math.round((Date.now()-u.lastActivityAt)/6e4))))})]},u.ref))}),s("button",{class:"jex-home-new-btn",onClick:a,children:ne.value.length>0?r.startNewConversation:r.chatWith.replace("{title}",t)})]})]})}function pc({title:t}){const e=k();return s("div",{class:"jex-selection",children:[s("h2",{class:"jex-selection-title",children:e.howCanWeHelp}),s("div",{class:"jex-selection-options",children:[s("button",{class:"jex-selection-option",onClick:()=>He({id:"chat"}),children:[s("span",{class:"jex-selection-icon",children:"💬"}),s("span",{class:"jex-selection-label",children:e.chatWith.replace("{title}",t)}),s("span",{class:"jex-selection-sub",children:e.getInstantHelp})]}),s("button",{class:"jex-selection-option",onClick:()=>He({id:"form"}),children:[s("span",{class:"jex-selection-icon",children:"📝"}),s("span",{class:"jex-selection-label",children:e.submitTicket}),s("span",{class:"jex-selection-sub",children:e.replyByEmail})]})]})]})}const gc=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const xo=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const mc=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const bo=t=>{const e=mc(t);return e.charAt(0).toUpperCase()+e.slice(1)};var xc={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"};const bc=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const vc=({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:r,children:i,iconNode:o,class:a="",...l})=>ue("svg",{...xc,width:String(e),height:e,stroke:t,"stroke-width":r?Number(n)*24/Number(e):n,class:["lucide",a].join(" "),...!i&&!bc(l)&&{"aria-hidden":"true"},...l},[...o.map(([c,u])=>ue(c,u)),...we(i)]);const yc=(t,e)=>{const n=({class:r="",className:i="",children:o,...a})=>ue(vc,{...a,iconNode:e,class:gc(`lucide-${xo(bo(t))}`,`lucide-${xo(t)}`,r,i)},o);return n.displayName=bo(t),n};const wc=yc("corner-up-left",[["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}],["path",{d:"M9 14 4 9l5-5",key:"102s5s"}]]);function or(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var We=or();function vo(t){We=t}var Ke={exec:()=>null};function C(t,e=""){let n=typeof t=="string"?t:t.source,r={replace:(i,o)=>{let a=typeof o=="string"?o:o.source;return a=a.replace(X.caret,"$1"),n=n.replace(i,a),r},getRegex:()=>new RegExp(n,e)};return r}var kc=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),X={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}>`)},_c=/^(?:[ \t]*(?:\n|$))+/,jc=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Sc=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,qt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Cc=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ar=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,yo=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,wo=C(yo).replace(/bull/g,ar).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Tc=C(yo).replace(/bull/g,ar).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),sr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Rc=/^[^\n]+/,lr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ac=C(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",lr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),$c=C(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ar).getRegex(),sn="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|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",cr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ic=C("^ {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|$))","i").replace("comment",cr).replace("tag",sn).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ko=C(sr).replace("hr",qt).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[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",sn).getRegex(),Ec=C(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ko).getRegex(),ur={blockquote:Ec,code:jc,def:Ac,fences:Sc,heading:Cc,hr:qt,html:Ic,lheading:wo,list:$c,newline:_c,paragraph:ko,table:Ke,text:Rc},_o=C("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",qt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",sn).getRegex(),Pc={...ur,lheading:Tc,table:_o,paragraph:C(sr).replace("hr",qt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",_o).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",sn).getRegex()},qc={...ur,html:C(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",cr).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:Ke,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:C(sr).replace("hr",qt).replace("heading",` *#{1,6} *[^
|
|
11
|
+
]`).replace("lheading",wo).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Mc=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Nc=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,jo=/^( {2,}|\\)\n(?!\s*$)/,Lc=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,lt=/[\p{P}\p{S}]/u,ln=/[\s\p{P}\p{S}]/u,dr=/[^\s\p{P}\p{S}]/u,zc=C(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,ln).getRegex(),So=/(?!~)[\p{P}\p{S}]/u,Oc=/(?!~)[\s\p{P}\p{S}]/u,Bc=/(?:[^\s\p{P}\p{S}]|~)/u,Fc=C(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",kc?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Co=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Dc=C(Co,"u").replace(/punct/g,lt).getRegex(),Uc=C(Co,"u").replace(/punct/g,So).getRegex(),To="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Qc=C(To,"gu").replace(/notPunctSpace/g,dr).replace(/punctSpace/g,ln).replace(/punct/g,lt).getRegex(),Vc=C(To,"gu").replace(/notPunctSpace/g,Bc).replace(/punctSpace/g,Oc).replace(/punct/g,So).getRegex(),Hc=C("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,dr).replace(/punctSpace/g,ln).replace(/punct/g,lt).getRegex(),Wc=C(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,lt).getRegex(),Kc="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Gc=C(Kc,"gu").replace(/notPunctSpace/g,dr).replace(/punctSpace/g,ln).replace(/punct/g,lt).getRegex(),Jc=C(/\\(punct)/,"gu").replace(/punct/g,lt).getRegex(),Yc=C(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[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])?)+(?![-_])/).getRegex(),Zc=C(cr).replace("(?:-->|$)","-->").getRegex(),Xc=C("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Zc).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),cn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,eu=C(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",cn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ro=C(/^!?\[(label)\]\[(ref)\]/).replace("label",cn).replace("ref",lr).getRegex(),Ao=C(/^!?\[(ref)\](?:\[\])?/).replace("ref",lr).getRegex(),tu=C("reflink|nolink(?!\\()","g").replace("reflink",Ro).replace("nolink",Ao).getRegex(),$o=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,hr={_backpedal:Ke,anyPunctuation:Jc,autolink:Yc,blockSkip:Fc,br:jo,code:Nc,del:Ke,delLDelim:Ke,delRDelim:Ke,emStrongLDelim:Dc,emStrongRDelimAst:Qc,emStrongRDelimUnd:Hc,escape:Mc,link:eu,nolink:Ao,punctuation:zc,reflink:Ro,reflinkSearch:tu,tag:Xc,text:Lc,url:Ke},nu={...hr,link:C(/^!?\[(label)\]\((.*?)\)/).replace("label",cn).getRegex(),reflink:C(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",cn).getRegex()},fr={...hr,emStrongRDelimAst:Vc,emStrongLDelim:Uc,delLDelim:Wc,delRDelim:Gc,url:C(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",$o).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:C(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",$o).getRegex()},ru={...fr,br:C(jo).replace("{2,}","*").getRegex(),text:C(fr.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},un={normal:ur,gfm:Pc,pedantic:qc},Mt={normal:hr,gfm:fr,breaks:ru,pedantic:nu},iu={"&":"&","<":"<",">":">",'"':""","'":"'"},Io=t=>iu[t];function Ce(t,e){if(e){if(X.escapeTest.test(t))return t.replace(X.escapeReplace,Io)}else if(X.escapeTestNoEncode.test(t))return t.replace(X.escapeReplaceNoEncode,Io);return t}function Eo(t){try{t=encodeURI(t).replace(X.percentDecode,"%")}catch{return null}return t}function Po(t,e){let n=t.replace(X.findPipe,(o,a,l)=>{let c=!1,u=a;for(;--u>=0&&l[u]==="\\";)c=!c;return c?"|":" |"}),r=n.split(X.splitPipe),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;i<r.length;i++)r[i]=r[i].trim().replace(X.slashPipe,"|");return r}function Nt(t,e,n){let r=t.length;if(r===0)return"";let i=0;for(;i<r&&t.charAt(r-i-1)===e;)i++;return t.slice(0,r-i)}function ou(t,e){if(t.indexOf(e[1])===-1)return-1;let n=0;for(let r=0;r<t.length;r++)if(t[r]==="\\")r++;else if(t[r]===e[0])n++;else if(t[r]===e[1]&&(n--,n<0))return r;return n>0?-2:-1}function au(t,e=0){let n=e,r="";for(let i of t)if(i===" "){let o=4-n%4;r+=" ".repeat(o),n+=o}else r+=i,n++;return r}function qo(t,e,n,r,i){let o=e.href,a=e.title||null,l=t[1].replace(i.other.outputLinkReplace,"$1");r.state.inLink=!0;let c={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:o,title:a,text:l,tokens:r.inlineTokens(l)};return r.state.inLink=!1,c}function su(t,e,n){let r=t.match(n.other.indentCodeCompensation);if(r===null)return e;let i=r[1];return e.split(`
|
|
12
|
+
`).map(o=>{let a=o.match(n.other.beginningSpace);if(a===null)return o;let[l]=a;return l.length>=i.length?o.slice(i.length):o}).join(`
|
|
13
|
+
`)}var dn=class{options;rules;lexer;constructor(t){this.options=t||We}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let n=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Nt(n,`
|
|
14
|
+
`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],r=su(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){let r=Nt(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Nt(e[0],`
|
|
15
|
+
`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=Nt(e[0],`
|
|
16
16
|
`).split(`
|
|
17
|
-
`),r="",i="",o=[];for(;n.length>0;){let
|
|
18
|
-
`),
|
|
17
|
+
`),r="",i="",o=[];for(;n.length>0;){let a=!1,l=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))l.push(n[c]),a=!0;else if(!a)l.push(n[c]);else break;n=n.slice(c);let u=l.join(`
|
|
18
|
+
`),h=u.replace(this.rules.other.blockquoteSetextReplace,`
|
|
19
19
|
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
|
|
20
20
|
${u}`:u,i=i?`${i}
|
|
21
|
-
${
|
|
21
|
+
${h}`:h;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(h,o,!0),this.lexer.state.top=d,n.length===0)break;let f=o.at(-1);if(f?.type==="code")break;if(f?.type==="blockquote"){let p=f,g=p.raw+`
|
|
22
22
|
`+n.join(`
|
|
23
|
-
`),
|
|
23
|
+
`),b=this.blockquote(g);o[o.length-1]=b,r=r.substring(0,r.length-p.raw.length)+b.raw,i=i.substring(0,i.length-p.text.length)+b.text;break}else if(f?.type==="list"){let p=f,g=p.raw+`
|
|
24
24
|
`+n.join(`
|
|
25
|
-
`),
|
|
26
|
-
`);continue}}return{type:"blockquote",raw:r,tokens:o,text:i}}}list(t){let e=this.rules.block.list.exec(t);if(e){let n=e[1].trim(),r=n.length>1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let o=this.rules.other.listItemRegex(n),
|
|
25
|
+
`),b=this.list(g);o[o.length-1]=b,r=r.substring(0,r.length-f.raw.length)+b.raw,i=i.substring(0,i.length-p.raw.length)+b.raw,n=g.substring(o.at(-1).raw.length).split(`
|
|
26
|
+
`);continue}}return{type:"blockquote",raw:r,tokens:o,text:i}}}list(t){let e=this.rules.block.list.exec(t);if(e){let n=e[1].trim(),r=n.length>1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let o=this.rules.other.listItemRegex(n),a=!1;for(;t;){let c=!1,u="",h="";if(!(e=o.exec(t))||this.rules.block.hr.test(t))break;u=e[0],t=t.substring(u.length);let d=au(e[2].split(`
|
|
27
27
|
`,1)[0],e[1].length),f=t.split(`
|
|
28
|
-
`,1)[0],p=!
|
|
29
|
-
`,t=t.substring(f.length+1),
|
|
30
|
-
`,1)[0],
|
|
31
|
-
`+
|
|
28
|
+
`,1)[0],p=!d.trim(),g=0;if(this.options.pedantic?(g=2,h=d.trimStart()):p?g=e[1].length+1:(g=d.search(this.rules.other.nonSpaceChar),g=g>4?1:g,h=d.slice(g),g+=e[1].length),p&&this.rules.other.blankLine.test(f)&&(u+=f+`
|
|
29
|
+
`,t=t.substring(f.length+1),c=!0),!c){let b=this.rules.other.nextBulletRegex(g),v=this.rules.other.hrRegex(g),x=this.rules.other.fencesBeginRegex(g),m=this.rules.other.headingBeginRegex(g),S=this.rules.other.htmlBeginRegex(g),N=this.rules.other.blockquoteBeginRegex(g);for(;t;){let F=t.split(`
|
|
30
|
+
`,1)[0],O;if(f=F,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),O=f):O=f.replace(this.rules.other.tabCharGlobal," "),x.test(f)||m.test(f)||S.test(f)||N.test(f)||b.test(f)||v.test(f))break;if(O.search(this.rules.other.nonSpaceChar)>=g||!f.trim())h+=`
|
|
31
|
+
`+O.slice(g);else{if(p||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||x.test(d)||m.test(d)||v.test(d))break;h+=`
|
|
32
32
|
`+f}p=!f.trim(),u+=F+`
|
|
33
|
-
`,t=t.substring(F.length+1),
|
|
34
|
-
`):[],o={type:"table",raw:e[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let
|
|
35
|
-
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let o=
|
|
36
|
-
`),this.blockTokens(e,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,n=[],r=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(
|
|
37
|
-
`:n.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let
|
|
33
|
+
`,t=t.substring(F.length+1),d=O.slice(g)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(a=!0)),i.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),i.raw+=u}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let c of i.items){if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),c.task){if(c.text=c.text.replace(this.rules.other.listReplaceTask,""),c.tokens[0]?.type==="text"||c.tokens[0]?.type==="paragraph"){c.tokens[0].raw=c.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),c.tokens[0].text=c.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let h=this.lexer.inlineQueue.length-1;h>=0;h--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)){this.lexer.inlineQueue[h].src=this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask,"");break}}let u=this.rules.other.listTaskCheckbox.exec(c.raw);if(u){let h={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};c.checked=h.checked,i.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=h.raw+c.tokens[0].raw,c.tokens[0].text=h.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(h)):c.tokens.unshift({type:"paragraph",raw:h.raw,text:h.raw,tokens:[h]}):c.tokens.unshift(h)}}if(!i.loose){let u=c.tokens.filter(d=>d.type==="space"),h=u.length>0&&u.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=h}}if(i.loose)for(let c of i.items){c.loose=!0;for(let u of c.tokens)u.type==="text"&&(u.type="paragraph")}return i}}html(t){let e=this.rules.block.html.exec(t);if(e)return{type:"html",block:!0,raw:e[0],pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:e[0]}}def(t){let e=this.rules.block.def.exec(t);if(e){let n=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:n,raw:e[0],href:r,title:i}}}table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let n=Po(e[1]),r=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
34
|
+
`):[],o={type:"table",raw:e[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?o.align.push("right"):this.rules.other.tableAlignCenter.test(a)?o.align.push("center"):this.rules.other.tableAlignLeft.test(a)?o.align.push("left"):o.align.push(null);for(let a=0;a<n.length;a++)o.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:o.align[a]});for(let a of i)o.rows.push(Po(a,o.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:o.align[c]})));return o}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e){let n=e[1].trim();return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let n=e[1].charAt(e[1].length-1)===`
|
|
35
|
+
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let o=Nt(n.slice(0,-1),"\\");if((n.length-o.length)%2===0)return}else{let o=ou(e[2],"()");if(o===-2)return;if(o>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+o;e[2]=e[2].substring(0,o),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let r=e[2],i="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(r);o&&(r=o[1],i=o[3])}else i=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),qo(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[r.toLowerCase()];if(!i){let o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return qo(n,i,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let r=this.rules.inline.emStrongLDelim.exec(t);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,o,a,l=i,c=0,u=r[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,e=e.slice(-1*t.length+i);(r=u.exec(e))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(a=[...o].length,r[3]||r[4]){l+=a;continue}else if((r[5]||r[6])&&i%3&&!((i+a)%3)){c+=a;continue}if(l-=a,l>0)continue;a=Math.min(a,a+l+c);let h=[...r[0]][0].length,d=t.slice(0,i+r.index+h+a);if(Math.min(i,a)%2){let p=d.slice(1,-1);return{type:"em",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}let f=d.slice(2,-2);return{type:"strong",raw:d,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t,e,n=""){let r=this.rules.inline.delLDelim.exec(t);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,o,a,l=i,c=this.rules.inline.delRDelim;for(c.lastIndex=0,e=e.slice(-1*t.length+i);(r=c.exec(e))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o||(a=[...o].length,a!==i))continue;if(r[3]||r[4]){l+=a;continue}if(l-=a,l>0)continue;a=Math.min(a,a+l);let u=[...r[0]][0].length,h=t.slice(0,i+r.index+u+a),d=h.slice(i,-i);return{type:"del",raw:h,text:d,tokens:this.lexer.inlineTokens(d)}}}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let n,r;return e[2]==="@"?(n=e[1],r="mailto:"+n):(n=e[1],r=n),{type:"link",raw:e[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let n,r;if(e[2]==="@")n=e[0],r="mailto:"+n;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);n=e[0],e[1]==="www."?r="http://"+e[0]:r=e[0]}return{type:"link",raw:e[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:n}}}},xe=class vr{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||We,this.options.tokenizer=this.options.tokenizer||new dn,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 n={other:X,block:un.normal,inline:Mt.normal};this.options.pedantic?(n.block=un.pedantic,n.inline=Mt.pedantic):this.options.gfm&&(n.block=un.gfm,this.options.breaks?n.inline=Mt.breaks:n.inline=Mt.gfm),this.tokenizer.rules=n}static get rules(){return{block:un,inline:Mt}}static lex(e,n){return new vr(n).lex(e)}static lexInline(e,n){return new vr(n).inlineTokens(e)}lex(e){e=e.replace(X.carriageReturn,`
|
|
36
|
+
`),this.blockTokens(e,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,n=[],r=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(X.tabCharGlobal," ").replace(X.spaceLine,""));e;){let i;if(this.options.extensions?.block?.some(a=>(i=a.call({lexer:this},e,n))?(e=e.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let a=n.at(-1);i.raw.length===1&&a!==void 0?a.raw+=`
|
|
37
|
+
`:n.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let a=n.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
38
38
|
`)?"":`
|
|
39
|
-
`)+i.raw,
|
|
40
|
-
`+i.text,this.inlineQueue.at(-1).src=
|
|
39
|
+
`)+i.raw,a.text+=`
|
|
40
|
+
`+i.text,this.inlineQueue.at(-1).src=a.text):n.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let a=n.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
41
41
|
`)?"":`
|
|
42
|
-
`)+i.raw,
|
|
43
|
-
`+i.raw,this.inlineQueue.at(-1).src=
|
|
42
|
+
`)+i.raw,a.text+=`
|
|
43
|
+
`+i.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},n.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),n.push(i);continue}let o=e;if(this.options.extensions?.startBlock){let a=1/0,l=e.slice(1),c;this.options.extensions.startBlock.forEach(u=>{c=u.call({lexer:this},l),typeof c=="number"&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(o=e.substring(0,a+1))}if(this.state.top&&(i=this.tokenizer.paragraph(o))){let a=n.at(-1);r&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(`
|
|
44
44
|
`)?"":`
|
|
45
|
-
`)+i.raw,
|
|
46
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=
|
|
45
|
+
`)+i.raw,a.text+=`
|
|
46
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(i),r=o.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let a=n.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
47
47
|
`)?"":`
|
|
48
|
-
`)+i.raw,
|
|
49
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=
|
|
50
|
-
`;return r?'<pre><code class="language-'+
|
|
51
|
-
`:"<pre><code>"+(n?i:
|
|
48
|
+
`)+i.raw,a.text+=`
|
|
49
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(i);continue}if(e){let a="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(a);break}else throw new Error(a)}}return this.state.top=!0,n}inline(e,n=[]){return this.inlineQueue.push({src:e,tokens:n}),n}inlineTokens(e,n=[]){this.tokenizer.lexer=this;let r=e,i=null;if(this.tokens.links){let c=Object.keys(this.tokens.links);if(c.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(r))!=null;)c.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(r))!=null;)r=r.slice(0,i.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let o;for(;(i=this.tokenizer.rules.inline.blockSkip.exec(r))!=null;)o=i[2]?i[2].length:0,r=r.slice(0,i.index+o)+"["+"a".repeat(i[0].length-o-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let a=!1,l="";for(;e;){a||(l=""),a=!1;let c;if(this.options.extensions?.inline?.some(h=>(c=h.call({lexer:this},e,n))?(e=e.substring(c.raw.length),n.push(c),!0):!1))continue;if(c=this.tokenizer.escape(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.tag(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.link(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(c.raw.length);let h=n.at(-1);c.type==="text"&&h?.type==="text"?(h.raw+=c.raw,h.text+=c.text):n.push(c);continue}if(c=this.tokenizer.emStrong(e,r,l)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.codespan(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.br(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.del(e,r,l)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.autolink(e)){e=e.substring(c.raw.length),n.push(c);continue}if(!this.state.inLink&&(c=this.tokenizer.url(e))){e=e.substring(c.raw.length),n.push(c);continue}let u=e;if(this.options.extensions?.startInline){let h=1/0,d=e.slice(1),f;this.options.extensions.startInline.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(c=this.tokenizer.inlineText(u)){e=e.substring(c.raw.length),c.raw.slice(-1)!=="_"&&(l=c.raw.slice(-1)),a=!0;let h=n.at(-1);h?.type==="text"?(h.raw+=c.raw,h.text+=c.text):n.push(c);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return n}},hn=class{options;parser;constructor(t){this.options=t||We}space(t){return""}code({text:t,lang:e,escaped:n}){let r=(e||"").match(X.notSpaceStart)?.[0],i=t.replace(X.endingNewline,"")+`
|
|
50
|
+
`;return r?'<pre><code class="language-'+Ce(r)+'">'+(n?i:Ce(i,!0))+`</code></pre>
|
|
51
|
+
`:"<pre><code>"+(n?i:Ce(i,!0))+`</code></pre>
|
|
52
52
|
`}blockquote({tokens:t}){return`<blockquote>
|
|
53
53
|
${this.parser.parse(t)}</blockquote>
|
|
54
54
|
`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>
|
|
55
55
|
`}hr(t){return`<hr>
|
|
56
|
-
`}list(t){let e=t.ordered,n=t.start,r="";for(let
|
|
56
|
+
`}list(t){let e=t.ordered,n=t.start,r="";for(let a=0;a<t.items.length;a++){let l=t.items[a];r+=this.listitem(l)}let i=e?"ol":"ul",o=e&&n!==1?' start="'+n+'"':"";return"<"+i+o+`>
|
|
57
57
|
`+r+"</"+i+`>
|
|
58
58
|
`}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
|
|
59
59
|
`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
|
|
60
|
-
`}table(t){let e="",n="";for(let i=0;i<t.header.length;i++)n+=this.tablecell(t.header[i]);e+=this.tablerow({text:n});let r="";for(let i=0;i<t.rows.length;i++){let o=t.rows[i];n="";for(let
|
|
60
|
+
`}table(t){let e="",n="";for(let i=0;i<t.header.length;i++)n+=this.tablecell(t.header[i]);e+=this.tablerow({text:n});let r="";for(let i=0;i<t.rows.length;i++){let o=t.rows[i];n="";for(let a=0;a<o.length;a++)n+=this.tablecell(o[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>
|
|
61
61
|
<thead>
|
|
62
62
|
`+e+`</thead>
|
|
63
63
|
`+r+`</table>
|
|
64
64
|
`}tablerow({text:t}){return`<tr>
|
|
65
65
|
${t}</tr>
|
|
66
66
|
`}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
|
|
67
|
-
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${
|
|
68
|
-
Please report this to https://github.com/markedjs/marked.`,t){let r="<p>An error occurred:</p><pre>"+ne(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},_e=new _c;function k(t,e){return _e.parse(t,e)}k.options=k.setOptions=function(t){return _e.setOptions(t),k.defaults=_e.defaults,Vi(k.defaults),k},k.getDefaults=Pn,k.defaults=ve,k.use=function(...t){return _e.use(...t),k.defaults=_e.defaults,Vi(k.defaults),k},k.walkTokens=function(t,e){return _e.walkTokens(t,e)},k.parseInline=_e.parseInline,k.Parser=K,k.parser=K.parse,k.Renderer=zt,k.TextRenderer=Un,k.Lexer=G,k.lexer=G.lex,k.Tokenizer=Nt,k.Hooks=at,k.parse=k,k.options,k.setOptions,k.use,k.walkTokens,k.parseInline,K.parse,G.lex,k.setOptions({breaks:!0,gfm:!0});function kc({text:t}){const e=J(()=>{if(!t)return"";const n=k.parse(t);return typeof n=="string"?n:""},[t]);return c("div",{class:"jex-md",dangerouslySetInnerHTML:{__html:e}})}const qe=R("");function jc(t){if(!t)return;const e=t.trim().split(/\s+/)[0];if(!e)return;const n=`@${e} `,r=qe.value;r.includes(n)||r.includes(`@${e}`)||(qe.value=r.trimStart()?`${n}${r.trimStart()}`:n)}const lt=R(null),ao=R(Date.now()),se=R([]),Sc=4,Cc=8*1024*1024;function Tc(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`att-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function Rc(t){const e=Array.from(t).filter(i=>i.type.startsWith("image/")&&i.size<=Cc);if(e.length===0)return;const n=Sc-se.value.length;if(n<=0)return;const r=e.slice(0,n).map(i=>({id:Tc(),file:i,previewUrl:URL.createObjectURL(i)}));se.value=[...se.value,...r]}function $c(t){const e=se.value.find(n=>n.id===t);e&&URL.revokeObjectURL(e.previewUrl),se.value=se.value.filter(n=>n.id!==t)}function Ac(){for(const t of se.value)URL.revokeObjectURL(t.previewUrl);se.value=[]}BigInt("-9223372036854775808"),BigInt("9223372036854775807"),BigInt("0"),BigInt("8"),BigInt("256");const Ec=Symbol.for("functionName"),Pc=Symbol.for("toReferencePath");function lo(t=[]){const e={get(n,r){if(typeof r=="string"){const i=[...t,r];return lo(i)}else if(r===Ec){if(t.length<2){const s=["api",...t].join(".");throw new Error(`API path is expected to be of the form \`api.moduleName.functionName\`. Found: \`${s}\``)}const i=t.slice(0,-1).join("/"),o=t[t.length-1];return o==="default"?i:i+":"+o}else return r===Symbol.toStringTag?"FunctionReference":void 0}};return new Proxy({},e)}const Ic=lo();function co(t,e){const n={get(r,i){if(typeof i=="string"){const o=[...e,i];return co(t,o)}else if(i===Pc){if(e.length<1){const o=[t,...e].join(".");throw new Error(`API path is expected to be of the form \`${t}.childComponent.functionName\`. Found: \`${o}\``)}return"_reference/childComponent/"+e.join("/")}else return}};return new Proxy({},n)}const Lc=()=>co("components",[]),Oe=Ic;Lc();function Mc({sessionId:t,visitorId:e,ensureSession:n}){const r=kt(Oe.functions.chat.public.conversations.send);return async function(o){const s=t&&e?{sessionId:t,visitorId:e}:await n();if(s){qe.value="",Ac();try{const l=await r({sessionId:s.sessionId,visitorId:s.visitorId,content:o});l.ok?Cn(s.visitorId):l.reason==="rate_limited"&&(lt.value=Date.now()+l.retryAfterMs)}catch(l){console.error("[jexity] Failed to send message:",l)}}}}function qc(){const t=lt.value,e=ao.value;S(()=>{if(t===null)return;const i=setInterval(()=>{ao.value=Date.now()},1e3),o=setTimeout(()=>{lt.value=null},Math.max(0,t-Date.now()));return()=>{clearInterval(i),clearTimeout(o)}},[t]);const n=t!==null,r=n?Math.max(0,Math.ceil((t-e)/1e3)):0;return{isActive:n,remainingSeconds:r}}function Oc(){const t=$(),{isActive:e,remainingSeconds:n}=qc();return e?c("div",{class:"jex-rate-limit-notice",role:"status","aria-live":"polite",children:t.errorRateLimited.replace("{seconds}",String(n))}):null}const Ne=R(null);function Nc(){const t=$(),e=Ne.value;if(e===null)return null;const n=e==="no-token"?t.errorSessionNoToken:e==="unauthorized"?t.errorSessionUnauthorized:e==="network"?t.errorNetwork:t.somethingWentWrong;return c("div",{class:"jex-session-error-notice",role:"alert","aria-live":"assertive",children:n})}function zc({size:t=18}){return c("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[c("path",{d:"M22 2 11 13"}),c("path",{d:"M22 2 15 22 11 13 2 9l20-7z"})]})}const uo=132;function Bc({onSend:t}){const e=le(null),n=le(null);S(()=>{const l=e.current;if(!l)return;l.style.height="0";const a=Math.min(l.scrollHeight,uo);l.style.height=`${a}px`,l.style.overflowY=l.scrollHeight>uo?"auto":"hidden"},[qe.value]);function r(l){l.key==="Enter"&&!l.shiftKey&&(l.preventDefault(),t())}function i(){n.current?.click()}function o(l){const a=l.currentTarget;a.files&&a.files.length>0&&Rc(a.files),a.value=""}function s(l){const a=l.target;(a===l.currentTarget||!a.closest("button, textarea, img"))&&e.current?.focus()}return{textareaRef:e,fileInputRef:n,onKeyDown:r,onAttachClick:i,onFilesPicked:o,onCardClick:s}}function Uc({isStreaming:t,disabled:e,inputDisabled:n,onSend:r,onFocus:i}){const o=$(),s=qe,l=se,{textareaRef:a,fileInputRef:u,onKeyDown:d,onAttachClick:h,onFilesPicked:f,onCardClick:p}=Bc({onSend:r}),g=s.value.trim().length>0,m=l.value.length>0,x=(g||m)&&!e;return c("div",{class:"jex-composer-card",onClick:p,children:[m&&c("div",{class:"jex-composer-attachments",role:"list",children:l.value.map(b=>c("div",{class:"jex-attachment-chip",role:"listitem",children:[c("img",{src:b.previewUrl,alt:b.file.name,class:"jex-attachment-thumb"}),c("button",{type:"button",class:"jex-attachment-remove","aria-label":o.removeAttachmentAriaLabel,onClick:()=>{$c(b.id)},children:c("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[c("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),c("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},b.id))}),c("textarea",{ref:a,class:"jex-composer-textarea","aria-label":o.inputPlaceholder,placeholder:t?o.aiThinking:o.inputPlaceholder,value:s.value,rows:1,onInput:b=>{s.value=b.currentTarget.value},onKeyDown:d,onFocus:i,disabled:n}),c("div",{class:"jex-composer-actions",children:[c("div",{class:"jex-composer-actions-left",children:[c("input",{ref:u,class:"jex-visually-hidden",type:"file",accept:"image/*",multiple:!0,onChange:f,tabIndex:-1,"aria-hidden":"true"}),c("button",{type:"button",class:"jex-attach-btn","aria-label":o.attachComingSoon,title:o.attachComingSoon,disabled:!0,onClick:h,children:c("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:c("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})})})]}),c("button",{class:`jex-send-btn${x?" jex-send-btn-active":""}`,type:"button",onClick:r,"aria-label":o.sendAriaLabel,disabled:e||!g&&!m,children:c(zc,{size:16})})]})]})}function ho({variant:t,isOpen:e=!1,onAcknowledge:n}){const r=$(),i=At.value;return t==="explicit"?e?c("div",{class:"jex-privacy-explicit",role:"dialog","aria-label":r.privacyExplicitTitle,children:[c("div",{class:"jex-privacy-explicit-content",children:[c("div",{class:"jex-privacy-explicit-icon","aria-hidden":"true",children:c("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:c("path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"})})}),c("div",{class:"jex-privacy-explicit-copy",children:[c("div",{class:"jex-privacy-explicit-title",children:r.privacyExplicitTitle}),c("p",{class:"jex-privacy-explicit-body",children:[r.privacyExplicitBodyPre," ",c("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r.privacyPolicyLinkText}),"."]})]})]}),c("button",{type:"button",class:"jex-privacy-explicit-button",onClick:n,children:r.privacyExplicitButton})]}):null:c("p",{class:"jex-privacy-chip",children:[c("span",{class:"jex-privacy-chip-icon","aria-hidden":"true",children:c("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:c("path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"})})}),c("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-chip-link",children:r.privacyChipText})]})}function Fc({sessionId:t,visitorId:e,isLoading:n,isStreaming:r,sessionStatus:i,ensureSession:o,onStartFresh:s}){const l=$(),a=qe,u=Ci.value,[d,h]=C({open:!1,acknowledged:!1}),f=Mc({sessionId:t,visitorId:e,ensureSession:o}),p=lt.value!==null&<.value>Date.now(),g=n||r||p,m=u==="explicit"&&!d.acknowledged,x=u==="explicit"&&d.open;function b(){m&&h(M=>({...M,open:!0}))}function v(){h({open:!1,acknowledged:!0})}if(S(()=>{h({open:!1,acknowledged:!1})},[t]),i==="resolved")return c("div",{class:"jex-chat-input-resolved",children:[c("div",{class:"jex-resolved-notice",children:l.sessionResolved}),c("button",{class:"jex-resolved-new-btn",type:"button",onClick:()=>{s()},children:l.startNewConversation})]});async function L(){const M=a.value.trim();if(!(!M||g)){if(m){h(F=>({...F,open:!0}));return}await f(M)}}return c("div",{class:"jex-chat-input",children:[c(Oc,{}),c(Nc,{}),u==="chip"&&c(ho,{variant:"chip"}),c("div",{class:`jex-chat-input-composer-gate${x?" jex-chat-input-composer-gate-open":""}`,children:[c(Uc,{isStreaming:r,disabled:g,inputDisabled:n||r||x,onSend:L,onFocus:b}),u==="explicit"&&c(ho,{variant:"explicit",isOpen:d.open,onAcknowledge:v})]})]})}function Qc(t){const e=t.trim().split(/\s+/).filter(Boolean);return e.length===0?"?":e.map(n=>n[0]).join("").slice(0,2).toUpperCase()}function ze({text:t,streaming:e,error:n,authorId:r,authorName:i,authorImage:o,botAvatarUrl:s}){const l=$(),a=!!r,[u,d]=C(!1),h=Ce(()=>d(!0),[]),f=l.replyTo.replace("{name}",i??""),p=["jex-message bot",n?"jex-message-error":""].filter(Boolean).join(" ");return c("div",{class:"jex-message-row bot",children:[c("div",{class:`jex-avatar ${a?"jex-avatar-agent":"jex-avatar-bot"}`,children:a&&o&&!u?c("img",{src:o,alt:i??"",class:"jex-avatar-img",onError:h}):a?c("span",{class:"jex-avatar-initials",children:Qc(i??"")}):s&&!u?c("img",{src:s,alt:"",class:"jex-avatar-img",onError:h}):c(En,{size:14})}),c("div",{class:"jex-message-content",children:[c("div",{class:p,children:[c(kc,{text:t}),e&&c("span",{class:"jex-streaming-cursor"})]}),a&&i&&c("div",{class:"jex-message-author-row",children:[c("span",{class:"jex-message-author",children:i}),c("button",{type:"button",class:"jex-reply-tag-btn","aria-label":f,title:f,onClick:()=>{jc(i)},children:c(Ml,{size:12})})]})]})]})}function Dc({text:t}){return c("div",{class:"jex-message user",children:t})}function fo(){return kt(Oe.functions.chat.public.helpdesk.submitEscalation)}function Vc({message:t,sessionId:e,visitorId:n}){const r=$();return t.formData?c("div",{class:"jex-inline-form-submitted",children:[c("span",{class:"jex-inline-form-check",children:"✓"}),c("div",{children:[c("div",{class:"jex-inline-form-submitted-title",children:r.escalationSubmitted}),c("div",{class:"jex-inline-form-submitted-detail",children:[t.formData.visitorName," · ",t.formData.visitorEmail]})]})]}):c("div",{class:"jex-message-row bot",children:c(Hc,{messageId:t._id,sessionId:e,visitorId:n})})}function Hc({messageId:t,sessionId:e,visitorId:n}){const r=$(),[i,o]=C(""),[s,l]=C(""),[a,u]=C(!1),d=At.value,h=/^https?:\/\//i.test(d)?d:$t,f=fo();async function p(g){if(g.preventDefault(),!a){u(!0);try{await f({sessionId:e,visitorId:n,formMessageId:t,visitorName:i.trim(),visitorEmail:s.trim(),locale:xe.value})}catch(m){console.error("[FormMessage] Submit failed:",m),u(!1)}}}return c("div",{class:"jex-inline-form",children:[c("div",{class:"jex-inline-form-title",children:r.escalationFormTitle}),c("form",{class:"jex-form",onSubmit:g=>{p(g)},children:[c("input",{class:"jex-form-input",type:"text",placeholder:r.escalationNameLabel,value:i,required:!0,disabled:a,onInput:g=>{o(g.currentTarget.value)}}),c("input",{class:"jex-form-input",type:"email",placeholder:r.escalationEmailLabel,value:s,required:!0,disabled:a,onInput:g=>{l(g.currentTarget.value)}}),c("button",{class:"jex-form-submit",type:"submit",disabled:a,children:a?r.escalationSubmitting:r.escalationSubmit})]}),c("div",{class:"jex-inline-form-consent",children:[r.escalationConsent," ",c("a",{href:h,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r.escalationPrivacyLinkText}),"."]})]})}const Wc={crawl:"🌐",file:"📄",snippet:"💡",qa:"❓"};function Jc({sources:t}){const e=$(),[n,r]=C(!1);return t.length===0?null:c("div",{class:"jex-sources-row",children:[c("button",{type:"button",class:"jex-sources-toggle",onClick:()=>{r(i=>!i)},"aria-expanded":n,children:[c("span",{class:"jex-sources-icon",children:"📖"}),c("span",{children:(t.length===1?e.sourcesCountOne:e.sourcesCountOther).replace("{count}",String(t.length))}),c("span",{class:`jex-sources-chevron${n?" jex-sources-chevron--open":""}`,children:"▾"})]}),n?c("div",{class:"jex-sources-pills",children:t.map((i,o)=>{const s=i.sourceType==="crawl",l=Gc(i),a=s&&i.url?`${i.title}
|
|
69
|
-
${i.url}`:i.title,u=c(U,{children:[typeof i.id=="number"?c("span",{class:"jex-source-id",children:i.id}):null,c("span",{class:"jex-source-type",children:Wc[i.sourceType]}),c("span",{class:"jex-source-label",children:l}),c("span",{class:"jex-source-score",children:["· ",i.score.toFixed(2)]})]});return s&&i.url?c("a",{class:"jex-source-pill",href:i.url,target:"_blank",rel:"noopener noreferrer",title:a,children:u},o):c("span",{class:"jex-source-pill",title:a,children:u},o)})}):null]})}function Gc(t){if(t.sourceType==="crawl"&&t.url)try{const e=new URL(t.url);return!e.pathname||e.pathname==="/"?e.hostname:e.pathname}catch{}return t.title}function Kc(){return c("div",{class:"jex-typing",children:[c("span",{}),c("span",{}),c("span",{})]})}const Zc=/\s?\[\d+\]/g;function po(t){return t.replace(Zc,"")}function Yc({conversations:t,greeting:e,sessionNotFound:n,resumeFailed:r,onStartFresh:i,sessionId:o,visitorId:s}){const l=$(),a=le(null),[u,d]=C(null),h=le(null);return S(()=>{if(!s||!t||t.length===0)return;const f=t[t.length-1];f.role==="assistant"&&f.status!=="streaming"&&f._id!==h.current&&(h.current=f._id,Cn(s))},[t,s]),S(()=>{a.current?.scrollIntoView({behavior:"smooth"})},[t?.length,t?.at(-1)?.content]),c("div",{class:"jex-chat-messages",children:[c(ze,{text:e}),n&&r&&i?c("div",{class:"jex-session-prompt",children:[c("div",{class:"jex-session-prompt-text",children:l.sessionNotFoundPrompt}),c("button",{class:"jex-session-prompt-btn",type:"button",onClick:()=>{i()},children:l.startNewConversation})]}):n?c("div",{class:"jex-session-notice",children:l.sessionNotFound}):null,t?.map(f=>{if(f.contentType==="human-notice"){const g=f.noticeKind==="agent-joined"?l.noticeAgentJoined.replace("{name}",f.noticeData?.agentName??""):f.noticeKind==="human-requested"?l.noticeHumanRequested:f.noticeKind==="human-requested-form"?l.noticeHumanRequestedForm:f.noticeKind==="message-received"?l.noticeMessageReceived:f.noticeKind==="agent-handling"?l.noticeAgentHandling:f.content;return c(ze,{text:g},f._id)}if(f.contentType==="escalation-form"&&o&&s)return hl.value==="screen"&&!f.formData?u===f._id?null:c("div",{class:"jex-inline-form jex-inline-form-card",children:[c("div",{class:"jex-inline-form-title",children:l.escalationPromptTitle}),c("div",{class:"jex-inline-form-subtitle",children:l.escalationPromptSubtitle}),c("button",{class:"jex-form-submit",type:"button",onClick:()=>{ye({id:"escalation-form",formMessageId:f._id,sessionId:o,visitorId:s})},children:l.escalationPromptSubmit}),c("button",{class:"jex-escalation-skip",type:"button",onClick:()=>{d(f._id)},children:l.escalationSkip})]},f._id):c(Vc,{message:f,sessionId:o,visitorId:s},f._id);if(f.contentType==="escalation-confirm"){const g=f.noticeKind==="escalation-confirmed"?l.noticeEscalationConfirmed.replace("{name}",f.noticeData?.visitorName??"").replace("{email}",f.noticeData?.visitorEmail??"").replace("{ref}",f.noticeData?.visitorId??""):f.content;return c(ze,{text:g},f._id)}if(f.role==="user")return c(Dc,{text:f.content},f._id);const p={authorId:f.authorId,authorName:f.authorName,authorImage:f.authorImage};return f.status==="streaming"&&f.content===""?c(Kc,{},f._id):f.status==="streaming"?c(ze,{text:po(f.content),streaming:!0,...p},f._id):f.status==="error"?c(ze,{text:f.errorMessage??`${l.somethingWentWrong}. ${l.tryAgain}.`,error:!0,...p},f._id):c("div",{children:[c(ze,{text:po(f.content),...p}),f.sources&&f.sources.length>0?c(Jc,{sources:f.sources}):null]},f._id)}),c("div",{ref:a})]})}function Fn({message:t}){const[e,n]=C(!1);return S(()=>{const r=setTimeout(()=>{n(!0)},80);return()=>{clearTimeout(r)}},[]),e?c("div",{class:"jex-overlay jex-loading",children:[c("div",{class:"jex-loading-spinner","aria-hidden":"true"}),t&&c("p",{class:"jex-loading-message",children:t})]}):null}function Xc({sessionId:t,visitorId:e}){const n=gi(Oe.functions.chat.public.conversations.listBySession,t&&e?{sessionId:t,visitorId:e}:"skip"),r=gi(Oe.functions.chat.public.sessions.getSessionStatus,t&&e?{sessionId:t,visitorId:e}:"skip"),i=t!==null&&n===void 0,o=n?.some(s=>s.status==="streaming")??!1;return{conversations:n,sessionStatus:r??null,isLoading:i,isStreaming:o}}function eu({greeting:t,sessionId:e,visitorId:n,isLoading:r,sessionNotFound:i,resumeFailed:o,isOrgDeleted:s,ensureSession:l,startFresh:a}){const u=$(),{conversations:d,sessionStatus:h,isLoading:f,isStreaming:p}=Xc({sessionId:e,visitorId:n}),g=le((()=>{const b=nt.peek();return b!==null?b:Li.peek()?"resume":"fresh"})()).current;if(S(()=>{nt.value=null},[]),S(()=>{l()},[l]),S(()=>{n&&Cn(n)},[n]),s)return c("div",{class:"jex-chat-messages",children:c("div",{class:"jex-session-notice",children:u.chatNoLongerAvailable})});const m=g==="fresh"&&!e,x=g==="resume"&&(!e||f);return m?c(Fn,{message:u.startingConversation}):x?c(Fn,{message:u.resumeConversation}):c(U,{children:[c(Yc,{conversations:d,greeting:t,sessionNotFound:i,resumeFailed:o,onStartFresh:a,sessionId:e,visitorId:n}),c(Fc,{sessionId:e,visitorId:n,isLoading:r,isStreaming:p,sessionStatus:h,ensureSession:l,onStartFresh:a})]})}function tu({formMessageId:t,sessionId:e,visitorId:n}){const r=$(),i=At.value,o=/^https?:\/\//i.test(i)?i:$t,[s,l]=C(""),[a,u]=C(""),d=fo(),[h,f]=C(!1),[p,g]=C(null);async function m(x){x.preventDefault(),f(!0),g(null);try{await d({sessionId:e,visitorId:n,formMessageId:t,visitorName:s.trim(),visitorEmail:a.trim(),locale:xe.value}),It()}catch(b){console.error("[EscalationFormScreen] Submit failed:",b),g(r.escalationSubmitFailed)}finally{f(!1)}}return c("div",{class:"jex-form-screen",children:[c("h2",{class:"jex-form-title",children:r.escalationFormTitle}),c("p",{class:"jex-escalation-subtitle",children:r.escalationSubtitle}),p&&c("div",{class:"jex-form-error",role:"alert",children:p}),c("form",{class:"jex-form",onSubmit:x=>{m(x)},children:[c("input",{class:"jex-form-input",type:"text",placeholder:r.escalationNameLabel,value:s,required:!0,onInput:x=>{l(x.currentTarget.value)}}),c("input",{class:"jex-form-input",type:"email",placeholder:r.escalationEmailLabel,value:a,required:!0,onInput:x=>{u(x.currentTarget.value)}}),c("button",{class:"jex-form-submit",type:"submit",disabled:h,children:r.escalationSubmit})]}),c("div",{class:"jex-inline-form-consent",style:{textAlign:"center",margin:"16px 0 8px 0"},children:[r.escalationConsent," ",c("a",{href:o,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r.escalationPrivacyLinkText}),"."]}),c("button",{class:"jex-escalation-skip",type:"button",onClick:()=>{It()},children:r.escalationSkip})]})}function nu(){return kt(Oe.functions.chat.public.helpdesk.createEscalationRequest)}function go({sessionId:t,visitorId:e}){const n=$(),[r,i]=C(!1),[o,s]=C(null),l=nu();async function a(){if(!t||!e)return;const u=ue.value;if(u){i(!0),s(null);try{const d=await l({sessionId:t,visitorId:e,bootstrapToken:u,locale:xe.value});if(d.skipForm)return;ye({id:"escalation-form",formMessageId:d.formMessageId,sessionId:t,visitorId:e})}catch(d){const h=d instanceof Error?d.message:String(d);s(/RATE_LIMITED|Too many/.test(h)?n.handoffRateLimited:n.handoffFailed)}finally{i(!1)}}}return c(U,{children:[c("button",{class:"jex-header-handoff",type:"button",onClick:()=>{a()},disabled:r||!t||!e,"aria-label":n.talkToHumanAria,title:n.talkToHuman,children:c("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[c("path",{d:"M3 14v-3a9 9 0 0 1 18 0v3"}),c("path",{d:"M21 14a2 2 0 0 1-2 2h-1a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h3z"}),c("path",{d:"M3 14a2 2 0 0 0 2 2h1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H3z"}),c("path",{d:"M21 14v3a4 4 0 0 1-4 4h-3"})]})}),o&&c("div",{class:"jex-handoff-error",role:"alert",children:o})]})}async function ru(){const t=Ti.value;if(!t)return console.warn("[JexityChat] Bootstrap refresh skipped — inputs missing"),{ok:!1,reason:"no-inputs"};const e=await kn(t.orgSlug,t.siteUrl,t.projSlug);if(!e.ok)return console.warn("[JexityChat] Bootstrap refresh failed:",e.error),{ok:!1,reason:e.error};const n=e.token;return ue.value=n,{ok:!0,token:n}}function mo(t){return xo(t)?"unauthorized":t instanceof Error&&/network|fetch|failed to fetch/i.test(t.message)?"network":"unknown"}function xo(t){return t instanceof xt?t.data?.code==="UNAUTHORIZED_ORIGIN":!1}function iu(t=1e4){return ue.value?Promise.resolve(ue.value):new Promise(e=>{let n=!1;const r=s=>{n||(n=!0,clearTimeout(i),o(),e(s))},i=setTimeout(()=>{r(null)},t),o=ue.subscribe(s=>{s&&r(s)})})}function ou(t,e){const n=le(null),r=Le(!1),i=Le(!1),o=Le(!1),s=Le(null),l=kt(Oe.functions.chat.public.sessions.createOrResume),a=async p=>{const g=await iu();if(!g)return console.warn("[JexityChat] No bootstrap token after 10s — session creation blocked."),Ne.value="no-token",null;const m=v=>({orgSlug:t,...e?{projSlug:e}:{},visitorId:p,bootstrapToken:v,locale:xe.value,...Rt.value?{source:Rt.value}:{}});Rn.value=!0;let x;try{try{x=await l(m(g))}catch(v){if(!xo(v))throw v;const L=await ru();if(!L.ok)return Ne.value=L.reason==="rate_limited"?"network":"unauthorized",null;x=await l(m(L.token))}}finally{Rn.value=!1}Ne.value=null,s.value=x.status;const b={sessionId:x.sessionId,visitorId:p};return n.current=b,{session:b,result:x}},u=Ce(async()=>{if(n.current)return n.current;if(o.value)return null;r.value=!0;const p=be.value!==null,g=be.value??Mi();try{const m=await a(g);return m?(p&&m.result.isNew&&(i.value=!0,o.value=!0),m.session):null}catch(m){return console.error("[JexityChat] Failed to create session:",m),Ne.value=mo(m),null}finally{r.value=!1}},[t,e,l,r,i,o]),d=Ce(()=>{n.current=null,i.value=!1,o.value=!1},[i,o]);S(()=>fl(d),[d]);const h=Ce(async()=>{n.current=null,o.value=!1,i.value=!1;const p=Mi();r.value=!0;try{return(await a(p))?.session??null}catch(g){return console.error("[JexityChat] Failed to create fresh session:",g),Ne.value=mo(g),null}finally{r.value=!1}},[t,e,l,r,i,o,s]),f=n.current;return{sessionId:f?.sessionId??null,visitorId:f?.visitorId??null,isLoading:r.value,sessionNotFound:i.value,resumeFailed:o.value,sessionStatus:s.value,isOrgDeleted:s.value==="org_deleted",ensureSession:u,startFresh:h,resetSession:d}}function su(){const t=$(),[e,n]=C(""),[r,i]=C(""),[o,s]=C("");async function l(a){a.preventDefault(),Tn({id:"loading",message:t.submittingTicket}),await new Promise(d=>{setTimeout(d,1200)});const u="JEX-"+Math.random().toString(36).slice(2,8).toUpperCase();Tn({id:"confirmation",ref:u})}return c("div",{class:"jex-form-screen",children:[c("h2",{class:"jex-form-title",children:t.submitTicket}),c("form",{class:"jex-form",onSubmit:a=>{l(a)},children:[c("input",{class:"jex-form-input",type:"text",placeholder:t.yourName,value:e,required:!0,onInput:a=>{n(a.currentTarget.value)}}),c("input",{class:"jex-form-input",type:"email",placeholder:t.yourEmail,value:r,required:!0,onInput:a=>{i(a.currentTarget.value)}}),c("textarea",{class:"jex-form-textarea",placeholder:t.howCanWeHelp,value:o,required:!0,onInput:a=>{s(a.currentTarget.value)}}),c("button",{class:"jex-form-submit",type:"submit",children:t.submit})]})]})}function au({ticketRef:t}){const e=$();return c("div",{class:"jex-confirmation",children:[c("div",{class:"jex-confirmation-icon","aria-hidden":"true",children:"✓"}),c("h2",{class:"jex-confirmation-title",children:e.ticketSubmitted}),c("p",{class:"jex-confirmation-body",children:e.yourReferenceNumber}),c("div",{class:"jex-confirmation-ref",children:t}),c("p",{class:"jex-confirmation-hint",children:e.sentToEmailHint}),c("button",{class:"jex-confirmation-done",onClick:()=>{P.value=!1},children:e.done})]})}function lu({message:t,onRetry:e,onBack:n}){const r=$();return c("div",{class:"jex-overlay jex-error",children:[c("p",{class:"jex-error-message",children:t}),c("div",{class:"jex-error-actions",children:[e&&c("button",{class:"jex-error-retry",onClick:e,children:r.tryAgain}),n&&c("button",{class:"jex-error-back",onClick:n,children:r.goBack})]})]})}function bo({greeting:t,title:e,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:s,isOrgDeleted:l,ensureSession:a,startFresh:u,resetSession:d}){const h=B.value,f=h[h.length-1],p=[...h].reverse().find(g=>g.id==="confirmation");return c("div",{class:"jex-screen-container",children:[f.id==="home"&&c(Tl,{greeting:t,title:e,onStartFresh:u,onResetSession:d}),f.id==="selection"&&c(Rl,{title:e}),f.id==="form"&&c(su,{}),f.id==="escalation-form"&&c(tu,{formMessageId:f.formMessageId,sessionId:f.sessionId,visitorId:f.visitorId}),f.id==="confirmation"&&p&&c(au,{ticketRef:p.ref}),f.id==="chat"&&c(eu,{greeting:t,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:s,isOrgDeleted:l,ensureSession:a,startFresh:u}),f.id==="loading"&&c(Fn,{message:f.message}),f.id==="error"&&c(lu,{message:f.message,onRetry:()=>Tn({id:"loading"}),onBack:It})]})}function cu({options:t}){return Za({orgSlug:t.orgSlug,projSlug:t.projSlug,preToken:t.bootstrapToken,convexUrl:t.convexUrl,preAllowedUrls:t.allowedUrls??[],preExcludedPaths:t.excludePaths}),el()?c(uu,{options:t}):null}function uu({options:t}){const e=Ga(t.orgSlug,t.projSlug,t.convexUrl);sl(t.parentOrigin),S(()=>{cl(),ul()},[]);const{sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:s,isOrgDeleted:l,ensureSession:a,startFresh:u,resetSession:d}=ou(t.orgSlug,t.projSlug),h=Ha(t,e);S(()=>{xe.value=Ai(h.locale)},[h.locale]),S(()=>{At.value=h.privacyPolicyUrl??$t,Ci.value=h.privacyNoticeStyle},[h.privacyNoticeStyle,h.privacyPolicyUrl]),S(()=>{if(!P.value||h.mode==="embedded"||!window.matchMedia("(max-width: 480px), (pointer: coarse) and (max-width: 768px)").matches)return;const Q=document.documentElement.style.overflow;return document.documentElement.style.overflow="hidden",()=>{document.documentElement.style.overflow=Q}},[P.value,h.mode]),S(()=>{if(h.mode!=="embedded")try{return ml()}catch(F){console.warn("[JexityChat] Idle-lock watcher failed to start:",F);return}},[h.mode]);const f=h.position==="bottom-left",p=h.colorScheme==="dark"||h.colorScheme==="light"?h.colorScheme:"",g=xl({...t,primaryColor:h.primaryColor,accentColor:h.accentColor,fontFamily:h.fontFamily,fontSize:h.fontSize,borderRadius:h.borderRadius,windowWidth:h.windowWidth,windowHeight:h.windowHeight}),m=h.mode==="embedded",x=B.value,v=x[x.length-1]?.id==="chat",M=e!==null||m||!!t.parentOrigin?g:{...g,visibility:"hidden"};return c("div",{class:`jex-widget ${p}`.trim(),style:M,children:m?c("div",{class:"jex-embedded",children:[c(Bi,{title:h.title,rightAction:v?c(go,{sessionId:n,visitorId:r}):null,showClose:!m}),c(bo,{greeting:h.greeting,title:h.title,orgSlug:t.orgSlug,projSlug:t.projSlug,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:s,isOrgDeleted:l,ensureSession:a,startFresh:u,resetSession:d}),!h.hideBranding&&c(Ui,{})]}):c("div",{class:`jex-container${f?" jex-pos-left":""}`,children:[P.value&&c("div",{class:"jex-chat-window",children:[c(Bi,{title:h.title,rightAction:v?c(go,{sessionId:n,visitorId:r}):null}),c(bo,{greeting:h.greeting,title:h.title,orgSlug:t.orgSlug,projSlug:t.projSlug,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:s,isOrgDeleted:l,ensureSession:a,startFresh:u,resetSession:d}),!h.hideBranding&&c(Ui,{})]}),c(Cl,{iconOption:h.triggerIcon,radius:h.triggerRadius,label:h.triggerLabel})]})})}const hu='.jex-widget{--jex-primary: #115A62;--jex-primary-hover: var(--jex-accent, color-mix(in srgb, var(--jex-primary) 85%, #000));--jex-radius: .75rem;--jex-font-family: "Inter", system-ui, -apple-system, sans-serif;--jex-font-size: 14px;--jex-window-width: 380px;--jex-window-height: 600px;--jex-shadow: 0 16px 48px -12px rgba(13, 127, 138, .25), 0 4px 16px rgba(0, 0, 0, .08);pointer-events:auto;--jex-bg-trigger: var(--jex-primary);--jex-bg-header: var(--jex-primary);--jex-bg-msg-user: var(--jex-primary);--jex-bg-send-btn: var(--jex-primary);--jex-bg-window: rgba(255, 255, 255, .95);--jex-bg-msg-bot: #f1f5f9;--jex-bg-input: rgba(247, 253, 253, .6);--jex-text-header: #ffffff;--jex-text-msg-user: #ffffff;--jex-text-msg-bot: #0f172a;--jex-text-main: #0f172a;--jex-text-muted: #64748b;--jex-bg-avatar-agent: #d1fae5;--jex-text-avatar-agent: #065f46;--jex-border-window: rgba(226, 232, 240, .8);--jex-border-input: rgba(203, 213, 225, .8);--jex-bg-glass: var(--jex-bg-window);--jex-border-glass: var(--jex-border-window);font-family:var(--jex-font-family);-webkit-font-smoothing:antialiased}.dark .jex-widget,.jex-widget.dark{--jex-primary: #1cb0bf;--jex-primary-hover: var(--jex-accent, color-mix(in srgb, var(--jex-primary) 85%, #000));--jex-bg-window: rgba(10, 15, 26, .95);--jex-bg-msg-bot: #233146;--jex-bg-input: rgba(10, 15, 26, .6);--jex-text-msg-bot: #f8fafc;--jex-text-main: #f8fafc;--jex-text-muted: #94a3b8;--jex-border-window: rgba(30, 41, 59, .8);--jex-border-input: rgba(51, 65, 85, .9);--jex-bg-avatar-agent: #064e3b;--jex-text-avatar-agent: #6ee7b7;--jex-bg-error: #3b1318;--jex-border-error: #5c1d24;--jex-text-error: #fca5a5}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light){--jex-primary: #1cb0bf;--jex-primary-hover: var(--jex-accent, color-mix(in srgb, var(--jex-primary) 85%, #000));--jex-bg-window: rgba(10, 15, 26, .95);--jex-bg-msg-bot: #233146;--jex-bg-input: rgba(10, 15, 26, .6);--jex-text-msg-bot: #f8fafc;--jex-text-main: #f8fafc;--jex-text-muted: #94a3b8;--jex-border-window: rgba(30, 41, 59, .8);--jex-border-input: rgba(51, 65, 85, .9);--jex-bg-error: #3b1318;--jex-border-error: #5c1d24;--jex-text-error: #fca5a5}}.jex-widget *{box-sizing:border-box;margin:0;padding:0}.jex-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:16px;z-index:9999}.jex-container.jex-pos-left{right:auto;left:24px;align-items:flex-start}:host(.jex-mode-embedded){display:block;width:100%;height:100%}:host(.jex-mode-embedded) .jex-widget{width:100%;height:100%}.jex-embedded{display:flex;flex-direction:column;width:100%;height:100%;background:var(--jex-bg-window);border:1px solid var(--jex-border-window);overflow:hidden}.jex-embedded .jex-screen-container{flex:1;overflow:hidden;display:flex;flex-direction:column}.jex-floating-button{height:56px;min-width:56px;padding:0;background:var(--jex-bg-trigger);color:var(--jex-text-header);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--jex-shadow);transition:transform .3s cubic-bezier(.175,.885,.32,1.275),background .2s,width .3s ease,border-radius .3s ease}.jex-floating-button.jex-has-label{min-width:110px;padding:0 20px}.jex-fab-inner{display:flex;align-items:center;gap:12px}.jex-fab-label{font-size:15px;font-weight:600;white-space:nowrap}.jex-floating-button:hover{transform:scale(1.1);background:var(--jex-primary-hover)}.jex-floating-button:active{transform:scale(.95)}.jex-chat-window{width:var(--jex-window-width);height:var(--jex-window-height);max-height:calc(100vh - 120px);background:var(--jex-bg-window);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--jex-border-window);border-radius:calc(var(--jex-radius) * 2);box-shadow:var(--jex-shadow);display:flex;flex-direction:column;overflow:hidden;animation:jexSlideUp .4s cubic-bezier(.16,1,.3,1);transform-origin:bottom right;touch-action:manipulation}@keyframes jexSlideUp{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(max-width:480px),(pointer:coarse)and (max-width:768px){.jex-chat-window{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-height:none;border:none;border-radius:0;animation:jexSlideUpMobile .3s cubic-bezier(.16,1,.3,1);transform-origin:bottom center}.jex-container:has(.jex-chat-window) .jex-floating-button{display:none}}@keyframes jexSlideUpMobile{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.jex-chat-header{padding:20px;background:var(--jex-bg-header);color:var(--jex-text-header);display:flex;align-items:center;gap:12px;flex-shrink:0}.jex-header-info h3{font-size:16px;font-weight:600;color:var(--jex-text-header);margin:0}.jex-header-info p{font-size:12px;opacity:.8;color:var(--jex-text-header);margin:0}.jex-header-right{margin-left:auto;display:flex;align-items:center;gap:4px}.jex-header-handoff{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1px solid color-mix(in srgb,currentColor 50%,transparent);border-radius:999px;padding:0;color:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.jex-header-handoff:hover:not(:disabled){background:color-mix(in srgb,currentColor 12%,transparent);border-color:currentColor}.jex-header-handoff:disabled{opacity:.5;cursor:not-allowed}.jex-header-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:999px;padding:0;color:inherit;cursor:pointer;transition:background .15s ease}.jex-header-close:hover{background:color-mix(in srgb,currentColor 14%,transparent)}.jex-handoff-error{position:absolute;top:100%;right:8px;background:#fee;color:#b00;padding:4px 8px;font-size:12px;border-radius:4px}.jex-header-back{background:none;border:none;color:var(--jex-text-header);cursor:pointer;padding:4px;display:flex;align-items:center;opacity:.8;transition:opacity .2s;flex-shrink:0}.jex-header-back:hover{opacity:1}.jex-screen-container{flex:1;overflow:hidden;display:flex;flex-direction:column}.jex-home{flex:1;display:flex;flex-direction:column;padding:24px;gap:20px;overflow-y:auto}.jex-home-hero{display:flex;align-items:center;gap:14px;animation:jexFadeIn .4s ease both}.jex-home-avatar{position:relative;width:48px;height:48px;border-radius:14px;background:var(--jex-primary);color:var(--jex-text-header);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 12px color-mix(in srgb,var(--jex-primary) 30%,transparent)}.jex-home-status-dot{position:absolute;bottom:-2px;right:-2px;width:14px;height:14px;border-radius:50%;background:#22c55e;border:2.5px solid var(--jex-bg-window);animation:jexPulse 2s ease-in-out infinite}@keyframes jexPulse{0%,to{box-shadow:0 0 #22c55e66}50%{box-shadow:0 0 0 6px #22c55e00}}.jex-home-hero-text{display:flex;flex-direction:column;gap:2px;min-width:0}.jex-home-title{font-size:17px;font-weight:700;color:var(--jex-text-main);margin:0;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jex-home-status{font-size:12px;font-weight:500;color:#22c55e;letter-spacing:.02em}.jex-home-greeting{background:var(--jex-bg-msg-bot);border:1px solid var(--jex-border-window);border-radius:4px 16px 16px;padding:16px 18px;font-size:14px;line-height:1.55;color:var(--jex-text-main);animation:jexFadeIn .4s .1s ease both}.jex-home-greeting p{margin:0}@keyframes jexFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.jex-home-actions{display:flex;flex-direction:column;gap:10px;animation:jexFadeIn .4s .2s ease both}.jex-home-start-btn{background:var(--jex-bg-send-btn);color:var(--jex-text-header);border:none;border-radius:12px;padding:14px 20px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s,transform .15s,box-shadow .2s;width:100%;box-shadow:0 2px 8px color-mix(in srgb,var(--jex-primary) 25%,transparent)}.jex-home-start-btn:hover{background:var(--jex-primary-hover);transform:translateY(-1px);box-shadow:0 4px 16px color-mix(in srgb,var(--jex-primary) 35%,transparent)}.jex-home-start-btn:active{transform:translateY(0);box-shadow:0 1px 4px color-mix(in srgb,var(--jex-primary) 20%,transparent)}.jex-home-resume-card{display:flex;flex-direction:column;gap:8px;width:100%;text-align:left;padding:16px 18px;border-radius:14px;border:1.5px solid var(--jex-primary);background:color-mix(in srgb,var(--jex-primary) 6%,var(--jex-bg-window));cursor:pointer;font-family:inherit;transition:background .2s,border-color .2s,transform .15s,box-shadow .2s;box-shadow:0 2px 8px color-mix(in srgb,var(--jex-primary) 12%,transparent)}.jex-home-resume-card:hover{background:color-mix(in srgb,var(--jex-primary) 10%,var(--jex-bg-window));transform:translateY(-1px);box-shadow:0 4px 16px color-mix(in srgb,var(--jex-primary) 20%,transparent)}.jex-home-resume-card:active{transform:translateY(0)}.jex-home-resume-top{display:flex;align-items:center;justify-content:space-between}.jex-home-resume-label{font-size:14px;font-weight:600;color:var(--jex-primary)}.jex-home-resume-arrow{color:var(--jex-primary);opacity:.6;transition:opacity .2s,transform .2s}.jex-home-resume-card:hover .jex-home-resume-arrow{opacity:1;transform:translate(2px)}.jex-home-resume-ref{font-family:ui-monospace,Cascadia Code,Fira Code,monospace;font-size:13px;font-weight:600;letter-spacing:.06em;color:var(--jex-text-muted)}.jex-home-history{display:flex;flex-direction:column;gap:8px}.jex-home-resume-meta{font-size:11px;opacity:.7;margin-top:4px}.jex-home-new-btn{background:transparent;color:var(--jex-text-muted);border:1px solid var(--jex-border-input);border-radius:12px;padding:12px 20px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:color .2s,border-color .2s,background .2s;width:100%}.jex-home-new-btn:hover{color:var(--jex-text-main);border-color:var(--jex-text-muted);background:color-mix(in srgb,var(--jex-primary) 3%,transparent)}.jex-session-ref{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--jex-bg-msg-bot);border:1px solid var(--jex-border-window);border-radius:8px;font-size:12px}.jex-session-ref-label{color:var(--jex-text-muted);font-weight:500}.jex-session-ref-code{color:var(--jex-primary);font-weight:700;font-family:ui-monospace,Cascadia Code,monospace;letter-spacing:.05em}.jex-chat-messages{flex:1;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.jex-message-row{display:flex;align-items:flex-end;gap:8px;max-width:85%}.jex-message-row.bot{align-self:flex-start}.jex-message-content{flex:1;min-width:0}.jex-avatar{width:24px;height:24px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:12px;margin-bottom:2px}.jex-avatar-bot{background:var(--jex-bg-msg-bot);color:var(--jex-primary)}.jex-avatar-agent{background:var(--jex-bg-avatar-agent)}.jex-avatar-img{width:100%;height:100%;border-radius:50%;object-fit:cover}.jex-avatar-initials{font-size:9px;font-weight:700;color:var(--jex-text-avatar-agent)}.jex-message-author-row{display:flex;align-items:center;gap:6px;margin-top:2px;padding-left:4px}.jex-message-author{font-size:10px;color:var(--jex-text-muted)}.jex-reply-tag-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--jex-text-muted, #6b7280);cursor:pointer;transition:background .15s,color .15s}.jex-reply-tag-btn:hover{background:#0000000f;color:var(--jex-primary, #115A62)}.jex-reply-tag-btn:focus-visible{outline:2px solid var(--jex-primary, #115A62);outline-offset:1px}.jex-message{padding:12px 16px;border-radius:18px;font-size:14px;line-height:1.4}.jex-message.bot{background:var(--jex-bg-msg-bot);border:1px solid var(--jex-border-window);color:var(--jex-text-msg-bot);border-bottom-left-radius:4px}.jex-message.user{align-self:flex-end;max-width:80%;background:var(--jex-bg-msg-user);color:var(--jex-text-msg-user);border-bottom-right-radius:4px}.jex-typing{align-self:flex-start;display:flex;gap:4px;padding:12px 16px}.jex-typing span{width:8px;height:8px;border-radius:50%;background:var(--jex-text-muted);animation:jexTypingDot 1.2s infinite ease-in-out}.jex-typing span:nth-child(2){animation-delay:.2s}.jex-typing span:nth-child(3){animation-delay:.4s}@keyframes jexTypingDot{0%,80%,to{transform:scale(.8);opacity:.4}40%{transform:scale(1);opacity:1}}.jex-md{word-break:break-word;overflow-wrap:anywhere}.jex-md p{margin:0 0 8px}.jex-md p:last-child{margin-bottom:0}.jex-md strong{font-weight:600}.jex-md em{font-style:italic}.jex-md ul,.jex-md ol{margin:0 0 8px;padding-left:20px}.jex-md ul:last-child,.jex-md ol:last-child{margin-bottom:0}.jex-md ul{list-style-type:disc}.jex-md ol{list-style-type:decimal}.jex-md li{margin-bottom:2px}.jex-md li:last-child{margin-bottom:0}.jex-md a{color:var(--jex-primary);text-decoration:underline;text-underline-offset:2px}.jex-md a:hover{opacity:.8}.jex-md code{background:#00000014;padding:1px 5px;border-radius:4px;font-size:.9em;font-family:ui-monospace,Cascadia Code,Fira Code,monospace}.jex-md pre{background:#0000000f;border-radius:8px;padding:10px 12px;margin:0 0 8px;overflow-x:auto;font-size:.85em}.jex-md pre:last-child{margin-bottom:0}.jex-md pre code{background:none;padding:0;border-radius:0;font-size:inherit}.jex-md h1,.jex-md h2,.jex-md h3,.jex-md h4{font-weight:600;margin:8px 0 4px}.jex-md h1:first-child,.jex-md h2:first-child,.jex-md h3:first-child,.jex-md h4:first-child{margin-top:0}.jex-md h3{font-size:1em}.jex-md h4{font-size:.95em}.jex-md hr{border:none;border-top:1px solid var(--jex-border-window);margin:8px 0}.jex-md blockquote{border-left:3px solid var(--jex-primary);margin:0 0 8px;padding:4px 12px;color:var(--jex-text-muted)}.jex-md blockquote:last-child{margin-bottom:0}.dark .jex-md code,.jex-widget.dark .jex-md code{background:#ffffff1a}.dark .jex-md pre,.jex-widget.dark .jex-md pre{background:#ffffff14}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light) .jex-md code{background:#ffffff1a}:host:not(.light) .jex-widget:not(.light) .jex-md pre{background:#ffffff14}}.jex-streaming-cursor:after{content:"◊";margin-left:2px;animation:jexBlinkCursor .8s ease-in-out infinite}@keyframes jexBlinkCursor{0%,to{opacity:1}50%{opacity:0}}.jex-session-notice{align-self:center;text-align:center;padding:8px 16px;margin:8px 0;font-size:12px;color:var(--jex-text-muted);background:var(--jex-bg-input, #f1f5f9);border-radius:8px;line-height:1.4}.jex-message-error{background:var(--jex-bg-error, #fef2f2)!important;border-color:var(--jex-border-error, #fecaca)!important;color:var(--jex-text-error, #991b1b)!important}.jex-chat-input{padding:12px 16px;border-top:1px solid var(--jex-border-window);display:flex;flex-direction:column;gap:8px;flex-shrink:0}.jex-chat-input-composer-gate{position:relative}.jex-chat-input-composer-gate-open{z-index:2}.jex-chat-input-composer-gate-open .jex-composer-card{pointer-events:none}.jex-composer-card{display:flex;flex-direction:column;gap:6px;padding:10px 12px 8px;background:var(--jex-bg-input);border:1px solid var(--jex-border-input);border-radius:16px;cursor:text;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.jex-composer-card:focus-within{border-color:var(--jex-primary);background:var(--jex-bg-window);box-shadow:0 0 0 3px color-mix(in srgb,var(--jex-primary, #115A62) 14%,transparent)}.jex-composer-attachments{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 4px}.jex-attachment-chip{position:relative;width:44px;height:44px;border-radius:8px;overflow:hidden;background:var(--jex-bg-msg-bot, #f1f5f9);flex-shrink:0;box-shadow:0 1px 2px #0000000f}.jex-attachment-thumb{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.jex-attachment-remove{position:absolute;top:2px;right:2px;width:16px;height:16px;padding:0;border:none;border-radius:50%;background:#0f172ac7;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .12s ease,transform .12s ease}.jex-attachment-chip:hover .jex-attachment-remove,.jex-attachment-chip:focus-within .jex-attachment-remove{opacity:1}.jex-attachment-remove:hover{transform:scale(1.08)}.jex-composer-textarea{width:100%;min-height:22px;background:transparent;border:none;outline:none;resize:none;padding:2px 4px;color:var(--jex-text-main);font-family:inherit;font-size:16px;line-height:1.45;overflow-y:hidden}.jex-composer-textarea::placeholder{color:var(--jex-text-muted);opacity:.85}.jex-composer-textarea:disabled{cursor:not-allowed;opacity:.7}.jex-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.jex-composer-actions-left{display:inline-flex;align-items:center;gap:4px}.jex-attach-btn{width:30px;height:30px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--jex-text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,color .12s ease,transform .12s ease}.jex-attach-btn:hover:not(:disabled){background:color-mix(in srgb,var(--jex-text-muted, #64748b) 12%,transparent);color:var(--jex-text-main)}.jex-attach-btn:active:not(:disabled){transform:scale(.92)}.jex-attach-btn:disabled{opacity:.4;cursor:not-allowed}.jex-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.jex-rate-limit-notice{flex:1 0 100%;order:-1;margin-bottom:8px;padding:8px 12px;border-radius:10px;background:var(--jex-bg-msg-bot, #f1f5f9);color:var(--jex-text-muted, #64748b);font-size:12px;line-height:1.4;text-align:center}.jex-session-error-notice{flex:1 0 100%;order:-1;margin-bottom:8px;padding:8px 12px;border-radius:10px;background:var(--jex-bg-error, #fef2f2);border:1px solid var(--jex-border-error, #fecaca);color:var(--jex-text-error, #991b1b);font-size:12px;line-height:1.4;text-align:center}.jex-chat-input input{flex:1;background:var(--jex-bg-input);border:1px solid var(--jex-border-input);border-radius:12px;padding:10px 14px;color:var(--jex-text-main);outline:none;font-family:inherit;font-size:14px}.jex-chat-input input:focus{border-color:var(--jex-primary)}.jex-send-btn{background:color-mix(in srgb,var(--jex-text-muted, #64748b) 18%,transparent);color:var(--jex-text-muted);border:none;border-radius:999px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease,color .15s ease,opacity .15s ease,transform .15s ease;flex-shrink:0}.jex-send-btn-active{background:var(--jex-bg-send-btn, var(--jex-primary));color:var(--jex-text-header, #fff)}.jex-send-btn-active:hover:not(:disabled){background:var(--jex-primary-hover)}.jex-send-btn:active:not(:disabled){transform:scale(.9)}.jex-send-btn:disabled{opacity:.45;cursor:default}.jex-widget-footer{display:flex;align-items:center;justify-content:center;padding:8px 16px;border-top:1px solid var(--jex-border-glass);background:#00000005;flex-shrink:0}.jex-widget.dark .jex-widget-footer{background:#ffffff05}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light) .jex-widget-footer{background:#ffffff05}}.jex-branding{display:flex;align-items:center;gap:6px;text-decoration:none;color:var(--jex-text-muted);font-size:11px;font-weight:500;transition:color .2s}.jex-branding:hover{color:var(--jex-text-main)}.jex-branding-icon{color:var(--jex-primary)}.jex-branding span strong{font-weight:700;color:var(--jex-text-main)}.jex-privacy-notice-link,.jex-privacy-chip-link{color:var(--jex-primary);text-decoration:underline;text-underline-offset:2px;text-decoration-color:color-mix(in srgb,var(--jex-primary) 50%,transparent);transition:text-decoration-color .15s}.jex-privacy-notice-link:hover,.jex-privacy-chip-link:hover{text-decoration-color:var(--jex-primary)}.jex-privacy-chip{align-self:center;display:inline-flex;align-items:center;gap:6px;max-width:100%;margin:0;padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--jex-primary) 10%,var(--jex-bg-window));color:var(--jex-primary);font-size:10px;font-weight:650;line-height:1.2}.jex-privacy-chip-icon{display:inline-flex;flex-shrink:0}.jex-privacy-chip-link{color:inherit;text-decoration:none}.jex-privacy-explicit{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;flex-direction:column;gap:10px;min-height:100%;padding:10px 12px 12px;border:1px solid var(--jex-border-window);border-radius:14px 14px 10px 10px;background:var(--jex-bg-window);box-shadow:0 -12px 36px #0f172a24;pointer-events:auto}.jex-privacy-explicit-content{display:flex;align-items:flex-start;gap:10px}.jex-privacy-explicit-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:8px;background:color-mix(in srgb,var(--jex-primary) 10%,var(--jex-bg-window));color:var(--jex-primary);flex-shrink:0}.jex-privacy-explicit-copy{min-width:0;flex:1}.jex-privacy-explicit-title{color:var(--jex-text-main);font-size:12px;font-weight:750;line-height:1.2;margin-bottom:3px}.jex-privacy-explicit-body{margin:0;color:var(--jex-text-muted);font-size:10px;line-height:1.35}.jex-privacy-explicit-button{width:100%;border:none;border-radius:10px;background:var(--jex-bg-send-btn);color:var(--jex-text-header);cursor:pointer;font-family:inherit;font-size:12px;font-weight:750;padding:9px 12px;transition:background .15s ease,transform .12s ease}.jex-privacy-explicit-button:hover{background:var(--jex-primary-hover)}.jex-privacy-explicit-button:active{transform:scale(.98)}.jex-locale-select-wrapper{position:relative;display:flex;align-items:center}.jex-locale-select{appearance:none;-webkit-appearance:none;background:transparent;border:1px solid transparent;padding:4px 20px 4px 6px;border-radius:6px;font-family:inherit;font-size:11px;font-weight:600;color:var(--jex-text-muted);background-color:transparent;cursor:pointer;outline:none;transition:all .2s ease}.jex-locale-select option{background-color:#fff;color:#0f172a}.jex-locale-select:hover,.jex-locale-select:focus-visible{color:var(--jex-text-main);background:#0000000a}.jex-widget.dark .jex-locale-select:hover,.jex-widget.dark .jex-locale-select:focus-visible{background:#ffffff0d}.jex-widget.dark .jex-locale-select option{background-color:#0f172a;color:#f8fafc}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light) .jex-locale-select:hover,:host:not(.light) .jex-widget:not(.light) .jex-locale-select:focus-visible{background:#ffffff0d}:host:not(.light) .jex-widget:not(.light) .jex-locale-select option{background-color:#0f172a;color:#f8fafc}}.jex-locale-select:focus-visible{border-color:var(--jex-primary)}.jex-locale-chevron{position:absolute;right:4px;pointer-events:none;color:var(--jex-text-muted);transition:color .2s ease}.jex-locale-select-wrapper:hover .jex-locale-chevron{color:var(--jex-text-main)}.jex-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--jex-bg-window, #fff);z-index:10;padding:24px;text-align:center}.jex-loading-spinner{width:32px;height:32px;border:3px solid var(--jex-border-input, #e2e8f0);border-top-color:var(--jex-primary, #115A62);border-radius:50%;animation:jex-spin .7s linear infinite}@keyframes jex-spin{to{transform:rotate(360deg)}}.jex-loading-message{font-size:14px;color:var(--jex-text-muted, #64748b)}.jex-error-message{font-size:14px;color:var(--jex-text-main, #334155)}.jex-error-actions{display:flex;gap:8px}.jex-error-retry,.jex-error-back{padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none}.jex-error-retry{background:var(--jex-primary, #115A62);color:#fff}.jex-error-back{background:transparent;color:var(--jex-text-muted, #64748b);border:1px solid var(--jex-border-input, #e2e8f0)}.jex-selection{display:flex;flex-direction:column;gap:12px;padding:24px 16px;height:100%}.jex-selection-title{font-size:16px;font-weight:700;color:var(--jex-text-main, #0f172a);margin:0 0 8px}.jex-selection-options{display:flex;flex-direction:column;gap:10px}.jex-selection-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:16px;border-radius:12px;border:1px solid var(--jex-border-window, #e2e8f0);background:transparent;cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.jex-selection-option:hover{border-color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 5%,transparent)}.jex-selection-icon{font-size:20px}.jex-selection-label{font-size:14px;font-weight:600;color:var(--jex-text-main, #0f172a)}.jex-selection-sub{font-size:12px;color:var(--jex-text-muted, #64748b)}.jex-form-screen{display:flex;flex-direction:column;padding:20px 16px;height:100%;overflow-y:auto}.jex-form-title{font-size:16px;font-weight:700;color:var(--jex-text-main, #0f172a);margin:0 0 16px}.jex-form{display:flex;flex-direction:column;gap:10px}.jex-form-input,.jex-form-textarea{padding:10px 12px;border-radius:8px;border:1px solid var(--jex-border-input, #e2e8f0);font-size:14px;background:transparent;color:var(--jex-text-main, #0f172a);outline:none}@media(pointer:coarse){.jex-form-input,.jex-form-textarea{font-size:16px}}.jex-form-input:focus,.jex-form-textarea:focus{border-color:var(--jex-primary, #115A62)}.jex-form-textarea{min-height:80px;resize:vertical}.jex-form-submit{padding:10px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:14px;font-weight:600;cursor:pointer;margin-top:4px}.jex-inline-form{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--jex-bg-msg-bot, #f1f5f9);border:1px solid var(--jex-border-input, #e2e8f0);border-radius:var(--jex-radius, .75rem);width:100%}.jex-inline-form-title{font-weight:600;font-size:15px;color:var(--jex-text-main, #0f172a);margin:0}.jex-inline-form-subtitle{font-size:13px;color:var(--jex-text-muted, #64748b);line-height:1.4;margin:0 0 4px}.jex-inline-form-consent{font-size:11px;color:var(--jex-text-muted, #64748b);line-height:1.3;margin-top:4px;text-align:center}.jex-inline-form .jex-form-submit:disabled{opacity:.7;cursor:not-allowed}.jex-escalation-subtitle{font-size:13px;color:var(--jex-text-muted, #64748b);line-height:1.45;margin:0 0 8px}.jex-escalation-skip{padding:8px 12px;border:none;background:transparent;color:var(--jex-text-muted, #64748b);font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-align:center}.jex-escalation-skip:hover{color:var(--jex-text-main, #0f172a)}.jex-inline-form-card{position:relative;padding:14px;gap:8px}.jex-inline-form-dismiss{position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;border:1px solid var(--jex-border-input, #e2e8f0);background:var(--jex-bg-window, #fff);color:var(--jex-text-muted, #64748b);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.jex-inline-form-dismiss:hover{background:var(--jex-bg-msg-bot, #f1f5f9);color:var(--jex-text-main, #0f172a)}.jex-inline-form-submitted{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--jex-bg-msg-bot, #f1f5f9);border:1px solid var(--jex-border-input, #e2e8f0);border-radius:var(--jex-radius, .75rem);width:100%}.jex-inline-form-check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--jex-primary) 15%,transparent);color:var(--jex-primary, #115A62);font-size:14px;font-weight:700;flex-shrink:0}.jex-inline-form-submitted-title{font-weight:600;font-size:var(--jex-font-size, 14px);color:var(--jex-text-main, #0f172a)}.jex-inline-form-submitted-detail{font-size:12px;color:var(--jex-text-muted, #64748b);margin-top:2px}.jex-escalation-confirm{border-left:3px solid var(--jex-primary, #115A62);padding-left:8px}.jex-session-prompt{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 16px;margin:8px 0;text-align:center}.jex-session-prompt-text{font-size:13px;color:var(--jex-text-muted, #64748b)}.jex-session-prompt-btn{padding:8px 16px;border-radius:8px;border:1px solid var(--jex-primary, #115A62);background:transparent;color:var(--jex-primary, #115A62);font-size:13px;font-weight:600;cursor:pointer}.jex-session-prompt-btn:hover{background:color-mix(in srgb,var(--jex-primary) 10%,transparent)}.jex-chat-input-resolved{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 16px;border-top:1px solid var(--jex-border-input, #e2e8f0);background:var(--jex-bg-msg-bot, #f1f5f9);text-align:center}.jex-resolved-notice{font-size:13px;font-weight:500;color:var(--jex-text-muted, #64748b)}.jex-resolved-new-btn{padding:10px 20px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:13px;font-weight:600;cursor:pointer;width:100%}.jex-resolved-new-btn:hover{opacity:.9}.jex-confirmation{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:32px 24px;height:100%;text-align:center}.jex-confirmation-icon{width:48px;height:48px;border-radius:50%;background:color-mix(in srgb,var(--jex-primary, #115A62) 15%,transparent);color:var(--jex-primary, #115A62);font-size:22px;display:flex;align-items:center;justify-content:center}.jex-confirmation-title{font-size:18px;font-weight:700;color:var(--jex-text-main, #0f172a);margin:0}.jex-confirmation-body{font-size:13px;color:var(--jex-text-muted, #64748b);margin:0}.jex-confirmation-ref{font-size:20px;font-weight:700;letter-spacing:.05em;color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 10%,transparent);padding:10px 20px;border-radius:10px}.jex-confirmation-hint{font-size:12px;color:var(--jex-text-muted, #64748b);margin:0}.jex-confirmation-done{margin-top:8px;padding:10px 28px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:14px;font-weight:600;cursor:pointer}.jex-home-lookup-link{background:none;border:none;font-size:12px;color:var(--jex-text-muted, #64748b);cursor:pointer;text-decoration:underline;padding:0;align-self:center}.jex-home-lookup{display:flex;gap:8px;width:100%;animation:jexFadeIn .4s .1s ease both}.jex-home-lookup-input{flex:1;padding:10px 14px;border-radius:10px;border:1px solid var(--jex-border-input, #e2e8f0);background:var(--jex-bg-input);color:var(--jex-text-main);font-size:14px;font-family:ui-monospace,Cascadia Code,Fira Code,monospace;letter-spacing:.04em;outline:none;transition:border-color .2s}@media(pointer:coarse){.jex-home-lookup-input{font-size:16px}}.jex-home-lookup-input::placeholder{font-family:inherit;letter-spacing:.04em;color:var(--jex-text-muted);opacity:.7}.jex-home-lookup-input:focus{border-color:var(--jex-primary, #115A62)}.jex-home-lookup-submit{padding:10px 16px;border-radius:10px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s,opacity .2s;flex-shrink:0}.jex-home-lookup-submit:hover:not(:disabled){background:var(--jex-primary-hover)}.jex-home-lookup-submit:disabled{opacity:.4;cursor:default}.jex-sources-row{margin-top:6px;margin-left:32px;display:flex;flex-direction:column;gap:6px}.jex-sources-toggle{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:transparent;border:none;border-radius:6px;cursor:pointer;font-size:11px;color:var(--jex-text-muted, #6b7280);font-family:inherit;align-self:flex-start;transition:background .15s,color .15s}.jex-sources-toggle:hover{background:#0000000a;color:inherit}.jex-sources-icon{font-size:12px;line-height:1}.jex-sources-chevron{display:inline-block;font-size:10px;transition:transform .15s}.jex-sources-chevron--open{transform:rotate(180deg)}.jex-sources-pills{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.jex-source-pill{display:inline-flex;align-items:center;gap:6px;max-width:240px;padding:2px 8px;border-radius:999px;border:1px solid rgba(0,0,0,.1);background:#0000000a;color:var(--jex-text-muted, #6b7280);font-size:11px;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.jex-source-pill:hover{background:#00000014;color:inherit}.jex-source-id{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:4px;background:var(--jex-primary, #115A62);color:#fff;font-size:10px;font-weight:600;line-height:1;flex-shrink:0;font-variant-numeric:tabular-nums}.jex-source-type{font-size:10px;flex-shrink:0}.jex-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.jex-source-score{opacity:.6;flex-shrink:0;font-variant-numeric:tabular-nums}';function du(t){const e=document.createElement("style");e.textContent=hu,t.appendChild(e)}const fu="https://festive-mouse-978.eu-west-1.convex.cloud";let Qn=null;function pu(t){const e=t??fu;if(!e)throw new Error("[jexity] No Convex URL — set VITE_CONVEX_URL at build time or data-convex-url on the script tag");return Qn||(Qn=new Ra(Da(e))),Qn}function gu(t,e){const n=t.shadowRoot??t.attachShadow({mode:"open"});for(;n.firstChild;)n.removeChild(n.firstChild);du(n),Rt.value=e.source,ue.value=e.bootstrapToken,B.value=[{id:"home"}],e.mode==="embedded"&&(t.classList.add("jex-mode-embedded"),P.value=!0);const r=document.createElement("div");return e.mode==="embedded"&&(r.style.cssText="width:100%;height:100%"),n.appendChild(r),fe(c(Aa,{client:pu(e.convexUrl),children:c(cu,{options:e})}),r),function(){fe(null,r),P.value=!1,Rt.value=void 0,ue.value=void 0,B.value=[{id:"home"}]}}function mu(t,e,n){const r=gu(t,e),i=new Set,o=P.subscribe(l=>{for(const a of i)a(l)});return{shutdown(){o(),i.clear(),r(),n&&n()},open(){P.value=!0},close(){P.value=!1},toggle(){P.value=!P.value},get isOpen(){return P.value},subscribe(l){return i.add(l),()=>{i.delete(l)}}}}let ct=null;function xu(t){ct&&ct.shutdown();let e;t.container?e=typeof t.container=="string"?document.querySelector(t.container):t.container:(e=document.createElement("div"),e.id="jexity-chat-widget",document.body.appendChild(e));const n=mu(e,t,()=>{t.container||e.remove(),ct===n&&(ct=null)});return ct=n,n}function he(t,e){return t.getAttribute(e)??void 0}async function yo(){const t=document.currentScript??document.querySelector("script[data-org-slug]")??document.querySelector("script[data-org-id]");if(!t)return;const e=t.getAttribute("data-org-slug")??t.getAttribute("data-org-id")??"default-org",n=t.getAttribute("data-proj-slug")??void 0,r=he(t,"data-convex-url")??"https://festive-mouse-978.eu-west-1.convex.cloud"??"",i=_n(r),o=await kn(e,i,n);if(!o.ok){const l=window.location.origin,a=n?`project '${e}/${n}'`:`org '${e}'`;o.error==="unauthorized"?console.warn(`[JexityChat] This domain is not authorized for ${a}. Add '${l}' under Allowed Domains in your Jexity dashboard.`):o.error==="not_found"?console.warn(`[JexityChat] No active widget config found for ${a}. Check that the org slug is correct and the widget is enabled.`):o.error==="rate_limited"?console.warn(`[JexityChat] Bootstrap rate-limited for ${a}. Retry after ${o.retryAfterSec??60}s.`):console.warn(`[JexityChat] Bootstrap failed (network error). Check that the Convex deployment is reachable at ${i}.`);return}if(o.allowedUrls.length>0&&!o.allowedUrls.some(l=>jn(window.location.href,l))){const l=n?`project '${e}/${n}'`:`org '${e}'`;console.warn(`[JexityChat] Widget hidden for ${l} — current page does not match path rule. Allowed: ${o.allowedUrls.join(", ")}`);return}const s={orgSlug:e,projSlug:n,bootstrapToken:o.token,allowedUrls:o.allowedUrls,excludePaths:o.excludePaths,position:he(t,"data-position")??void 0,theme:he(t,"data-theme")??void 0,greeting:he(t,"data-greeting"),title:he(t,"data-title"),primaryColor:he(t,"data-primary-color"),locale:he(t,"data-locale"),convexUrl:he(t,"data-convex-url")};window.JexityChat=xu(s)}document.readyState==="complete"?yo():window.addEventListener("load",yo)})();
|
|
67
|
+
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${Ce(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let r=this.parser.parseInline(n),i=Eo(t);if(i===null)return r;t=i;let o='<a href="'+t+'"';return e&&(o+=' title="'+Ce(e)+'"'),o+=">"+r+"</a>",o}image({href:t,title:e,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Eo(t);if(i===null)return Ce(n);t=i;let o=`<img src="${t}" alt="${Ce(n)}"`;return e&&(o+=` title="${Ce(e)}"`),o+=">",o}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:Ce(t.text)}},pr=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},be=class yr{options;renderer;textRenderer;constructor(e){this.options=e||We,this.options.renderer=this.options.renderer||new hn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new pr}static parse(e,n){return new yr(n).parse(e)}static parseInline(e,n){return new yr(n).parseInline(e)}parse(e){this.renderer.parser=this;let n="";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=i,l=this.options.extensions.renderers[a.type].call({parser:this},a);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(a.type)){n+=l||"";continue}}let o=i;switch(o.type){case"space":{n+=this.renderer.space(o);break}case"hr":{n+=this.renderer.hr(o);break}case"heading":{n+=this.renderer.heading(o);break}case"code":{n+=this.renderer.code(o);break}case"table":{n+=this.renderer.table(o);break}case"blockquote":{n+=this.renderer.blockquote(o);break}case"list":{n+=this.renderer.list(o);break}case"checkbox":{n+=this.renderer.checkbox(o);break}case"html":{n+=this.renderer.html(o);break}case"def":{n+=this.renderer.def(o);break}case"paragraph":{n+=this.renderer.paragraph(o);break}case"text":{n+=this.renderer.text(o);break}default:{let a='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return n}parseInline(e,n=this.renderer){this.renderer.parser=this;let r="";for(let i=0;i<e.length;i++){let o=e[i];if(this.options.extensions?.renderers?.[o.type]){let l=this.options.extensions.renderers[o.type].call({parser:this},o);if(l!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(o.type)){r+=l||"";continue}}let a=o;switch(a.type){case"escape":{r+=n.text(a);break}case"html":{r+=n.html(a);break}case"link":{r+=n.link(a);break}case"image":{r+=n.image(a);break}case"checkbox":{r+=n.checkbox(a);break}case"strong":{r+=n.strong(a);break}case"em":{r+=n.em(a);break}case"codespan":{r+=n.codespan(a);break}case"br":{r+=n.br(a);break}case"del":{r+=n.del(a);break}case"text":{r+=n.text(a);break}default:{let l='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return r}},Lt=class{options;block;constructor(t){this.options=t||We}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?xe.lex:xe.lexInline}provideParser(){return this.block?be.parse:be.parseInline}},lu=class{defaults=or();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=be;Renderer=hn;TextRenderer=pr;Lexer=xe;Tokenizer=dn;Hooks=Lt;constructor(...t){this.use(...t)}walkTokens(t,e){let n=[];for(let r of t)switch(n=n.concat(e.call(this,r)),r.type){case"table":{let i=r;for(let o of i.header)n=n.concat(this.walkTokens(o.tokens,e));for(let o of i.rows)for(let a of o)n=n.concat(this.walkTokens(a.tokens,e));break}case"list":{let i=r;n=n.concat(this.walkTokens(i.items,e));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(o=>{let a=i[o].flat(1/0);n=n.concat(this.walkTokens(a,e))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let o=e.renderers[i.name];o?e.renderers[i.name]=function(...a){let l=i.renderer.apply(this,a);return l===!1&&(l=o.apply(this,a)),l}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=e[i.level];o?o.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),r.extensions=e),n.renderer){let i=this.defaults.renderer||new hn(this.defaults);for(let o in n.renderer){if(!(o in i))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let a=o,l=n.renderer[a],c=i[a];i[a]=(...u)=>{let h=l.apply(i,u);return h===!1&&(h=c.apply(i,u)),h||""}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new dn(this.defaults);for(let o in n.tokenizer){if(!(o in i))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let a=o,l=n.tokenizer[a],c=i[a];i[a]=(...u)=>{let h=l.apply(i,u);return h===!1&&(h=c.apply(i,u)),h}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new Lt;for(let o in n.hooks){if(!(o in i))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let a=o,l=n.hooks[a],c=i[a];Lt.passThroughHooks.has(o)?i[a]=u=>{if(this.defaults.async&&Lt.passThroughHooksRespectAsync.has(o))return(async()=>{let d=await l.call(i,u);return c.call(i,d)})();let h=l.call(i,u);return c.call(i,h)}:i[a]=(...u)=>{if(this.defaults.async)return(async()=>{let d=await l.apply(i,u);return d===!1&&(d=await c.apply(i,u)),d})();let h=l.apply(i,u);return h===!1&&(h=c.apply(i,u)),h}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,o=n.walkTokens;r.walkTokens=function(a){let l=[];return l.push(o.call(this,a)),i&&(l=l.concat(i.call(this,a))),l}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return xe.lex(t,e??this.defaults)}parser(t,e){return be.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let r={...n},i={...this.defaults,...r},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=t),i.async)return(async()=>{let a=i.hooks?await i.hooks.preprocess(e):e,l=await(i.hooks?await i.hooks.provideLexer():t?xe.lex:xe.lexInline)(a,i),c=i.hooks?await i.hooks.processAllTokens(l):l;i.walkTokens&&await Promise.all(this.walkTokens(c,i.walkTokens));let u=await(i.hooks?await i.hooks.provideParser():t?be.parse:be.parseInline)(c,i);return i.hooks?await i.hooks.postprocess(u):u})().catch(o);try{i.hooks&&(e=i.hooks.preprocess(e));let a=(i.hooks?i.hooks.provideLexer():t?xe.lex:xe.lexInline)(e,i);i.hooks&&(a=i.hooks.processAllTokens(a)),i.walkTokens&&this.walkTokens(a,i.walkTokens);let l=(i.hooks?i.hooks.provideParser():t?be.parse:be.parseInline)(a,i);return i.hooks&&(l=i.hooks.postprocess(l)),l}catch(a){return o(a)}}}onError(t,e){return n=>{if(n.message+=`
|
|
68
|
+
Please report this to https://github.com/markedjs/marked.`,t){let r="<p>An error occurred:</p><pre>"+Ce(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},Ge=new lu;function I(t,e){return Ge.parse(t,e)}I.options=I.setOptions=function(t){return Ge.setOptions(t),I.defaults=Ge.defaults,vo(I.defaults),I},I.getDefaults=or,I.defaults=We,I.use=function(...t){return Ge.use(...t),I.defaults=Ge.defaults,vo(I.defaults),I},I.walkTokens=function(t,e){return Ge.walkTokens(t,e)},I.parseInline=Ge.parseInline,I.Parser=be,I.parser=be.parse,I.Renderer=hn,I.TextRenderer=pr,I.Lexer=xe,I.lexer=xe.lex,I.Tokenizer=dn,I.Hooks=Lt,I.parse=I,I.options,I.setOptions,I.use,I.walkTokens,I.parseInline,be.parse,xe.lex,I.setOptions({breaks:!0,gfm:!0});function cu({text:t}){const e=U(()=>{if(!t)return"";const n=I.parse(t);return typeof n=="string"?n:""},[t]);return s("div",{class:"jex-md",dangerouslySetInnerHTML:{__html:e}})}const ct=z("");function uu(t){if(!t)return;const e=t.trim().split(/\s+/)[0];if(!e)return;const n=`@${e} `,r=ct.value;r.includes(n)||r.includes(`@${e}`)||(ct.value=r.trimStart()?`${n}${r.trimStart()}`:n)}const zt=z(null),Mo=z(Date.now()),Ie=z([]),du=4,hu=8*1024*1024;function fu(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`att-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function pu(t){const e=Array.from(t).filter(i=>i.type.startsWith("image/")&&i.size<=hu);if(e.length===0)return;const n=du-Ie.value.length;if(n<=0)return;const r=e.slice(0,n).map(i=>({id:fu(),file:i,previewUrl:URL.createObjectURL(i)}));Ie.value=[...Ie.value,...r]}function gu(t){const e=Ie.value.find(n=>n.id===t);e&&URL.revokeObjectURL(e.previewUrl),Ie.value=Ie.value.filter(n=>n.id!==t)}function mu(){for(const t of Ie.value)URL.revokeObjectURL(t.previewUrl);Ie.value=[]}function No(t,e){const n={get(r,i){if(typeof i=="string"){const o=[...e,i];return No(t,o)}else if(i===Ii){if(e.length<1){const o=[t,...e].join(".");throw new Error(`API path is expected to be of the form \`${t}.childComponent.functionName\`. Found: \`${o}\``)}return"_reference/childComponent/"+e.join("/")}else return}};return new Proxy({},n)}const xu=()=>No("components",[]),se=Cs;xu();function bu({sessionId:t,visitorId:e,ensureSession:n}){const r=Ct(se.functions.chat.public.conversations.send);return async function(o){const a=t&&e?{sessionId:t,visitorId:e}:await n();if(a){ct.value="",mu();try{const l=await r({sessionId:a.sessionId,visitorId:a.visitorId,content:o});l.ok?Xn(a.visitorId):l.reason==="rate_limited"&&(zt.value=Date.now()+l.retryAfterMs)}catch(l){console.error("[jexity] Failed to send message:",l)}}}}function vu(){const t=zt.value,e=Mo.value;A(()=>{if(t===null)return;const i=setInterval(()=>{Mo.value=Date.now()},1e3),o=setTimeout(()=>{zt.value=null},Math.max(0,t-Date.now()));return()=>{clearInterval(i),clearTimeout(o)}},[t]);const n=t!==null,r=n?Math.max(0,Math.ceil((t-e)/1e3)):0;return{isActive:n,remainingSeconds:r}}function yu(){const t=k(),{isActive:e,remainingSeconds:n}=vu();return e?s("div",{class:"jex-rate-limit-notice",role:"status","aria-live":"polite",children:t.errorRateLimited.replace("{seconds}",String(n))}):null}const ut=z(null);function wu(){const t=k(),e=ut.value;if(e===null)return null;const n=e==="no-token"?t.errorSessionNoToken:e==="unauthorized"?t.errorSessionUnauthorized:e==="network"?t.errorNetwork:t.somethingWentWrong;return s("div",{class:"jex-session-error-notice",role:"alert","aria-live":"assertive",children:n})}function ku({size:t=18}){return s("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[s("path",{d:"M22 2 11 13"}),s("path",{d:"M22 2 15 22 11 13 2 9l20-7z"})]})}const Lo=132;function _u({onSend:t}){const e=qe(null),n=qe(null);A(()=>{const l=e.current;if(!l)return;l.style.height="0";const c=Math.min(l.scrollHeight,Lo);l.style.height=`${c}px`,l.style.overflowY=l.scrollHeight>Lo?"auto":"hidden"},[ct.value]);function r(l){l.key==="Enter"&&!l.shiftKey&&(l.preventDefault(),t())}function i(){n.current?.click()}function o(l){const c=l.currentTarget;c.files&&c.files.length>0&&pu(c.files),c.value=""}function a(l){const c=l.target;(c===l.currentTarget||!c.closest("button, textarea, img"))&&e.current?.focus()}return{textareaRef:e,fileInputRef:n,onKeyDown:r,onAttachClick:i,onFilesPicked:o,onCardClick:a}}function ju({isStreaming:t,disabled:e,inputDisabled:n,onSend:r,onFocus:i}){const o=k(),a=ct,l=Ie,{textareaRef:c,fileInputRef:u,onKeyDown:h,onAttachClick:d,onFilesPicked:f,onCardClick:p}=_u({onSend:r}),g=a.value.trim().length>0,b=l.value.length>0,v=(g||b)&&!e;return s("div",{class:"jex-composer-card",onClick:p,children:[b&&s("div",{class:"jex-composer-attachments",role:"list",children:l.value.map(x=>s("div",{class:"jex-attachment-chip",role:"listitem",children:[s("img",{src:x.previewUrl,alt:x.file.name,class:"jex-attachment-thumb"}),s("button",{type:"button",class:"jex-attachment-remove","aria-label":o.removeAttachmentAriaLabel,onClick:()=>{gu(x.id)},children:s("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},x.id))}),s("textarea",{ref:c,class:"jex-composer-textarea","aria-label":o.inputPlaceholder,placeholder:t?o.aiThinking:o.inputPlaceholder,value:a.value,rows:1,onInput:x=>{a.value=x.currentTarget.value},onKeyDown:h,onFocus:i,disabled:n}),s("div",{class:"jex-composer-actions",children:[s("div",{class:"jex-composer-actions-left",children:[s("input",{ref:u,class:"jex-visually-hidden",type:"file",accept:"image/*",multiple:!0,onChange:f,tabIndex:-1,"aria-hidden":"true"}),s("button",{type:"button",class:"jex-attach-btn","aria-label":o.attachComingSoon,title:o.attachComingSoon,disabled:!0,onClick:d,children:s("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:s("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})})})]}),s("button",{class:`jex-send-btn${v?" jex-send-btn-active":""}`,type:"button",onClick:r,"aria-label":o.sendAriaLabel,disabled:e||!g&&!b,children:s(ku,{size:16})})]})]})}function zo({variant:t,isOpen:e=!1,onAcknowledge:n}){const r=k(),i=It.value;return t==="explicit"?e?s("div",{class:"jex-privacy-explicit",role:"dialog","aria-label":r.privacyExplicitTitle,children:[s("div",{class:"jex-privacy-explicit-content",children:[s("div",{class:"jex-privacy-explicit-icon","aria-hidden":"true",children:s("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:s("path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"})})}),s("div",{class:"jex-privacy-explicit-copy",children:[s("div",{class:"jex-privacy-explicit-title",children:r.privacyExplicitTitle}),s("p",{class:"jex-privacy-explicit-body",children:[r.privacyExplicitBodyPre," ",s("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r.privacyPolicyLinkText}),"."]})]})]}),s("button",{type:"button",class:"jex-privacy-explicit-button",onClick:n,children:r.privacyExplicitButton})]}):null:s("p",{class:"jex-privacy-chip",children:[s("span",{class:"jex-privacy-chip-icon","aria-hidden":"true",children:s("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",children:s("path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"})})}),s("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-chip-link",children:r.privacyChipText})]})}function Su({sessionId:t,visitorId:e,isLoading:n,isStreaming:r,sessionStatus:i,ensureSession:o,onStartFresh:a}){const l=k(),c=ct,u=Xi.value,[h,d]=T({open:!1,acknowledged:!1}),f=bu({sessionId:t,visitorId:e,ensureSession:o}),p=zt.value!==null&&zt.value>Date.now(),g=n||r||p,b=u==="explicit"&&!h.acknowledged,v=u==="explicit"&&h.open;function x(){b&&d(N=>({...N,open:!0}))}function m(){d({open:!1,acknowledged:!0})}if(A(()=>{d({open:!1,acknowledged:!1})},[t]),i==="resolved")return s("div",{class:"jex-chat-input-resolved",children:[s("div",{class:"jex-resolved-notice",children:l.sessionResolved}),s("button",{class:"jex-resolved-new-btn",type:"button",onClick:()=>{a()},children:l.startNewConversation})]});async function S(){const N=c.value.trim();if(!(!N||g)){if(b){d(F=>({...F,open:!0}));return}await f(N)}}return s("div",{class:"jex-chat-input",children:[s(yu,{}),s(wu,{}),u==="chip"&&s(zo,{variant:"chip"}),s("div",{class:`jex-chat-input-composer-gate${v?" jex-chat-input-composer-gate-open":""}`,children:[s(ju,{isStreaming:r,disabled:g,inputDisabled:n||r||v,onSend:S,onFocus:x}),u==="explicit"&&s(zo,{variant:"explicit",isOpen:h.open,onAcknowledge:m})]})]})}function Cu(t){const e=t.trim().split(/\s+/).filter(Boolean);return e.length===0?"?":e.map(n=>n[0]).join("").slice(0,2).toUpperCase()}function dt({text:t,streaming:e,error:n,authorId:r,authorName:i,authorImage:o,botAvatarUrl:a}){const l=k(),c=!!r,[u,h]=T(!1),d=B(()=>h(!0),[]),f=l.replyTo.replace("{name}",i??""),p=["jex-message bot",n?"jex-message-error":""].filter(Boolean).join(" ");return s("div",{class:"jex-message-row bot",children:[s("div",{class:`jex-avatar ${c?"jex-avatar-agent":"jex-avatar-bot"}`,children:c&&o&&!u?s("img",{src:o,alt:i??"",class:"jex-avatar-img",onError:d}):c?s("span",{class:"jex-avatar-initials",children:Cu(i??"")}):a&&!u?s("img",{src:a,alt:"",class:"jex-avatar-img",onError:d}):s(ir,{size:14})}),s("div",{class:"jex-message-content",children:[s("div",{class:p,children:[s(cu,{text:t}),e&&s("span",{class:"jex-streaming-cursor"})]}),c&&i&&s("div",{class:"jex-message-author-row",children:[s("span",{class:"jex-message-author",children:i}),s("button",{type:"button",class:"jex-reply-tag-btn","aria-label":f,title:f,onClick:()=>{uu(i)},children:s(wc,{size:12})})]})]})]})}function Tu({text:t}){return s("div",{class:"jex-message user",children:t})}function Oo(){return Ct(se.functions.chat.public.helpdesk.submitEscalation)}function Ru({message:t,sessionId:e,visitorId:n}){const r=k();return t.formData?s("div",{class:"jex-inline-form-submitted",children:[s("span",{class:"jex-inline-form-check",children:"✓"}),s("div",{children:[s("div",{class:"jex-inline-form-submitted-title",children:r.escalationSubmitted}),s("div",{class:"jex-inline-form-submitted-detail",children:[t.formData.visitorName," · ",t.formData.visitorEmail]})]})]}):s("div",{class:"jex-message-row bot",children:s(Au,{messageId:t._id,sessionId:e,visitorId:n})})}function Au({messageId:t,sessionId:e,visitorId:n}){const r=k(),[i,o]=T(""),[a,l]=T(""),[c,u]=T(!1),h=It.value,d=/^https?:\/\//i.test(h)?h:$t,f=Oo();async function p(g){if(g.preventDefault(),!c){u(!0);try{await f({sessionId:e,visitorId:n,formMessageId:t,visitorName:i.trim(),visitorEmail:a.trim(),locale:Se.value})}catch(b){console.error("[FormMessage] Submit failed:",b),u(!1)}}}return s("div",{class:"jex-inline-form",children:[s("div",{class:"jex-inline-form-title",children:r.escalationFormTitle}),s("form",{class:"jex-form",onSubmit:g=>{p(g)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:r.escalationNameLabel,value:i,required:!0,disabled:c,onInput:g=>{o(g.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:r.escalationEmailLabel,value:a,required:!0,disabled:c,onInput:g=>{l(g.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",disabled:c,children:c?r.escalationSubmitting:r.escalationSubmit})]}),s("div",{class:"jex-inline-form-consent",children:[r.escalationConsent," ",s("a",{href:d,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r.escalationPrivacyLinkText}),"."]})]})}function $u(){return Ct(se.functions.magicline.public.submitForm)}function Iu(){return Tt(se.functions.magicline.actions.getTrialConfig)}function Eu(){return Tt(se.functions.magicline.actions.listTrialSlots)}function Pu(){return Tt(se.functions.magicline.actions.getRateBundles)}function qu(){return Tt(se.functions.magicline.actions.getContractPreview)}function Mu(){return Tt(se.functions.magicline.actions.submitContractCreation)}const gr={en:Yn,de:no},Nu=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Bo(t){return Nu.test(t.trim())}function Lu(t,e=new Date){const n=t.trim();if(n==="")return null;const r=n.split("-");if(r.length!==3)return null;const i=Number(r[0]),o=Number(r[1]),a=Number(r[2]);if(!Number.isInteger(i)||!Number.isInteger(o)||!Number.isInteger(a)||o<1||o>12||a<1||a>31)return null;let l=e.getFullYear()-i;const c=e.getMonth()+1-o;return(c<0||c===0&&e.getDate()<a)&&(l-=1),l}function Fo(t=new Date){const e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${n}-${r}`}function Do(){const t=It.value;return/^https?:\/\//i.test(t)?t:$t}const zu={DE:22,AT:20,CH:21,GB:22,FR:27,NL:18,BE:16,ES:24,IT:27,PL:28,SE:24,NO:15,DK:18,FI:18,PT:25},Ou=15,Bu=34;function Uo(t){return t.replace(/\s+/g,"").toUpperCase()}function Fu(t){const e=Uo(t),n=e.slice(0,2),r=zu[n];if(r!==void 0){if(e.length!==r)return!1}else if(e.length<Ou||e.length>Bu)return!1;const i=e.slice(4)+e.slice(0,4);let o="";for(const l of i){const c=l.charCodeAt(0);if(c>=65&&c<=90)o+=String(c-55);else if(c>=48&&c<=57)o+=l;else return!1}let a=0;for(let l=0;l<o.length;l+=9){const c=String(a)+o.slice(l,l+9);a=Number(c)%97}return a===1}function Du(t){const e=Uo(t);if(e.length<=8)return e;const n=e.slice(0,4),r=e.slice(-4);return(n+"•".repeat(e.length-8)+r).replace(/(.{4})/g,"$1 ").trim()}function Ee(t,e,n){const r=n==="de"?"de-DE":"en-GB";try{return new Intl.NumberFormat(r,{style:"currency",currency:e}).format(t)}catch{return`${t.toFixed(2)} ${e}`}}function fn(t,e,n){const r=t!==1,o={DAY:{en:["day","days"],de:["Tag","Tage"]},WEEK:{en:["week","weeks"],de:["Woche","Wochen"]},MONTH:{en:["month","months"],de:["Monat","Monate"]},YEAR:{en:["year","years"],de:["Jahr","Jahre"]}}[e.toUpperCase()];if(!o)return`${t} ${e.toLowerCase()}`;const[a,l]=o[n];return`${t} ${r?l:a}`}function Uu(t,e){const n=t.trim();if(n==="")return"—";const r=e==="de"?"de-DE":"en-GB",i=new Date(n);return Number.isNaN(i.getTime())?t:i.toLocaleDateString(r,{day:"2-digit",month:"long",year:"numeric"})}function mr(t,e,n){const r=gr[n],i=e.toUpperCase();if(t===1)return{DAY:r.magiclineFreqPerDay,WEEK:r.magiclineFreqPerWeek,MONTH:r.magiclineFreqPerMonth,YEAR:r.magiclineFreqPerYear}[i]??e.toLowerCase();const a={DAY:r.magiclineFreqEveryDays,WEEK:r.magiclineFreqEveryWeeks,MONTH:r.magiclineFreqEveryMonths,YEAR:r.magiclineFreqEveryYears}[i];return a===void 0?`${t} ${e.toLowerCase()}`:a.replace("{n}",String(t))}function Qu(t,e,n,r,i){const o=gr[i],a=Ee(t,e,i);switch(n){case"TERM_BASED":return`${a} ${o.magiclineModulePerTerm}`;case"RECURRING":return`${a} ${mr(1,r??"MONTH",i)}`;case"NON_RECURRING":return`${a} ${o.magiclineModuleOneTime}`;case"MONTH_DAY":return`${a} ${o.magiclineModuleOneTime}`;case"FREE":return o.magiclineModuleIncluded;default:return a}}const Vu={startpaket:"magiclineFeeStarterPackage","starter package":"magiclineFeeStarterPackage",trainerpauschale:"magiclineFeeTrainerFee"};function Qo(t,e){const n=t.trim().toLowerCase(),r=Vu[n];return r!==void 0?e[r]:t}function Hu(t,e,n){const r=gr[n];if(t==="NONE")return r.magiclineRenewalNone;if(t==="TERM_EXTENSION"&&e!==null){const i=fn(e.value,e.unit,n);return r.magiclineRenewalTerm.replace("{n} {unit}",i)}return""}const Vo=["MALE","FEMALE","UNISEX"],Wu=[{code:"DE",label:"Germany / Deutschland"},{code:"AT",label:"Austria / Österreich"},{code:"CH",label:"Switzerland / Schweiz"},{code:"LI",label:"Liechtenstein"},{code:"LU",label:"Luxembourg / Luxemburg"},{code:"NL",label:"Netherlands / Niederlande"},{code:"BE",label:"Belgium / Belgien"},{code:"FR",label:"France / Frankreich"},{code:"IT",label:"Italy / Italien"},{code:"ES",label:"Spain / Spanien"},{code:"PL",label:"Poland / Polen"},{code:"CZ",label:"Czechia / Tschechien"},{code:"DK",label:"Denmark / Dänemark"},{code:"GB",label:"United Kingdom"},{code:"US",label:"United States"}];function Ku(t,e){const n=[];return e&&n.push("trainer"),n.push("slot"),n.push("personal"),(t.address.visible||t.zip.visible)&&n.push("address"),n.push("confirm"),n}const Gu={firstName:"",lastName:"",email:"",phone:"",birthDate:"",gender:"",street:"",houseNumber:"",zip:"",city:"",country:"",note:"",slotId:"",consent:!1,trainerRequired:!0};function Ju(t,e){switch(e.type){case"set":return{...t,[e.key]:e.value};case"setTrainer":return{...t,trainerRequired:e.trainerRequired,slotId:""};case"clearSlotIfAbsent":return t.slotId!==""&&!e.available.includes(t.slotId)?{...t,slotId:""}:t;default:return t}}function Yu({sessionId:t,visitorId:e}){const n=Iu(),r=Eu(),[i,o]=de(Ju,Gu),[a,l]=de((x,m)=>m,{phase:"loading"}),[c,u]=de((x,m)=>m,{phase:"loading"}),[h,d]=de(x=>x+1,0),f=B((x,m)=>{o({type:"set",key:x,value:m})},[]),p=B(x=>{o({type:"setTrainer",trainerRequired:x}),d()},[]),g=B(()=>{d()},[]);A(()=>{let x=!1;return(async()=>{try{const m=await n({sessionId:t,visitorId:e});if(x)return;m.status==="ok"?l({phase:"ready",config:{plan:m.plan,minimumAge:m.minimumAge,bookingWithoutTrainerAllowed:m.bookingWithoutTrainerAllowed,studioZoneId:m.studioZoneId}}):l({phase:"error",code:m.status,backendMessage:m.message})}catch{x||l({phase:"error",code:"unavailable",backendMessage:""})}})(),()=>{x=!0}},[n,t,e]);const b=a.phase==="ready",{trainerRequired:v}=i;return A(()=>{if(!b)return;let x=!1;return u({phase:"loading"}),(async()=>{try{const m=await r({sessionId:t,visitorId:e,trainerRequired:v});if(x)return;m.status==="ok"?m.slots.length>0?(u({phase:"ready",slots:m.slots}),o({type:"clearSlotIfAbsent",available:m.slots.map(S=>S.startDateTime)})):u({phase:"empty"}):u({phase:"error"})}catch{x||u({phase:"error"})}})(),()=>{x=!0}},[b,r,t,e,v,h]),{fields:i,setField:f,setTrainerRequired:p,configState:a,slotsState:c,refetchSlots:g}}function Zu({formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r=!1,retryPending:i=!1}){const o=k(),a=$u(),{fields:l,setField:c,setTrainerRequired:u,configState:h,slotsState:d,refetchSlots:f}=Yu({sessionId:e,visitorId:n});return h.phase==="loading"?s("div",{class:"jex-inline-form jex-magicline-form",children:[s("div",{class:"jex-inline-form-title",children:o.magiclineTrialTitle}),s("div",{class:"jex-magicline-slots-hint",children:o.magiclineConfigLoading})]}):h.phase==="error"?s("div",{class:"jex-inline-form jex-magicline-form",children:[s("div",{class:"jex-inline-form-title",children:o.magiclineTrialTitle}),s("div",{class:"jex-magicline-slots-hint",role:"alert",children:ad(h.code,h.backendMessage,o)})]}):s(Xu,{formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r,retryPending:i,config:h.config,fields:l,setField:c,setTrainerRequired:u,slotsState:d,refetchSlots:f,submitForm:a})}function Xu({formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r,retryPending:i,config:o,fields:a,setField:l,setTrainerRequired:c,slotsState:u,refetchSlots:h,submitForm:d}){const f=k(),{plan:p,minimumAge:g,bookingWithoutTrainerAllowed:b,studioZoneId:v}=o,x=U(()=>Ku(p,b),[p,b]),m=r?Math.max(x.indexOf("slot"),0):0,[S,N]=T(m),[F,O]=T({}),[G,ve]=T(!1),[le,ce]=T(null),D=U(()=>Do(),[]),J=Math.min(S,x.length-1),ie=x[J],pe=J===x.length-1,Je=J===0;function H(E){const y={};if(E==="slot")return a.slotId===""&&(y.slotId=f.magiclineSlotRequiredError),y;if(E==="personal"){if(a.firstName.trim()===""&&(y.firstName=f.magiclineRequiredError),a.lastName.trim()===""&&(y.lastName=f.magiclineRequiredError),p.email.visible&&p.email.required&&a.email.trim()===""&&(y.email=f.magiclineRequiredError),a.email.trim()!==""&&!Bo(a.email)&&(y.email=f.magiclineEmailError),p.phone.visible&&p.phone.required&&a.phone.trim()===""&&(y.phone=f.magiclineRequiredError),p.gender.visible&&p.gender.required&&a.gender===""&&(y.gender=f.magiclineRequiredError),p.dateOfBirth.visible&&(p.dateOfBirth.required&&a.birthDate.trim()===""&&(y.birthDate=f.magiclineRequiredError),a.birthDate.trim()!=="")){const ee=Lu(a.birthDate);ee!==null&&ee<0?y.birthDate=f.magiclineRequiredError:g>0&&ee!==null&&ee<g&&(y.birthDate=f.magiclineMinAgeError.replace("{age}",String(g)))}return y}return E==="address"?(p.address.visible&&p.address.required&&(a.street.trim()===""&&(y.street=f.magiclineRequiredError),a.houseNumber.trim()===""&&(y.houseNumber=f.magiclineRequiredError),a.city.trim()===""&&(y.city=f.magiclineRequiredError),a.country===""&&(y.country=f.magiclineRequiredError)),p.zip.visible&&p.zip.required&&a.zip.trim()===""&&(y.zip=f.magiclineRequiredError),y):(E==="confirm"&&(a.consent||(y.consent=f.magiclineConsentError)),y)}function ge(){const E=H(ie);if(Object.keys(E).length>0){O(E);return}O({}),N(y=>Math.min(y+1,x.length-1))}function Y(){O({}),ce(null),N(E=>Math.max(E-1,0))}async function Oe(){if(G)return;const E=H("confirm");if(Object.keys(E).length>0){O(E);return}O({}),ce(null),ve(!0);try{const y=sd(p,a);await d({sessionId:e,visitorId:n,formMessageId:t,action:"trialSessionBooking",fields:y})}catch(y){console.error("[TrialSessionBookingForm] Submit failed:",y),ce(f.magiclineFailedDetail),ve(!1)}}function _(){pe?Oe():ge()}const j=od(ie,f),Re=`jex-ml-consent-${t}`;return s("div",{class:"jex-inline-form jex-magicline-form",children:[s("div",{class:"jex-magicline-wizard-header",children:[s("div",{class:"jex-inline-form-title",children:f.magiclineTrialTitle}),s("div",{class:"jex-magicline-wizard-progress",children:[s("span",{class:"jex-magicline-wizard-step-label",children:j}),s("span",{class:"jex-magicline-wizard-counter",children:f.magiclineStepCounter.replace("{n}",String(J+1)).replace("{total}",String(x.length))})]}),s("div",{class:"jex-magicline-wizard-dots","aria-hidden":"true",children:x.map((E,y)=>s("span",{class:y===J?"jex-magicline-wizard-dot jex-magicline-wizard-dot-active":"jex-magicline-wizard-dot"},E))})]}),s("div",{class:"jex-form",role:"group","aria-label":j,children:[ie==="trainer"?s(ed,{formMessageId:t,trainerRequired:a.trainerRequired,disabled:G,onChange:c}):null,ie==="slot"?s(td,{slotsState:u,slotId:a.slotId,studioZoneId:v,disabled:G,retryPending:i,slotUnavailable:r,error:F.slotId,onSelect:E=>{l("slotId",E)},onRetry:h}):null,ie==="personal"?s(nd,{plan:p,fields:a,errors:F,disabled:G,setField:l}):null,ie==="address"?s(rd,{plan:p,fields:a,errors:F,disabled:G,setField:l}):null,ie==="confirm"?s(id,{consentId:Re,privacyUrl:D,studioZoneId:v,fields:a,disabled:G,consentError:F.consent,setField:l}):null,le!==null?s("div",{class:"jex-magicline-error",role:"alert",children:le}):null,s("div",{class:"jex-magicline-wizard-nav",children:[Je?null:s("button",{type:"button",class:"jex-magicline-wizard-back",disabled:G,onClick:Y,children:f.magiclineWizardBack}),s("button",{type:"button",class:"jex-form-submit jex-magicline-wizard-next",disabled:G,onClick:_,children:pe?G?f.magiclineSubmitting:f.magiclineSubmit:f.magiclineWizardNext})]})]})]})}function ed({formMessageId:t,trainerRequired:e,disabled:n,onChange:r}){const i=k(),o=`jex-ml-trainer-${t}`;return s("div",{class:"jex-magicline-radio-group",role:"radiogroup","aria-label":i.magiclineStepTrainer,children:[s("label",{class:e?"jex-magicline-radio-card jex-magicline-radio-card-active":"jex-magicline-radio-card",children:[s("input",{type:"radio",name:o,checked:e,disabled:n,onChange:()=>{r(!0)}}),s("span",{children:i.magiclineTrainerWith})]}),s("label",{class:e?"jex-magicline-radio-card":"jex-magicline-radio-card jex-magicline-radio-card-active",children:[s("input",{type:"radio",name:o,checked:!e,disabled:n,onChange:()=>{r(!1)}}),s("span",{children:i.magiclineTrainerWithout})]})]})}function td({slotsState:t,slotId:e,studioZoneId:n,disabled:r,retryPending:i,slotUnavailable:o,error:a,onSelect:l,onRetry:c}){const u=k();return s(q,{children:[o?s("div",{class:"jex-magicline-error",role:"alert",children:u.magiclineSlotUnavailableNotice}):null,i||t.phase==="loading"?s("div",{class:"jex-magicline-slots-hint","aria-live":"polite",children:u.magiclineLoadingSlots}):t.phase==="ready"?s("select",{class:"jex-form-input jex-magicline-select","aria-label":u.magiclineSlotLabel,value:e,required:!0,disabled:r,"aria-invalid":a!==void 0,onChange:h=>{l(h.currentTarget.value)},children:[s("option",{value:"",disabled:!0,children:u.magiclineSlotPlaceholder}),t.slots.map(h=>s("option",{value:h.startDateTime,children:Wo(h.startDateTime,Se.value,n)},h.startDateTime))]}):t.phase==="error"?s("div",{class:"jex-magicline-slots-error",children:[s("div",{class:"jex-magicline-slots-hint",role:"alert","aria-live":"polite",children:u.magiclineSlotsError}),s("button",{type:"button",class:"jex-magicline-retry",disabled:r,onClick:c,children:u.magiclineRetry})]}):s("div",{class:"jex-magicline-slots-hint",role:"alert","aria-live":"polite",children:u.magiclineNoSlots}),a!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:a}):null]})}function nd({plan:t,fields:e,errors:n,disabled:r,setField:i}){const o=k(),a=U(()=>Fo(),[]);return s(q,{children:[s("div",{class:"jex-magicline-row",children:[s(Le,{label:o.magiclineFirstName,value:e.firstName,required:!0,disabled:r,error:n.firstName,fieldKey:"firstName",onInput:l=>{i("firstName",l)}}),s(Le,{label:o.magiclineLastName,value:e.lastName,required:!0,disabled:r,error:n.lastName,fieldKey:"lastName",onInput:l=>{i("lastName",l)}})]}),t.email.visible?s(Le,{label:fe(o.magiclineEmail,t.email.required,o),type:"email",value:e.email,required:t.email.required,disabled:r,error:n.email,fieldKey:"email",onInput:l=>{i("email",l)}}):null,t.phone.visible?s(Le,{label:fe(o.magiclinePhone,t.phone.required,o),type:"tel",value:e.phone,required:t.phone.required,disabled:r,error:n.phone,fieldKey:"phone",onInput:l=>{i("phone",l)}}):null,t.dateOfBirth.visible?s("label",{class:"jex-magicline-field",children:[s("span",{class:"jex-magicline-field-label",children:fe(o.magiclineBirthDate,t.dateOfBirth.required,o)}),s("input",{class:"jex-form-input",type:"date","aria-label":fe(o.magiclineBirthDate,t.dateOfBirth.required,o),value:e.birthDate,max:a,required:t.dateOfBirth.required,disabled:r,"aria-invalid":n.birthDate!==void 0,onInput:l=>{i("birthDate",l.currentTarget.value)}}),n.birthDate!==void 0?s("span",{class:"jex-magicline-error",role:"alert",children:n.birthDate}):null]}):null,t.gender.visible?s(Ho,{label:fe(o.magiclineGender,t.gender.required,o),value:e.gender,required:t.gender.required,disabled:r,placeholder:fe(o.magiclineGenderPlaceholder,t.gender.required,o),error:n.gender,onChange:l=>{i("gender",l)},options:Vo.map(l=>({value:l,label:ld(l,o)}))}):null]})}function rd({plan:t,fields:e,errors:n,disabled:r,setField:i}){const o=k();return s(q,{children:[t.address.visible?s(q,{children:[s("div",{class:"jex-magicline-row",children:[s(Le,{label:fe(o.magiclineStreet,t.address.required,o),value:e.street,required:t.address.required,disabled:r,error:n.street,fieldKey:"street",onInput:a=>{i("street",a)}}),s(Le,{label:fe(o.magiclineHouseNumber,t.address.required,o),value:e.houseNumber,required:t.address.required,disabled:r,error:n.houseNumber,fieldKey:"houseNumber",onInput:a=>{i("houseNumber",a)}})]}),s(Le,{label:fe(o.magiclineCity,t.address.required,o),value:e.city,required:t.address.required,disabled:r,error:n.city,fieldKey:"city",onInput:a=>{i("city",a)}}),s(Ho,{label:fe(o.magiclineCountry,t.address.required,o),value:e.country,required:t.address.required,disabled:r,placeholder:fe(o.magiclineCountryPlaceholder,t.address.required,o),error:n.country,onChange:a=>{i("country",a)},options:Wu.map(a=>({value:a.code,label:a.label}))})]}):null,t.zip.visible?s(Le,{label:fe(o.magiclineZip,t.zip.required,o),value:e.zip,required:t.zip.required,disabled:r,error:n.zip,fieldKey:"zip",onInput:a=>{i("zip",a)}}):null]})}function id({consentId:t,privacyUrl:e,studioZoneId:n,fields:r,disabled:i,consentError:o,setField:a}){const l=k(),c=r.slotId!==""?Wo(r.slotId,Se.value,n):"—",u=`${r.firstName} ${r.lastName}`.trim();return s(q,{children:[s("dl",{class:"jex-magicline-summary",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:l.magiclineSummaryTrainer}),s("dd",{children:r.trainerRequired?l.magiclineTrainerWith:l.magiclineTrainerWithout})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:l.magiclineSummarySlot}),s("dd",{children:c})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:l.magiclineSummaryName}),s("dd",{children:u!==""?u:"—"})]})]}),s("textarea",{class:"jex-form-textarea","aria-label":l.magiclineNote,placeholder:l.magiclineNote,value:r.note,disabled:i,onInput:h=>{a("note",h.currentTarget.value)}}),s("label",{class:"jex-magicline-consent",for:t,children:[s("input",{id:t,type:"checkbox",checked:r.consent,disabled:i,"aria-invalid":o!==void 0,onChange:h=>{a("consent",h.currentTarget.checked)}}),s("span",{children:[l.magiclineConsent," ",s("a",{href:e,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:l.magiclinePrivacyLinkText}),"."]})]}),o!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:o}):null]})}function Le({label:t,value:e,fieldKey:n,type:r="text",required:i=!1,disabled:o,error:a,onInput:l}){const c=a!==void 0?`jex-ml-err-${n}`:void 0;return s("div",{class:"jex-magicline-field",children:[s("input",{class:"jex-form-input",type:r,"aria-label":t,placeholder:t,value:e,required:i,disabled:o,"aria-invalid":a!==void 0,"aria-describedby":c,onInput:u=>{l(u.currentTarget.value)}}),a!==void 0?s("span",{id:c,class:"jex-magicline-error",role:"alert",children:a}):null]})}function Ho({label:t,value:e,required:n,disabled:r,placeholder:i,error:o,options:a,onChange:l}){return s("div",{class:"jex-magicline-field",children:[s("select",{class:"jex-form-input jex-magicline-select","aria-label":t,value:e,required:n,disabled:r,"aria-invalid":o!==void 0,onChange:c=>{l(c.currentTarget.value)},children:[s("option",{value:"",disabled:n,children:i}),a.map(c=>s("option",{value:c.value,children:c.label},c.value))]}),o!==void 0?s("span",{class:"jex-magicline-error",role:"alert",children:o}):null]})}function fe(t,e,n){return e?t:t+n.magiclineOptionalSuffix}function od(t,e){switch(t){case"trainer":return e.magiclineStepTrainer;case"slot":return e.magiclineStepSlot;case"personal":return e.magiclineStepPersonal;case"address":return e.magiclineStepAddress;case"confirm":return e.magiclineStepConfirm;default:return""}}function ad(t,e,n){return e.trim()!==""?e:t==="unsupported"?n.magiclineConfigUnsupported:t==="inconsistent"?n.magiclineConfigInconsistent:n.magiclineConfigUnavailable}function sd(t,e){const n={firstname:e.firstName.trim(),lastname:e.lastName.trim(),slotId:e.slotId,trainerRequired:e.trainerRequired,privacyConsent:e.consent};return t.email.visible&&e.email.trim()!==""&&(n.email=e.email.trim()),t.phone.visible&&e.phone.trim()!==""&&(n.phone=e.phone.trim()),t.dateOfBirth.visible&&e.birthDate.trim()!==""&&(n.dateOfBirth=e.birthDate.trim()),t.gender.visible&&e.gender!==""&&(n.gender=e.gender),t.address.visible&&(e.street.trim()!==""&&(n.street=e.street.trim()),e.houseNumber.trim()!==""&&(n.houseNumber=e.houseNumber.trim()),e.city.trim()!==""&&(n.city=e.city.trim()),e.country!==""&&(n.country=e.country)),t.zip.visible&&e.zip.trim()!==""&&(n.zip=e.zip.trim()),e.note.trim()!==""&&(n.note=e.note.trim()),n}function ld(t,e){return t==="MALE"?e.magiclineGenderMale:t==="FEMALE"?e.magiclineGenderFemale:e.magiclineGenderUnisex}function Wo(t,e,n){const r=e==="de"?"de-DE":"en-GB",i=t.match(/\[([^\]]+)\]\s*$/),o=i?i[1]:n??void 0,a=t.replace(/\[[^\]]+\]\s*$/,""),l=new Date(a);if(Number.isNaN(l.getTime()))return t;try{return l.toLocaleString(r,{weekday:"short",day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",...o?{timeZone:o,timeZoneName:"short"}:{timeZoneName:"short"}})}catch{return l.toLocaleString(r,{weekday:"short",day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",timeZoneName:"short"})}}const cd={termId:null,selectedModuleIds:[],acknowledgedBlocks:{},personal:{firstName:"",lastName:"",email:"",dateOfBirth:"",gender:"",phone:""},address:{street:"",houseNumber:"",zipCode:"",city:""},payment:{accountHolder:"",accountHolderTouched:!1,iban:""},consents:{privacy:!1,sepa:!1}};function ud(t,e){switch(e.type){case"setTermId":return t.termId===e.termId?t:{...t,termId:e.termId,selectedModuleIds:[],acknowledgedBlocks:{}};case"toggleModule":{if(e.selected)return t.selectedModuleIds.includes(e.moduleId)?t:{...t,selectedModuleIds:[...t.selectedModuleIds,e.moduleId]};const n={...t.acknowledgedBlocks};return e.consentAckKey!==void 0&&delete n[e.consentAckKey],{...t,selectedModuleIds:t.selectedModuleIds.filter(r=>r!==e.moduleId),acknowledgedBlocks:n}}case"setBlockAck":return{...t,acknowledgedBlocks:{...t.acknowledgedBlocks,[e.ackKey]:e.value}};case"setPersonal":return{...t,personal:{...t.personal,[e.key]:e.value}};case"setAddress":return{...t,address:{...t.address,[e.key]:e.value}};case"setAccountHolder":return{...t,payment:{...t.payment,accountHolder:e.value,accountHolderTouched:!0}};case"setIban":return{...t,payment:{...t.payment,iban:e.value}};case"setConsent":return{...t,consents:{...t.consents,[e.key]:e.value}};case"clearIban":return{...t,payment:{...t.payment,iban:""}};case"clearTermId":return{...t,termId:null,selectedModuleIds:[],acknowledgedBlocks:{}};case"prefillAccountHolder":return t.payment.accountHolderTouched||t.payment.accountHolder!==""?t:{...t,payment:{...t.payment,accountHolder:e.value}};default:return t}}function dd({sessionId:t,visitorId:e}){const n=Pu(),r=qu(),[i,o]=de(ud,cd),[a,l]=de((_,j)=>j,{phase:"loading"}),[c,u]=de((_,j)=>j,{phase:"idle"}),[h,d]=de(_=>_+1,0),[f,p]=de(_=>_+1,0),g=B(_=>{o({type:"setTermId",termId:_})},[]),b=B((_,j)=>{o({type:"setPersonal",key:_,value:j})},[]),v=B((_,j)=>{o({type:"setAddress",key:_,value:j})},[]),x=B((_,j,Re)=>{o({type:"toggleModule",moduleId:_,selected:j,consentAckKey:Re})},[]),m=B((_,j)=>{o({type:"setBlockAck",ackKey:_,value:j})},[]),S=B(_=>{o({type:"setAccountHolder",value:_})},[]),N=B(_=>{o({type:"setIban",value:_})},[]),F=B((_,j)=>{o({type:"setConsent",key:_,value:j})},[]),O=B(()=>{o({type:"clearIban"})},[]),G=B(()=>{o({type:"clearTermId"})},[]),ve=B(()=>{d()},[]),le=B(()=>{u({phase:"idle"})},[]),ce=B(()=>{p()},[]),D=a.phase==="ready"&&i.termId!==null?a.terms.find(_=>_.termId===i.termId)??null:null,{selectedModuleIds:J,acknowledgedBlocks:ie}=i,pe=U(()=>{if(D===null)return[];const _=new Set;for(const j of D.textBlocks)j.isConfirmationRequired&&_.add(j.ackKey);for(const j of J){const Re=D.optionalModules.find(E=>E.id===j);Re?.consent&&_.add(Re.consent.ackKey)}return[..._]},[D,J]),Je=U(()=>pe.every(_=>ie[_]===!0),[pe,ie]),{firstName:H,lastName:ge}=i.personal,{accountHolder:Y,accountHolderTouched:Oe}=i.payment;return A(()=>{Oe||Y!==""||H.trim()!==""&&ge.trim()!==""&&o({type:"prefillAccountHolder",value:`${H.trim()} ${ge.trim()}`})},[H,ge,Y,Oe]),A(()=>{let _=!1;return l({phase:"loading"}),(async()=>{try{const j=await n({sessionId:t,visitorId:e});if(_)return;j.status==="ok"?j.terms.length>0?l({phase:"ready",terms:j.terms}):l({phase:"empty"}):l({phase:"error"})}catch{_||l({phase:"error"})}})(),()=>{_=!0}},[n,t,e,h]),A(()=>{if(f===0)return;const _=D;if(!_){u({phase:"error",code:"offer_unavailable"});return}let j=!1;u({phase:"loading"});const Re=_.defaultContractStartDate??"",E={sessionId:t,visitorId:e,termId:_.termId,startDate:Re,fields:{firstname:i.personal.firstName.trim(),lastname:i.personal.lastName.trim(),email:i.personal.email.trim(),dateOfBirth:i.personal.dateOfBirth.trim(),gender:i.personal.gender,phone:i.personal.phone.trim(),street:i.address.street.trim(),houseNumber:i.address.houseNumber.trim(),zipCode:i.address.zipCode.trim(),city:i.address.city.trim()},selectedModuleIds:_.optionalModules.filter(y=>i.selectedModuleIds.includes(y.id)).map(y=>y.id),privacyConsent:i.consents.privacy,sepaConsent:i.consents.sepa};return(async()=>{try{const y=await r(E);if(j)return;y.status==="ok"?u({phase:"ready",pricing:{basePrice:y.basePrice,preUseCharge:y.preUseCharge,currencyCode:y.currencyCode,flatFees:y.flatFees,modules:y.modules,contractVolume:y.contractVolume,startDate:y.startDate,paymentFrequency:y.paymentFrequency,fingerprint:y.pricingFingerprint}}):u({phase:"error",code:y.status})}catch{j||u({phase:"error",code:"unavailable"})}})(),()=>{j=!0}},[f,r,t,e]),{fields:i,offersState:a,previewState:c,selectedTerm:D,requiredAckKeys:pe,allAcknowledged:Je,setTermId:g,setPersonal:b,setAddress:v,toggleModule:x,setBlockAck:m,setAccountHolder:S,setIban:N,setConsent:F,clearIban:O,clearTermId:G,refetchOffers:ve,fetchPreview:ce,resetPreview:le}}function hd(t){return t!==null&&t.optionalModules.length>0?["offer","upgrades","personal","address","payment","review"]:["offer","personal","address","payment","review"]}function fd({formMessageId:t,sessionId:e,visitorId:n,projectId:r,formStatus:i}){const o=k(),a=Se.value,l=Mu(),c=dd({sessionId:e,visitorId:n}),{fields:u,offersState:h,previewState:d,selectedTerm:f,requiredAckKeys:p,allAcknowledged:g,setTermId:b,setPersonal:v,setAddress:x,toggleModule:m,setBlockAck:S,setAccountHolder:N,setIban:F,setConsent:O,clearIban:G,clearTermId:ve,refetchOffers:le,fetchPreview:ce,resetPreview:D}=c,[J,ie]=T(0),[pe,Je]=T({}),[H,ge]=T(!1),[Y,Oe]=T(null),[_,j]=T(null),Re=U(()=>Do(),[]);if(Y!==null&&Y.status==="succeeded")return s(Ko,{customerNumber:Y.customerNumber});if(Y!==null&&Y.status==="failed"&&!Y.retryable){const P=Y.errorCode==="duplicate_submission"?o.magiclineDuplicateNotice:Y.errorCode==="unknown_outcome"?o.magiclineUnknownOutcome:Y.errorCode==="live_submission_disabled"?o.magiclineLiveSubmissionDisabled:o.magiclineFailedDetail;return s(Go,{message:P})}if(Y===null&&!H&&i==="submitted")return s(Ko,{customerNumber:null});if(Y===null&&!H&&i==="failed")return s(Go,{message:o.magiclineFailedDetail});const E=U(()=>hd(f),[f]),y=Math.min(J,E.length-1),ee=E[y],ia=y===E.length-1,eh=y===0;function th(P){const R={};if(P==="offer")return u.termId===null&&(R.termId=o.magiclineOfferRequiredError),R;if(P==="upgrades"){if(f!==null)for(const oe of u.selectedModuleIds){const aa=f.optionalModules.find(ch=>ch.id===oe);if(aa?.consent&&u.acknowledgedBlocks[aa.consent.ackKey]!==!0){R.upgrades=o.magiclineUpgradeConsentError;break}}return R}if(P==="personal"){const oe=u.personal;return oe.firstName.trim()===""&&(R.firstName=o.magiclineRequiredError),oe.lastName.trim()===""&&(R.lastName=o.magiclineRequiredError),oe.email.trim()===""?R.email=o.magiclineRequiredError:Bo(oe.email)||(R.email=o.magiclineEmailError),oe.dateOfBirth.trim()===""&&(R.dateOfBirth=o.magiclineRequiredError),oe.gender===""&&(R.gender=o.magiclineRequiredError),oe.phone.trim()===""&&(R.phone=o.magiclineRequiredError),R}if(P==="address"){const oe=u.address;return oe.street.trim()===""&&(R.street=o.magiclineRequiredError),oe.houseNumber.trim()===""&&(R.houseNumber=o.magiclineRequiredError),oe.zipCode.trim()===""&&(R.zipCode=o.magiclineRequiredError),oe.city.trim()===""&&(R.city=o.magiclineRequiredError),R}return P==="payment"&&(u.payment.accountHolder.trim()===""&&(R.accountHolder=o.magiclineRequiredError),Fu(u.payment.iban)||(R.iban=o.magiclineIbanInvalidError),u.consents.privacy||(R.privacy=o.magiclineConsentError),u.consents.sepa||(R.sepa=o.magiclineConsentError)),R}function nh(){const P=th(ee);if(Object.keys(P).length>0){Je(P);return}Je({}),j(null);const R=Math.min(y+1,E.length-1);E[R]==="review"&&ce(),ie(R)}function rh(){Je({}),j(null),ee==="review"&&D(),ie(P=>Math.max(P-1,0))}function ih(){j(null),ce()}async function oh(){if(!H&&!(d.phase!=="ready"||f===null)){if(!g){j(o.magiclineConfirmRequiredError);return}ge(!0),j(null);try{const P=await l({sessionId:e,visitorId:n,projectId:r,formMessageId:t,fields:{firstname:u.personal.firstName.trim(),lastname:u.personal.lastName.trim(),email:u.personal.email.trim(),phone:u.personal.phone.trim(),dateOfBirth:u.personal.dateOfBirth.trim(),gender:u.personal.gender,street:u.address.street.trim(),houseNumber:u.address.houseNumber.trim(),zipCode:u.address.zipCode.trim(),city:u.address.city.trim(),rateBundleTermId:f.termId,privacyConsent:u.consents.privacy,sepaConsent:u.consents.sepa},bankAccount:{accountHolder:u.payment.accountHolder.trim(),iban:u.payment.iban},selectedModuleIds:f.optionalModules.filter(R=>u.selectedModuleIds.includes(R.id)).map(R=>R.id),acknowledgedAckKeys:p,pricingFingerprint:d.pricing.fingerprint});if(P.status==="succeeded"){Oe(P);return}if(P.errorCode==="price_changed"){j(o.magiclinePriceChangedNotice),ce(),ge(!1);return}if(P.errorCode==="offer_unavailable"){ve(),le(),D(),j(o.magiclineOfferUnavailableNotice),ie(0),ge(!1);return}if(P.errorCode==="confirmation_required"){j(o.magiclineConfirmationRequiredNotice),ge(!1);return}if(P.errorCode==="live_submission_disabled"){Oe(P);return}if(!P.retryable){Oe(P);return}G(),j(P.message!==""?P.message:o.magiclineFailedDetail),ge(!1)}catch(P){console.error("[ContractCreationForm] Submit failed:",P),G(),j(o.magiclineFailedDetail),ge(!1)}}}function ah(){ia?oh():nh()}const oa=Cd(ee,o),sh=ee==="review"&&(d.phase!=="ready"||!g),lh=H||sh;return s("div",{class:"jex-inline-form jex-magicline-form",children:[s("div",{class:"jex-magicline-wizard-header",children:[s("div",{class:"jex-inline-form-title",children:o.magiclineContractTitle}),s("div",{class:"jex-magicline-wizard-progress",children:[s("span",{class:"jex-magicline-wizard-step-label",children:oa}),s("span",{class:"jex-magicline-wizard-counter",children:o.magiclineStepCounter.replace("{n}",String(y+1)).replace("{total}",String(E.length))})]}),s("div",{class:"jex-magicline-wizard-dots","aria-hidden":"true",children:E.map((P,R)=>s("span",{class:R===y?"jex-magicline-wizard-dot jex-magicline-wizard-dot-active":"jex-magicline-wizard-dot"},P))})]}),s("div",{class:"jex-form",role:"group","aria-label":oa,children:[ee==="offer"?s(pd,{offersState:h,selectedTermId:u.termId,widgetLocale:a,disabled:H,error:pe.termId,onSelect:b,onRetry:le}):null,ee==="upgrades"&&f!==null?s(xd,{modules:f.optionalModules,selectedModuleIds:u.selectedModuleIds,acknowledgedBlocks:u.acknowledgedBlocks,widgetLocale:a,disabled:H,error:pe.upgrades,onToggle:m,onAck:S}):null,ee==="personal"?s(vd,{personal:u.personal,errors:pe,disabled:H,setPersonal:v}):null,ee==="address"?s(yd,{address:u.address,errors:pe,disabled:H,setAddress:x}):null,ee==="payment"?s(wd,{formMessageId:t,fields:u,errors:pe,privacyUrl:Re,disabled:H,setAccountHolder:N,setIban:F,setConsent:O}):null,ee==="review"?s(kd,{fields:u,term:f,previewState:d,widgetLocale:a,disabled:H,acknowledgedBlocks:u.acknowledgedBlocks,onToggleAck:S,onRetry:ih}):null,_!==null?s("div",{class:"jex-magicline-error",role:"alert",children:_}):null,s("div",{class:"jex-magicline-wizard-nav",children:[eh?null:s("button",{type:"button",class:"jex-magicline-wizard-back",disabled:H,onClick:rh,children:o.magiclineWizardBack}),s("button",{type:"button",class:"jex-form-submit jex-magicline-wizard-next",disabled:lh,onClick:ah,children:ia?H?o.magiclineSubmitting:o.magiclineSubmit:o.magiclineWizardNext})]})]})]})}function Ko({customerNumber:t}){const e=k();return s("div",{class:"jex-inline-form-submitted",children:[s("span",{class:"jex-inline-form-check",children:"✓"}),s("div",{children:[s("div",{class:"jex-inline-form-submitted-title",children:e.magiclineSubmitted}),s("div",{class:"jex-inline-form-submitted-detail",children:e.magiclineContractSubmitted}),t!==null&&t!==""?s("div",{class:"jex-inline-form-submitted-detail",children:e.magiclineCustomerNumber.replace("{number}",t)}):null]})]})}function Go({message:t}){const e=k();return s("div",{class:"jex-inline-form-submitted jex-magicline-failed",children:[s("span",{class:"jex-inline-form-check jex-magicline-failed-icon",children:"!"}),s("div",{children:[s("div",{class:"jex-inline-form-submitted-title",children:e.magiclineFailed}),s("div",{class:"jex-inline-form-submitted-detail",children:t})]})]})}function pd({offersState:t,selectedTermId:e,widgetLocale:n,disabled:r,error:i,onSelect:o,onRetry:a}){const l=k();if(t.phase==="loading")return s("div",{class:"jex-magicline-slots-hint","aria-live":"polite",children:l.magiclineOffersLoading});if(t.phase==="error")return s("div",{class:"jex-magicline-slots-error",children:[s("div",{class:"jex-magicline-slots-hint",role:"alert","aria-live":"polite",children:l.magiclineOffersError}),s("button",{type:"button",class:"jex-magicline-retry",disabled:r,onClick:a,children:l.magiclineRetry})]});if(t.phase==="empty")return s("div",{class:"jex-magicline-slots-hint",role:"alert","aria-live":"polite",children:l.magiclineNoOffers});const c=Sd(t.terms);return s(q,{children:[s("div",{class:"jex-magicline-radio-group",role:"radiogroup","aria-label":l.magiclineStepOffer,children:c.map(u=>s("div",{class:"jex-magicline-offer-group",children:[s("div",{class:"jex-magicline-offer-bundle-name",children:u.bundleName}),u.bundleDescription!==null?s("div",{class:"jex-magicline-offer-bundle-desc",children:u.bundleDescription}):null,u.terms.map(h=>s(gd,{term:h,checked:e===h.termId,widgetLocale:n,disabled:r,onSelect:o},h.termId)),s(md,{subDescription:u.bundleSubDescription,footnote:u.footnote})]},u.bundleId))}),i!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:i}):null]})}function gd({term:t,checked:e,widgetLocale:n,disabled:r,onSelect:i}){const o=k(),a=fn(t.termValue,t.termUnit,n),l=Ee(t.price,t.currencyCode,n),c=t.flatFees.find(h=>h.isStarterPackage),u=t.flatFees.filter(h=>!h.isStarterPackage);return s("label",{class:e?"jex-magicline-radio-card jex-magicline-radio-card-active":"jex-magicline-radio-card",children:[s("input",{type:"radio",name:"jex-ml-offer",checked:e,disabled:r,onChange:()=>{i(t.termId)}}),s("span",{class:"jex-magicline-offer-term",children:[s("span",{class:"jex-magicline-offer-term-head",children:[s("span",{class:"jex-magicline-offer-term-length",children:a}),s("span",{class:"jex-magicline-offer-term-price",children:[l," ",mr(t.paymentFrequency.value,t.paymentFrequency.unit,n)]})]}),t.cancellationPeriod!==null?s("span",{class:"jex-magicline-offer-term-note",children:[o.magiclineCancellationPeriod,":"," ",fn(t.cancellationPeriod.value,t.cancellationPeriod.unit,n)]}):null,c!==void 0?s("span",{class:"jex-magicline-offer-term-note",children:[o.magiclineStarterPackage,":"," ",Ee(c.price,t.currencyCode,n)]}):null,u.map(h=>s("span",{class:"jex-magicline-offer-term-note",children:[Qo(h.name,o),": ",Ee(h.price,t.currencyCode,n)]},h.name)),t.includedModuleNames.length>0?s("span",{class:"jex-magicline-offer-term-note",children:[o.magiclineIncludedModules,": ",t.includedModuleNames.join(", ")]}):null]})]})}function md({subDescription:t,footnote:e}){const n=k(),r=jd(t),i=e!==null&&e.trim()!=="";return r.length===0&&!i?null:s("details",{class:"jex-magicline-bundle-details",children:[s("summary",{class:"jex-magicline-bundle-details-summary",children:n.magiclineDetails}),s("div",{class:"jex-magicline-bundle-details-body",children:[r.length>0?s("ul",{class:"jex-magicline-bundle-details-list",children:r.map((o,a)=>s("li",{children:o},`${a}-${o}`))}):null,i?s("p",{class:"jex-magicline-bundle-details-footnote",children:e}):null]})]})}function xd({modules:t,selectedModuleIds:e,acknowledgedBlocks:n,widgetLocale:r,disabled:i,error:o,onToggle:a,onAck:l}){const c=k();return t.length===0?s("div",{class:"jex-magicline-slots-hint",children:c.magiclineUpgradesNone}):s(q,{children:[s("div",{class:"jex-magicline-slots-hint",children:c.magiclineUpgradesIntro}),s("div",{class:"jex-magicline-upgrade-group",children:t.map(u=>s(bd,{module:u,selected:e.includes(u.id),consentChecked:u.consent!==null&&n[u.consent.ackKey]===!0,widgetLocale:r,disabled:i,onToggle:a,onAck:l},u.id))}),o!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:o}):null]})}function bd({module:t,selected:e,consentChecked:n,widgetLocale:r,disabled:i,onToggle:o,onAck:a}){const l=k(),c=Qu(t.price,t.currencyCode,t.paymentFrequencyType,t.recurringUnit,r),u=Hu(t.extensionType,t.termExtension,r),h=t.termLabel!==null&&t.termLabel!==""?t.termLabel:l.magiclineUpgradeOneTime,d=t.consent;return s("div",{class:e?"jex-magicline-upgrade-card jex-magicline-upgrade-card-active":"jex-magicline-upgrade-card",children:[s("label",{class:"jex-magicline-upgrade-head",children:[s("input",{type:"checkbox",checked:e,disabled:i,onChange:f=>{o(t.id,f.currentTarget.checked,d?.ackKey)}}),s("span",{class:"jex-magicline-upgrade-info",children:[s("span",{class:"jex-magicline-upgrade-name",children:t.name}),t.description!==null&&t.description!==""?s("span",{class:"jex-magicline-upgrade-desc",children:t.description}):null,s("span",{class:"jex-magicline-upgrade-price",children:c}),s("span",{class:"jex-magicline-upgrade-desc",children:h}),u!==""?s("span",{class:"jex-magicline-upgrade-desc",children:u}):null]}),s("span",{class:"jex-magicline-upgrade-status",children:e?l.magiclineUpgradeAdded:l.magiclineUpgradeAdd})]}),e&&d!==null?s(Jo,{ackKey:d.ackKey,title:d.title,text:d.text,attachmentLabel:d.attachmentLabel,attachmentUrl:d.attachmentUrl,checked:n,disabled:i,onToggle:a,showRequiredPill:!0}):null]})}function vd({personal:t,errors:e,disabled:n,setPersonal:r}){const i=k(),o=U(()=>Fo(),[]);return s(q,{children:[s("div",{class:"jex-magicline-row",children:[s(Te,{label:i.magiclineFirstName,value:t.firstName,required:!0,disabled:n,error:e.firstName,fieldKey:"firstName",onInput:a=>{r("firstName",a)}}),s(Te,{label:i.magiclineLastName,value:t.lastName,required:!0,disabled:n,error:e.lastName,fieldKey:"lastName",onInput:a=>{r("lastName",a)}})]}),s(Te,{label:i.magiclineEmail,type:"email",value:t.email,required:!0,disabled:n,error:e.email,fieldKey:"email",onInput:a=>{r("email",a)}}),s("label",{class:"jex-magicline-field",children:[s("span",{class:"jex-magicline-field-label",children:i.magiclineBirthDate}),s("input",{class:"jex-form-input",type:"date","aria-label":i.magiclineBirthDate,value:t.dateOfBirth,max:o,required:!0,disabled:n,"aria-invalid":e.dateOfBirth!==void 0,onInput:a=>{r("dateOfBirth",a.currentTarget.value)}}),e.dateOfBirth!==void 0?s("span",{class:"jex-magicline-error",role:"alert",children:e.dateOfBirth}):null]}),s(_d,{label:i.magiclineGender,value:t.gender,required:!0,disabled:n,placeholder:i.magiclineGenderPlaceholder,error:e.gender,onChange:a=>{r("gender",a)},options:Vo.map(a=>({value:a,label:Td(a,i)}))}),s(Te,{label:i.magiclinePhone,type:"tel",value:t.phone,required:!0,disabled:n,error:e.phone,fieldKey:"phone",onInput:a=>{r("phone",a)}})]})}function yd({address:t,errors:e,disabled:n,setAddress:r}){const i=k();return s(q,{children:[s("div",{class:"jex-magicline-row",children:[s(Te,{label:i.magiclineStreet,value:t.street,required:!0,disabled:n,error:e.street,fieldKey:"street",onInput:o=>{r("street",o)}}),s(Te,{label:i.magiclineHouseNumber,value:t.houseNumber,required:!0,disabled:n,error:e.houseNumber,fieldKey:"houseNumber",onInput:o=>{r("houseNumber",o)}})]}),s("div",{class:"jex-magicline-row",children:[s(Te,{label:i.magiclineZip,value:t.zipCode,required:!0,disabled:n,error:e.zipCode,fieldKey:"zipCode",onInput:o=>{r("zipCode",o)}}),s(Te,{label:i.magiclineCity,value:t.city,required:!0,disabled:n,error:e.city,fieldKey:"city",onInput:o=>{r("city",o)}})]}),s("div",{class:"jex-magicline-field",children:[s("span",{class:"jex-magicline-field-label",children:i.magiclineCountry}),s("div",{class:"jex-magicline-static-value",children:i.magiclineCountryStatic})]})]})}function wd({formMessageId:t,fields:e,errors:n,privacyUrl:r,disabled:i,setAccountHolder:o,setIban:a,setConsent:l}){const c=k(),u=`jex-ml-privacy-${t}`,h=`jex-ml-sepa-${t}`;return s(q,{children:[s(Te,{label:c.magiclineAccountHolder,value:e.payment.accountHolder,required:!0,disabled:i,error:n.accountHolder,fieldKey:"accountHolder",onInput:o}),s(Te,{label:c.magiclineIban,value:e.payment.iban,required:!0,disabled:i,error:n.iban,fieldKey:"iban",onInput:a}),s("label",{class:"jex-magicline-consent",for:u,children:[s("input",{id:u,type:"checkbox",checked:e.consents.privacy,disabled:i,"aria-invalid":n.privacy!==void 0,onChange:d=>{l("privacy",d.currentTarget.checked)}}),s("span",{children:[c.magiclineConsent," ",s("a",{href:r,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:c.magiclinePrivacyLinkText}),"."]})]}),s("label",{class:"jex-magicline-consent",for:h,children:[s("input",{id:h,type:"checkbox",checked:e.consents.sepa,disabled:i,"aria-invalid":n.sepa!==void 0,onChange:d=>{l("sepa",d.currentTarget.checked)}}),s("span",{children:c.magiclineSepaConsent})]}),n.privacy!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:n.privacy}):null,n.sepa!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:n.sepa}):null]})}function kd({fields:t,term:e,previewState:n,widgetLocale:r,disabled:i,acknowledgedBlocks:o,onToggleAck:a,onRetry:l}){const c=k();if(n.phase==="loading"||n.phase==="idle")return s("div",{class:"jex-magicline-slots-hint","aria-live":"polite",children:c.magiclineReviewLoading});if(n.phase==="error")return s("div",{class:"jex-magicline-slots-error",children:[s("div",{class:"jex-magicline-slots-hint",role:"alert","aria-live":"polite",children:n.code==="offer_unavailable"?c.magiclineOfferUnavailableNotice:c.magiclineReviewError}),s("button",{type:"button",class:"jex-magicline-retry",disabled:i,onClick:l,children:c.magiclineRetry})]});const u=n.pricing,h=u.contractVolume,d=`${t.personal.firstName} ${t.personal.lastName}`.trim(),f=t.address,p=[`${f.street} ${f.houseNumber}`.trim(),`${f.zipCode} ${f.city}`.trim(),c.magiclineCountryStatic].filter(m=>m!=="").join(", "),g=e!==null?`${e.bundleName} · ${fn(e.termValue,e.termUnit,r)}`:"—",b=e!==null?e.textBlocks.filter(m=>m.isConfirmationRequired):[],v=e!==null?e.textBlocks.filter(m=>!m.isConfirmationRequired):[],x=e!==null?e.optionalModules.filter(m=>t.selectedModuleIds.includes(m.id)&&m.consent!==null).map(m=>({module:m,consent:m.consent})):[];return s(q,{children:[s("dl",{class:"jex-magicline-summary",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineReviewOffer}),s("dd",{children:g})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineReviewBasePrice}),s("dd",{children:[Ee(u.basePrice,u.currencyCode,r)," ",mr(u.paymentFrequency.value,u.paymentFrequency.unit,r)]})]}),u.flatFees.map((m,S)=>s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:Qo(m.name,c)}),s("dd",{children:Ee(m.price,u.currencyCode,r)})]},`${m.name}-${S}`)),u.preUseCharge>0?s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineReviewPreUseCharge}),s("dd",{children:Ee(u.preUseCharge,u.currencyCode,r)})]}):null]}),u.modules.length>0?s("dl",{class:"jex-magicline-summary jex-magicline-summary-section",children:[s("div",{class:"jex-magicline-summary-heading",children:c.magiclineReviewSelectedUpgrades}),u.modules.map((m,S)=>s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.name}),s("dd",{children:Ee(m.amount,m.currencyCode,r)})]},`${m.moduleId}-${S}`))]}):null,h!==null&&h.total!==null?s("dl",{class:"jex-magicline-summary jex-magicline-summary-section jex-magicline-summary-totals",children:s("div",{class:"jex-magicline-summary-row jex-magicline-summary-total-row",children:[s("dt",{children:c.magiclineReviewContractVolume}),s("dd",{children:Ee(h.total,u.currencyCode,r)})]})}):null,s("dl",{class:"jex-magicline-summary jex-magicline-summary-section",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineReviewStartsOn}),s("dd",{children:Uu(u.startDate,r)})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineSummaryName}),s("dd",{children:d!==""?d:"—"})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineSummaryAddress}),s("dd",{children:p})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:c.magiclineReviewPayment}),s("dd",{children:Du(t.payment.iban)})]})]}),x.length>0?s("div",{class:"jex-magicline-terms",role:"group","aria-label":c.magiclineReviewSelectedUpgrades,children:[s("div",{class:"jex-magicline-upgrades-recap-title",children:c.magiclineReviewSelectedUpgrades}),x.map(({module:m,consent:S})=>s(Yo,{title:S.title!==""?S.title:m.name,text:S.text,attachmentLabel:S.attachmentLabel,attachmentUrl:S.attachmentUrl},S.ackKey))]}):null,b.length>0||v.length>0?s("div",{class:"jex-magicline-terms",role:"group","aria-label":c.magiclineReviewTerms,children:[b.length>0?s("div",{class:"jex-magicline-terms-prompt",children:[c.magiclineConfirmPrompt,s("span",{class:"jex-magicline-required-pill",children:c.magiclineRequired})]}):null,b.map(m=>s(Jo,{ackKey:m.ackKey,title:m.title,text:m.text,attachmentLabel:m.attachmentLabel,attachmentUrl:m.attachmentUrl,checked:o[m.ackKey]===!0,disabled:i,onToggle:a},m.ackKey)),v.map((m,S)=>s(Yo,{title:m.title,text:m.text,attachmentLabel:m.attachmentLabel,attachmentUrl:m.attachmentUrl},`${m.title}-${S}`))]}):null]})}function Jo({ackKey:t,title:e,text:n,attachmentLabel:r,attachmentUrl:i,checked:o,disabled:a,onToggle:l,showRequiredPill:c=!1}){const u=k(),h=`jex-ml-ack-${t}`;return s("div",{class:"jex-magicline-consent-region",children:[c?s("span",{class:"jex-magicline-required-pill",children:u.magiclineRequired}):null,s("label",{class:"jex-magicline-consent",for:h,children:[s("input",{id:h,type:"checkbox",checked:o,disabled:a,onChange:d=>{l(t,d.currentTarget.checked)}}),s("span",{class:"jex-magicline-consent-body",children:[e!==""?s("span",{class:"jex-magicline-terms-title",children:e}):null,s("span",{class:"jex-magicline-terms-content",children:[n,i!==null?s(q,{children:[" ",s("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r!==null&&r!==""?r:i})]}):null]})]})]})]})}function Yo({title:t,text:e,attachmentLabel:n,attachmentUrl:r}){return s("div",{class:"jex-magicline-consent-recap",children:[t!==""?s("span",{class:"jex-magicline-terms-title",children:t}):null,s("span",{class:"jex-magicline-terms-content",children:[e,r!==null?s(q,{children:[" ",s("a",{href:r,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:n!==null&&n!==""?n:r})]}):null]})]})}function Te({label:t,value:e,fieldKey:n,type:r="text",required:i=!1,disabled:o,error:a,onInput:l}){const c=a!==void 0?`jex-ml-err-${n}`:void 0;return s("div",{class:"jex-magicline-field",children:[s("input",{class:"jex-form-input",type:r,"aria-label":t,placeholder:t,value:e,required:i,disabled:o,"aria-invalid":a!==void 0,"aria-describedby":c,onInput:u=>{l(u.currentTarget.value)}}),a!==void 0?s("span",{id:c,class:"jex-magicline-error",role:"alert",children:a}):null]})}function _d({label:t,value:e,required:n,disabled:r,placeholder:i,error:o,options:a,onChange:l}){return s("div",{class:"jex-magicline-field",children:[s("select",{class:"jex-form-input jex-magicline-select","aria-label":t,value:e,required:n,disabled:r,"aria-invalid":o!==void 0,onChange:c=>{l(c.currentTarget.value)},children:[s("option",{value:"",disabled:n,children:i}),a.map(c=>s("option",{value:c.value,children:c.label},c.value))]}),o!==void 0?s("span",{class:"jex-magicline-error",role:"alert",children:o}):null]})}function jd(t){return t===null?[]:t.split(`
|
|
69
|
+
`).map(e=>e.replace(/^\s*[-•]\s*/,"").trim()).filter(e=>e!=="")}function Sd(t){const e=[],n=new Map;for(const r of t){let i=n.get(r.bundleId);i||(i={bundleId:r.bundleId,bundleName:r.bundleName,bundleDescription:r.bundleDescription,bundleSubDescription:r.bundleSubDescription,footnote:r.footnote,terms:[]},n.set(r.bundleId,i),e.push(i)),i.terms.push(r)}return e}function Cd(t,e){switch(t){case"offer":return e.magiclineStepOffer;case"upgrades":return e.magiclineStepUpgrades;case"personal":return e.magiclineStepPersonal;case"address":return e.magiclineStepAddress;case"payment":return e.magiclineStepPayment;case"review":return e.magiclineStepReview;default:return""}}function Td(t,e){return t==="MALE"?e.magiclineGenderMale:t==="FEMALE"?e.magiclineGenderFemale:e.magiclineGenderUnisex}function Rd({message:t,sessionId:e,visitorId:n}){const r=k(),i=t.magiclineForm,o=!!i&&i.status==="open"&&!!i.submissionId,a=Fn(se.functions.magicline.public.getSubmissionStatus,o&&i?.submissionId?{sessionId:e,visitorId:n,submissionId:i.submissionId}:"skip");if(!i)return null;if(i.action==="contractCreation")return t.projectId?s(fd,{formMessageId:t._id,sessionId:e,visitorId:n,projectId:t.projectId,formStatus:i.status}):null;if(i.status==="submitted")return s("div",{class:"jex-inline-form-submitted",children:[s("span",{class:"jex-inline-form-check",children:"✓"}),s("div",{children:[s("div",{class:"jex-inline-form-submitted-title",children:r.magiclineSubmitted}),s("div",{class:"jex-inline-form-submitted-detail",children:r.magiclineSubmittedDetail})]})]});if(i.status==="failed")return s("div",{class:"jex-inline-form-submitted jex-magicline-failed",children:[s("span",{class:"jex-inline-form-check jex-magicline-failed-icon",children:"!"}),s("div",{children:[s("div",{class:"jex-inline-form-submitted-title",children:r.magiclineFailed}),s("div",{class:"jex-inline-form-submitted-detail",children:r.magiclineFailedDetail})]})]});if(i.action!=="trialSessionBooking")return null;const l=a!=null&&a.errorCode==="slot_unavailable",c=o&&a===void 0;return s(Zu,{formMessageId:t._id,sessionId:e,visitorId:n,slotUnavailable:l,retryPending:c})}const Ad={crawl:"🌐",file:"📄",snippet:"💡",qa:"❓"};function $d({sources:t}){const e=k(),[n,r]=T(!1);return t.length===0?null:s("div",{class:"jex-sources-row",children:[s("button",{type:"button",class:"jex-sources-toggle",onClick:()=>{r(i=>!i)},"aria-expanded":n,children:[s("span",{class:"jex-sources-icon",children:"📖"}),s("span",{children:(t.length===1?e.sourcesCountOne:e.sourcesCountOther).replace("{count}",String(t.length))}),s("span",{class:`jex-sources-chevron${n?" jex-sources-chevron--open":""}`,children:"▾"})]}),n?s("div",{class:"jex-sources-pills",children:t.map((i,o)=>{const a=i.sourceType==="crawl",l=Id(i),c=a&&i.url?`${i.title}
|
|
70
|
+
${i.url}`:i.title,u=s(q,{children:[typeof i.id=="number"?s("span",{class:"jex-source-id",children:i.id}):null,s("span",{class:"jex-source-type",children:Ad[i.sourceType]}),s("span",{class:"jex-source-label",children:l}),s("span",{class:"jex-source-score",children:["· ",i.score.toFixed(2)]})]});return a&&i.url?s("a",{class:"jex-source-pill",href:i.url,target:"_blank",rel:"noopener noreferrer",title:c,children:u},o):s("span",{class:"jex-source-pill",title:c,children:u},o)})}):null]})}function Id(t){if(t.sourceType==="crawl"&&t.url)try{const e=new URL(t.url);return!e.pathname||e.pathname==="/"?e.hostname:e.pathname}catch{}return t.title}function Ed(){return s("div",{class:"jex-typing",children:[s("span",{}),s("span",{}),s("span",{})]})}const Pd=/\s?\[\d+\]/g;function Zo(t){return t.replace(Pd,"")}function qd({conversations:t,greeting:e,sessionNotFound:n,resumeFailed:r,onStartFresh:i,sessionId:o,visitorId:a}){const l=k(),c=qe(null),[u,h]=T(null),d=qe(null);return A(()=>{if(!a||!t||t.length===0)return;const f=t[t.length-1];f.role==="assistant"&&f.status!=="streaming"&&f._id!==d.current&&(d.current=f._id,Xn(a))},[t,a]),A(()=>{c.current?.scrollIntoView({behavior:"smooth"})},[t?.length,t?.at(-1)?.content]),s("div",{class:"jex-chat-messages",children:[s(dt,{text:e}),n&&r&&i?s("div",{class:"jex-session-prompt",children:[s("div",{class:"jex-session-prompt-text",children:l.sessionNotFoundPrompt}),s("button",{class:"jex-session-prompt-btn",type:"button",onClick:()=>{i()},children:l.startNewConversation})]}):n?s("div",{class:"jex-session-notice",children:l.sessionNotFound}):null,t?.map(f=>{if(f.contentType==="human-notice"){const g=f.noticeKind==="agent-joined"?l.noticeAgentJoined.replace("{name}",f.noticeData?.agentName??""):f.noticeKind==="human-requested"?l.noticeHumanRequested:f.noticeKind==="human-requested-form"?l.noticeHumanRequestedForm:f.noticeKind==="message-received"?l.noticeMessageReceived:f.noticeKind==="agent-handling"?l.noticeAgentHandling:f.content;return s(dt,{text:g},f._id)}if(f.contentType==="escalation-form"&&o&&a)return Yl.value==="screen"&&!f.formData?u===f._id?null:s("div",{class:"jex-inline-form jex-inline-form-card",children:[s("div",{class:"jex-inline-form-title",children:l.escalationPromptTitle}),s("div",{class:"jex-inline-form-subtitle",children:l.escalationPromptSubtitle}),s("button",{class:"jex-form-submit",type:"button",onClick:()=>{He({id:"escalation-form",formMessageId:f._id,sessionId:o,visitorId:a})},children:l.escalationPromptSubmit}),s("button",{class:"jex-escalation-skip",type:"button",onClick:()=>{h(f._id)},children:l.escalationSkip})]},f._id):s(Ru,{message:f,sessionId:o,visitorId:a},f._id);if(f.contentType==="magicline-form"&&o&&a)return s(Rd,{message:f,sessionId:o,visitorId:a},f._id);if(f.contentType==="escalation-confirm"){const g=f.noticeKind==="escalation-confirmed"?l.noticeEscalationConfirmed.replace("{name}",f.noticeData?.visitorName??"").replace("{email}",f.noticeData?.visitorEmail??"").replace("{ref}",f.noticeData?.visitorId??""):f.content;return s(dt,{text:g},f._id)}if(f.role==="user")return s(Tu,{text:f.content},f._id);const p={authorId:f.authorId,authorName:f.authorName,authorImage:f.authorImage};return f.status==="streaming"&&f.content===""?s(Ed,{},f._id):f.status==="streaming"?s(dt,{text:Zo(f.content),streaming:!0,...p},f._id):f.status==="error"?s(dt,{text:f.errorMessage??`${l.somethingWentWrong}. ${l.tryAgain}.`,error:!0,...p},f._id):s("div",{children:[s(dt,{text:Zo(f.content),...p}),f.sources&&f.sources.length>0?s($d,{sources:f.sources}):null]},f._id)}),s("div",{ref:c})]})}function xr({message:t}){const[e,n]=T(!1);return A(()=>{const r=setTimeout(()=>{n(!0)},80);return()=>{clearTimeout(r)}},[]),e?s("div",{class:"jex-overlay jex-loading",children:[s("div",{class:"jex-loading-spinner","aria-hidden":"true"}),t&&s("p",{class:"jex-loading-message",children:t})]}):null}function Md({sessionId:t,visitorId:e}){const n=Fn(se.functions.chat.public.conversations.listBySession,t&&e?{sessionId:t,visitorId:e}:"skip"),r=Fn(se.functions.chat.public.sessions.getSessionStatus,t&&e?{sessionId:t,visitorId:e}:"skip"),i=t!==null&&n===void 0,o=n?.some(a=>a.status==="streaming")??!1;return{conversations:n,sessionStatus:r??null,isLoading:i,isStreaming:o}}function Nd({greeting:t,sessionId:e,visitorId:n,isLoading:r,sessionNotFound:i,resumeFailed:o,isOrgDeleted:a,ensureSession:l,startFresh:c}){const u=k(),{conversations:h,sessionStatus:d,isLoading:f,isStreaming:p}=Md({sessionId:e,visitorId:n}),g=qe((()=>{const x=Et.peek();return x!==null?x:so.peek()?"resume":"fresh"})()).current;if(A(()=>{Et.value=null},[]),A(()=>{l()},[l]),A(()=>{n&&Xn(n)},[n]),a)return s("div",{class:"jex-chat-messages",children:s("div",{class:"jex-session-notice",children:u.chatNoLongerAvailable})});const b=g==="fresh"&&!e,v=g==="resume"&&(!e||f);return b?s(xr,{message:u.startingConversation}):v?s(xr,{message:u.resumeConversation}):s(q,{children:[s(qd,{conversations:h,greeting:t,sessionNotFound:i,resumeFailed:o,onStartFresh:c,sessionId:e,visitorId:n}),s(Su,{sessionId:e,visitorId:n,isLoading:r,isStreaming:p,sessionStatus:d,ensureSession:l,onStartFresh:c})]})}function Ld({formMessageId:t,sessionId:e,visitorId:n}){const r=k(),i=It.value,o=/^https?:\/\//i.test(i)?i:$t,[a,l]=T(""),[c,u]=T(""),h=Oo(),[d,f]=T(!1),[p,g]=T(null);async function b(v){v.preventDefault(),f(!0),g(null);try{await h({sessionId:e,visitorId:n,formMessageId:t,visitorName:a.trim(),visitorEmail:c.trim(),locale:Se.value}),an()}catch(x){console.error("[EscalationFormScreen] Submit failed:",x),g(r.escalationSubmitFailed)}finally{f(!1)}}return s("div",{class:"jex-form-screen",children:[s("h2",{class:"jex-form-title",children:r.escalationFormTitle}),s("p",{class:"jex-escalation-subtitle",children:r.escalationSubtitle}),p&&s("div",{class:"jex-form-error",role:"alert",children:p}),s("form",{class:"jex-form",onSubmit:v=>{b(v)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:r.escalationNameLabel,value:a,required:!0,onInput:v=>{l(v.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:r.escalationEmailLabel,value:c,required:!0,onInput:v=>{u(v.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",disabled:d,children:r.escalationSubmit})]}),s("div",{class:"jex-inline-form-consent",style:{textAlign:"center",margin:"16px 0 8px 0"},children:[r.escalationConsent," ",s("a",{href:o,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r.escalationPrivacyLinkText}),"."]}),s("button",{class:"jex-escalation-skip",type:"button",onClick:()=>{an()},children:r.escalationSkip})]})}function zd(){return Ct(se.functions.chat.public.helpdesk.createEscalationRequest)}function Xo({sessionId:t,visitorId:e}){const n=k(),[r,i]=T(!1),[o,a]=T(null),l=zd();async function c(){if(!t||!e)return;const u=Ne.value;if(u){i(!0),a(null);try{const h=await l({sessionId:t,visitorId:e,bootstrapToken:u,locale:Se.value});if(h.skipForm)return;He({id:"escalation-form",formMessageId:h.formMessageId,sessionId:t,visitorId:e})}catch(h){const d=h instanceof Error?h.message:String(h);a(/RATE_LIMITED|Too many/.test(d)?n.handoffRateLimited:n.handoffFailed)}finally{i(!1)}}}return s(q,{children:[s("button",{class:"jex-header-handoff",type:"button",onClick:()=>{c()},disabled:r||!t||!e,"aria-label":n.talkToHumanAria,title:n.talkToHuman,children:s("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[s("path",{d:"M3 14v-3a9 9 0 0 1 18 0v3"}),s("path",{d:"M21 14a2 2 0 0 1-2 2h-1a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h3z"}),s("path",{d:"M3 14a2 2 0 0 0 2 2h1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H3z"}),s("path",{d:"M21 14v3a4 4 0 0 1-4 4h-3"})]})}),o&&s("div",{class:"jex-handoff-error",role:"alert",children:o})]})}async function Od(){const t=eo.value;if(!t)return console.warn("[JexityChat] Bootstrap refresh skipped — inputs missing"),{ok:!1,reason:"no-inputs"};const e=await Gn(t.orgSlug,t.siteUrl,t.projSlug);if(!e.ok)return console.warn("[JexityChat] Bootstrap refresh failed:",e.error),{ok:!1,reason:e.error};const n=e.token;return Ne.value=n,{ok:!0,token:n}}function ea(t){return ta(t)?"unauthorized":t instanceof Error&&/network|fetch|failed to fetch/i.test(t.message)?"network":"unknown"}function ta(t){return t instanceof Vt?t.data?.code==="UNAUTHORIZED_ORIGIN":!1}function Bd(t=1e4){return Ne.value?Promise.resolve(Ne.value):new Promise(e=>{let n=!1;const r=a=>{n||(n=!0,clearTimeout(i),o(),e(a))},i=setTimeout(()=>{r(null)},t),o=Ne.subscribe(a=>{a&&r(a)})})}function Fd(t,e){const n=qe(null),r=st(!1),i=st(!1),o=st(!1),a=st(null),l=Ct(se.functions.chat.public.sessions.createOrResume),c=async p=>{const g=await Bd();if(!g)return console.warn("[JexityChat] No bootstrap token after 10s — session creation blocked."),ut.value="no-token",null;const b=m=>({orgSlug:t,...e?{projSlug:e}:{},visitorId:p,bootstrapToken:m,locale:Se.value,...nn.value?{source:nn.value}:{}});tr.value=!0;let v;try{try{v=await l(b(g))}catch(m){if(!ta(m))throw m;const S=await Od();if(!S.ok)return ut.value=S.reason==="rate_limited"?"network":"unauthorized",null;v=await l(b(S.token))}}finally{tr.value=!1}ut.value=null,a.value=v.status;const x={sessionId:v.sessionId,visitorId:p};return n.current=x,{session:x,result:v}},u=B(async()=>{if(n.current)return n.current;if(o.value)return null;r.value=!0;const p=Ve.value!==null,g=Ve.value??lo();try{const b=await c(g);return b?(p&&b.result.isNew&&(i.value=!0,o.value=!0),b.session):null}catch(b){return console.error("[JexityChat] Failed to create session:",b),ut.value=ea(b),null}finally{r.value=!1}},[t,e,l,r,i,o]),h=B(()=>{n.current=null,i.value=!1,o.value=!1},[i,o]);A(()=>Xl(h),[h]);const d=B(async()=>{n.current=null,o.value=!1,i.value=!1;const p=lo();r.value=!0;try{return(await c(p))?.session??null}catch(g){return console.error("[JexityChat] Failed to create fresh session:",g),ut.value=ea(g),null}finally{r.value=!1}},[t,e,l,r,i,o,a]),f=n.current;return{sessionId:f?.sessionId??null,visitorId:f?.visitorId??null,isLoading:r.value,sessionNotFound:i.value,resumeFailed:o.value,sessionStatus:a.value,isOrgDeleted:a.value==="org_deleted",ensureSession:u,startFresh:d,resetSession:h}}function Dd(){const t=k(),[e,n]=T(""),[r,i]=T(""),[o,a]=T("");async function l(c){c.preventDefault(),er({id:"loading",message:t.submittingTicket}),await new Promise(h=>{setTimeout(h,1200)});const u="JEX-"+Math.random().toString(36).slice(2,8).toUpperCase();er({id:"confirmation",ref:u})}return s("div",{class:"jex-form-screen",children:[s("h2",{class:"jex-form-title",children:t.submitTicket}),s("form",{class:"jex-form",onSubmit:c=>{l(c)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:t.yourName,value:e,required:!0,onInput:c=>{n(c.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:t.yourEmail,value:r,required:!0,onInput:c=>{i(c.currentTarget.value)}}),s("textarea",{class:"jex-form-textarea",placeholder:t.howCanWeHelp,value:o,required:!0,onInput:c=>{a(c.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",children:t.submit})]})]})}function Ud({ticketRef:t}){const e=k();return s("div",{class:"jex-confirmation",children:[s("div",{class:"jex-confirmation-icon","aria-hidden":"true",children:"✓"}),s("h2",{class:"jex-confirmation-title",children:e.ticketSubmitted}),s("p",{class:"jex-confirmation-body",children:e.yourReferenceNumber}),s("div",{class:"jex-confirmation-ref",children:t}),s("p",{class:"jex-confirmation-hint",children:e.sentToEmailHint}),s("button",{class:"jex-confirmation-done",onClick:()=>{W.value=!1},children:e.done})]})}function Qd({message:t,onRetry:e,onBack:n}){const r=k();return s("div",{class:"jex-overlay jex-error",children:[s("p",{class:"jex-error-message",children:t}),s("div",{class:"jex-error-actions",children:[e&&s("button",{class:"jex-error-retry",onClick:e,children:r.tryAgain}),n&&s("button",{class:"jex-error-back",onClick:n,children:r.goBack})]})]})}function na({greeting:t,title:e,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}){const d=re.value,f=d[d.length-1],p=[...d].reverse().find(g=>g.id==="confirmation");return s("div",{class:"jex-screen-container",children:[f.id==="home"&&s(fc,{greeting:t,title:e,onStartFresh:u,onResetSession:h}),f.id==="selection"&&s(pc,{title:e}),f.id==="form"&&s(Dd,{}),f.id==="escalation-form"&&s(Ld,{formMessageId:f.formMessageId,sessionId:f.sessionId,visitorId:f.visitorId}),f.id==="confirmation"&&p&&s(Ud,{ticketRef:p.ref}),f.id==="chat"&&s(Nd,{greeting:t,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u}),f.id==="loading"&&s(xr,{message:f.message}),f.id==="error"&&s(Qd,{message:f.message,onRetry:()=>er({id:"loading"}),onBack:an})]})}function Vd({options:t}){return zl({orgSlug:t.orgSlug,projSlug:t.projSlug,preToken:t.bootstrapToken,convexUrl:t.convexUrl,preAllowedUrls:t.allowedUrls??[],preExcludedPaths:t.excludePaths}),Fl()?s(Hd,{options:t}):null}function Hd({options:t}){const e=Nl(t.orgSlug,t.projSlug,t.convexUrl);Hl(t.parentOrigin),A(()=>{Gl(),Jl()},[]);const{sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}=Fd(t.orgSlug,t.projSlug),d=Pl(t,e);A(()=>{Se.value=ro(d.locale)},[d.locale]),A(()=>{It.value=d.privacyPolicyUrl??$t,Xi.value=d.privacyNoticeStyle},[d.privacyNoticeStyle,d.privacyPolicyUrl]),A(()=>{if(!W.value||d.mode==="embedded"||!window.matchMedia("(max-width: 480px), (pointer: coarse) and (max-width: 768px)").matches)return;const O=document.documentElement.style.overflow;return document.documentElement.style.overflow="hidden",()=>{document.documentElement.style.overflow=O}},[W.value,d.mode]),A(()=>{if(d.mode!=="embedded")try{return nc()}catch(F){console.warn("[JexityChat] Idle-lock watcher failed to start:",F);return}},[d.mode]);const f=d.position==="bottom-left",p=d.colorScheme==="dark"||d.colorScheme==="light"?d.colorScheme:"",g=rc({...t,primaryColor:d.primaryColor,accentColor:d.accentColor,fontFamily:d.fontFamily,fontSize:d.fontSize,borderRadius:d.borderRadius,windowWidth:d.windowWidth,windowHeight:d.windowHeight}),b=d.mode==="embedded",v=re.value,m=v[v.length-1]?.id==="chat",N=e!==null||b||!!t.parentOrigin?g:{...g,visibility:"hidden"};return s("div",{class:`jex-widget ${p}`.trim(),style:N,children:b?s("div",{class:"jex-embedded",children:[s(po,{title:d.title,rightAction:m?s(Xo,{sessionId:n,visitorId:r}):null,showClose:!b}),s(na,{greeting:d.greeting,title:d.title,orgSlug:t.orgSlug,projSlug:t.projSlug,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}),!d.hideBranding&&s(go,{})]}):s("div",{class:`jex-container${f?" jex-pos-left":""}`,children:[W.value&&s("div",{class:"jex-chat-window",children:[s(po,{title:d.title,rightAction:m?s(Xo,{sessionId:n,visitorId:r}):null}),s(na,{greeting:d.greeting,title:d.title,orgSlug:t.orgSlug,projSlug:t.projSlug,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}),!d.hideBranding&&s(go,{})]}),s(hc,{iconOption:d.triggerIcon,radius:d.triggerRadius,label:d.triggerLabel})]})})}const Wd=`.jex-widget{--jex-primary: #115A62;--jex-primary-hover: var(--jex-accent, color-mix(in srgb, var(--jex-primary) 85%, #000));--jex-radius: .75rem;--jex-font-family: "Inter", system-ui, -apple-system, sans-serif;--jex-font-size: 14px;--jex-window-width: 380px;--jex-window-height: 600px;--jex-shadow: 0 16px 48px -12px rgba(13, 127, 138, .25), 0 4px 16px rgba(0, 0, 0, .08);pointer-events:auto;--jex-bg-trigger: var(--jex-primary);--jex-bg-header: var(--jex-primary);--jex-bg-msg-user: var(--jex-primary);--jex-bg-send-btn: var(--jex-primary);--jex-bg-window: rgba(255, 255, 255, .95);--jex-bg-msg-bot: #f1f5f9;--jex-bg-input: rgba(247, 253, 253, .6);--jex-text-header: #ffffff;--jex-text-msg-user: #ffffff;--jex-text-msg-bot: #0f172a;--jex-text-main: #0f172a;--jex-text-muted: #64748b;--jex-bg-avatar-agent: #d1fae5;--jex-text-avatar-agent: #065f46;--jex-border-window: rgba(226, 232, 240, .8);--jex-border-input: rgba(203, 213, 225, .8);--jex-bg-glass: var(--jex-bg-window);--jex-border-glass: var(--jex-border-window);font-family:var(--jex-font-family);-webkit-font-smoothing:antialiased}.dark .jex-widget,.jex-widget.dark{--jex-primary: #1cb0bf;--jex-primary-hover: var(--jex-accent, color-mix(in srgb, var(--jex-primary) 85%, #000));--jex-bg-window: rgba(10, 15, 26, .95);--jex-bg-msg-bot: #233146;--jex-bg-input: rgba(10, 15, 26, .6);--jex-text-msg-bot: #f8fafc;--jex-text-main: #f8fafc;--jex-text-muted: #94a3b8;--jex-border-window: rgba(30, 41, 59, .8);--jex-border-input: rgba(51, 65, 85, .9);--jex-bg-avatar-agent: #064e3b;--jex-text-avatar-agent: #6ee7b7;--jex-bg-error: #3b1318;--jex-border-error: #5c1d24;--jex-text-error: #fca5a5}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light){--jex-primary: #1cb0bf;--jex-primary-hover: var(--jex-accent, color-mix(in srgb, var(--jex-primary) 85%, #000));--jex-bg-window: rgba(10, 15, 26, .95);--jex-bg-msg-bot: #233146;--jex-bg-input: rgba(10, 15, 26, .6);--jex-text-msg-bot: #f8fafc;--jex-text-main: #f8fafc;--jex-text-muted: #94a3b8;--jex-border-window: rgba(30, 41, 59, .8);--jex-border-input: rgba(51, 65, 85, .9);--jex-bg-error: #3b1318;--jex-border-error: #5c1d24;--jex-text-error: #fca5a5}}.jex-widget *{box-sizing:border-box;margin:0;padding:0}.jex-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:16px;z-index:9999}.jex-container.jex-pos-left{right:auto;left:24px;align-items:flex-start}:host(.jex-mode-embedded){display:block;width:100%;height:100%}:host(.jex-mode-embedded) .jex-widget{width:100%;height:100%}.jex-embedded{display:flex;flex-direction:column;width:100%;height:100%;background:var(--jex-bg-window);border:1px solid var(--jex-border-window);overflow:hidden}.jex-embedded .jex-screen-container{flex:1;overflow:hidden;display:flex;flex-direction:column}.jex-floating-button{height:56px;min-width:56px;padding:0;background:var(--jex-bg-trigger);color:var(--jex-text-header);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--jex-shadow);transition:transform .3s cubic-bezier(.175,.885,.32,1.275),background .2s,width .3s ease,border-radius .3s ease}.jex-floating-button.jex-has-label{min-width:110px;padding:0 20px}.jex-fab-inner{display:flex;align-items:center;gap:12px}.jex-fab-label{font-size:15px;font-weight:600;white-space:nowrap}.jex-floating-button:hover{transform:scale(1.1);background:var(--jex-primary-hover)}.jex-floating-button:active{transform:scale(.95)}.jex-chat-window{width:var(--jex-window-width);height:var(--jex-window-height);max-height:calc(100vh - 120px);background:var(--jex-bg-window);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--jex-border-window);border-radius:calc(var(--jex-radius) * 2);box-shadow:var(--jex-shadow);display:flex;flex-direction:column;overflow:hidden;animation:jexSlideUp .4s cubic-bezier(.16,1,.3,1);transform-origin:bottom right;touch-action:manipulation}@keyframes jexSlideUp{0%{opacity:0;transform:scale(.8) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(max-width:480px),(pointer:coarse)and (max-width:768px){.jex-chat-window{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-height:none;border:none;border-radius:0;animation:jexSlideUpMobile .3s cubic-bezier(.16,1,.3,1);transform-origin:bottom center}.jex-container:has(.jex-chat-window) .jex-floating-button{display:none}}@keyframes jexSlideUpMobile{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.jex-chat-header{padding:20px;background:var(--jex-bg-header);color:var(--jex-text-header);display:flex;align-items:center;gap:12px;flex-shrink:0}.jex-header-info h3{font-size:16px;font-weight:600;color:var(--jex-text-header);margin:0}.jex-header-info p{font-size:12px;opacity:.8;color:var(--jex-text-header);margin:0}.jex-header-right{margin-left:auto;display:flex;align-items:center;gap:4px}.jex-header-handoff{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1px solid color-mix(in srgb,currentColor 50%,transparent);border-radius:999px;padding:0;color:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.jex-header-handoff:hover:not(:disabled){background:color-mix(in srgb,currentColor 12%,transparent);border-color:currentColor}.jex-header-handoff:disabled{opacity:.5;cursor:not-allowed}.jex-header-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:999px;padding:0;color:inherit;cursor:pointer;transition:background .15s ease}.jex-header-close:hover{background:color-mix(in srgb,currentColor 14%,transparent)}.jex-handoff-error{position:absolute;top:100%;right:8px;background:#fee;color:#b00;padding:4px 8px;font-size:12px;border-radius:4px}.jex-header-back{background:none;border:none;color:var(--jex-text-header);cursor:pointer;padding:4px;display:flex;align-items:center;opacity:.8;transition:opacity .2s;flex-shrink:0}.jex-header-back:hover{opacity:1}.jex-screen-container{flex:1;overflow:hidden;display:flex;flex-direction:column}.jex-home{flex:1;display:flex;flex-direction:column;padding:24px;gap:20px;overflow-y:auto}.jex-home-hero{display:flex;align-items:center;gap:14px;animation:jexFadeIn .4s ease both}.jex-home-avatar{position:relative;width:48px;height:48px;border-radius:14px;background:var(--jex-primary);color:var(--jex-text-header);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 12px color-mix(in srgb,var(--jex-primary) 30%,transparent)}.jex-home-status-dot{position:absolute;bottom:-2px;right:-2px;width:14px;height:14px;border-radius:50%;background:#22c55e;border:2.5px solid var(--jex-bg-window);animation:jexPulse 2s ease-in-out infinite}@keyframes jexPulse{0%,to{box-shadow:0 0 #22c55e66}50%{box-shadow:0 0 0 6px #22c55e00}}.jex-home-hero-text{display:flex;flex-direction:column;gap:2px;min-width:0}.jex-home-title{font-size:17px;font-weight:700;color:var(--jex-text-main);margin:0;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jex-home-status{font-size:12px;font-weight:500;color:#22c55e;letter-spacing:.02em}.jex-home-greeting{background:var(--jex-bg-msg-bot);border:1px solid var(--jex-border-window);border-radius:4px 16px 16px;padding:16px 18px;font-size:14px;line-height:1.55;color:var(--jex-text-main);animation:jexFadeIn .4s .1s ease both}.jex-home-greeting p{margin:0}@keyframes jexFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.jex-home-actions{display:flex;flex-direction:column;gap:10px;animation:jexFadeIn .4s .2s ease both}.jex-home-start-btn{background:var(--jex-bg-send-btn);color:var(--jex-text-header);border:none;border-radius:12px;padding:14px 20px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s,transform .15s,box-shadow .2s;width:100%;box-shadow:0 2px 8px color-mix(in srgb,var(--jex-primary) 25%,transparent)}.jex-home-start-btn:hover{background:var(--jex-primary-hover);transform:translateY(-1px);box-shadow:0 4px 16px color-mix(in srgb,var(--jex-primary) 35%,transparent)}.jex-home-start-btn:active{transform:translateY(0);box-shadow:0 1px 4px color-mix(in srgb,var(--jex-primary) 20%,transparent)}.jex-home-resume-card{display:flex;flex-direction:column;gap:8px;width:100%;text-align:left;padding:16px 18px;border-radius:14px;border:1.5px solid var(--jex-primary);background:color-mix(in srgb,var(--jex-primary) 6%,var(--jex-bg-window));cursor:pointer;font-family:inherit;transition:background .2s,border-color .2s,transform .15s,box-shadow .2s;box-shadow:0 2px 8px color-mix(in srgb,var(--jex-primary) 12%,transparent)}.jex-home-resume-card:hover{background:color-mix(in srgb,var(--jex-primary) 10%,var(--jex-bg-window));transform:translateY(-1px);box-shadow:0 4px 16px color-mix(in srgb,var(--jex-primary) 20%,transparent)}.jex-home-resume-card:active{transform:translateY(0)}.jex-home-resume-top{display:flex;align-items:center;justify-content:space-between}.jex-home-resume-label{font-size:14px;font-weight:600;color:var(--jex-primary)}.jex-home-resume-arrow{color:var(--jex-primary);opacity:.6;transition:opacity .2s,transform .2s}.jex-home-resume-card:hover .jex-home-resume-arrow{opacity:1;transform:translate(2px)}.jex-home-resume-ref{font-family:ui-monospace,Cascadia Code,Fira Code,monospace;font-size:13px;font-weight:600;letter-spacing:.06em;color:var(--jex-text-muted)}.jex-home-history{display:flex;flex-direction:column;gap:8px}.jex-home-resume-meta{font-size:11px;opacity:.7;margin-top:4px}.jex-home-new-btn{background:transparent;color:var(--jex-text-muted);border:1px solid var(--jex-border-input);border-radius:12px;padding:12px 20px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:color .2s,border-color .2s,background .2s;width:100%}.jex-home-new-btn:hover{color:var(--jex-text-main);border-color:var(--jex-text-muted);background:color-mix(in srgb,var(--jex-primary) 3%,transparent)}.jex-session-ref{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--jex-bg-msg-bot);border:1px solid var(--jex-border-window);border-radius:8px;font-size:12px}.jex-session-ref-label{color:var(--jex-text-muted);font-weight:500}.jex-session-ref-code{color:var(--jex-primary);font-weight:700;font-family:ui-monospace,Cascadia Code,monospace;letter-spacing:.05em}.jex-chat-messages{flex:1;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.jex-message-row{display:flex;align-items:flex-end;gap:8px;max-width:85%}.jex-message-row.bot{align-self:flex-start}.jex-message-content{flex:1;min-width:0}.jex-avatar{width:24px;height:24px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:12px;margin-bottom:2px}.jex-avatar-bot{background:var(--jex-bg-msg-bot);color:var(--jex-primary)}.jex-avatar-agent{background:var(--jex-bg-avatar-agent)}.jex-avatar-img{width:100%;height:100%;border-radius:50%;object-fit:cover}.jex-avatar-initials{font-size:9px;font-weight:700;color:var(--jex-text-avatar-agent)}.jex-message-author-row{display:flex;align-items:center;gap:6px;margin-top:2px;padding-left:4px}.jex-message-author{font-size:10px;color:var(--jex-text-muted)}.jex-reply-tag-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--jex-text-muted, #6b7280);cursor:pointer;transition:background .15s,color .15s}.jex-reply-tag-btn:hover{background:#0000000f;color:var(--jex-primary, #115A62)}.jex-reply-tag-btn:focus-visible{outline:2px solid var(--jex-primary, #115A62);outline-offset:1px}.jex-message{padding:12px 16px;border-radius:18px;font-size:14px;line-height:1.4}.jex-message.bot{background:var(--jex-bg-msg-bot);border:1px solid var(--jex-border-window);color:var(--jex-text-msg-bot);border-bottom-left-radius:4px}.jex-message.user{align-self:flex-end;max-width:80%;background:var(--jex-bg-msg-user);color:var(--jex-text-msg-user);border-bottom-right-radius:4px}.jex-typing{align-self:flex-start;display:flex;gap:4px;padding:12px 16px}.jex-typing span{width:8px;height:8px;border-radius:50%;background:var(--jex-text-muted);animation:jexTypingDot 1.2s infinite ease-in-out}.jex-typing span:nth-child(2){animation-delay:.2s}.jex-typing span:nth-child(3){animation-delay:.4s}@keyframes jexTypingDot{0%,80%,to{transform:scale(.8);opacity:.4}40%{transform:scale(1);opacity:1}}.jex-md{word-break:break-word;overflow-wrap:anywhere}.jex-md p{margin:0 0 8px}.jex-md p:last-child{margin-bottom:0}.jex-md strong{font-weight:600}.jex-md em{font-style:italic}.jex-md ul,.jex-md ol{margin:0 0 8px;padding-left:20px}.jex-md ul:last-child,.jex-md ol:last-child{margin-bottom:0}.jex-md ul{list-style-type:disc}.jex-md ol{list-style-type:decimal}.jex-md li{margin-bottom:2px}.jex-md li:last-child{margin-bottom:0}.jex-md a{color:var(--jex-primary);text-decoration:underline;text-underline-offset:2px}.jex-md a:hover{opacity:.8}.jex-md code{background:#00000014;padding:1px 5px;border-radius:4px;font-size:.9em;font-family:ui-monospace,Cascadia Code,Fira Code,monospace}.jex-md pre{background:#0000000f;border-radius:8px;padding:10px 12px;margin:0 0 8px;overflow-x:auto;font-size:.85em}.jex-md pre:last-child{margin-bottom:0}.jex-md pre code{background:none;padding:0;border-radius:0;font-size:inherit}.jex-md h1,.jex-md h2,.jex-md h3,.jex-md h4{font-weight:600;margin:8px 0 4px}.jex-md h1:first-child,.jex-md h2:first-child,.jex-md h3:first-child,.jex-md h4:first-child{margin-top:0}.jex-md h3{font-size:1em}.jex-md h4{font-size:.95em}.jex-md hr{border:none;border-top:1px solid var(--jex-border-window);margin:8px 0}.jex-md blockquote{border-left:3px solid var(--jex-primary);margin:0 0 8px;padding:4px 12px;color:var(--jex-text-muted)}.jex-md blockquote:last-child{margin-bottom:0}.dark .jex-md code,.jex-widget.dark .jex-md code{background:#ffffff1a}.dark .jex-md pre,.jex-widget.dark .jex-md pre{background:#ffffff14}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light) .jex-md code{background:#ffffff1a}:host:not(.light) .jex-widget:not(.light) .jex-md pre{background:#ffffff14}}.jex-streaming-cursor:after{content:"◊";margin-left:2px;animation:jexBlinkCursor .8s ease-in-out infinite}@keyframes jexBlinkCursor{0%,to{opacity:1}50%{opacity:0}}.jex-session-notice{align-self:center;text-align:center;padding:8px 16px;margin:8px 0;font-size:12px;color:var(--jex-text-muted);background:var(--jex-bg-input, #f1f5f9);border-radius:8px;line-height:1.4}.jex-message-error{background:var(--jex-bg-error, #fef2f2)!important;border-color:var(--jex-border-error, #fecaca)!important;color:var(--jex-text-error, #991b1b)!important}.jex-chat-input{padding:12px 16px;border-top:1px solid var(--jex-border-window);display:flex;flex-direction:column;gap:8px;flex-shrink:0}.jex-chat-input-composer-gate{position:relative}.jex-chat-input-composer-gate-open{z-index:2}.jex-chat-input-composer-gate-open .jex-composer-card{pointer-events:none}.jex-composer-card{display:flex;flex-direction:column;gap:6px;padding:10px 12px 8px;background:var(--jex-bg-input);border:1px solid var(--jex-border-input);border-radius:16px;cursor:text;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.jex-composer-card:focus-within{border-color:var(--jex-primary);background:var(--jex-bg-window);box-shadow:0 0 0 3px color-mix(in srgb,var(--jex-primary, #115A62) 14%,transparent)}.jex-composer-attachments{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 4px}.jex-attachment-chip{position:relative;width:44px;height:44px;border-radius:8px;overflow:hidden;background:var(--jex-bg-msg-bot, #f1f5f9);flex-shrink:0;box-shadow:0 1px 2px #0000000f}.jex-attachment-thumb{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.jex-attachment-remove{position:absolute;top:2px;right:2px;width:16px;height:16px;padding:0;border:none;border-radius:50%;background:#0f172ac7;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .12s ease,transform .12s ease}.jex-attachment-chip:hover .jex-attachment-remove,.jex-attachment-chip:focus-within .jex-attachment-remove{opacity:1}.jex-attachment-remove:hover{transform:scale(1.08)}.jex-composer-textarea{width:100%;min-height:22px;background:transparent;border:none;outline:none;resize:none;padding:2px 4px;color:var(--jex-text-main);font-family:inherit;font-size:16px;line-height:1.45;overflow-y:hidden}.jex-composer-textarea::placeholder{color:var(--jex-text-muted);opacity:.85}.jex-composer-textarea:disabled{cursor:not-allowed;opacity:.7}.jex-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.jex-composer-actions-left{display:inline-flex;align-items:center;gap:4px}.jex-attach-btn{width:30px;height:30px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--jex-text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,color .12s ease,transform .12s ease}.jex-attach-btn:hover:not(:disabled){background:color-mix(in srgb,var(--jex-text-muted, #64748b) 12%,transparent);color:var(--jex-text-main)}.jex-attach-btn:active:not(:disabled){transform:scale(.92)}.jex-attach-btn:disabled{opacity:.4;cursor:not-allowed}.jex-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.jex-rate-limit-notice{flex:1 0 100%;order:-1;margin-bottom:8px;padding:8px 12px;border-radius:10px;background:var(--jex-bg-msg-bot, #f1f5f9);color:var(--jex-text-muted, #64748b);font-size:12px;line-height:1.4;text-align:center}.jex-session-error-notice{flex:1 0 100%;order:-1;margin-bottom:8px;padding:8px 12px;border-radius:10px;background:var(--jex-bg-error, #fef2f2);border:1px solid var(--jex-border-error, #fecaca);color:var(--jex-text-error, #991b1b);font-size:12px;line-height:1.4;text-align:center}.jex-chat-input input{flex:1;background:var(--jex-bg-input);border:1px solid var(--jex-border-input);border-radius:12px;padding:10px 14px;color:var(--jex-text-main);outline:none;font-family:inherit;font-size:14px}.jex-chat-input input:focus{border-color:var(--jex-primary)}.jex-send-btn{background:color-mix(in srgb,var(--jex-text-muted, #64748b) 18%,transparent);color:var(--jex-text-muted);border:none;border-radius:999px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease,color .15s ease,opacity .15s ease,transform .15s ease;flex-shrink:0}.jex-send-btn-active{background:var(--jex-bg-send-btn, var(--jex-primary));color:var(--jex-text-header, #fff)}.jex-send-btn-active:hover:not(:disabled){background:var(--jex-primary-hover)}.jex-send-btn:active:not(:disabled){transform:scale(.9)}.jex-send-btn:disabled{opacity:.45;cursor:default}.jex-widget-footer{display:flex;align-items:center;justify-content:center;padding:8px 16px;border-top:1px solid var(--jex-border-glass);background:#00000005;flex-shrink:0}.jex-widget.dark .jex-widget-footer{background:#ffffff05}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light) .jex-widget-footer{background:#ffffff05}}.jex-branding{display:flex;align-items:center;gap:6px;text-decoration:none;color:var(--jex-text-muted);font-size:11px;font-weight:500;transition:color .2s}.jex-branding:hover{color:var(--jex-text-main)}.jex-branding-icon{color:var(--jex-primary)}.jex-branding span strong{font-weight:700;color:var(--jex-text-main)}.jex-privacy-notice-link,.jex-privacy-chip-link{color:var(--jex-primary);text-decoration:underline;text-underline-offset:2px;text-decoration-color:color-mix(in srgb,var(--jex-primary) 50%,transparent);transition:text-decoration-color .15s}.jex-privacy-notice-link:hover,.jex-privacy-chip-link:hover{text-decoration-color:var(--jex-primary)}.jex-privacy-chip{align-self:center;display:inline-flex;align-items:center;gap:6px;max-width:100%;margin:0;padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--jex-primary) 10%,var(--jex-bg-window));color:var(--jex-primary);font-size:10px;font-weight:650;line-height:1.2}.jex-privacy-chip-icon{display:inline-flex;flex-shrink:0}.jex-privacy-chip-link{color:inherit;text-decoration:none}.jex-privacy-explicit{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;flex-direction:column;gap:10px;min-height:100%;padding:10px 12px 12px;border:1px solid var(--jex-border-window);border-radius:14px 14px 10px 10px;background:var(--jex-bg-window);box-shadow:0 -12px 36px #0f172a24;pointer-events:auto}.jex-privacy-explicit-content{display:flex;align-items:flex-start;gap:10px}.jex-privacy-explicit-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:8px;background:color-mix(in srgb,var(--jex-primary) 10%,var(--jex-bg-window));color:var(--jex-primary);flex-shrink:0}.jex-privacy-explicit-copy{min-width:0;flex:1}.jex-privacy-explicit-title{color:var(--jex-text-main);font-size:12px;font-weight:750;line-height:1.2;margin-bottom:3px}.jex-privacy-explicit-body{margin:0;color:var(--jex-text-muted);font-size:10px;line-height:1.35}.jex-privacy-explicit-button{width:100%;border:none;border-radius:10px;background:var(--jex-bg-send-btn);color:var(--jex-text-header);cursor:pointer;font-family:inherit;font-size:12px;font-weight:750;padding:9px 12px;transition:background .15s ease,transform .12s ease}.jex-privacy-explicit-button:hover{background:var(--jex-primary-hover)}.jex-privacy-explicit-button:active{transform:scale(.98)}.jex-locale-select-wrapper{position:relative;display:flex;align-items:center}.jex-locale-select{appearance:none;-webkit-appearance:none;background:transparent;border:1px solid transparent;padding:4px 20px 4px 6px;border-radius:6px;font-family:inherit;font-size:11px;font-weight:600;color:var(--jex-text-muted);background-color:transparent;cursor:pointer;outline:none;transition:all .2s ease}.jex-locale-select option{background-color:#fff;color:#0f172a}.jex-locale-select:hover,.jex-locale-select:focus-visible{color:var(--jex-text-main);background:#0000000a}.jex-widget.dark .jex-locale-select:hover,.jex-widget.dark .jex-locale-select:focus-visible{background:#ffffff0d}.jex-widget.dark .jex-locale-select option{background-color:#0f172a;color:#f8fafc}@media(prefers-color-scheme:dark){:host:not(.light) .jex-widget:not(.light) .jex-locale-select:hover,:host:not(.light) .jex-widget:not(.light) .jex-locale-select:focus-visible{background:#ffffff0d}:host:not(.light) .jex-widget:not(.light) .jex-locale-select option{background-color:#0f172a;color:#f8fafc}}.jex-locale-select:focus-visible{border-color:var(--jex-primary)}.jex-locale-chevron{position:absolute;right:4px;pointer-events:none;color:var(--jex-text-muted);transition:color .2s ease}.jex-locale-select-wrapper:hover .jex-locale-chevron{color:var(--jex-text-main)}.jex-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--jex-bg-window, #fff);z-index:10;padding:24px;text-align:center}.jex-loading-spinner{width:32px;height:32px;border:3px solid var(--jex-border-input, #e2e8f0);border-top-color:var(--jex-primary, #115A62);border-radius:50%;animation:jex-spin .7s linear infinite}@keyframes jex-spin{to{transform:rotate(360deg)}}.jex-loading-message{font-size:14px;color:var(--jex-text-muted, #64748b)}.jex-error-message{font-size:14px;color:var(--jex-text-main, #334155)}.jex-error-actions{display:flex;gap:8px}.jex-error-retry,.jex-error-back{padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none}.jex-error-retry{background:var(--jex-primary, #115A62);color:#fff}.jex-error-back{background:transparent;color:var(--jex-text-muted, #64748b);border:1px solid var(--jex-border-input, #e2e8f0)}.jex-selection{display:flex;flex-direction:column;gap:12px;padding:24px 16px;height:100%}.jex-selection-title{font-size:16px;font-weight:700;color:var(--jex-text-main, #0f172a);margin:0 0 8px}.jex-selection-options{display:flex;flex-direction:column;gap:10px}.jex-selection-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:16px;border-radius:12px;border:1px solid var(--jex-border-window, #e2e8f0);background:transparent;cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.jex-selection-option:hover{border-color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 5%,transparent)}.jex-selection-icon{font-size:20px}.jex-selection-label{font-size:14px;font-weight:600;color:var(--jex-text-main, #0f172a)}.jex-selection-sub{font-size:12px;color:var(--jex-text-muted, #64748b)}.jex-form-screen{display:flex;flex-direction:column;padding:20px 16px;height:100%;overflow-y:auto}.jex-form-title{font-size:16px;font-weight:700;color:var(--jex-text-main, #0f172a);margin:0 0 16px}.jex-form{display:flex;flex-direction:column;gap:10px}.jex-form-input,.jex-form-textarea{padding:10px 12px;border-radius:8px;border:1px solid var(--jex-border-input, #e2e8f0);font-size:14px;background:transparent;color:var(--jex-text-main, #0f172a);outline:none}@media(pointer:coarse){.jex-form-input,.jex-form-textarea{font-size:16px}}.jex-form-input:focus,.jex-form-textarea:focus{border-color:var(--jex-primary, #115A62)}.jex-form-textarea{min-height:80px;resize:vertical}.jex-form-submit{padding:10px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:14px;font-weight:600;cursor:pointer;margin-top:4px}.jex-inline-form{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--jex-bg-msg-bot, #f1f5f9);border:1px solid var(--jex-border-input, #e2e8f0);border-radius:var(--jex-radius, .75rem);width:100%}.jex-inline-form-title{font-weight:600;font-size:15px;color:var(--jex-text-main, #0f172a);margin:0}.jex-inline-form-subtitle{font-size:13px;color:var(--jex-text-muted, #64748b);line-height:1.4;margin:0 0 4px}.jex-inline-form-consent{font-size:11px;color:var(--jex-text-muted, #64748b);line-height:1.3;margin-top:4px;text-align:center}.jex-inline-form .jex-form-submit:disabled{opacity:.7;cursor:not-allowed}.jex-escalation-subtitle{font-size:13px;color:var(--jex-text-muted, #64748b);line-height:1.45;margin:0 0 8px}.jex-escalation-skip{padding:8px 12px;border:none;background:transparent;color:var(--jex-text-muted, #64748b);font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-align:center}.jex-escalation-skip:hover{color:var(--jex-text-main, #0f172a)}.jex-inline-form-card{position:relative;padding:14px;gap:8px}.jex-inline-form-dismiss{position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;border:1px solid var(--jex-border-input, #e2e8f0);background:var(--jex-bg-window, #fff);color:var(--jex-text-muted, #64748b);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.jex-inline-form-dismiss:hover{background:var(--jex-bg-msg-bot, #f1f5f9);color:var(--jex-text-main, #0f172a)}.jex-inline-form-submitted{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--jex-bg-msg-bot, #f1f5f9);border:1px solid var(--jex-border-input, #e2e8f0);border-radius:var(--jex-radius, .75rem);width:100%}.jex-inline-form-check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--jex-primary) 15%,transparent);color:var(--jex-primary, #115A62);font-size:14px;font-weight:700;flex-shrink:0}.jex-inline-form-submitted-title{font-weight:600;font-size:var(--jex-font-size, 14px);color:var(--jex-text-main, #0f172a)}.jex-inline-form-submitted-detail{font-size:12px;color:var(--jex-text-muted, #64748b);margin-top:2px}.jex-magicline-row{display:flex;flex-direction:column;gap:8px}.jex-magicline-row>*{min-width:0}.jex-magicline-field{display:flex;flex-direction:column;gap:4px}.jex-magicline-field-label{font-size:12px;font-weight:500;color:var(--jex-text-muted, #64748b)}.jex-magicline-select{width:100%;appearance:none;cursor:pointer;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px 16px}.jex-magicline-slots-hint{font-size:12px;color:var(--jex-text-muted, #64748b);line-height:1.4;padding:2px 0}.jex-magicline-consent{display:flex;align-items:flex-start;gap:8px;font-size:11px;line-height:1.35;color:var(--jex-text-muted, #64748b);margin-top:2px;cursor:pointer}.jex-magicline-consent input[type=checkbox]{flex-shrink:0;margin-top:1px;accent-color:var(--jex-primary, #115A62)}.jex-magicline-error{font-size:12px;color:#dc2626;line-height:1.35}.jex-magicline-failed{border-color:color-mix(in srgb,#dc2626 35%,var(--jex-border-input, #e2e8f0))}.jex-magicline-failed-icon{background:color-mix(in srgb,#dc2626 15%,transparent);color:#dc2626}.jex-magicline-wizard-header{display:flex;flex-direction:column;gap:6px}.jex-magicline-wizard-progress{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.jex-magicline-wizard-step-label{font-size:13px;font-weight:600;color:var(--jex-text-main, #0f172a)}.jex-magicline-wizard-counter{font-size:11px;color:var(--jex-text-muted, #64748b);flex-shrink:0}.jex-magicline-wizard-dots{display:flex;gap:6px}.jex-magicline-wizard-dot{width:7px;height:7px;border-radius:50%;background:color-mix(in srgb,var(--jex-text-muted, #64748b) 35%,transparent)}.jex-magicline-wizard-dot-active{background:var(--jex-primary, #115A62)}.jex-magicline-wizard-nav{display:flex;align-items:center;gap:8px;margin-top:4px}.jex-magicline-wizard-next{flex:1;margin-top:0}.jex-magicline-wizard-back{padding:10px 14px;border-radius:8px;border:1px solid var(--jex-border-input, #e2e8f0);background:transparent;color:var(--jex-text-main, #0f172a);font-size:14px;font-weight:600;cursor:pointer}.jex-magicline-wizard-back:hover{background:var(--jex-bg-window, #fff)}.jex-magicline-wizard-back:disabled,.jex-magicline-wizard-next:disabled{opacity:.7;cursor:not-allowed}.jex-magicline-radio-group{display:flex;flex-direction:column;gap:8px}.jex-magicline-radio-card{display:flex;align-items:center;gap:10px;padding:12px;border-radius:10px;border:1px solid var(--jex-border-input, #e2e8f0);font-size:14px;color:var(--jex-text-main, #0f172a);cursor:pointer}.jex-magicline-radio-card-active{border-color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 8%,transparent)}.jex-magicline-radio-card input[type=radio]{flex-shrink:0;accent-color:var(--jex-primary, #115A62)}.jex-magicline-slots-error{display:flex;flex-direction:column;gap:6px}.jex-magicline-retry{align-self:flex-start;padding:6px 12px;border-radius:8px;border:1px solid var(--jex-border-input, #e2e8f0);background:transparent;color:var(--jex-text-main, #0f172a);font-size:13px;font-weight:600;cursor:pointer}.jex-magicline-retry:hover{background:var(--jex-bg-window, #fff)}.jex-magicline-retry:disabled{opacity:.7;cursor:not-allowed}.jex-magicline-summary{display:flex;flex-direction:column;gap:6px;margin:0;padding:10px 12px;border-radius:8px;background:var(--jex-bg-window, #fff);border:1px solid var(--jex-border-input, #e2e8f0)}.jex-magicline-summary-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.jex-magicline-summary-row dt{font-size:12px;color:var(--jex-text-muted, #64748b);flex-shrink:0}.jex-magicline-summary-row dd{margin:0;font-size:13px;font-weight:500;color:var(--jex-text-main, #0f172a);text-align:right}.jex-magicline-summary-section{margin-top:8px}.jex-magicline-summary-heading{font-size:12px;font-weight:600;color:var(--jex-text-main, #0f172a);margin-bottom:2px}.jex-magicline-summary-totals{background:color-mix(in srgb,var(--jex-primary, #115A62) 6%,transparent);border-color:color-mix(in srgb,var(--jex-primary, #115A62) 25%,transparent)}.jex-magicline-summary-total-row dt,.jex-magicline-summary-total-row dd{font-size:14px;font-weight:700;color:var(--jex-text-main, #0f172a)}.jex-magicline-offer-group{display:flex;flex-direction:column;gap:8px}.jex-magicline-offer-bundle-name{font-size:13px;font-weight:600;color:var(--jex-text-main, #0f172a)}.jex-magicline-offer-bundle-desc{font-size:12px;color:var(--jex-text-muted, #64748b)}.jex-magicline-radio-card .jex-magicline-offer-term{display:flex;flex-direction:column;gap:4px;flex:1}.jex-magicline-offer-term-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.jex-magicline-offer-term-length{font-size:14px;font-weight:600;color:var(--jex-text-main, #0f172a)}.jex-magicline-offer-term-price{font-size:13px;font-weight:500;color:var(--jex-primary, #115A62)}.jex-magicline-offer-term-note{font-size:12px;color:var(--jex-text-muted, #64748b)}.jex-magicline-static-value{padding:9px 12px;border-radius:8px;font-size:14px;color:var(--jex-text-main, #0f172a);background:var(--jex-bg-window, #f8fafc);border:1px solid var(--jex-border-input, #e2e8f0)}.jex-magicline-terms{display:flex;flex-direction:column;gap:10px;padding:10px 12px;border-radius:8px;background:var(--jex-bg-window, #fff);border:1px solid var(--jex-border-input, #e2e8f0)}.jex-magicline-upgrades-recap-title,.jex-magicline-terms-title{font-size:12px;font-weight:600;color:var(--jex-text-main, #0f172a);margin-bottom:2px}.jex-magicline-terms-content{font-size:12px;line-height:1.5;color:var(--jex-text-muted, #64748b);white-space:pre-wrap}.jex-magicline-upgrade-group{display:flex;flex-direction:column;gap:8px}.jex-magicline-upgrade-card{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:10px;border:1px solid var(--jex-border-input, #e2e8f0);font-size:14px;color:var(--jex-text-main, #0f172a);cursor:pointer}.jex-magicline-upgrade-card-active{border-color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 8%,transparent)}.jex-magicline-upgrade-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;cursor:pointer}.jex-magicline-upgrade-info{display:flex;flex-direction:column;gap:2px;flex:1}.jex-magicline-upgrade-name{font-size:14px;font-weight:600;color:var(--jex-text-main, #0f172a)}.jex-magicline-upgrade-desc{font-size:12px;color:var(--jex-text-muted, #64748b)}.jex-magicline-upgrade-price{font-size:13px;font-weight:500;color:var(--jex-primary, #115A62)}.jex-magicline-upgrade-status{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 7px;border-radius:6px;border:1px solid var(--jex-border-input, #e2e8f0);color:var(--jex-text-muted, #64748b);background:transparent;white-space:nowrap}.jex-magicline-upgrade-card-active .jex-magicline-upgrade-status{border-color:var(--jex-primary, #115A62);color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 12%,transparent)}.jex-magicline-terms-prompt{font-size:13px;font-weight:600;color:var(--jex-text-main, #0f172a);margin-bottom:4px}.jex-magicline-bundle-details{font-size:12px;color:var(--jex-text-muted, #64748b)}.jex-magicline-bundle-details-summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--jex-primary, #115A62);list-style-position:inside}.jex-magicline-bundle-details-summary:hover{text-decoration:underline}.jex-magicline-bundle-details-body{display:flex;flex-direction:column;gap:6px;margin-top:6px}.jex-magicline-bundle-details-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:2px;line-height:1.4}.jex-magicline-bundle-details-footnote{margin:0;line-height:1.4}.jex-magicline-consent-region{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding:6px 8px;border-left:3px solid var(--jex-primary, #115A62);border-radius:6px;background:color-mix(in srgb,var(--jex-primary, #115A62) 6%,transparent)}.jex-magicline-required-pill{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 12%,transparent);vertical-align:middle}.jex-magicline-consent-body{display:flex;flex-direction:column;gap:1px}.jex-magicline-consent-recap{display:flex;flex-direction:column;gap:2px}.jex-escalation-confirm{border-left:3px solid var(--jex-primary, #115A62);padding-left:8px}.jex-session-prompt{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 16px;margin:8px 0;text-align:center}.jex-session-prompt-text{font-size:13px;color:var(--jex-text-muted, #64748b)}.jex-session-prompt-btn{padding:8px 16px;border-radius:8px;border:1px solid var(--jex-primary, #115A62);background:transparent;color:var(--jex-primary, #115A62);font-size:13px;font-weight:600;cursor:pointer}.jex-session-prompt-btn:hover{background:color-mix(in srgb,var(--jex-primary) 10%,transparent)}.jex-chat-input-resolved{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 16px;border-top:1px solid var(--jex-border-input, #e2e8f0);background:var(--jex-bg-msg-bot, #f1f5f9);text-align:center}.jex-resolved-notice{font-size:13px;font-weight:500;color:var(--jex-text-muted, #64748b)}.jex-resolved-new-btn{padding:10px 20px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:13px;font-weight:600;cursor:pointer;width:100%}.jex-resolved-new-btn:hover{opacity:.9}.jex-confirmation{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:32px 24px;height:100%;text-align:center}.jex-confirmation-icon{width:48px;height:48px;border-radius:50%;background:color-mix(in srgb,var(--jex-primary, #115A62) 15%,transparent);color:var(--jex-primary, #115A62);font-size:22px;display:flex;align-items:center;justify-content:center}.jex-confirmation-title{font-size:18px;font-weight:700;color:var(--jex-text-main, #0f172a);margin:0}.jex-confirmation-body{font-size:13px;color:var(--jex-text-muted, #64748b);margin:0}.jex-confirmation-ref{font-size:20px;font-weight:700;letter-spacing:.05em;color:var(--jex-primary, #115A62);background:color-mix(in srgb,var(--jex-primary, #115A62) 10%,transparent);padding:10px 20px;border-radius:10px}.jex-confirmation-hint{font-size:12px;color:var(--jex-text-muted, #64748b);margin:0}.jex-confirmation-done{margin-top:8px;padding:10px 28px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:14px;font-weight:600;cursor:pointer}.jex-home-lookup-link{background:none;border:none;font-size:12px;color:var(--jex-text-muted, #64748b);cursor:pointer;text-decoration:underline;padding:0;align-self:center}.jex-home-lookup{display:flex;gap:8px;width:100%;animation:jexFadeIn .4s .1s ease both}.jex-home-lookup-input{flex:1;padding:10px 14px;border-radius:10px;border:1px solid var(--jex-border-input, #e2e8f0);background:var(--jex-bg-input);color:var(--jex-text-main);font-size:14px;font-family:ui-monospace,Cascadia Code,Fira Code,monospace;letter-spacing:.04em;outline:none;transition:border-color .2s}@media(pointer:coarse){.jex-home-lookup-input{font-size:16px}}.jex-home-lookup-input::placeholder{font-family:inherit;letter-spacing:.04em;color:var(--jex-text-muted);opacity:.7}.jex-home-lookup-input:focus{border-color:var(--jex-primary, #115A62)}.jex-home-lookup-submit{padding:10px 16px;border-radius:10px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .2s,opacity .2s;flex-shrink:0}.jex-home-lookup-submit:hover:not(:disabled){background:var(--jex-primary-hover)}.jex-home-lookup-submit:disabled{opacity:.4;cursor:default}.jex-sources-row{margin-top:6px;margin-left:32px;display:flex;flex-direction:column;gap:6px}.jex-sources-toggle{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:transparent;border:none;border-radius:6px;cursor:pointer;font-size:11px;color:var(--jex-text-muted, #6b7280);font-family:inherit;align-self:flex-start;transition:background .15s,color .15s}.jex-sources-toggle:hover{background:#0000000a;color:inherit}.jex-sources-icon{font-size:12px;line-height:1}.jex-sources-chevron{display:inline-block;font-size:10px;transition:transform .15s}.jex-sources-chevron--open{transform:rotate(180deg)}.jex-sources-pills{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.jex-source-pill{display:inline-flex;align-items:center;gap:6px;max-width:240px;padding:2px 8px;border-radius:999px;border:1px solid rgba(0,0,0,.1);background:#0000000a;color:var(--jex-text-muted, #6b7280);font-size:11px;text-decoration:none;cursor:pointer;transition:background .15s,color .15s}.jex-source-pill:hover{background:#00000014;color:inherit}.jex-source-id{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:4px;background:var(--jex-primary, #115A62);color:#fff;font-size:10px;font-weight:600;line-height:1;flex-shrink:0;font-variant-numeric:tabular-nums}.jex-source-type{font-size:10px;flex-shrink:0}.jex-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.jex-source-score{opacity:.6;flex-shrink:0;font-variant-numeric:tabular-nums}`;function Kd(t){const e=document.createElement("style");e.textContent=Wd,t.appendChild(e)}const Gd="https://festive-mouse-978.eu-west-1.convex.cloud";let br=null;function Jd(t){const e=t??Gd;if(!e)throw new Error("[jexity] No Convex URL — set VITE_CONVEX_URL at build time or data-convex-url on the script tag");return br||(br=new gl(Il(e))),br}function Yd(t,e){const n=t.shadowRoot??t.attachShadow({mode:"open"});for(;n.firstChild;)n.removeChild(n.firstChild);Kd(n),nn.value=e.source,Ne.value=e.bootstrapToken,re.value=[{id:"home"}],e.mode==="embedded"&&(t.classList.add("jex-mode-embedded"),W.value=!0);const r=document.createElement("div");return e.mode==="embedded"&&(r.style.cssText="width:100%;height:100%"),n.appendChild(r),Fe(s(xl,{client:Jd(e.convexUrl),children:s(Vd,{options:e})}),r),function(){Fe(null,r),W.value=!1,nn.value=void 0,Ne.value=void 0,re.value=[{id:"home"}]}}function Zd(t,e,n){const r=Yd(t,e),i=new Set,o=W.subscribe(l=>{for(const c of i)c(l)});return{shutdown(){o(),i.clear(),r(),n&&n()},open(){W.value=!0},close(){W.value=!1},toggle(){W.value=!W.value},get isOpen(){return W.value},subscribe(l){return i.add(l),()=>{i.delete(l)}}}}let Ot=null;function Xd(t){Ot&&Ot.shutdown();let e;t.container?e=typeof t.container=="string"?document.querySelector(t.container):t.container:(e=document.createElement("div"),e.id="jexity-chat-widget",document.body.appendChild(e));const n=Zd(e,t,()=>{t.container||e.remove(),Ot===n&&(Ot=null)});return Ot=n,n}function ze(t,e){return t.getAttribute(e)??void 0}async function ra(){const t=document.currentScript??document.querySelector("script[data-org-slug]")??document.querySelector("script[data-org-id]");if(!t)return;const e=t.getAttribute("data-org-slug")??t.getAttribute("data-org-id")??"default-org",n=t.getAttribute("data-proj-slug")??void 0,r=ze(t,"data-convex-url")??"https://festive-mouse-978.eu-west-1.convex.cloud"??"",i=Kn(r),o=await Gn(e,i,n);if(!o.ok){const l=window.location.origin,c=n?`project '${e}/${n}'`:`org '${e}'`;o.error==="unauthorized"?console.warn(`[JexityChat] This domain is not authorized for ${c}. Add '${l}' under Allowed Domains in your Jexity dashboard.`):o.error==="not_found"?console.warn(`[JexityChat] No active widget config found for ${c}. Check that the org slug is correct and the widget is enabled.`):o.error==="rate_limited"?console.warn(`[JexityChat] Bootstrap rate-limited for ${c}. Retry after ${o.retryAfterSec??60}s.`):console.warn(`[JexityChat] Bootstrap failed (network error). Check that the Convex deployment is reachable at ${i}.`);return}if(o.allowedUrls.length>0&&!o.allowedUrls.some(l=>Jn(window.location.href,l))){const l=n?`project '${e}/${n}'`:`org '${e}'`;console.warn(`[JexityChat] Widget hidden for ${l} — current page does not match path rule. Allowed: ${o.allowedUrls.join(", ")}`);return}const a={orgSlug:e,projSlug:n,bootstrapToken:o.token,allowedUrls:o.allowedUrls,excludePaths:o.excludePaths,position:ze(t,"data-position")??void 0,theme:ze(t,"data-theme")??void 0,greeting:ze(t,"data-greeting"),title:ze(t,"data-title"),primaryColor:ze(t,"data-primary-color"),locale:ze(t,"data-locale"),convexUrl:ze(t,"data-convex-url")};window.JexityChat=Xd(a)}document.readyState==="complete"?ra():window.addEventListener("load",ra)})();
|
|
70
71
|
//# sourceMappingURL=widget.js.map
|