@evelan/jexity-widget 0.19.4 → 0.20.0-canary.52
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 +1837 -1790
- package/dist/index.mjs.map +1 -1
- package/dist/react.mjs +3373 -3326
- package/dist/react.mjs.map +1 -1
- package/dist/types/features/chat/components/BotMessage.d.ts +3 -1
- package/dist/types/features/chat/components/BotMessage.d.ts.map +1 -1
- package/dist/types/features/chat/components/MessageList.d.ts.map +1 -1
- package/dist/types/features/chat/components/QuoteButton.d.ts +11 -0
- package/dist/types/features/chat/components/QuoteButton.d.ts.map +1 -0
- package/dist/types/features/chat/components/UserMessage.d.ts +10 -1
- package/dist/types/features/chat/components/UserMessage.d.ts.map +1 -1
- package/dist/types/features/chat/composer/hooks/useComposerInput.d.ts.map +1 -1
- package/dist/types/features/chat/composer/index.d.ts +3 -3
- package/dist/types/features/chat/composer/index.d.ts.map +1 -1
- package/dist/types/features/chat/composer/state/draft.d.ts +32 -9
- package/dist/types/features/chat/composer/state/draft.d.ts.map +1 -1
- package/dist/types/features/chat/composer/state/index.d.ts +4 -5
- package/dist/types/features/chat/composer/state/index.d.ts.map +1 -1
- package/dist/types/i18n/locales/de.d.ts +1 -1
- package/dist/types/i18n/locales/en.d.ts +3 -3
- package/dist/types/i18n/locales/en.d.ts.map +1 -1
- package/dist/widget.js +21 -21
- package/dist/widget.js.map +1 -1
- package/package.json +2 -2
package/dist/widget.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
(function(){"use strict";var Rt,_,ti,ni,Ue,ri,ii,oi,Fn,sn,At,ai,Vn,Hn,Qn,si,ln={},cn=[],Za=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,It=Array.isArray;function je(t,e){for(var n in e)t[n]=e[n];return t}function Wn(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function ge(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?Rt.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 Et(t,a,r,i,null)}function Et(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??++ti,__i:-1,__u:0};return i==null&&_.vnode!=null&&_.vnode(o),o}function Xa(){return{current:null}}function O(t){return t.children}function ye(t,e){this.props=t,this.context=e}function lt(t,e){if(e==null)return t.__?lt(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"?lt(t):null}function es(t){if(t.__P&&t.__d){var e=t.__v,n=e.__e,r=[],i=[],o=je({},e);o.__v=e.__v+1,_.vnode&&_.vnode(o),Gn(t.__P,o,e,t.__n,t.__P.namespaceURI,32&e.__u?[n]:null,r,n??lt(e),!!(32&e.__u),i),o.__v=e.__v,o.__.__k[o.__i]=o,pi(r,o,i),e.__e=e.__=null,o.__e!=n&&li(o)}}function li(t){if((t=t.__)!=null&&t.__c!=null)return t.__e=t.__c.base=null,t.__k.some(function(e){if(e!=null&&e.__e!=null)return t.__e=t.__c.base=e.__e}),li(t)}function Kn(t){(!t.__d&&(t.__d=!0)&&Ue.push(t)&&!un.__r++||ri!=_.debounceRendering)&&((ri=_.debounceRendering)||ii)(un)}function un(){try{for(var t,e=1;Ue.length;)Ue.length>e&&Ue.sort(oi),t=Ue.shift(),e=Ue.length,es(t)}finally{Ue.length=un.__r=0}}function ci(t,e,n,r,i,o,a,l,c,u,h){var f,d,p,g,y,m,v,b=r&&r.__k||cn,x=e.length;for(c=ts(n,e,b,c,x),f=0;f<x;f++)(p=n.__k[f])!=null&&(d=p.__i!=-1&&b[p.__i]||ln,p.__i=f,m=Gn(t,p,d,i,o,a,l,c,u,h),g=p.__e,p.ref&&d.ref!=p.ref&&(d.ref&&Yn(d.ref,null,p),h.push(p.ref,p.__c||g,p)),y==null&&g!=null&&(y=g),(v=!!(4&p.__u))||d.__k===p.__k?(c=ui(p,c,t,v),v&&d.__e&&(d.__e=null)):typeof p.type=="function"&&m!==void 0?c=m:g&&(c=g.nextSibling),p.__u&=-7);return n.__e=y,c}function ts(t,e,n,r,i){var o,a,l,c,u,h=n.length,f=h,d=0;for(t.__k=new Array(i),o=0;o<i;o++)(a=e[o])!=null&&typeof a!="boolean"&&typeof a!="function"?(typeof a=="string"||typeof a=="number"||typeof a=="bigint"||a.constructor==String?a=t.__k[o]=Et(null,a,null,null,null):It(a)?a=t.__k[o]=Et(O,{children:a},null,null,null):a.constructor===void 0&&a.__b>0?a=t.__k[o]=Et(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):t.__k[o]=a,c=o+d,a.__=t,a.__b=t.__b+1,l=null,(u=a.__i=ns(a,n,c,f))!=-1&&(f--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>h?d--:i<h&&d++),typeof a.type!="function"&&(a.__u|=4)):u!=c&&(u==c-1?d--:u==c+1?d++:(u>c?d--:d++,a.__u|=4))):t.__k[o]=null;if(f)for(o=0;o<h;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=lt(l)),gi(l,l));return r}function ui(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=ui(i[o],e,n,r));return e}t.__e!=e&&(r&&(e&&t.type&&!e.parentNode&&(e=lt(t)),n.insertBefore(t.__e,e||null)),e=t.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function Se(t,e){return e=e||[],t==null||typeof t=="boolean"||(It(t)?t.some(function(n){Se(n,e)}):e.push(t)),e}function ns(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&&l==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 di(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||Za.test(e)?n:n+"px"}function dn(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||di(t.style,e,"");if(n)for(e in n)r&&n[e]==r[e]||di(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")o=e!=(e=e.replace(ai,"$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[At]=r[At]:(n[At]=Vn,t.addEventListener(e,o?Qn:Hn,o)):t.removeEventListener(e,o?Qn:Hn,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 hi(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e[sn]==null)e[sn]=Vn++;else if(e[sn]<n[At])return;return n(_.event?_.event(e):e)}}}function Gn(t,e,n,r,i,o,a,l,c,u){var h,f,d,p,g,y,m,v,b,x,P,S,z,W,V,le,L=e.type;if(e.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),o=[l=e.__e=n.__e]),(h=_.__b)&&h(e);e:if(typeof L=="function"){f=a.length;try{if(b=e.props,x=L.prototype&&L.prototype.render,P=(h=L.contextType)&&r[h.__c],S=h?P?P.props.value:h.__:r,n.__c?v=(d=e.__c=n.__c).__=d.__E:(x?e.__c=d=new L(b,S):(e.__c=d=new ye(b,S),d.constructor=L,d.render=is),P&&P.sub(d),d.state||(d.state={}),d.__n=r,p=d.__d=!0,d.__h=[],d._sb=[]),x&&d.__s==null&&(d.__s=d.state),x&&L.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=je({},d.__s)),je(d.__s,L.getDerivedStateFromProps(b,d.__s))),g=d.props,y=d.state,d.__v=e,p)x&&L.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),x&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(x&&L.getDerivedStateFromProps==null&&b!==g&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(b,S),e.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(b,d.__s,S)===!1){e.__v!=n.__v&&(d.props=b,d.state=d.__s,d.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(H){H&&(H.__=e)}),cn.push.apply(d.__h,d._sb),d._sb=[],d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(b,d.__s,S),x&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(g,y,m)})}if(d.context=S,d.props=b,d.__P=t,d.__e=!1,z=_.__r,W=0,x)d.state=d.__s,d.__d=!1,z&&z(e),h=d.render(d.props,d.state,d.context),cn.push.apply(d.__h,d._sb),d._sb=[];else do d.__d=!1,z&&z(e),h=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++W<25);d.state=d.__s,d.getChildContext!=null&&(r=je(je({},r),d.getChildContext())),x&&!p&&d.getSnapshotBeforeUpdate!=null&&(m=d.getSnapshotBeforeUpdate(g,y)),V=h!=null&&h.type===O&&h.key==null?fi(h.props.children):h,l=ci(t,It(V)?V:[V],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(H){if(a.length=f,e.__v=null,c||o!=null)if(H.then){for(e.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),e.__e=l}else{if(o!=null)for(le=o.length;le--;)Wn(o[le]);Jn(e)}else e.__e=n.__e,!e.__k&&n.__k&&(e.__k=n.__k),H.then||Jn(e);_.__e(H,e,n)}}else o==null&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=rs(n.__e,e,n,r,i,o,a,c,u);return(h=_.diffed)&&h(e),128&e.__u?void 0:l}function Jn(t){t&&(t.__c&&(t.__c.__e=!0),t.__k&&t.__k.some(Jn))}function pi(t,e,n){for(var r=0;r<n.length;r++)Yn(n[r],n[++r],n[++r]);_.__c&&_.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){_.__e(o,i.__v)}})}function fi(t){return typeof t!="object"||t==null||t.__b>0?t:It(t)?t.map(fi):t.constructor!==void 0?null:je({},t)}function rs(t,e,n,r,i,o,a,l,c){var u,h,f,d,p,g,y,m=n.props||ln,v=e.props,b=e.type;if(b=="svg"?i="http://www.w3.org/2000/svg":b=="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==!!b&&(b?p.localName==b:p.nodeType==3)){t=p,o[u]=null;break}}if(t==null){if(b==null)return document.createTextNode(v);t=document.createElementNS(i,b,v.is&&v),l&&(_.__m&&_.__m(e,o),l=!1),o=null}if(b==null)m===v||l&&t.data==v||(t.data=v);else{if(o=b=="textarea"&&v.defaultValue!=null?null:o&&Rt.call(t.childNodes),!l&&o!=null)for(m={},u=0;u<t.attributes.length;u++)m[(p=t.attributes[u]).name]=p.value;for(u in m)p=m[u],u=="dangerouslySetInnerHTML"?f=p:u=="children"||u in v||u=="value"&&"defaultValue"in v||u=="checked"&&"defaultChecked"in v||dn(t,u,null,p,i);for(u in v)p=v[u],u=="children"?d=p:u=="dangerouslySetInnerHTML"?h=p:u=="value"?g=p:u=="checked"?y=p:l&&typeof p!="function"||m[u]===p||dn(t,u,p,m[u],i);if(h)l||f&&(h.__html==f.__html||h.__html==t.innerHTML)||(t.innerHTML=h.__html),e.__k=[];else if(f&&(t.innerHTML=""),ci(e.type=="template"?t.content:t,It(d)?d:[d],e,n,r,b=="foreignObject"?"http://www.w3.org/1999/xhtml":i,o,a,o?o[0]:n.__k&<(n,0),l,c),o!=null)for(u=o.length;u--;)Wn(o[u]);l&&b!="textarea"||(u="value",b=="progress"&&g==null?t.removeAttribute("value"):g!=null&&(g!==t[u]||b=="progress"&&!g||b=="option"&&g!=m[u])&&dn(t,u,g,m[u],i),u="checked",y!=null&&y!=t[u]&&dn(t,u,y,m[u],i))}return t}function Yn(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){_.__e(i,n)}}function gi(t,e,n){var r,i;if(_.unmount&&_.unmount(t),(r=t.ref)&&(r.current&&r.current!=t.__e||Yn(r,null,e)),(r=t.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){_.__e(o,e)}r.base=r.__P=r.__n=null}if(r=t.__k)for(i=0;i<r.length;i++)r[i]&&gi(r[i],e,n||typeof t.type!="function");n||Wn(t.__e),t.__c=t.__=t.__e=void 0}function is(t,e,n){return this.constructor(t,n)}function Ke(t,e,n){var r,i,o,a;e==document&&(e=document.documentElement),_.__&&_.__(t,e),i=(r=typeof n=="function")?null:n&&n.__k||e.__k,o=[],a=[],Gn(e,t=(!r&&n||e).__k=ge(O,null,[t]),i||ln,ln,e.namespaceURI,!r&&n?[n]:i?null:e.firstChild?Rt.call(e.childNodes):null,o,!r&&n?n:i?i.__e:e.firstChild,r,a),pi(o,t,a),t.props.children=null}function mi(t,e){Ke(t,e,mi)}function os(t,e,n){var r,i,o,a,l=je({},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?Rt.call(arguments,2):n),Et(t.type,l,r||t.key,i||t.ref,null)}function as(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,Kn(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"+si++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,r){return n.children(r)}).contextType=e,e}Rt=cn.slice,_={__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}},ti=0,ni=function(t){return t!=null&&t.constructor===void 0},ye.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=je({},this.state),typeof t=="function"&&(t=t(je({},n),this.props)),t&&je(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),Kn(this))},ye.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),Kn(this))},ye.prototype.render=O,Ue=[],ii=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,oi=function(t,e){return t.__v.__b-e.__v.__b},un.__r=0,Fn=Math.random().toString(8),sn="__d"+Fn,At="__a"+Fn,ai=/(PointerCapture)$|Capture$/i,Vn=0,Hn=hi(!1),Qn=hi(!0),si=0;var ss=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:--ss,__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 _.vnode&&_.vnode(u),u}var Fe,B,Zn,xi,ct=0,vi=[],U=_,bi=U.__b,yi=U.__r,wi=U.diffed,ki=U.__c,_i=U.unmount,ji=U.__;function ut(t,e){U.__h&&U.__h(B,t,ct||e),ct=0;var n=B.__H||(B.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function R(t){return ct=1,he(Ei,t)}function he(t,e,n){var r=ut(Fe++,2);if(r.t=t,!r.__c&&(r.__=[n?n(e):Ei(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=B,!B.__f)){var i=function(l,c,u){if(!r.__c.__H)return!0;var h=!1,f=r.__c.props!==l;if(r.__c.__H.__.some(function(p){if(p.__N){h=!0;var g=p.__[0];p.__=p.__N,p.__N=void 0,g!==p.__[0]&&(f=!0)}}),o){var d=o.call(this,l,c,u);return h?d||f:d}return!h||f};B.__f=!0;var o=B.shouldComponentUpdate,a=B.componentWillUpdate;B.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)},B.shouldComponentUpdate=i}return r.__N||r.__}function T(t,e){var n=ut(Fe++,3);!U.__s&&er(n.__H,e)&&(n.__=t,n.u=e,B.__H.__h.push(n))}function $t(t,e){var n=ut(Fe++,4);!U.__s&&er(n.__H,e)&&(n.__=t,n.u=e,B.__h.push(n))}function me(t){return ct=5,G(function(){return{current:t}},[])}function Si(t,e,n){ct=6,$t(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 G(t,e){var n=ut(Fe++,7);return er(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function N(t,e){return ct=8,G(function(){return t},e)}function Pt(t){var e=B.context[t.__c],n=ut(Fe++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(B)),e.props.value):t.__}function Ci(t,e){U.useDebugValue&&U.useDebugValue(e?e(t):t)}function Ti(){var t=ut(Fe++,11);if(!t.__){for(var e=B.__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 Ri(){for(var t;t=vi.shift();){var e=t.__H;if(t.__P&&e)try{e.__h.some(Xn),e.__h.some(Ii),e.__h=[]}catch(n){e.__h=[],U.__e(n,t.__v)}}}U.__b=function(t){B=null,bi&&bi(t)},U.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),ji&&ji(t,e)},U.__r=function(t){yi&&yi(t),Fe=0;var e=(B=t.__c).__H;e&&(Zn===B?(e.__h=[],B.__h=[],e.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.length&&Ri(),Fe=0)),Zn=B},U.diffed=function(t){wi&&wi(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(vi.push(e)!==1&&xi===U.requestAnimationFrame||((xi=U.requestAnimationFrame)||ls)(Ri)),e.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Zn=B=null},U.__c=function(t,e){e.some(function(n){try{n.__h.some(Xn),n.__h=n.__h.filter(function(r){return!r.__||Ii(r)})}catch(r){e.some(function(i){i.__h&&(i.__h=[])}),e=[],U.__e(r,n.__v)}}),ki&&ki(t,e)},U.unmount=function(t){_i&&_i(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.some(function(r){try{Xn(r)}catch(i){e=i}}),n.__H=void 0,e&&U.__e(e,n.__v))};var Ai=typeof requestAnimationFrame=="function";function ls(t){var e,n=function(){clearTimeout(r),Ai&&cancelAnimationFrame(e),setTimeout(t)},r=setTimeout(n,35);Ai&&(e=requestAnimationFrame(n))}function Xn(t){var e=B,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),B=e}function Ii(t){var e=B;t.__c=t.__(),B=e}function er(t,e){return!t||t.length!==e.length||e.some(function(n,r){return n!==t[r]})}function Ei(t,e){return typeof e=="function"?e(t):e}function $i(t,e){for(var n in e)t[n]=e[n];return t}function tr(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 Pi(t,e){var n=e(),r=R({t:{__:n,u:e}}),i=r[0].t,o=r[1];return $t(function(){i.__=n,i.u=e,nr(i)&&o({t:i})},[t,n,e]),T(function(){return nr(i)&&o({t:i}),t(function(){nr(i)&&o({t:i})})},[t]),n}function nr(t){try{return!((e=t.__)===(n=t.u())&&(e!==0||1/e==1/n)||e!=e&&n!=n)}catch{return!0}var e,n}function Mi(t){t()}function qi(t){return t}function Ni(){return[!1,Mi]}var Li=$t;function rr(t,e){this.props=t,this.context=e}function cs(t,e){function n(i){var o=this.props.ref;return o!=i.ref&&o&&(typeof o=="function"?o(null):o.current=null),e?!e(this.props,i)||o!=i.ref:tr(this.props,i)}function r(i){return this.shouldComponentUpdate=n,ge(t,i)}return r.displayName="Memo("+(t.displayName||t.name)+")",r.__f=r.prototype.isReactComponent=!0,r.type=t,r}(rr.prototype=new ye).isPureReactComponent=!0,rr.prototype.shouldComponentUpdate=function(t,e){return tr(this.props,t)||tr(this.state,e)};var Oi=_.__b;_.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),Oi&&Oi(t)};var us=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function ds(t){function e(n){var r=$i({},n);return delete r.ref,t(r,n.ref||null)}return e.$$typeof=us,e.render=t,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e}var zi=function(t,e){return t==null?null:Se(Se(t).map(e))},hs={map:zi,forEach:zi,count:function(t){return t?Se(t).length:0},only:function(t){var e=Se(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:Se},ps=_.__e;_.__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)}ps(t,e,n,r)};var Bi=_.unmount;function Di(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=$i({},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 Di(r,e,n)})),t}function Ui(t,e,n){return t&&n&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(r){return Ui(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 hn(){this.__u=0,this.o=null,this.__b=null}function Fi(t){var e=t.__&&t.__.__c;return e&&e.__a&&e.__a(t)}function fs(t){var e,n,r,i=null;function o(a){if(e||(e=t()).then(function(l){l&&(i=l.default||l),r=!0},function(l){n=l,r=!0}),n)throw n;if(!r)throw e;return i?ge(i,a):null}return o.displayName="Lazy",o.__f=!0,o}function Mt(){this.i=null,this.l=null}_.unmount=function(t){var e=t.__c;e&&(e.__z=!0),e&&e.__R&&e.__R(),e&&32&t.__u&&(t.type=null),Bi&&Bi(t)},(hn.prototype=new ye).__c=function(t,e){var n=e.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var i=Fi(r.__v),o=!1,a=function(){o||r.__z||(o=!0,n.__R=null,i?i(c):c())};n.__R=a;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var u=r.state.__a;r.__v.__k[0]=Ui(u,u.__c.__P,u.__c.__O)}var h;for(r.setState({__a:r.__b=null});h=r.o.pop();)h.__P=l,h.forceUpdate()}};r.__u++||32&e.__u||r.setState({__a:r.__b=r.__v.__k[0]}),t.then(a,a)},hn.prototype.componentWillUnmount=function(){this.o=[]},hn.prototype.render=function(t,e){var n=this.__v;if(!n.__m){for(var r=n;r.__;)r=r.__;r=r.__m||(r.__m=[0,0]),n.__m=[r[1]++,0]}if(this.__b){if(n.__k){var i=document.createElement("div"),o=n.__k[0].__c;n.__k[0]=Di(this.__b,i,o.__O=o.__P)}this.__b=null}var a=e.__a&&ge(O,null,t.fallback);return a&&(a.__u&=-33),[ge(O,null,e.__a?null:t.children),a]};var Vi=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 gs(t){return this.getChildContext=function(){return t.context},t.children}function ms(t){var e=this,n=t.v;if(e.componentWillUnmount=function(){Ke(null,e.h),e.h=null,e.v=null},e.v&&e.v!==n&&e.componentWillUnmount(),!e.h){for(var r=e.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;e.v=n,e.h={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(i,o){this.childNodes.push(i),e.v.insertBefore(i,o)},removeChild:function(i){this.childNodes.splice(this.childNodes.indexOf(i)>>>1,1),e.v.removeChild(i)}}}Ke(ge(gs,{context:e.context},t.__v),e.h)}function xs(t,e){var n=ge(ms,{__v:t,v:e});return n.containerInfo=e,n}(Mt.prototype=new ye).__a=function(t){var e=this,n=Fi(e.__v),r=e.l.get(t);return r[0]++,function(i){var o=function(){e.props.revealOrder?(r.push(i),Vi(e,t,r)):i()};n?n(o):o()}},Mt.prototype.render=function(t){this.i=null,this.l=new Map;var e=Se(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},Mt.prototype.componentDidUpdate=Mt.prototype.componentDidMount=function(){var t=this;this.l.forEach(function(e,n){Vi(t,n,e)})};var Hi=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,vs=/^(?: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]/,bs=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,ys=/[A-Z0-9]/g,ws=typeof document<"u",ks=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(t)};function _s(t,e,n){return e.__k==null&&(e.textContent=""),Ke(t,e),typeof n=="function"&&n(),t?t.__c:null}function js(t,e,n){return mi(t,e),typeof n=="function"&&n(),t?t.__c:null}ye.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(ye.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Qi=_.event;_.event=function(t){return Qi&&(t=Qi(t)),t.persist=function(){},t.isPropagationStopped=function(){return this.cancelBubble},t.isDefaultPrevented=function(){return this.defaultPrevented},t.nativeEvent=t};var ir,Ss={configurable:!0,get:function(){return this.class}},Wi=_.vnode;_.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||ws&&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"||ks(n.type)?c==="onfocus"?a="onfocusin":c==="onblur"?a="onfocusout":bs.test(a)&&(a=c):c=a="oninput":o&&vs.test(a)?a=a.replace(ys,"-$&").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=Se(n.children).forEach(function(u){u.props.selected=i.value.indexOf(u.props.value)!=-1})),i.defaultValue!=null&&(i.value=Se(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",Ss)):n.className&&(i.class=i.className=n.className),e.props=i})(t),t.$$typeof=Hi,Wi&&Wi(t)};var Ki=_.__r;_.__r=function(t){Ki&&Ki(t),ir=t.__c};var Gi=_.diffed;_.diffed=function(t){Gi&&Gi(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),ir=null};var Cs={ReactCurrentDispatcher:{current:{readContext:function(t){return ir.__n[t.__c].props.value},useCallback:N,useContext:Pt,useDebugValue:Ci,useDeferredValue:qi,useEffect:T,useId:Ti,useImperativeHandle:Si,useInsertionEffect:Li,useLayoutEffect:$t,useMemo:G,useReducer:he,useRef:me,useState:R,useSyncExternalStore:Pi,useTransition:Ni}}};function Ts(t){return ge.bind(null,t)}function pn(t){return!!t&&t.$$typeof===Hi}function Rs(t){return pn(t)&&t.type===O}function As(t){return!!t&&typeof t.displayName=="string"&&t.displayName.indexOf("Memo(")==0}function Is(t){return pn(t)?os.apply(null,arguments):t}function Es(t){return!!t.__k&&(Ke(null,t),!0)}function $s(t){return t&&(t.base||t.nodeType===1&&t)||null}for(var Ps=function(t,e){return t(e)},Ms=function(t,e){var n=_.debounceRendering;_.debounceRendering=function(i){return i()};var r=t(e);return _.debounceRendering=n,r},qs=pn,or={useState:R,useId:Ti,useReducer:he,useEffect:T,useLayoutEffect:$t,useInsertionEffect:Li,useTransition:Ni,useDeferredValue:qi,useSyncExternalStore:Pi,startTransition:Mi,useRef:me,useImperativeHandle:Si,useMemo:G,useCallback:N,useContext:Pt,useDebugValue:Ci,version:"18.3.1",Children:hs,render:_s,hydrate:js,unmountComponentAtNode:Es,createPortal:xs,createElement:ge,createContext:as,createFactory:Ts,cloneElement:Is,createRef:Xa,Fragment:O,isValidElement:pn,isElement:qs,isFragment:Rs,isMemo:As,findDOMNode:$s,Component:ye,PureComponent:rr,memo:cs,forwardRef:ds,flushSync:Ms,unstable_batchedUpdates:Ps,StrictMode:O,Suspense:hn,SuspenseList:Mt,lazy:fs,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Cs},Ce=[],xe=[],Ns=Uint8Array,ar="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",dt=0,Ls=ar.length;dt<Ls;++dt)Ce[dt]=ar[dt],xe[ar.charCodeAt(dt)]=dt;xe[45]=62,xe[95]=63;function Os(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 zs(t,e,n){return(e+n)*3/4-n}function qt(t){var e,n=Os(t),r=n[0],i=n[1],o=new Ns(zs(t,r,i)),a=0,l=i>0?r-4:r,c;for(c=0;c<l;c+=4)e=xe[t.charCodeAt(c)]<<18|xe[t.charCodeAt(c+1)]<<12|xe[t.charCodeAt(c+2)]<<6|xe[t.charCodeAt(c+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=e&255;return i===2&&(e=xe[t.charCodeAt(c)]<<2|xe[t.charCodeAt(c+1)]>>4,o[a++]=e&255),i===1&&(e=xe[t.charCodeAt(c)]<<10|xe[t.charCodeAt(c+1)]<<4|xe[t.charCodeAt(c+2)]>>2,o[a++]=e>>8&255,o[a++]=e&255),o}function Bs(t){return Ce[t>>18&63]+Ce[t>>12&63]+Ce[t>>6&63]+Ce[t&63]}function Ds(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(Bs(r));return i.join("")}function Nt(t){for(var e,n=t.length,r=n%3,i=[],o=16383,a=0,l=n-r;a<l;a+=o)i.push(Ds(t,a,a+o>l?l:a+o));return r===1?(e=t[n-1],i.push(Ce[e>>2]+Ce[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],i.push(Ce[e>>10]+Ce[e>>4&63]+Ce[e<<2&63]+"=")),i.join("")}function qe(t){if(t===void 0)return{};if(!Ji(t))throw new Error(`The arguments to a Convex function must be an object. Received: ${t}`);return t}function Us(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 Ji(t){const e=typeof t=="object",n=Object.getPrototypeOf(t),r=n===null||n===Object.prototype||n?.constructor?.name==="Object";return e&&r}const Yi=!0,ht=BigInt("-9223372036854775808"),sr=BigInt("9223372036854775807"),lr=BigInt("0"),Fs=BigInt("8"),Vs=BigInt("256");function Zi(t){return Number.isNaN(t)||!Number.isFinite(t)||Object.is(t,-0)}function Hs(t){t<lr&&(t-=ht+ht);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>>=Fs;return Nt(n)}function Qs(t){const e=qt(t);if(e.byteLength!==8)throw new Error(`Received ${e.byteLength} bytes, expected 8 for $integer`);let n=lr,r=lr;for(const i of e)n+=BigInt(i)*Vs**r,r++;return n>sr&&(n+=ht+ht),n}function Ws(t){if(t<ht||sr<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),Nt(new Uint8Array(e))}function Ks(t){const e=qt(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 Gs=DataView.prototype.setBigInt64?Ws:Hs,Js=DataView.prototype.getBigInt64?Ks:Qs,Xi=1024;function eo(t){if(t.length>Xi)throw new Error(`Field name ${t} exceeds maximum field name length ${Xi}.`);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 pt(t){if(t===null||typeof t=="boolean"||typeof t=="number"||typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>pt(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 qt(t.$bytes).buffer}if(r==="$integer"){if(typeof t.$integer!="string")throw new Error(`Malformed $integer field on ${t}`);return Js(t.$integer)}if(r==="$float"){if(typeof t.$float!="string")throw new Error(`Malformed $float field on ${t}`);const i=qt(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,Yi);if(!Zi(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))eo(r),n[r]=pt(i);return n}const to=16384;function Lt(t){const e=JSON.stringify(t,(n,r)=>r===void 0?"undefined":typeof r=="bigint"?`${r.toString()}n`:r);if(e.length>to){const n="[...truncated]";let r=to-n.length;const i=e.codePointAt(r-1);return i!==void 0&&i>65535&&(r-=1),e.substring(0,r)+n}return e}function cr(t,e,n,r){if(t===void 0){const a=n&&` (present at path ${n} in original object ${Lt(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<ht||sr<t)throw new Error(`BigInt ${t} does not fit into a 64-bit signed integer.`);return{$integer:Gs(t)}}if(typeof t=="number")if(Zi(t)){const a=new ArrayBuffer(8);return new DataView(a).setFloat64(0,t,Yi),{$float:Nt(new Uint8Array(a))}}else return t;if(typeof t=="boolean"||typeof t=="string")return t;if(t instanceof ArrayBuffer)return{$bytes:Nt(new Uint8Array(t))};if(Array.isArray(t))return t.map((a,l)=>cr(a,e,n+`[${l}]`));if(t instanceof Set)throw new Error(ur(n,"Set",[...t],e));if(t instanceof Map)throw new Error(ur(n,"Map",[...t],e));if(!Ji(t)){const a=t?.constructor?.name,l=a?`${a} `:"";throw new Error(ur(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&&(eo(a),i[a]=cr(l,e,n+`.${a}`));return i}function ur(t,e,n,r){return t?`${e}${Lt(n)} is not a supported Convex type (present at path ${t} in original object ${Lt(r)}). To learn about Convex's supported types, see https://docs.convex.dev/using/types.`:`${e}${Lt(n)} is not a supported Convex type.`}function Te(t){return cr(t,t,"")}var Ys=Object.defineProperty,Zs=(t,e,n)=>e in t?Ys(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,dr=(t,e,n)=>Zs(t,typeof e!="symbol"?e+"":e,n),no,ro;const Xs=Symbol.for("ConvexError");class fn extends(ro=Error,no=Xs,ro){constructor(e){super(typeof e=="string"?e:Lt(e)),dr(this,"name","ConvexError"),dr(this,"data"),dr(this,no,!0),this.data=e}}const io=()=>Array.from({length:4},()=>0);io(),io();const oo="1.42.0";var el=Object.defineProperty,tl=(t,e,n)=>e in t?el(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ao=(t,e,n)=>tl(t,typeof e!="symbol"?e+"":e,n);const nl="color:rgb(0, 145, 255)";function so(t){switch(t){case"query":return"Q";case"mutation":return"M";case"action":return"A";case"any":return"?"}}class lo{constructor(e){ao(this,"_onLogLineFuncs"),ao(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 co(t){const e=new lo(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 uo(t){return new lo(t)}function gn(t,e,n,r,i){const o=so(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}]`,nl,c)}else t.error(`[CONVEX ${o}(${r})] ${i}`)}function rl(t,e){const n=`[CONVEX FATAL ERROR] ${e}`;return t.error(n),new Error(n)}function ft(t,e,n){return`[CONVEX ${so(t)}(${e})] ${n.errorMessage}
|
|
2
|
-
Called by client`}function hr(t,e){return e.data=t.errorData,e}function Ge(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 Je(t,e){return JSON.stringify({udfPath:Ge(t),args:Te(e)})}function ho(t,e,n){const{initialNumItems:r,id:i}=n;return JSON.stringify({type:"paginated",udfPath:Ge(t),args:Te(e),options:Te({initialNumItems:r,id:i})})}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,Re=(t,e,n)=>ol(t,typeof e!="symbol"?e+"":e,n);class al{constructor(){Re(this,"nextQueryId"),Re(this,"querySetVersion"),Re(this,"querySet"),Re(this,"queryIdToToken"),Re(this,"identityVersion"),Re(this,"auth"),Re(this,"outstandingQueriesOlderThanRestart"),Re(this,"outstandingAuthOlderThanRestart"),Re(this,"paused"),Re(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=Ge(e),a=Je(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,f=this.querySetVersion+1,d={type:"Add",queryId:c,udfPath:o,args:[Te(n)],journal:r,componentPath:i};return this.paused?this.pendingQuerySetModifications.set(c,d):this.querySetVersion=f,{queryToken:a,modification:{type:"ModifyQuerySet",baseVersion:h,newVersion:f,modifications:[d]},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=Ge(e),i=Je(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:[Te(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 sl=Object.defineProperty,ll=(t,e,n)=>e in t?sl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,mn=(t,e,n)=>ll(t,typeof e!="symbol"?e+"":e,n);class cl{constructor(e,n){this.logger=e,this.markConnectionStateDirty=n,mn(this,"inflightRequests"),mn(this,"requestsOlderThanRestart"),mn(this,"inflightMutationsCount",0),mn(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)gn(this.logger,"info",r,i,c);const o=n.status;let a,l;if(e.success)a={success:!0,logLines:e.logLines,value:pt(e.result)},l=()=>o.onResult(a);else{const c=e.result,{errorData:u}=e;gn(this.logger,"error",r,i,c),a={success:!1,errorMessage:c,errorData:u!==void 0?pt(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 Ot=Symbol.for("functionName"),po=Symbol.for("toReferencePath");function ul(t){return t[po]??null}function dl(t){return t.startsWith("function://")}function hl(t){let e;if(typeof t=="string")dl(t)?e={functionHandle:t}:e={name:t};else if(t[Ot])e={name:t[Ot]};else{const n=ul(t);if(!n)throw new Error(`${t} is not a functionReference`);e={reference:n}}return e}function ae(t){const e=hl(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[Ot];if(!n)throw new Error(`${t} is not a functionReference`);return n}function pr(t){return{[Ot]:t}}function fo(t=[]){const e={get(n,r){if(typeof r=="string"){const i=[...t,r];return fo(i)}else if(r===Ot){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 pl=fo();var fl=Object.defineProperty,gl=(t,e,n)=>e in t?fl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,xn=(t,e,n)=>gl(t,typeof e!="symbol"?e+"":e,n);class zt{constructor(e){xn(this,"queryResults"),xn(this,"modifiedQueries"),this.queryResults=e,this.modifiedQueries=[]}getQuery(e,...n){const r=qe(n[0]),i=ae(e),o=this.queryResults.get(Je(i,r));if(o!==void 0)return zt.queryValue(o.result)}getAllQueries(e){const n=[],r=ae(e);for(const i of this.queryResults.values())i.udfPath===Ge(r)&&n.push({args:i.args,value:zt.queryValue(i.result)});return n}setQuery(e,n,r){const i=qe(n),o=ae(e),a=Je(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 ml{constructor(){xn(this,"queryResults"),xn(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 zt(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 zt(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?hr(r,new fn(ft("query",n.udfPath,r))):new Error(ft("query",n.udfPath,r))}}hasQueryResult(e){return this.queryResults.get(e)!==void 0}queryLogs(e){return this.queryResults.get(e)?.result?.logLines}}var xl=Object.defineProperty,vl=(t,e,n)=>e in t?xl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,fr=(t,e,n)=>vl(t,typeof e!="symbol"?e+"":e,n);class ce{constructor(e,n){fr(this,"low"),fr(this,"high"),fr(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 ce(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?go:e>=bl?yl:new ce(e%Bt|0,e/Bt|0)}toString(){return(BigInt(this.high)*BigInt(Bt)+BigInt(this.low)).toString()}equals(e){return ce.isLong(e)||(e=ce.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 ce.isLong(e)||(e=ce.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"?ce.fromNumber(e):new ce(e.low,e.high)}}const go=new ce(0,0),mo=65536,Bt=mo*mo,bl=Bt*Bt,yl=new ce(-1,-1);var wl=Object.defineProperty,kl=(t,e,n)=>e in t?wl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vn=(t,e,n)=>kl(t,typeof e!="symbol"?e+"":e,n);class xo{constructor(e,n){vn(this,"version"),vn(this,"remoteQuerySet"),vn(this,"queryPath"),vn(this,"logger"),this.version={querySet:0,ts:ce.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)gn(this.logger,"info","query",i,a);const o=pt(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)gn(this.logger,"info","query",i,a);const{errorData:o}=r;this.remoteQuerySet.set(r.queryId,{success:!1,errorMessage:r.errorMessage,errorData:o!==void 0?pt(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 gr(t){const e=qt(t);return ce.fromBytesLE(Array.from(e))}function _l(t){const e=new Uint8Array(t.toBytesLE());return Nt(e)}function vo(t){switch(t.type){case"FatalError":case"AuthError":case"ActionResponse":case"TransitionChunk":case"Ping":return{...t};case"MutationResponse":return t.success?{...t,ts:gr(t.ts)}:{...t};case"Transition":return{...t,startVersion:{...t.startVersion,ts:gr(t.startVersion.ts)},endVersion:{...t.endVersion,ts:gr(t.endVersion.ts)}}}}function jl(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:_l(t.maxObservedTimestamp)}:{...t,maxObservedTimestamp:void 0}}}var Sl=Object.defineProperty,Cl=(t,e,n)=>e in t?Sl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,J=(t,e,n)=>Cl(t,typeof e!="symbol"?e+"":e,n);const Tl=1e3,Rl=1001,Al=1005,Il=4040;let bn;function gt(){return bn===void 0&&(bn=Date.now()),typeof performance>"u"||!performance.now?Date.now():Math.round(bn+performance.now())}function bo(){return`t=${Math.round((gt()-bn)/100)/10}s`}const yo={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 El(t){if(t===void 0)return"Unknown";for(const e of Object.keys(yo))if(t.startsWith(e))return e;return"Unknown"}class $l{constructor(e,n,r,i,o,a){this.markConnectionStateDirty=o,this.debug=a,J(this,"socket"),J(this,"connectionCount"),J(this,"_hasEverConnected",!1),J(this,"lastCloseReason"),J(this,"transitionChunkBuffer",null),J(this,"defaultInitialBackoff"),J(this,"maxBackoff"),J(this,"retries"),J(this,"serverInactivityThreshold"),J(this,"reconnectDueToServerInactivityTimeout"),J(this,"scheduledReconnect",null),J(this,"networkOnlineHandler",null),J(this,"pendingNetworkRecoveryInfo",null),J(this,"uri"),J(this,"onOpen"),J(this,"onResume"),J(this,"onMessage"),J(this,"webSocketConstructor"),J(this,"logger"),J(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=vo(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:gt()})),this.lastCloseReason!=="InitialConnect"&&(this.lastCloseReason?this.logger.log("WebSocket reconnected at",bo(),"after disconnect due to",this.lastCloseReason):this.logger.log("WebSocket reconnected at",bo())),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=vo(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!==Tl&&n.code!==Rl&&n.code!==Al&&n.code!==Il){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=El(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=jl(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=gt(),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=gt()-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:gt()})):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:yo[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=gt()-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 Pl(){return Ml()}function Ml(){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 Dt extends Error{}Dt.prototype.name="InvalidTokenError";function ql(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 Nl(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 ql(e)}catch{return atob(e)}}function wo(t,e){if(typeof t!="string")throw new Dt("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 Dt(`Invalid token specified: missing part #${n+1}`);let i;try{i=Nl(r)}catch(o){throw new Dt(`Invalid token specified: invalid base64 for part #${n+1} (${o.message})`)}try{return JSON.parse(i)}catch(o){throw new Dt(`Invalid token specified: invalid json for part #${n+1} (${o.message})`)}}var Ll=Object.defineProperty,Ol=(t,e,n)=>e in t?Ll(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,pe=(t,e,n)=>Ol(t,typeof e!="symbol"?e+"":e,n);const zl=480*60*60*1e3,ko=2;class Bl{constructor(e,n,r){pe(this,"authState",{state:"noAuth"}),pe(this,"configVersion",0),pe(this,"syncState"),pe(this,"authenticate"),pe(this,"stopSocket"),pe(this,"tryRestartSocket"),pe(this,"pauseSocket"),pe(this,"resumeSocket"),pe(this,"clearAuth"),pe(this,"logger"),pe(this,"refreshTokenLeewaySeconds"),pe(this,"lastRefreshChange"),pe(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>=ko){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, ${ko-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(zl,(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 wo(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 Dl=["convexClientConstructed","convexWebSocketOpen","convexFirstMessageReceived"];function Ul(t,e){const n={sessionId:e};typeof performance>"u"||!performance.mark||performance.mark(t,{detail:n})}function Fl(t){let e=t.name.slice(6);return e=e.charAt(0).toLowerCase()+e.slice(1),{name:e,startTime:t.startTime}}function Vl(t){if(typeof performance>"u"||!performance.getEntriesByName)return[];const e=[];for(const n of Dl){const r=performance.getEntriesByName(n).filter(i=>i.entryType==="mark").filter(i=>i.detail.sessionId===t);e.push(...r)}return e.map(Fl)}var Hl=Object.defineProperty,Ql=(t,e,n)=>e in t?Hl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Y=(t,e,n)=>Ql(t,typeof e!="symbol"?e+"":e,n);class Wl{constructor(e,n,r){if(Y(this,"address"),Y(this,"state"),Y(this,"requestManager"),Y(this,"webSocketManager"),Y(this,"authenticationManager"),Y(this,"remoteQuerySet"),Y(this,"optimisticQueryResults"),Y(this,"_transitionHandlerCounter",0),Y(this,"_nextRequestId"),Y(this,"_onTransitionFns",new Map),Y(this,"_sessionId"),Y(this,"firstMessageReceived",!1),Y(this,"debug"),Y(this,"logger"),Y(this,"maxObservedTimestamp"),Y(this,"connectionStateSubscribers",new Map),Y(this,"nextConnectionStateSubscriberId",0),Y(this,"_lastPublishedConnectionState"),Y(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)}})}),Y(this,"mark",p=>{this.debug&&Ul(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&&Us(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?uo({verbose:r.verbose??!1}):r.logger!==!0&&r.logger?r.logger:co({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/${oo}/sync`;this.state=new al,this.remoteQuerySet=new xo(p=>this.state.queryPath(p),this.logger),this.requestManager=new cl(this.logger,this.markConnectionStateDirty);const f=()=>{this.webSocketManager.pause(),this.state.pause()};this.authenticationManager=new Bl(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:f,resumeSocket:()=>this.webSocketManager.resume(),clearAuth:()=>{this.clearAuth()}},{logger:this.logger,refreshTokenLeewaySeconds:i}),this.optimisticQueryResults=new ml,this.addOnTransitionHandler(p=>{n(p.queries.map(g=>g.token))}),this._nextRequestId=0,this._sessionId=Pl();const{unsavedChangesWarning:d}=r;if(typeof window>"u"||typeof window.addEventListener>"u"){if(d===!0)throw new Error("unsavedChangesWarning requested, but window.addEventListener not found! Remove {unsavedChangesWarning: true} from Convex client options.")}else d!==!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 $l(h,{onOpen:p=>{this.mark("convexWebSocketOpen"),this.webSocketManager.sendMessage({...p,type:"Connect",sessionId:this._sessionId,maxObservedTimestamp:this.maxObservedTimestamp}),this.remoteQuerySet=new xo(m=>this.state.queryPath(m),this.logger);const[g,y]=this.state.restart();y&&this.webSocketManager.sendMessage(y),this.webSocketManager.sendMessage(g);for(const m of this.requestManager.restart())this.webSocketManager.sendMessage(m)},onResume:()=>{const[p,g]=this.state.resume();g&&this.webSocketManager.sendMessage(g),p&&this.webSocketManager.sendMessage(p);for(const y of this.requestManager.resume())this.webSocketManager.sendMessage(y)},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=rl(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&&f()}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?wo(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=qe(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=qe(n),i=Je(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=qe(n),i=Je(e,r);return this.optimisticQueryResults.queryLogs(i)}queryJournal(e,n){const r=qe(n),i=Je(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?hr(i,new fn(ft("mutation",e,i))):new Error(ft("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=qe(n);this.tryReportLongDisconnect();const a=this.nextRequestId;if(this._nextRequestId++,r!==void 0){const h=r.optimisticUpdate;if(h!==void 0){const f=g=>{h(g,o)instanceof Promise&&this.logger.warn("Optimistic update handler returned a Promise. Optimistic updates should be synchronous.")},p=this.optimisticQueryResults.applyOptimisticUpdate(f,a).map(g=>{const y=this.localQueryResultByToken(g);return{token:g,modification:{kind:"Updated",result:y===void 0?void 0:{success:!0,value:y,logLines:[]}}}});this.handleTransition({queries:p,reflectedMutations:[],timestamp:this.remoteQuerySet.timestamp()})}}const l={type:"Mutation",requestId:a,udfPath:e,componentPath:i,args:[Te(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?hr(r,new fn(ft("action",e,r))):new Error(ft("action",e,r));return r.value}async actionInternal(e,n,r){const i=qe(n),o=this.nextRequestId;this._nextRequestId++,this.tryReportLongDisconnect();const a={type:"Action",requestId:o,udfPath:e,componentPath:r,args:[Te(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=Vl(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-${oo}`},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 mr(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 Kl=Object.defineProperty,Gl=(t,e,n)=>e in t?Kl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,_o=(t,e,n)=>Gl(t,typeof e!="symbol"?e+"":e,n);class Jl{constructor(e,n){this.client=e,this.onTransition=n,_o(this,"paginatedQuerySet",new Map),_o(this,"lastTransitionTs"),this.lastTransitionTs=ce.fromNumber(0),this.client.addOnTransitionHandler(r=>this.onBaseTransition(r))}subscribe(e,n,r){const i=Ge(e),o=ho(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=Ge(e),o=ho(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=mr(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=mr(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 f=mr(h);f.splitCursor&&(f.pageStatus==="SplitRecommended"||f.pageStatus==="SplitRequired"||f.page.length>i.options.initialNumItems*2)&&this.splitPaginatedQueryPage(i,c,f.splitCursor,f.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 Yl({getCurrentValue:t,subscribe:e}){const[n,r]=R(()=>({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})),T(()=>{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 Zl=Object.defineProperty,Xl=(t,e,n)=>e in t?Zl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ne=(t,e,n)=>Xl(t,typeof e!="symbol"?e+"":e,n);const ec=5e3;if(typeof or>"u")throw new Error("Required dependency 'react' not found");function jo(t,e,n){function r(i){return oc(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 ${ae(t)}`);return jo(t,e,o)},r}function tc(t,e){return function(n){return e.action(t,n)}}class nc{constructor(e,n){if(Ne(this,"address"),Ne(this,"cachedSync"),Ne(this,"cachedPaginatedQueryClient"),Ne(this,"listeners"),Ne(this,"options"),Ne(this,"closed",!1),Ne(this,"_logger"),Ne(this,"adminAuth"),Ne(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?uo({verbose:n?.verbose??!1}):n?.logger!==!0&&n?.logger?n.logger:co({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 Wl(this.address,()=>{},this.options),this.adminAuth&&this.cachedSync.setAdminAuth(this.adminAuth,this.fakeUserIdentity),this.cachedPaginatedQueryClient=new Jl(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=ae(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??ec,i=this.watchQuery(e.query,e.args||{}).onUpdate(()=>{});setTimeout(i,n)}watchPaginatedQuery(e,n,r){const i=ae(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=ae(e);return this.sync.mutation(o,r,i)}action(e,...n){const r=ae(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 yn=or.createContext(void 0);function rc(){return Pt(yn)}const ic=({client:t,children:e})=>or.createElement(yn.Provider,{value:t},e);function wn(t,...e){const n=e[0]==="skip",r=e[0]==="skip"?{}:qe(e[0]),i=typeof t=="string"?pr(t):t,o=ae(i),a=G(()=>n?{}:{query:{query:i,args:r}},[JSON.stringify(Te(r)),o,n]),c=cc(a).query;if(c instanceof Error)throw c;return c}function Ye(t){const e=typeof t=="string"?pr(t):t,n=Pt(yn);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 G(()=>jo(e,n),[n,ae(e)])}function Ut(t){const e=Pt(yn),n=typeof t=="string"?pr(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 G(()=>tc(n,e),[e,ae(n)])}function oc(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 ac=Object.defineProperty,sc=(t,e,n)=>e in t?ac(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,xr=(t,e,n)=>sc(t,typeof e!="symbol"?e+"":e,n);class lc{constructor(e){xr(this,"createWatch"),xr(this,"queries"),xr(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(ae(r),this.queries[n]===void 0)this.addQuery(n,r,i,o?{paginationOptions:o}:{});else{const a=this.queries[n];(ae(r)!==ae(a.query)||JSON.stringify(Te(i))!==JSON.stringify(Te(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;ae(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 cc(t){const e=rc();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=G(()=>(r,i,{journal:o,paginationOptions:a})=>a?e.watchPaginatedQuery(r,i,a):e.watchQuery(r,i,o?{journal:o}:{}),[e]);return uc(t,n)}function uc(t,e){const[n]=R(()=>new lc(e));n.createWatch!==e&&n.setCreateWatch(e),T(()=>()=>n.destroy(),[n]);const r=G(()=>({getCurrentValue:()=>n.getLocalResults(t),subscribe:i=>(n.setQueries(t),n.subscribe(i))}),[n,t]);return Yl(r)}var dc=Symbol.for("preact-signals");function kn(){if(Le>1)Le--;else{var t,e=!1;for((function(){var i=Sn;for(Sn=void 0;i!==void 0;)i.S.v===i.v&&(i.S.i=i.i),i=i.o})();Ft!==void 0;){var n=Ft;for(Ft=void 0,jn++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Co(n))try{n.c()}catch(i){e||(t=i,e=!0)}n=r}}if(jn=0,Le--,e)throw t}}function hc(t){if(Le>0)return t();vr=++pc,Le++;try{return t()}finally{kn()}}var D=void 0;function _n(t){var e=D;D=void 0;try{return t()}finally{D=e}}var Ft=void 0,Le=0,jn=0,pc=0,vr=0,Sn=void 0,Cn=0;function So(t){if(D!==void 0){var e=t.n;if(e===void 0||e.t!==D)return e={i:0,S:t,p:D.s,n:void 0,t:D,e:void 0,x:void 0,r:e},D.s!==void 0&&(D.s.n=e),D.s=e,t.n=e,32&D.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=D.s,e.n=void 0,D.s.n=e,D.s=e),e}}function ee(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}ee.prototype.brand=dc,ee.prototype.h=function(){return!0},ee.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:_n(function(){var r;(r=e.W)==null||r.call(e)}))},ee.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&&_n(function(){var i;(i=e.Z)==null||i.call(e)}))}},ee.prototype.subscribe=function(t){var e=this;return Vt(function(){var n=e.value;_n(function(){return t(n)})},{name:"sub"})},ee.prototype.valueOf=function(){return this.value},ee.prototype.toString=function(){return this.value+""},ee.prototype.toJSON=function(){return this.value},ee.prototype.peek=function(){var t=this;return _n(function(){return t.value})},Object.defineProperty(ee.prototype,"value",{get:function(){var t=So(this);return t!==void 0&&(t.i=this.i),this.v},set:function(t){if(t!==this.v){if(jn>100)throw new Error("Cycle detected");(function(n){Le!==0&&jn===0&&n.l!==vr&&(n.l=vr,Sn={S:n,v:n.v,i:n.i,o:Sn})})(this),this.v=t,this.i++,Cn++,Le++;try{for(var e=this.t;e!==void 0;e=e.x)e.t.N()}finally{kn()}}}});function $(t,e){return new ee(t,e)}function Co(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 To(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 Ro(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 Ze(t,e){ee.call(this,void 0,e),this.x=t,this.s=void 0,this.g=Cn-1,this.f=4}Ze.prototype=new ee,Ze.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Cn))return!0;if(this.g=Cn,this.f|=1,this.i>0&&!Co(this))return this.f&=-2,!0;var t=D;try{To(this),D=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 D=t,Ro(this),this.f&=-2,!0},Ze.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)}ee.prototype.S.call(this,t)},Ze.prototype.U=function(t){if(this.t!==void 0&&(ee.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)}},Ze.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(Ze.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var t=So(this);if(this.h(),t!==void 0&&(t.i=this.i),16&this.f)throw this.v;return this.v}});function br(t,e){return new Ze(t,e)}function Ao(t){var e=t.m;if(t.m=void 0,typeof e=="function"){Le++;var n=D;D=void 0;try{e()}catch(r){throw t.f&=-2,t.f|=8,yr(t),r}finally{D=n,kn()}}}function yr(t){for(var e=t.s;e!==void 0;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,Ao(t)}function fc(t){if(D!==this)throw new Error("Out-of-order effect");Ro(this),D=t,this.f&=-2,8&this.f&&yr(this),kn()}function mt(t,e){this.x=t,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=e?.name}mt.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.m=e)}finally{t()}},mt.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Ao(this),To(this),Le++;var t=D;return D=this,fc.bind(this,t)},mt.prototype.N=function(){2&this.f||(this.f|=2,this.u=Ft,Ft=this)},mt.prototype.d=function(){this.f|=8,1&this.f||yr(this)},mt.prototype.dispose=function(){this.d()};function Vt(t,e){var n=new mt(t,e);try{n.c()}catch(i){throw n.d(),i}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var Io,Tn,gc=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__,Eo=[];Vt(function(){Io=this.N})();function xt(t,e){_[t]=e.bind(null,_[t]||function(){})}function Rn(t){if(Tn){var e=Tn;Tn=void 0,e()}Tn=t&&t.S()}function $o(t){var e=this,n=t.data,r=vt(n);r.value=n;var i=G(function(){for(var l=e,c=e.__v;c=c.__;)if(c.__c){c.__c.__$f|=4;break}var u=br(function(){var p=r.value.value;return p===0?0:p===!0?"":p||""}),h=br(function(){return!Array.isArray(u.value)&&!ni(u.value)}),f=Vt(function(){if(this.N=Po,h.value){var p=u.value;l.__v&&l.__v.__e&&l.__v.__e.nodeType===3&&(l.__v.__e.data=p)}}),d=e.__$u.d;return e.__$u.d=function(){f(),d.call(this)},[h,u]},[]),o=i[0],a=i[1];return o.value?a.peek():a.value}$o.displayName="ReactiveTextNode",Object.defineProperties(ee.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:$o},props:{configurable:!0,get:function(){var t=this;return{data:{get value(){return t.value}}}}},__b:{configurable:!0,value:1}}),xt("__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 ee&&(n||(e.__np=n={}),n[i]=o,r[i]=o.peek())}}t(e)}),xt("__r",function(t,e){if(t(e),e.type!==O){Rn();var n,r=e.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=(function(i,o){var a;return Vt(function(){a=this},{name:o}),a.c=i,a})(function(){var i;gc&&((i=n.y)==null||i.call(n)),r.__$f|=1,r.setState({})},typeof e.type=="function"?e.type.displayName||e.type.name:""))),Rn(n)}}),xt("__e",function(t,e,n,r){Rn(),t(e,n,r)}),xt("diffed",function(t,e){Rn();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=mc(n,c,h,i),o[c]=u):u.o(h,i)}}}t(e)});function mc(t,e,n,r){var i=e in t&&t.ownerSVGElement===void 0,o=$(n);return{o:function(a,l){o.value=a,r=l},d:Vt(function(){this.N=Po;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))})}}xt("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()}}}var a=e.__np;if(a){var l=e.props;for(var c in a)l[c]=a[c]}e.__np=void 0}else{var u=e.__c;if(u){var h=u.__$u;h&&(u.__$u=void 0,h.d())}}t(e)}),xt("__h",function(t,e,n,r){(r<3||r===9)&&(e.__$f|=2),t(e,n,r)}),ye.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 vt(t,e){return G(function(){return $(t,e)},[])}var xc=function(t){queueMicrotask(function(){queueMicrotask(t)})};function vc(){hc(function(){for(var t;t=Eo.shift();)Io.call(t)})}function Po(){Eo.push(this)===1&&(_.requestAnimationFrame||xc)(vc)}const F=$(!1),An=$(void 0),Ht="https://jexitychat.de/privacy",Qt=$(Ht),wr=$("chip"),Ve=$(void 0),kr=$([]),_r=$([]),Mo=$(null);function bc(t){return t.replace(/\.convex\.site\b/,".convex.cloud")}function jr(t){return t.replace(/\.convex\.cloud\b/,".convex.site")}function yc(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 wc(t,e){const n=t.title??e?.title??"Assistant",r=t.privacyPolicyMode??e?.privacyPolicyMode??"platform",i=kc(t.privacyNoticeStyle??e?.privacyNoticeStyle);return{title:n,botName:t.botName?.trim()||e?.botName?.trim()||n,greeting:t.greeting??e?.welcomeMessage??`Hi! I'm ${n}. How can I help?`,starterQuestions:t.starterQuestions??e?.starterQuestions??[],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"?yc(t.privacyPolicyUrl??e?.privacyPolicyUrl):void 0,privacyNoticeStyle:i,sessionTimeoutMs:_c(e?.sessionTimeout),triggerIcon:t.triggerIcon??e?.triggerIcon??"chat",triggerRadius:t.triggerRadius??e?.triggerRadius??"full",triggerLabel:t.triggerLabel??e?.triggerLabel??"Chatte mit uns",mode:t.mode??"floating",proactiveMode:e?.proactiveMode??"off",proactiveDelaySeconds:Math.min(15,Math.max(0,e?.proactiveDelaySeconds??5)),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 kc(t){return t==="explicit"||t==="sheet"?"explicit":"chip"}function _c(t){switch(t){case"never":return null;case"1h":return 3600*1e3;case"6h":return 360*60*1e3;case"7d":return 10080*60*1e3;case"24h":return 1440*60*1e3;case void 0:return 3600*1e3}}async function jc(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 Sc(t,e,n){const[r,i]=R({config:null,settled:!1});return T(()=>{i({config:null,settled:!1});const o=n??"https://festive-mouse-978.eu-west-1.convex.cloud",a=o?jr(o):void 0;if(!a||!t){i({config:null,settled:!0});return}const l=new AbortController;async function c(u){try{const h=await jc(u,t,l.signal,e);l.signal.aborted||i({config:h,settled:!0})}catch(h){if(h instanceof Error&&h.name==="AbortError")return;l.signal.aborted||i({config:null,settled:!0})}}return c(a),()=>{l.abort()}},[t,e,n]),r}async function Sr(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 Cc(t,e){return e.some(n=>n==="/"?t==="/":t===n||t.startsWith(n+"/"))}function Cr(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 Tc({orgSlug:t,projSlug:e,preToken:n,convexUrl:r,preAllowedUrls:i,preExcludedPaths:o}){T(()=>{const a=r??"https://festive-mouse-978.eu-west-1.convex.cloud",l=a?jr(a):void 0;if(!l||!t)return;if(Mo.value={orgSlug:t,projSlug:e,siteUrl:l},n){kr.value=i??[],_r.value=o??[];return}let c=!1;return(async()=>{const u=await Sr(t,l,e);if(!c)if(u.ok)Ve.value=u.token,kr.value=u.allowedUrls,_r.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 In=new Set;let qo=!1;function Rc(){if(qo)return;qo=!0;const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=function(...n){t(...n),In.forEach(r=>r())},history.replaceState=function(...n){e(...n),In.forEach(r=>r())}}function Ac(t){return In.add(t),window.addEventListener("popstate",t),Rc(),()=>{In.delete(t),window.removeEventListener("popstate",t)}}function Ic(){const t=vt(window.location.href);T(()=>Ac(()=>{t.value=window.location.href}),[]);const e=kr.value,n=_r.value,r=new URL(t.value).pathname,i=Cc(r,n);return T(()=>{i?console.warn(`[JexityChat] Widget hidden — current path is in the exclude list: ${r}`):e.length>0&&!e.some(o=>Cr(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=>Cr(t.value,o))}const Tr={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",voiceAriaLabel:"Voice message",voiceComingSoon:"Voice messages — coming soon",removeAttachmentAriaLabel:"Remove attachment",openChatAriaLabel:"Open chat",closeChatAriaLabel:"Close chat",proactiveDismiss:"Dismiss",proactiveOpenAria:"Open 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:"Send us a message",homeStatusOnline:"Online",homeStatusOffline:"Offline",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.",escalationOfflineSubtitle:"Our team is offline right now — leave your email and we’ll get back to you.",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.",handoffAvailable:"An agent is available",handoffOffline:"No agent online — leave your details",resumeListLabel:"Continue conversation",resumeListTimestamp:"{minutes}m ago",pickUpWhereLeftOff:"Pick up where you left off",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 Rt,_,ri,ii,Ue,oi,ai,si,Vn,ln,At,li,Qn,Hn,Wn,ci,cn={},un=[],ns=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,It=Array.isArray;function je(t,e){for(var n in e)t[n]=e[n];return t}function Kn(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function me(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?Rt.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 Et(t,a,r,i,null)}function Et(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??++ri,__i:-1,__u:0};return i==null&&_.vnode!=null&&_.vnode(o),o}function rs(){return{current:null}}function z(t){return t.children}function ye(t,e){this.props=t,this.context=e}function lt(t,e){if(e==null)return t.__?lt(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"?lt(t):null}function is(t){if(t.__P&&t.__d){var e=t.__v,n=e.__e,r=[],i=[],o=je({},e);o.__v=e.__v+1,_.vnode&&_.vnode(o),Jn(t.__P,o,e,t.__n,t.__P.namespaceURI,32&e.__u?[n]:null,r,n??lt(e),!!(32&e.__u),i),o.__v=e.__v,o.__.__k[o.__i]=o,gi(r,o,i),e.__e=e.__=null,o.__e!=n&&ui(o)}}function ui(t){if((t=t.__)!=null&&t.__c!=null)return t.__e=t.__c.base=null,t.__k.some(function(e){if(e!=null&&e.__e!=null)return t.__e=t.__c.base=e.__e}),ui(t)}function Gn(t){(!t.__d&&(t.__d=!0)&&Ue.push(t)&&!dn.__r++||oi!=_.debounceRendering)&&((oi=_.debounceRendering)||ai)(dn)}function dn(){try{for(var t,e=1;Ue.length;)Ue.length>e&&Ue.sort(si),t=Ue.shift(),e=Ue.length,is(t)}finally{Ue.length=dn.__r=0}}function di(t,e,n,r,i,o,a,l,c,u,h){var f,d,p,g,y,m,x,b=r&&r.__k||un,j=e.length;for(c=os(n,e,b,c,j),f=0;f<j;f++)(p=n.__k[f])!=null&&(d=p.__i!=-1&&b[p.__i]||cn,p.__i=f,m=Jn(t,p,d,i,o,a,l,c,u,h),g=p.__e,p.ref&&d.ref!=p.ref&&(d.ref&&Zn(d.ref,null,p),h.push(p.ref,p.__c||g,p)),y==null&&g!=null&&(y=g),(x=!!(4&p.__u))||d.__k===p.__k?(c=hi(p,c,t,x),x&&d.__e&&(d.__e=null)):typeof p.type=="function"&&m!==void 0?c=m:g&&(c=g.nextSibling),p.__u&=-7);return n.__e=y,c}function os(t,e,n,r,i){var o,a,l,c,u,h=n.length,f=h,d=0;for(t.__k=new Array(i),o=0;o<i;o++)(a=e[o])!=null&&typeof a!="boolean"&&typeof a!="function"?(typeof a=="string"||typeof a=="number"||typeof a=="bigint"||a.constructor==String?a=t.__k[o]=Et(null,a,null,null,null):It(a)?a=t.__k[o]=Et(z,{children:a},null,null,null):a.constructor===void 0&&a.__b>0?a=t.__k[o]=Et(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):t.__k[o]=a,c=o+d,a.__=t,a.__b=t.__b+1,l=null,(u=a.__i=as(a,n,c,f))!=-1&&(f--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>h?d--:i<h&&d++),typeof a.type!="function"&&(a.__u|=4)):u!=c&&(u==c-1?d--:u==c+1?d++:(u>c?d--:d++,a.__u|=4))):t.__k[o]=null;if(f)for(o=0;o<h;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=lt(l)),xi(l,l));return r}function hi(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=hi(i[o],e,n,r));return e}t.__e!=e&&(r&&(e&&t.type&&!e.parentNode&&(e=lt(t)),n.insertBefore(t.__e,e||null)),e=t.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function Se(t,e){return e=e||[],t==null||typeof t=="boolean"||(It(t)?t.some(function(n){Se(n,e)}):e.push(t)),e}function as(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&&l==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 pi(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||ns.test(e)?n:n+"px"}function hn(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||pi(t.style,e,"");if(n)for(e in n)r&&n[e]==r[e]||pi(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")o=e!=(e=e.replace(li,"$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[At]=r[At]:(n[At]=Qn,t.addEventListener(e,o?Wn:Hn,o)):t.removeEventListener(e,o?Wn:Hn,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 fi(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e[ln]==null)e[ln]=Qn++;else if(e[ln]<n[At])return;return n(_.event?_.event(e):e)}}}function Jn(t,e,n,r,i,o,a,l,c,u){var h,f,d,p,g,y,m,x,b,j,v,C,M,W,V,le,O=e.type;if(e.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),o=[l=e.__e=n.__e]),(h=_.__b)&&h(e);e:if(typeof O=="function"){f=a.length;try{if(b=e.props,j=O.prototype&&O.prototype.render,v=(h=O.contextType)&&r[h.__c],C=h?v?v.props.value:h.__:r,n.__c?x=(d=e.__c=n.__c).__=d.__E:(j?e.__c=d=new O(b,C):(e.__c=d=new ye(b,C),d.constructor=O,d.render=ls),v&&v.sub(d),d.state||(d.state={}),d.__n=r,p=d.__d=!0,d.__h=[],d._sb=[]),j&&d.__s==null&&(d.__s=d.state),j&&O.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=je({},d.__s)),je(d.__s,O.getDerivedStateFromProps(b,d.__s))),g=d.props,y=d.state,d.__v=e,p)j&&O.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),j&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(j&&O.getDerivedStateFromProps==null&&b!==g&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(b,C),e.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(b,d.__s,C)===!1){e.__v!=n.__v&&(d.props=b,d.state=d.__s,d.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(Q){Q&&(Q.__=e)}),un.push.apply(d.__h,d._sb),d._sb=[],d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(b,d.__s,C),j&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(g,y,m)})}if(d.context=C,d.props=b,d.__P=t,d.__e=!1,M=_.__r,W=0,j)d.state=d.__s,d.__d=!1,M&&M(e),h=d.render(d.props,d.state,d.context),un.push.apply(d.__h,d._sb),d._sb=[];else do d.__d=!1,M&&M(e),h=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++W<25);d.state=d.__s,d.getChildContext!=null&&(r=je(je({},r),d.getChildContext())),j&&!p&&d.getSnapshotBeforeUpdate!=null&&(m=d.getSnapshotBeforeUpdate(g,y)),V=h!=null&&h.type===z&&h.key==null?mi(h.props.children):h,l=di(t,It(V)?V:[V],e,n,r,i,o,a,l,c,u),d.base=e.__e,e.__u&=-161,d.__h.length&&a.push(d),x&&(d.__E=d.__=null)}catch(Q){if(a.length=f,e.__v=null,c||o!=null)if(Q.then){for(e.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),e.__e=l}else{if(o!=null)for(le=o.length;le--;)Kn(o[le]);Yn(e)}else e.__e=n.__e,!e.__k&&n.__k&&(e.__k=n.__k),Q.then||Yn(e);_.__e(Q,e,n)}}else o==null&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=ss(n.__e,e,n,r,i,o,a,c,u);return(h=_.diffed)&&h(e),128&e.__u?void 0:l}function Yn(t){t&&(t.__c&&(t.__c.__e=!0),t.__k&&t.__k.some(Yn))}function gi(t,e,n){for(var r=0;r<n.length;r++)Zn(n[r],n[++r],n[++r]);_.__c&&_.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){_.__e(o,i.__v)}})}function mi(t){return typeof t!="object"||t==null||t.__b>0?t:It(t)?t.map(mi):t.constructor!==void 0?null:je({},t)}function ss(t,e,n,r,i,o,a,l,c){var u,h,f,d,p,g,y,m=n.props||cn,x=e.props,b=e.type;if(b=="svg"?i="http://www.w3.org/2000/svg":b=="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==!!b&&(b?p.localName==b:p.nodeType==3)){t=p,o[u]=null;break}}if(t==null){if(b==null)return document.createTextNode(x);t=document.createElementNS(i,b,x.is&&x),l&&(_.__m&&_.__m(e,o),l=!1),o=null}if(b==null)m===x||l&&t.data==x||(t.data=x);else{if(o=b=="textarea"&&x.defaultValue!=null?null:o&&Rt.call(t.childNodes),!l&&o!=null)for(m={},u=0;u<t.attributes.length;u++)m[(p=t.attributes[u]).name]=p.value;for(u in m)p=m[u],u=="dangerouslySetInnerHTML"?f=p:u=="children"||u in x||u=="value"&&"defaultValue"in x||u=="checked"&&"defaultChecked"in x||hn(t,u,null,p,i);for(u in x)p=x[u],u=="children"?d=p:u=="dangerouslySetInnerHTML"?h=p:u=="value"?g=p:u=="checked"?y=p:l&&typeof p!="function"||m[u]===p||hn(t,u,p,m[u],i);if(h)l||f&&(h.__html==f.__html||h.__html==t.innerHTML)||(t.innerHTML=h.__html),e.__k=[];else if(f&&(t.innerHTML=""),di(e.type=="template"?t.content:t,It(d)?d:[d],e,n,r,b=="foreignObject"?"http://www.w3.org/1999/xhtml":i,o,a,o?o[0]:n.__k&<(n,0),l,c),o!=null)for(u=o.length;u--;)Kn(o[u]);l&&b!="textarea"||(u="value",b=="progress"&&g==null?t.removeAttribute("value"):g!=null&&(g!==t[u]||b=="progress"&&!g||b=="option"&&g!=m[u])&&hn(t,u,g,m[u],i),u="checked",y!=null&&y!=t[u]&&hn(t,u,y,m[u],i))}return t}function Zn(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){_.__e(i,n)}}function xi(t,e,n){var r,i;if(_.unmount&&_.unmount(t),(r=t.ref)&&(r.current&&r.current!=t.__e||Zn(r,null,e)),(r=t.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){_.__e(o,e)}r.base=r.__P=r.__n=null}if(r=t.__k)for(i=0;i<r.length;i++)r[i]&&xi(r[i],e,n||typeof t.type!="function");n||Kn(t.__e),t.__c=t.__=t.__e=void 0}function ls(t,e,n){return this.constructor(t,n)}function Ke(t,e,n){var r,i,o,a;e==document&&(e=document.documentElement),_.__&&_.__(t,e),i=(r=typeof n=="function")?null:n&&n.__k||e.__k,o=[],a=[],Jn(e,t=(!r&&n||e).__k=me(z,null,[t]),i||cn,cn,e.namespaceURI,!r&&n?[n]:i?null:e.firstChild?Rt.call(e.childNodes):null,o,!r&&n?n:i?i.__e:e.firstChild,r,a),gi(o,t,a),t.props.children=null}function vi(t,e){Ke(t,e,vi)}function cs(t,e,n){var r,i,o,a,l=je({},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?Rt.call(arguments,2):n),Et(t.type,l,r||t.key,i||t.ref,null)}function us(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,Gn(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"+ci++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,r){return n.children(r)}).contextType=e,e}Rt=un.slice,_={__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}},ri=0,ii=function(t){return t!=null&&t.constructor===void 0},ye.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=je({},this.state),typeof t=="function"&&(t=t(je({},n),this.props)),t&&je(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),Gn(this))},ye.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),Gn(this))},ye.prototype.render=z,Ue=[],ai=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,si=function(t,e){return t.__v.__b-e.__v.__b},dn.__r=0,Vn=Math.random().toString(8),ln="__d"+Vn,At="__a"+Vn,li=/(PointerCapture)$|Capture$/i,Qn=0,Hn=fi(!1),Wn=fi(!0),ci=0;var ds=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:--ds,__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 _.vnode&&_.vnode(u),u}var Fe,B,Xn,bi,ct=0,yi=[],U=_,wi=U.__b,ki=U.__r,_i=U.diffed,ji=U.__c,Si=U.unmount,Ci=U.__;function ut(t,e){U.__h&&U.__h(B,t,ct||e),ct=0;var n=B.__H||(B.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function A(t){return ct=1,he(Pi,t)}function he(t,e,n){var r=ut(Fe++,2);if(r.t=t,!r.__c&&(r.__=[n?n(e):Pi(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=B,!B.__f)){var i=function(l,c,u){if(!r.__c.__H)return!0;var h=!1,f=r.__c.props!==l;if(r.__c.__H.__.some(function(p){if(p.__N){h=!0;var g=p.__[0];p.__=p.__N,p.__N=void 0,g!==p.__[0]&&(f=!0)}}),o){var d=o.call(this,l,c,u);return h?d||f:d}return!h||f};B.__f=!0;var o=B.shouldComponentUpdate,a=B.componentWillUpdate;B.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)},B.shouldComponentUpdate=i}return r.__N||r.__}function R(t,e){var n=ut(Fe++,3);!U.__s&&tr(n.__H,e)&&(n.__=t,n.u=e,B.__H.__h.push(n))}function $t(t,e){var n=ut(Fe++,4);!U.__s&&tr(n.__H,e)&&(n.__=t,n.u=e,B.__h.push(n))}function pe(t){return ct=5,G(function(){return{current:t}},[])}function Ti(t,e,n){ct=6,$t(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 G(t,e){var n=ut(Fe++,7);return tr(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function L(t,e){return ct=8,G(function(){return t},e)}function Pt(t){var e=B.context[t.__c],n=ut(Fe++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(B)),e.props.value):t.__}function Ri(t,e){U.useDebugValue&&U.useDebugValue(e?e(t):t)}function Ai(){var t=ut(Fe++,11);if(!t.__){for(var e=B.__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 Ii(){for(var t;t=yi.shift();){var e=t.__H;if(t.__P&&e)try{e.__h.some(er),e.__h.some($i),e.__h=[]}catch(n){e.__h=[],U.__e(n,t.__v)}}}U.__b=function(t){B=null,wi&&wi(t)},U.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),Ci&&Ci(t,e)},U.__r=function(t){ki&&ki(t),Fe=0;var e=(B=t.__c).__H;e&&(Xn===B?(e.__h=[],B.__h=[],e.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.length&&Ii(),Fe=0)),Xn=B},U.diffed=function(t){_i&&_i(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(yi.push(e)!==1&&bi===U.requestAnimationFrame||((bi=U.requestAnimationFrame)||hs)(Ii)),e.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Xn=B=null},U.__c=function(t,e){e.some(function(n){try{n.__h.some(er),n.__h=n.__h.filter(function(r){return!r.__||$i(r)})}catch(r){e.some(function(i){i.__h&&(i.__h=[])}),e=[],U.__e(r,n.__v)}}),ji&&ji(t,e)},U.unmount=function(t){Si&&Si(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.some(function(r){try{er(r)}catch(i){e=i}}),n.__H=void 0,e&&U.__e(e,n.__v))};var Ei=typeof requestAnimationFrame=="function";function hs(t){var e,n=function(){clearTimeout(r),Ei&&cancelAnimationFrame(e),setTimeout(t)},r=setTimeout(n,35);Ei&&(e=requestAnimationFrame(n))}function er(t){var e=B,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),B=e}function $i(t){var e=B;t.__c=t.__(),B=e}function tr(t,e){return!t||t.length!==e.length||e.some(function(n,r){return n!==t[r]})}function Pi(t,e){return typeof e=="function"?e(t):e}function qi(t,e){for(var n in e)t[n]=e[n];return t}function nr(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 Mi(t,e){var n=e(),r=A({t:{__:n,u:e}}),i=r[0].t,o=r[1];return $t(function(){i.__=n,i.u=e,rr(i)&&o({t:i})},[t,n,e]),R(function(){return rr(i)&&o({t:i}),t(function(){rr(i)&&o({t:i})})},[t]),n}function rr(t){try{return!((e=t.__)===(n=t.u())&&(e!==0||1/e==1/n)||e!=e&&n!=n)}catch{return!0}var e,n}function Ni(t){t()}function Li(t){return t}function Oi(){return[!1,Ni]}var zi=$t;function ir(t,e){this.props=t,this.context=e}function ps(t,e){function n(i){var o=this.props.ref;return o!=i.ref&&o&&(typeof o=="function"?o(null):o.current=null),e?!e(this.props,i)||o!=i.ref:nr(this.props,i)}function r(i){return this.shouldComponentUpdate=n,me(t,i)}return r.displayName="Memo("+(t.displayName||t.name)+")",r.__f=r.prototype.isReactComponent=!0,r.type=t,r}(ir.prototype=new ye).isPureReactComponent=!0,ir.prototype.shouldComponentUpdate=function(t,e){return nr(this.props,t)||nr(this.state,e)};var Bi=_.__b;_.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),Bi&&Bi(t)};var fs=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function gs(t){function e(n){var r=qi({},n);return delete r.ref,t(r,n.ref||null)}return e.$$typeof=fs,e.render=t,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e}var Di=function(t,e){return t==null?null:Se(Se(t).map(e))},ms={map:Di,forEach:Di,count:function(t){return t?Se(t).length:0},only:function(t){var e=Se(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:Se},xs=_.__e;_.__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)}xs(t,e,n,r)};var Ui=_.unmount;function Fi(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=qi({},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 Fi(r,e,n)})),t}function Vi(t,e,n){return t&&n&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(r){return Vi(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 pn(){this.__u=0,this.o=null,this.__b=null}function Qi(t){var e=t.__&&t.__.__c;return e&&e.__a&&e.__a(t)}function vs(t){var e,n,r,i=null;function o(a){if(e||(e=t()).then(function(l){l&&(i=l.default||l),r=!0},function(l){n=l,r=!0}),n)throw n;if(!r)throw e;return i?me(i,a):null}return o.displayName="Lazy",o.__f=!0,o}function qt(){this.i=null,this.l=null}_.unmount=function(t){var e=t.__c;e&&(e.__z=!0),e&&e.__R&&e.__R(),e&&32&t.__u&&(t.type=null),Ui&&Ui(t)},(pn.prototype=new ye).__c=function(t,e){var n=e.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var i=Qi(r.__v),o=!1,a=function(){o||r.__z||(o=!0,n.__R=null,i?i(c):c())};n.__R=a;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var u=r.state.__a;r.__v.__k[0]=Vi(u,u.__c.__P,u.__c.__O)}var h;for(r.setState({__a:r.__b=null});h=r.o.pop();)h.__P=l,h.forceUpdate()}};r.__u++||32&e.__u||r.setState({__a:r.__b=r.__v.__k[0]}),t.then(a,a)},pn.prototype.componentWillUnmount=function(){this.o=[]},pn.prototype.render=function(t,e){var n=this.__v;if(!n.__m){for(var r=n;r.__;)r=r.__;r=r.__m||(r.__m=[0,0]),n.__m=[r[1]++,0]}if(this.__b){if(n.__k){var i=document.createElement("div"),o=n.__k[0].__c;n.__k[0]=Fi(this.__b,i,o.__O=o.__P)}this.__b=null}var a=e.__a&&me(z,null,t.fallback);return a&&(a.__u&=-33),[me(z,null,e.__a?null:t.children),a]};var Hi=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 bs(t){return this.getChildContext=function(){return t.context},t.children}function ys(t){var e=this,n=t.v;if(e.componentWillUnmount=function(){Ke(null,e.h),e.h=null,e.v=null},e.v&&e.v!==n&&e.componentWillUnmount(),!e.h){for(var r=e.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;e.v=n,e.h={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(i,o){this.childNodes.push(i),e.v.insertBefore(i,o)},removeChild:function(i){this.childNodes.splice(this.childNodes.indexOf(i)>>>1,1),e.v.removeChild(i)}}}Ke(me(bs,{context:e.context},t.__v),e.h)}function ws(t,e){var n=me(ys,{__v:t,v:e});return n.containerInfo=e,n}(qt.prototype=new ye).__a=function(t){var e=this,n=Qi(e.__v),r=e.l.get(t);return r[0]++,function(i){var o=function(){e.props.revealOrder?(r.push(i),Hi(e,t,r)):i()};n?n(o):o()}},qt.prototype.render=function(t){this.i=null,this.l=new Map;var e=Se(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},qt.prototype.componentDidUpdate=qt.prototype.componentDidMount=function(){var t=this;this.l.forEach(function(e,n){Hi(t,n,e)})};var Wi=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,ks=/^(?: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]/,_s=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,js=/[A-Z0-9]/g,Ss=typeof document<"u",Cs=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(t)};function Ts(t,e,n){return e.__k==null&&(e.textContent=""),Ke(t,e),typeof n=="function"&&n(),t?t.__c:null}function Rs(t,e,n){return vi(t,e),typeof n=="function"&&n(),t?t.__c:null}ye.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(ye.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Ki=_.event;_.event=function(t){return Ki&&(t=Ki(t)),t.persist=function(){},t.isPropagationStopped=function(){return this.cancelBubble},t.isDefaultPrevented=function(){return this.defaultPrevented},t.nativeEvent=t};var or,As={configurable:!0,get:function(){return this.class}},Gi=_.vnode;_.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||Ss&&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"||Cs(n.type)?c==="onfocus"?a="onfocusin":c==="onblur"?a="onfocusout":_s.test(a)&&(a=c):c=a="oninput":o&&ks.test(a)?a=a.replace(js,"-$&").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=Se(n.children).forEach(function(u){u.props.selected=i.value.indexOf(u.props.value)!=-1})),i.defaultValue!=null&&(i.value=Se(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",As)):n.className&&(i.class=i.className=n.className),e.props=i})(t),t.$$typeof=Wi,Gi&&Gi(t)};var Ji=_.__r;_.__r=function(t){Ji&&Ji(t),or=t.__c};var Yi=_.diffed;_.diffed=function(t){Yi&&Yi(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),or=null};var Is={ReactCurrentDispatcher:{current:{readContext:function(t){return or.__n[t.__c].props.value},useCallback:L,useContext:Pt,useDebugValue:Ri,useDeferredValue:Li,useEffect:R,useId:Ai,useImperativeHandle:Ti,useInsertionEffect:zi,useLayoutEffect:$t,useMemo:G,useReducer:he,useRef:pe,useState:A,useSyncExternalStore:Mi,useTransition:Oi}}};function Es(t){return me.bind(null,t)}function fn(t){return!!t&&t.$$typeof===Wi}function $s(t){return fn(t)&&t.type===z}function Ps(t){return!!t&&typeof t.displayName=="string"&&t.displayName.indexOf("Memo(")==0}function qs(t){return fn(t)?cs.apply(null,arguments):t}function Ms(t){return!!t.__k&&(Ke(null,t),!0)}function Ns(t){return t&&(t.base||t.nodeType===1&&t)||null}for(var Ls=function(t,e){return t(e)},Os=function(t,e){var n=_.debounceRendering;_.debounceRendering=function(i){return i()};var r=t(e);return _.debounceRendering=n,r},zs=fn,ar={useState:A,useId:Ai,useReducer:he,useEffect:R,useLayoutEffect:$t,useInsertionEffect:zi,useTransition:Oi,useDeferredValue:Li,useSyncExternalStore:Mi,startTransition:Ni,useRef:pe,useImperativeHandle:Ti,useMemo:G,useCallback:L,useContext:Pt,useDebugValue:Ri,version:"18.3.1",Children:ms,render:Ts,hydrate:Rs,unmountComponentAtNode:Ms,createPortal:ws,createElement:me,createContext:us,createFactory:Es,cloneElement:qs,createRef:rs,Fragment:z,isValidElement:fn,isElement:zs,isFragment:$s,isMemo:Ps,findDOMNode:Ns,Component:ye,PureComponent:ir,memo:ps,forwardRef:gs,flushSync:Os,unstable_batchedUpdates:Ls,StrictMode:z,Suspense:pn,SuspenseList:qt,lazy:vs,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Is},Ce=[],xe=[],Bs=Uint8Array,sr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",dt=0,Ds=sr.length;dt<Ds;++dt)Ce[dt]=sr[dt],xe[sr.charCodeAt(dt)]=dt;xe[45]=62,xe[95]=63;function Us(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 Fs(t,e,n){return(e+n)*3/4-n}function Mt(t){var e,n=Us(t),r=n[0],i=n[1],o=new Bs(Fs(t,r,i)),a=0,l=i>0?r-4:r,c;for(c=0;c<l;c+=4)e=xe[t.charCodeAt(c)]<<18|xe[t.charCodeAt(c+1)]<<12|xe[t.charCodeAt(c+2)]<<6|xe[t.charCodeAt(c+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=e&255;return i===2&&(e=xe[t.charCodeAt(c)]<<2|xe[t.charCodeAt(c+1)]>>4,o[a++]=e&255),i===1&&(e=xe[t.charCodeAt(c)]<<10|xe[t.charCodeAt(c+1)]<<4|xe[t.charCodeAt(c+2)]>>2,o[a++]=e>>8&255,o[a++]=e&255),o}function Vs(t){return Ce[t>>18&63]+Ce[t>>12&63]+Ce[t>>6&63]+Ce[t&63]}function Qs(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(Vs(r));return i.join("")}function Nt(t){for(var e,n=t.length,r=n%3,i=[],o=16383,a=0,l=n-r;a<l;a+=o)i.push(Qs(t,a,a+o>l?l:a+o));return r===1?(e=t[n-1],i.push(Ce[e>>2]+Ce[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],i.push(Ce[e>>10]+Ce[e>>4&63]+Ce[e<<2&63]+"=")),i.join("")}function Me(t){if(t===void 0)return{};if(!Zi(t))throw new Error(`The arguments to a Convex function must be an object. Received: ${t}`);return t}function Hs(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 Zi(t){const e=typeof t=="object",n=Object.getPrototypeOf(t),r=n===null||n===Object.prototype||n?.constructor?.name==="Object";return e&&r}const Xi=!0,ht=BigInt("-9223372036854775808"),lr=BigInt("9223372036854775807"),cr=BigInt("0"),Ws=BigInt("8"),Ks=BigInt("256");function eo(t){return Number.isNaN(t)||!Number.isFinite(t)||Object.is(t,-0)}function Gs(t){t<cr&&(t-=ht+ht);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>>=Ws;return Nt(n)}function Js(t){const e=Mt(t);if(e.byteLength!==8)throw new Error(`Received ${e.byteLength} bytes, expected 8 for $integer`);let n=cr,r=cr;for(const i of e)n+=BigInt(i)*Ks**r,r++;return n>lr&&(n+=ht+ht),n}function Ys(t){if(t<ht||lr<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),Nt(new Uint8Array(e))}function Zs(t){const e=Mt(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 Xs=DataView.prototype.setBigInt64?Ys:Gs,el=DataView.prototype.getBigInt64?Zs:Js,to=1024;function no(t){if(t.length>to)throw new Error(`Field name ${t} exceeds maximum field name length ${to}.`);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 pt(t){if(t===null||typeof t=="boolean"||typeof t=="number"||typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>pt(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 Mt(t.$bytes).buffer}if(r==="$integer"){if(typeof t.$integer!="string")throw new Error(`Malformed $integer field on ${t}`);return el(t.$integer)}if(r==="$float"){if(typeof t.$float!="string")throw new Error(`Malformed $float field on ${t}`);const i=Mt(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,Xi);if(!eo(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))no(r),n[r]=pt(i);return n}const ro=16384;function Lt(t){const e=JSON.stringify(t,(n,r)=>r===void 0?"undefined":typeof r=="bigint"?`${r.toString()}n`:r);if(e.length>ro){const n="[...truncated]";let r=ro-n.length;const i=e.codePointAt(r-1);return i!==void 0&&i>65535&&(r-=1),e.substring(0,r)+n}return e}function ur(t,e,n,r){if(t===void 0){const a=n&&` (present at path ${n} in original object ${Lt(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<ht||lr<t)throw new Error(`BigInt ${t} does not fit into a 64-bit signed integer.`);return{$integer:Xs(t)}}if(typeof t=="number")if(eo(t)){const a=new ArrayBuffer(8);return new DataView(a).setFloat64(0,t,Xi),{$float:Nt(new Uint8Array(a))}}else return t;if(typeof t=="boolean"||typeof t=="string")return t;if(t instanceof ArrayBuffer)return{$bytes:Nt(new Uint8Array(t))};if(Array.isArray(t))return t.map((a,l)=>ur(a,e,n+`[${l}]`));if(t instanceof Set)throw new Error(dr(n,"Set",[...t],e));if(t instanceof Map)throw new Error(dr(n,"Map",[...t],e));if(!Zi(t)){const a=t?.constructor?.name,l=a?`${a} `:"";throw new Error(dr(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&&(no(a),i[a]=ur(l,e,n+`.${a}`));return i}function dr(t,e,n,r){return t?`${e}${Lt(n)} is not a supported Convex type (present at path ${t} in original object ${Lt(r)}). To learn about Convex's supported types, see https://docs.convex.dev/using/types.`:`${e}${Lt(n)} is not a supported Convex type.`}function Te(t){return ur(t,t,"")}var tl=Object.defineProperty,nl=(t,e,n)=>e in t?tl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,hr=(t,e,n)=>nl(t,typeof e!="symbol"?e+"":e,n),io,oo;const rl=Symbol.for("ConvexError");class gn extends(oo=Error,io=rl,oo){constructor(e){super(typeof e=="string"?e:Lt(e)),hr(this,"name","ConvexError"),hr(this,"data"),hr(this,io,!0),this.data=e}}const ao=()=>Array.from({length:4},()=>0);ao(),ao();const so="1.42.0";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,lo=(t,e,n)=>ol(t,typeof e!="symbol"?e+"":e,n);const al="color:rgb(0, 145, 255)";function co(t){switch(t){case"query":return"Q";case"mutation":return"M";case"action":return"A";case"any":return"?"}}class uo{constructor(e){lo(this,"_onLogLineFuncs"),lo(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 ho(t){const e=new uo(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 po(t){return new uo(t)}function mn(t,e,n,r,i){const o=co(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}]`,al,c)}else t.error(`[CONVEX ${o}(${r})] ${i}`)}function sl(t,e){const n=`[CONVEX FATAL ERROR] ${e}`;return t.error(n),new Error(n)}function ft(t,e,n){return`[CONVEX ${co(t)}(${e})] ${n.errorMessage}
|
|
2
|
+
Called by client`}function pr(t,e){return e.data=t.errorData,e}function Ge(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 Je(t,e){return JSON.stringify({udfPath:Ge(t),args:Te(e)})}function fo(t,e,n){const{initialNumItems:r,id:i}=n;return JSON.stringify({type:"paginated",udfPath:Ge(t),args:Te(e),options:Te({initialNumItems:r,id:i})})}var ll=Object.defineProperty,cl=(t,e,n)=>e in t?ll(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Re=(t,e,n)=>cl(t,typeof e!="symbol"?e+"":e,n);class ul{constructor(){Re(this,"nextQueryId"),Re(this,"querySetVersion"),Re(this,"querySet"),Re(this,"queryIdToToken"),Re(this,"identityVersion"),Re(this,"auth"),Re(this,"outstandingQueriesOlderThanRestart"),Re(this,"outstandingAuthOlderThanRestart"),Re(this,"paused"),Re(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=Ge(e),a=Je(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,f=this.querySetVersion+1,d={type:"Add",queryId:c,udfPath:o,args:[Te(n)],journal:r,componentPath:i};return this.paused?this.pendingQuerySetModifications.set(c,d):this.querySetVersion=f,{queryToken:a,modification:{type:"ModifyQuerySet",baseVersion:h,newVersion:f,modifications:[d]},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=Ge(e),i=Je(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:[Te(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 dl=Object.defineProperty,hl=(t,e,n)=>e in t?dl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,xn=(t,e,n)=>hl(t,typeof e!="symbol"?e+"":e,n);class pl{constructor(e,n){this.logger=e,this.markConnectionStateDirty=n,xn(this,"inflightRequests"),xn(this,"requestsOlderThanRestart"),xn(this,"inflightMutationsCount",0),xn(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)mn(this.logger,"info",r,i,c);const o=n.status;let a,l;if(e.success)a={success:!0,logLines:e.logLines,value:pt(e.result)},l=()=>o.onResult(a);else{const c=e.result,{errorData:u}=e;mn(this.logger,"error",r,i,c),a={success:!1,errorMessage:c,errorData:u!==void 0?pt(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 Ot=Symbol.for("functionName"),go=Symbol.for("toReferencePath");function fl(t){return t[go]??null}function gl(t){return t.startsWith("function://")}function ml(t){let e;if(typeof t=="string")gl(t)?e={functionHandle:t}:e={name:t};else if(t[Ot])e={name:t[Ot]};else{const n=fl(t);if(!n)throw new Error(`${t} is not a functionReference`);e={reference:n}}return e}function ae(t){const e=ml(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[Ot];if(!n)throw new Error(`${t} is not a functionReference`);return n}function fr(t){return{[Ot]:t}}function mo(t=[]){const e={get(n,r){if(typeof r=="string"){const i=[...t,r];return mo(i)}else if(r===Ot){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 xl=mo();var vl=Object.defineProperty,bl=(t,e,n)=>e in t?vl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vn=(t,e,n)=>bl(t,typeof e!="symbol"?e+"":e,n);class zt{constructor(e){vn(this,"queryResults"),vn(this,"modifiedQueries"),this.queryResults=e,this.modifiedQueries=[]}getQuery(e,...n){const r=Me(n[0]),i=ae(e),o=this.queryResults.get(Je(i,r));if(o!==void 0)return zt.queryValue(o.result)}getAllQueries(e){const n=[],r=ae(e);for(const i of this.queryResults.values())i.udfPath===Ge(r)&&n.push({args:i.args,value:zt.queryValue(i.result)});return n}setQuery(e,n,r){const i=Me(n),o=ae(e),a=Je(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 yl{constructor(){vn(this,"queryResults"),vn(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 zt(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 zt(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?pr(r,new gn(ft("query",n.udfPath,r))):new Error(ft("query",n.udfPath,r))}}hasQueryResult(e){return this.queryResults.get(e)!==void 0}queryLogs(e){return this.queryResults.get(e)?.result?.logLines}}var wl=Object.defineProperty,kl=(t,e,n)=>e in t?wl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,gr=(t,e,n)=>kl(t,typeof e!="symbol"?e+"":e,n);class ce{constructor(e,n){gr(this,"low"),gr(this,"high"),gr(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 ce(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?xo:e>=_l?jl:new ce(e%Bt|0,e/Bt|0)}toString(){return(BigInt(this.high)*BigInt(Bt)+BigInt(this.low)).toString()}equals(e){return ce.isLong(e)||(e=ce.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 ce.isLong(e)||(e=ce.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"?ce.fromNumber(e):new ce(e.low,e.high)}}const xo=new ce(0,0),vo=65536,Bt=vo*vo,_l=Bt*Bt,jl=new ce(-1,-1);var Sl=Object.defineProperty,Cl=(t,e,n)=>e in t?Sl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,bn=(t,e,n)=>Cl(t,typeof e!="symbol"?e+"":e,n);class bo{constructor(e,n){bn(this,"version"),bn(this,"remoteQuerySet"),bn(this,"queryPath"),bn(this,"logger"),this.version={querySet:0,ts:ce.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)mn(this.logger,"info","query",i,a);const o=pt(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)mn(this.logger,"info","query",i,a);const{errorData:o}=r;this.remoteQuerySet.set(r.queryId,{success:!1,errorMessage:r.errorMessage,errorData:o!==void 0?pt(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 mr(t){const e=Mt(t);return ce.fromBytesLE(Array.from(e))}function Tl(t){const e=new Uint8Array(t.toBytesLE());return Nt(e)}function yo(t){switch(t.type){case"FatalError":case"AuthError":case"ActionResponse":case"TransitionChunk":case"Ping":return{...t};case"MutationResponse":return t.success?{...t,ts:mr(t.ts)}:{...t};case"Transition":return{...t,startVersion:{...t.startVersion,ts:mr(t.startVersion.ts)},endVersion:{...t.endVersion,ts:mr(t.endVersion.ts)}}}}function Rl(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:Tl(t.maxObservedTimestamp)}:{...t,maxObservedTimestamp:void 0}}}var Al=Object.defineProperty,Il=(t,e,n)=>e in t?Al(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,J=(t,e,n)=>Il(t,typeof e!="symbol"?e+"":e,n);const El=1e3,$l=1001,Pl=1005,ql=4040;let yn;function gt(){return yn===void 0&&(yn=Date.now()),typeof performance>"u"||!performance.now?Date.now():Math.round(yn+performance.now())}function wo(){return`t=${Math.round((gt()-yn)/100)/10}s`}const ko={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 Ml(t){if(t===void 0)return"Unknown";for(const e of Object.keys(ko))if(t.startsWith(e))return e;return"Unknown"}class Nl{constructor(e,n,r,i,o,a){this.markConnectionStateDirty=o,this.debug=a,J(this,"socket"),J(this,"connectionCount"),J(this,"_hasEverConnected",!1),J(this,"lastCloseReason"),J(this,"transitionChunkBuffer",null),J(this,"defaultInitialBackoff"),J(this,"maxBackoff"),J(this,"retries"),J(this,"serverInactivityThreshold"),J(this,"reconnectDueToServerInactivityTimeout"),J(this,"scheduledReconnect",null),J(this,"networkOnlineHandler",null),J(this,"pendingNetworkRecoveryInfo",null),J(this,"uri"),J(this,"onOpen"),J(this,"onResume"),J(this,"onMessage"),J(this,"webSocketConstructor"),J(this,"logger"),J(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=yo(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:gt()})),this.lastCloseReason!=="InitialConnect"&&(this.lastCloseReason?this.logger.log("WebSocket reconnected at",wo(),"after disconnect due to",this.lastCloseReason):this.logger.log("WebSocket reconnected at",wo())),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=yo(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!==El&&n.code!==$l&&n.code!==Pl&&n.code!==ql){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=Ml(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=Rl(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=gt(),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=gt()-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:gt()})):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:ko[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=gt()-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 Ll(){return Ol()}function Ol(){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 Dt extends Error{}Dt.prototype.name="InvalidTokenError";function zl(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 Bl(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 zl(e)}catch{return atob(e)}}function _o(t,e){if(typeof t!="string")throw new Dt("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 Dt(`Invalid token specified: missing part #${n+1}`);let i;try{i=Bl(r)}catch(o){throw new Dt(`Invalid token specified: invalid base64 for part #${n+1} (${o.message})`)}try{return JSON.parse(i)}catch(o){throw new Dt(`Invalid token specified: invalid json for part #${n+1} (${o.message})`)}}var Dl=Object.defineProperty,Ul=(t,e,n)=>e in t?Dl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,fe=(t,e,n)=>Ul(t,typeof e!="symbol"?e+"":e,n);const Fl=480*60*60*1e3,jo=2;class Vl{constructor(e,n,r){fe(this,"authState",{state:"noAuth"}),fe(this,"configVersion",0),fe(this,"syncState"),fe(this,"authenticate"),fe(this,"stopSocket"),fe(this,"tryRestartSocket"),fe(this,"pauseSocket"),fe(this,"resumeSocket"),fe(this,"clearAuth"),fe(this,"logger"),fe(this,"refreshTokenLeewaySeconds"),fe(this,"lastRefreshChange"),fe(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>=jo){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, ${jo-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(Fl,(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 _o(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 Ql=["convexClientConstructed","convexWebSocketOpen","convexFirstMessageReceived"];function Hl(t,e){const n={sessionId:e};typeof performance>"u"||!performance.mark||performance.mark(t,{detail:n})}function Wl(t){let e=t.name.slice(6);return e=e.charAt(0).toLowerCase()+e.slice(1),{name:e,startTime:t.startTime}}function Kl(t){if(typeof performance>"u"||!performance.getEntriesByName)return[];const e=[];for(const n of Ql){const r=performance.getEntriesByName(n).filter(i=>i.entryType==="mark").filter(i=>i.detail.sessionId===t);e.push(...r)}return e.map(Wl)}var Gl=Object.defineProperty,Jl=(t,e,n)=>e in t?Gl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Y=(t,e,n)=>Jl(t,typeof e!="symbol"?e+"":e,n);class Yl{constructor(e,n,r){if(Y(this,"address"),Y(this,"state"),Y(this,"requestManager"),Y(this,"webSocketManager"),Y(this,"authenticationManager"),Y(this,"remoteQuerySet"),Y(this,"optimisticQueryResults"),Y(this,"_transitionHandlerCounter",0),Y(this,"_nextRequestId"),Y(this,"_onTransitionFns",new Map),Y(this,"_sessionId"),Y(this,"firstMessageReceived",!1),Y(this,"debug"),Y(this,"logger"),Y(this,"maxObservedTimestamp"),Y(this,"connectionStateSubscribers",new Map),Y(this,"nextConnectionStateSubscriberId",0),Y(this,"_lastPublishedConnectionState"),Y(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)}})}),Y(this,"mark",p=>{this.debug&&Hl(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&&Hs(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?po({verbose:r.verbose??!1}):r.logger!==!0&&r.logger?r.logger:ho({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/${so}/sync`;this.state=new ul,this.remoteQuerySet=new bo(p=>this.state.queryPath(p),this.logger),this.requestManager=new pl(this.logger,this.markConnectionStateDirty);const f=()=>{this.webSocketManager.pause(),this.state.pause()};this.authenticationManager=new Vl(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:f,resumeSocket:()=>this.webSocketManager.resume(),clearAuth:()=>{this.clearAuth()}},{logger:this.logger,refreshTokenLeewaySeconds:i}),this.optimisticQueryResults=new yl,this.addOnTransitionHandler(p=>{n(p.queries.map(g=>g.token))}),this._nextRequestId=0,this._sessionId=Ll();const{unsavedChangesWarning:d}=r;if(typeof window>"u"||typeof window.addEventListener>"u"){if(d===!0)throw new Error("unsavedChangesWarning requested, but window.addEventListener not found! Remove {unsavedChangesWarning: true} from Convex client options.")}else d!==!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 Nl(h,{onOpen:p=>{this.mark("convexWebSocketOpen"),this.webSocketManager.sendMessage({...p,type:"Connect",sessionId:this._sessionId,maxObservedTimestamp:this.maxObservedTimestamp}),this.remoteQuerySet=new bo(m=>this.state.queryPath(m),this.logger);const[g,y]=this.state.restart();y&&this.webSocketManager.sendMessage(y),this.webSocketManager.sendMessage(g);for(const m of this.requestManager.restart())this.webSocketManager.sendMessage(m)},onResume:()=>{const[p,g]=this.state.resume();g&&this.webSocketManager.sendMessage(g),p&&this.webSocketManager.sendMessage(p);for(const y of this.requestManager.resume())this.webSocketManager.sendMessage(y)},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=sl(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&&f()}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?_o(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=Me(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=Me(n),i=Je(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=Me(n),i=Je(e,r);return this.optimisticQueryResults.queryLogs(i)}queryJournal(e,n){const r=Me(n),i=Je(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?pr(i,new gn(ft("mutation",e,i))):new Error(ft("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=Me(n);this.tryReportLongDisconnect();const a=this.nextRequestId;if(this._nextRequestId++,r!==void 0){const h=r.optimisticUpdate;if(h!==void 0){const f=g=>{h(g,o)instanceof Promise&&this.logger.warn("Optimistic update handler returned a Promise. Optimistic updates should be synchronous.")},p=this.optimisticQueryResults.applyOptimisticUpdate(f,a).map(g=>{const y=this.localQueryResultByToken(g);return{token:g,modification:{kind:"Updated",result:y===void 0?void 0:{success:!0,value:y,logLines:[]}}}});this.handleTransition({queries:p,reflectedMutations:[],timestamp:this.remoteQuerySet.timestamp()})}}const l={type:"Mutation",requestId:a,udfPath:e,componentPath:i,args:[Te(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?pr(r,new gn(ft("action",e,r))):new Error(ft("action",e,r));return r.value}async actionInternal(e,n,r){const i=Me(n),o=this.nextRequestId;this._nextRequestId++,this.tryReportLongDisconnect();const a={type:"Action",requestId:o,udfPath:e,componentPath:r,args:[Te(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=Kl(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-${so}`},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 xr(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 Zl=Object.defineProperty,Xl=(t,e,n)=>e in t?Zl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,So=(t,e,n)=>Xl(t,typeof e!="symbol"?e+"":e,n);class ec{constructor(e,n){this.client=e,this.onTransition=n,So(this,"paginatedQuerySet",new Map),So(this,"lastTransitionTs"),this.lastTransitionTs=ce.fromNumber(0),this.client.addOnTransitionHandler(r=>this.onBaseTransition(r))}subscribe(e,n,r){const i=Ge(e),o=fo(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=Ge(e),o=fo(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=xr(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=xr(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 f=xr(h);f.splitCursor&&(f.pageStatus==="SplitRecommended"||f.pageStatus==="SplitRequired"||f.page.length>i.options.initialNumItems*2)&&this.splitPaginatedQueryPage(i,c,f.splitCursor,f.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 tc({getCurrentValue:t,subscribe:e}){const[n,r]=A(()=>({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})),R(()=>{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 nc=Object.defineProperty,rc=(t,e,n)=>e in t?nc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ne=(t,e,n)=>rc(t,typeof e!="symbol"?e+"":e,n);const ic=5e3;if(typeof ar>"u")throw new Error("Required dependency 'react' not found");function Co(t,e,n){function r(i){return cc(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 ${ae(t)}`);return Co(t,e,o)},r}function oc(t,e){return function(n){return e.action(t,n)}}class ac{constructor(e,n){if(Ne(this,"address"),Ne(this,"cachedSync"),Ne(this,"cachedPaginatedQueryClient"),Ne(this,"listeners"),Ne(this,"options"),Ne(this,"closed",!1),Ne(this,"_logger"),Ne(this,"adminAuth"),Ne(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?po({verbose:n?.verbose??!1}):n?.logger!==!0&&n?.logger?n.logger:ho({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 Yl(this.address,()=>{},this.options),this.adminAuth&&this.cachedSync.setAdminAuth(this.adminAuth,this.fakeUserIdentity),this.cachedPaginatedQueryClient=new ec(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=ae(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??ic,i=this.watchQuery(e.query,e.args||{}).onUpdate(()=>{});setTimeout(i,n)}watchPaginatedQuery(e,n,r){const i=ae(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=ae(e);return this.sync.mutation(o,r,i)}action(e,...n){const r=ae(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 wn=ar.createContext(void 0);function sc(){return Pt(wn)}const lc=({client:t,children:e})=>ar.createElement(wn.Provider,{value:t},e);function kn(t,...e){const n=e[0]==="skip",r=e[0]==="skip"?{}:Me(e[0]),i=typeof t=="string"?fr(t):t,o=ae(i),a=G(()=>n?{}:{query:{query:i,args:r}},[JSON.stringify(Te(r)),o,n]),c=pc(a).query;if(c instanceof Error)throw c;return c}function Ye(t){const e=typeof t=="string"?fr(t):t,n=Pt(wn);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 G(()=>Co(e,n),[n,ae(e)])}function Ut(t){const e=Pt(wn),n=typeof t=="string"?fr(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 G(()=>oc(n,e),[e,ae(n)])}function cc(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 uc=Object.defineProperty,dc=(t,e,n)=>e in t?uc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vr=(t,e,n)=>dc(t,typeof e!="symbol"?e+"":e,n);class hc{constructor(e){vr(this,"createWatch"),vr(this,"queries"),vr(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(ae(r),this.queries[n]===void 0)this.addQuery(n,r,i,o?{paginationOptions:o}:{});else{const a=this.queries[n];(ae(r)!==ae(a.query)||JSON.stringify(Te(i))!==JSON.stringify(Te(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;ae(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 pc(t){const e=sc();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=G(()=>(r,i,{journal:o,paginationOptions:a})=>a?e.watchPaginatedQuery(r,i,a):e.watchQuery(r,i,o?{journal:o}:{}),[e]);return fc(t,n)}function fc(t,e){const[n]=A(()=>new hc(e));n.createWatch!==e&&n.setCreateWatch(e),R(()=>()=>n.destroy(),[n]);const r=G(()=>({getCurrentValue:()=>n.getLocalResults(t),subscribe:i=>(n.setQueries(t),n.subscribe(i))}),[n,t]);return tc(r)}var gc=Symbol.for("preact-signals");function _n(){if(Le>1)Le--;else{var t,e=!1;for((function(){var i=Cn;for(Cn=void 0;i!==void 0;)i.S.v===i.v&&(i.S.i=i.i),i=i.o})();Ft!==void 0;){var n=Ft;for(Ft=void 0,Sn++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Ro(n))try{n.c()}catch(i){e||(t=i,e=!0)}n=r}}if(Sn=0,Le--,e)throw t}}function mc(t){if(Le>0)return t();br=++xc,Le++;try{return t()}finally{_n()}}var D=void 0;function jn(t){var e=D;D=void 0;try{return t()}finally{D=e}}var Ft=void 0,Le=0,Sn=0,xc=0,br=0,Cn=void 0,Tn=0;function To(t){if(D!==void 0){var e=t.n;if(e===void 0||e.t!==D)return e={i:0,S:t,p:D.s,n:void 0,t:D,e:void 0,x:void 0,r:e},D.s!==void 0&&(D.s.n=e),D.s=e,t.n=e,32&D.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=D.s,e.n=void 0,D.s.n=e,D.s=e),e}}function ee(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=e?.watched,this.Z=e?.unwatched,this.name=e?.name}ee.prototype.brand=gc,ee.prototype.h=function(){return!0},ee.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:jn(function(){var r;(r=e.W)==null||r.call(e)}))},ee.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&&jn(function(){var i;(i=e.Z)==null||i.call(e)}))}},ee.prototype.subscribe=function(t){var e=this;return Vt(function(){var n=e.value;jn(function(){return t(n)})},{name:"sub"})},ee.prototype.valueOf=function(){return this.value},ee.prototype.toString=function(){return this.value+""},ee.prototype.toJSON=function(){return this.value},ee.prototype.peek=function(){var t=this;return jn(function(){return t.value})},Object.defineProperty(ee.prototype,"value",{get:function(){var t=To(this);return t!==void 0&&(t.i=this.i),this.v},set:function(t){if(t!==this.v){if(Sn>100)throw new Error("Cycle detected");(function(n){Le!==0&&Sn===0&&n.l!==br&&(n.l=br,Cn={S:n,v:n.v,i:n.i,o:Cn})})(this),this.v=t,this.i++,Tn++,Le++;try{for(var e=this.t;e!==void 0;e=e.x)e.t.N()}finally{_n()}}}});function P(t,e){return new ee(t,e)}function Ro(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 Ao(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 Io(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 Ze(t,e){ee.call(this,void 0,e),this.x=t,this.s=void 0,this.g=Tn-1,this.f=4}Ze.prototype=new ee,Ze.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Tn))return!0;if(this.g=Tn,this.f|=1,this.i>0&&!Ro(this))return this.f&=-2,!0;var t=D;try{Ao(this),D=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 D=t,Io(this),this.f&=-2,!0},Ze.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)}ee.prototype.S.call(this,t)},Ze.prototype.U=function(t){if(this.t!==void 0&&(ee.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)}},Ze.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(Ze.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var t=To(this);if(this.h(),t!==void 0&&(t.i=this.i),16&this.f)throw this.v;return this.v}});function yr(t,e){return new Ze(t,e)}function Eo(t){var e=t.m;if(t.m=void 0,typeof e=="function"){Le++;var n=D;D=void 0;try{e()}catch(r){throw t.f&=-2,t.f|=8,wr(t),r}finally{D=n,_n()}}}function wr(t){for(var e=t.s;e!==void 0;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,Eo(t)}function vc(t){if(D!==this)throw new Error("Out-of-order effect");Io(this),D=t,this.f&=-2,8&this.f&&wr(this),_n()}function mt(t,e){this.x=t,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=e?.name}mt.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.m=e)}finally{t()}},mt.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Eo(this),Ao(this),Le++;var t=D;return D=this,vc.bind(this,t)},mt.prototype.N=function(){2&this.f||(this.f|=2,this.u=Ft,Ft=this)},mt.prototype.d=function(){this.f|=8,1&this.f||wr(this)},mt.prototype.dispose=function(){this.d()};function Vt(t,e){var n=new mt(t,e);try{n.c()}catch(i){throw n.d(),i}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var $o,Rn,bc=typeof window<"u"&&!!window.__PREACT_SIGNALS_DEVTOOLS__,Po=[];Vt(function(){$o=this.N})();function xt(t,e){_[t]=e.bind(null,_[t]||function(){})}function An(t){if(Rn){var e=Rn;Rn=void 0,e()}Rn=t&&t.S()}function qo(t){var e=this,n=t.data,r=vt(n);r.value=n;var i=G(function(){for(var l=e,c=e.__v;c=c.__;)if(c.__c){c.__c.__$f|=4;break}var u=yr(function(){var p=r.value.value;return p===0?0:p===!0?"":p||""}),h=yr(function(){return!Array.isArray(u.value)&&!ii(u.value)}),f=Vt(function(){if(this.N=Mo,h.value){var p=u.value;l.__v&&l.__v.__e&&l.__v.__e.nodeType===3&&(l.__v.__e.data=p)}}),d=e.__$u.d;return e.__$u.d=function(){f(),d.call(this)},[h,u]},[]),o=i[0],a=i[1];return o.value?a.peek():a.value}qo.displayName="ReactiveTextNode",Object.defineProperties(ee.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:qo},props:{configurable:!0,get:function(){var t=this;return{data:{get value(){return t.value}}}}},__b:{configurable:!0,value:1}}),xt("__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 ee&&(n||(e.__np=n={}),n[i]=o,r[i]=o.peek())}}t(e)}),xt("__r",function(t,e){if(t(e),e.type!==z){An();var n,r=e.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=(function(i,o){var a;return Vt(function(){a=this},{name:o}),a.c=i,a})(function(){var i;bc&&((i=n.y)==null||i.call(n)),r.__$f|=1,r.setState({})},typeof e.type=="function"?e.type.displayName||e.type.name:""))),An(n)}}),xt("__e",function(t,e,n,r){An(),t(e,n,r)}),xt("diffed",function(t,e){An();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=yc(n,c,h,i),o[c]=u):u.o(h,i)}}}t(e)});function yc(t,e,n,r){var i=e in t&&t.ownerSVGElement===void 0,o=P(n);return{o:function(a,l){o.value=a,r=l},d:Vt(function(){this.N=Mo;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))})}}xt("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()}}}var a=e.__np;if(a){var l=e.props;for(var c in a)l[c]=a[c]}e.__np=void 0}else{var u=e.__c;if(u){var h=u.__$u;h&&(u.__$u=void 0,h.d())}}t(e)}),xt("__h",function(t,e,n,r){(r<3||r===9)&&(e.__$f|=2),t(e,n,r)}),ye.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 vt(t,e){return G(function(){return P(t,e)},[])}var wc=function(t){queueMicrotask(function(){queueMicrotask(t)})};function kc(){mc(function(){for(var t;t=Po.shift();)$o.call(t)})}function Mo(){Po.push(this)===1&&(_.requestAnimationFrame||wc)(kc)}const F=P(!1),In=P(void 0),Qt="https://jexitychat.de/privacy",Ht=P(Qt),kr=P("chip"),Ve=P(void 0),_r=P([]),jr=P([]),No=P(null);function _c(t){return t.replace(/\.convex\.site\b/,".convex.cloud")}function Sr(t){return t.replace(/\.convex\.cloud\b/,".convex.site")}function jc(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 Sc(t,e){const n=t.title??e?.title??"Assistant",r=t.privacyPolicyMode??e?.privacyPolicyMode??"platform",i=Cc(t.privacyNoticeStyle??e?.privacyNoticeStyle);return{title:n,botName:t.botName?.trim()||e?.botName?.trim()||n,greeting:t.greeting??e?.welcomeMessage??`Hi! I'm ${n}. How can I help?`,starterQuestions:t.starterQuestions??e?.starterQuestions??[],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"?jc(t.privacyPolicyUrl??e?.privacyPolicyUrl):void 0,privacyNoticeStyle:i,sessionTimeoutMs:Tc(e?.sessionTimeout),triggerIcon:t.triggerIcon??e?.triggerIcon??"chat",triggerRadius:t.triggerRadius??e?.triggerRadius??"full",triggerLabel:t.triggerLabel??e?.triggerLabel??"Chatte mit uns",mode:t.mode??"floating",proactiveMode:e?.proactiveMode??"off",proactiveDelaySeconds:Math.min(15,Math.max(0,e?.proactiveDelaySeconds??5)),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 Cc(t){return t==="explicit"||t==="sheet"?"explicit":"chip"}function Tc(t){switch(t){case"never":return null;case"1h":return 3600*1e3;case"6h":return 360*60*1e3;case"7d":return 10080*60*1e3;case"24h":return 1440*60*1e3;case void 0:return 3600*1e3}}async function Rc(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 Ac(t,e,n){const[r,i]=A({config:null,settled:!1});return R(()=>{i({config:null,settled:!1});const o=n??"https://tame-spider-109.eu-west-1.convex.cloud",a=o?Sr(o):void 0;if(!a||!t){i({config:null,settled:!0});return}const l=new AbortController;async function c(u){try{const h=await Rc(u,t,l.signal,e);l.signal.aborted||i({config:h,settled:!0})}catch(h){if(h instanceof Error&&h.name==="AbortError")return;l.signal.aborted||i({config:null,settled:!0})}}return c(a),()=>{l.abort()}},[t,e,n]),r}async function Cr(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 Ic(t,e){return e.some(n=>n==="/"?t==="/":t===n||t.startsWith(n+"/"))}function Tr(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 Ec({orgSlug:t,projSlug:e,preToken:n,convexUrl:r,preAllowedUrls:i,preExcludedPaths:o}){R(()=>{const a=r??"https://tame-spider-109.eu-west-1.convex.cloud",l=a?Sr(a):void 0;if(!l||!t)return;if(No.value={orgSlug:t,projSlug:e,siteUrl:l},n){_r.value=i??[],jr.value=o??[];return}let c=!1;return(async()=>{const u=await Cr(t,l,e);if(!c)if(u.ok)Ve.value=u.token,_r.value=u.allowedUrls,jr.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 En=new Set;let Lo=!1;function $c(){if(Lo)return;Lo=!0;const t=history.pushState.bind(history),e=history.replaceState.bind(history);history.pushState=function(...n){t(...n),En.forEach(r=>r())},history.replaceState=function(...n){e(...n),En.forEach(r=>r())}}function Pc(t){return En.add(t),window.addEventListener("popstate",t),$c(),()=>{En.delete(t),window.removeEventListener("popstate",t)}}function qc(){const t=vt(window.location.href);R(()=>Pc(()=>{t.value=window.location.href}),[]);const e=_r.value,n=jr.value,r=new URL(t.value).pathname,i=Ic(r,n);return R(()=>{i?console.warn(`[JexityChat] Widget hidden — current path is in the exclude list: ${r}`):e.length>0&&!e.some(o=>Tr(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=>Tr(t.value,o))}const Rr={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",voiceAriaLabel:"Voice message",voiceComingSoon:"Voice messages — coming soon",removeAttachmentAriaLabel:"Remove attachment",openChatAriaLabel:"Open chat",closeChatAriaLabel:"Close chat",proactiveDismiss:"Dismiss",proactiveOpenAria:"Open 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:"Send us a message",homeStatusOnline:"Online",homeStatusOffline:"Offline",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.",escalationOfflineSubtitle:"Our team is offline right now — leave your email and we’ll get back to you.",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.",handoffAvailable:"An agent is available",handoffOffline:"No agent online — leave your details",resumeListLabel:"Continue conversation",resumeListTimestamp:"{minutes}m ago",pickUpWhereLeftOff:"Pick up where you left off",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.",noticeAiResumed:"The assistant is back and can answer your questions again.",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.",magiclineTrialSuccessTitle:"Book a trial session",magiclineTrialSuccessDetail:"Done! Your trial session is booked. You'll receive a confirmation email shortly – please check your inbox.",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.",magiclineContractSuccessTitle:"Sign up for membership",magiclineContractSuccessDetail:"Welcome aboard! Your membership is all set. Your confirmation email is on its way.",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",magiclineVoucherLabel:"Voucher code",magiclineVoucherPlaceholder:"Enter voucher code…",magiclineVoucherApply:"Apply",magiclineVoucherAppliedDiscount:"Discount ({discount})",magiclineVoucherCreditNotice:"Account credit applied — not deducted from contract total.",magiclineVoucherRemarks:"Voucher remarks",magiclineVoucherInvalid:'Voucher "{code}" is not valid. Please check the code and try again.',magiclineVoucherDisabled:"Voucher codes are not available for this membership.",magiclineGesamtpreisBeforeDiscount:"Total contract volume (before voucher discount)",newReplyTitle:"New reply",waitingTitle:"You’re in the queue",waitingSubtitle:"Keep this tab open — we’ll alert you right here the moment someone replies.",waitingLeaveEmail:"Rather get an email? Leave your details"},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",voiceAriaLabel:"Sprachnachricht",voiceComingSoon:"Sprachnachrichten — bald verfügbar",removeAttachmentAriaLabel:"Anhang entfernen",openChatAriaLabel:"Chat öffnen",closeChatAriaLabel:"Chat schließen",proactiveDismiss:"Schließen",proactiveOpenAria:"Chat öffnen",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:"Schreib uns eine Nachricht",homeStatusOnline:"Online",homeStatusOffline:"Offline",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.",escalationOfflineSubtitle:"Unser Team ist gerade offline — hinterlasse deine E-Mail und wir melden uns bei dir.",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.",handoffAvailable:"Ein Mitarbeiter ist verfügbar",handoffOffline:"Kein Mitarbeiter online — hinterlasse deine Daten",resumeListLabel:"Unterhaltung fortsetzen",resumeListTimestamp:"vor {minutes} Min.",pickUpWhereLeftOff:"Da weitermachen, wo Sie aufgehört haben",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.",noticeAiResumed:"The assistant is back and can answer your questions again.",quoteMessage:"Quote this message",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.",magiclineTrialSuccessTitle:"Book a trial session",magiclineTrialSuccessDetail:"Done! Your trial session is booked. You'll receive a confirmation email shortly – please check your inbox.",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.",magiclineContractSuccessTitle:"Sign up for membership",magiclineContractSuccessDetail:"Welcome aboard! Your membership is all set. Your confirmation email is on its way.",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",magiclineVoucherLabel:"Voucher code",magiclineVoucherPlaceholder:"Enter voucher code…",magiclineVoucherApply:"Apply",magiclineVoucherAppliedDiscount:"Discount ({discount})",magiclineVoucherCreditNotice:"Account credit applied — not deducted from contract total.",magiclineVoucherRemarks:"Voucher remarks",magiclineVoucherInvalid:'Voucher "{code}" is not valid. Please check the code and try again.',magiclineVoucherDisabled:"Voucher codes are not available for this membership.",magiclineGesamtpreisBeforeDiscount:"Total contract volume (before voucher discount)",newReplyTitle:"New reply",waitingTitle:"You’re in the queue",waitingSubtitle:"Keep this tab open — we’ll alert you right here the moment someone replies.",waitingLeaveEmail:"Rather get an email? Leave your details"},Oo={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",voiceAriaLabel:"Sprachnachricht",voiceComingSoon:"Sprachnachrichten — bald verfügbar",removeAttachmentAriaLabel:"Anhang entfernen",openChatAriaLabel:"Chat öffnen",closeChatAriaLabel:"Chat schließen",proactiveDismiss:"Schließen",proactiveOpenAria:"Chat öffnen",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:"Schreib uns eine Nachricht",homeStatusOnline:"Online",homeStatusOffline:"Offline",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.",escalationOfflineSubtitle:"Unser Team ist gerade offline — hinterlasse deine E-Mail und wir melden uns bei dir.",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.",handoffAvailable:"Ein Mitarbeiter ist verfügbar",handoffOffline:"Kein Mitarbeiter online — hinterlasse deine Daten",resumeListLabel:"Unterhaltung fortsetzen",resumeListTimestamp:"vor {minutes} Min.",pickUpWhereLeftOff:"Da weitermachen, wo Sie aufgehört haben",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.",noticeAiResumed:"Der Assistent ist wieder da und kann Ihre Fragen beantworten.",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.",magiclineTrialSuccessTitle:"Probetraining buchen",magiclineTrialSuccessDetail:"Geschafft! Dein Probetraining ist gebucht. Du bekommst gleich eine Bestätigung per E-Mail – schau bitte in dein Postfach.",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.",magiclineContractSuccessTitle:"Mitgliedschaft abschließen",magiclineContractSuccessDetail:"Willkommen an Bord! Deine Mitgliedschaft ist abgeschlossen. Die Bestätigung kommt gleich per E-Mail.",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",magiclineVoucherLabel:"Gutscheincode",magiclineVoucherPlaceholder:"Gutscheincode eingeben…",magiclineVoucherApply:"Einlösen",magiclineVoucherAppliedDiscount:"Rabatt ({discount})",magiclineVoucherCreditNotice:"Guthaben wird angerechnet — nicht vom Vertragsvolumen abgezogen.",magiclineVoucherRemarks:"Hinweis zum Gutschein",magiclineVoucherInvalid:'Gutscheincode „{code}" ist nicht gültig. Bitte überprüfen Sie den Code und versuchen Sie es erneut.',magiclineVoucherDisabled:"Gutscheincodes sind für diese Mitgliedschaft nicht verfügbar.",magiclineGesamtpreisBeforeDiscount:"Gesamtes Vertragsvolumen (vor Gutscheinrabatt)",newReplyTitle:"Neue Antwort",waitingTitle:"Du bist in der Warteschlange",waitingSubtitle:"Lass diesen Tab offen — wir benachrichtigen dich hier, sobald jemand antwortet.",waitingLeaveEmail:"Lieber per E-Mail? Hinterlasse deine Daten"},Ec=[{value:"de",label:"Deutsch",flag:"🇩🇪"},{value:"en",label:"English",flag:"🇬🇧"}],$c="de",Pc="jex-locale",Ae=$("de"),Mc={en:Tr,de:No};function j(){return Mc[Ae.value]??Tr}function Rr(t){if(!t)return null;const e=(t.split("-")[0]??"").toLowerCase();return Ec.some(r=>r.value===e)?e:null}function Lo(t){const e=Rr(t);if(e)return e;try{const n=Rr(localStorage.getItem(Pc));if(n)return n}catch{}if(typeof navigator<"u"){const n=Rr(navigator.language);if(n)return n}return $c}function qc(t){T(()=>{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&&(Ae.value=Lo(i))}return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t])}const Oo="jex-session-history",zo=Oo,Bo=1440*60*1e3,ne=$([]),fe=$(null),He=$(void 0),Ar=$(!1),Ir=br(()=>ne.value.length>0),bt=$(null),Nc="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",Lc=6;function Oc(){let t="";const e=new Uint8Array(1);for(;t.length<Lc;)crypto.getRandomValues(e),e[0]<252&&(t+=Nc[e[0]%36]);return"JEX-"+t}function zc(t){if(t===null)return null;if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return t}function Do(t,e,n){if(n===null)return t;const r=typeof n=="number"?n:Bo;return t.filter(i=>e-i.lastActivityAt<=r)}function Bc(t,e,n,r){return n?Do(t,e,r):t}function Dc(t){try{const e=sessionStorage.getItem(zo);if(!e)return He.value=void 0,[];const n=JSON.parse(e);if(n.v!==1||!Array.isArray(n.entries))return He.value=void 0,[];const r=Object.prototype.hasOwnProperty.call(n,"timeoutMs");return He.value=zc(n.timeoutMs),Bc(n.entries,t,r,He.value)}catch{return He.value=void 0,[]}}function Wt(t){try{const e={v:1,entries:t,timeoutMs:He.value};sessionStorage.setItem(zo,JSON.stringify(e))}catch{}}function Uc(){const t=Date.now(),e=Dc(t);ne.value=e,Wt(e),fe.value=e[e.length-1]?.ref??null,Ar.value=!0}function Fc(t){He.value=t;const e=Date.now(),n=Do(ne.value,e,t),r=fe.value!==null&&!n.some(i=>i.ref===fe.value);return ne.value=n,r&&(fe.value=null),Wt(n),{activeRefPruned:r}}function Uo(){const t=Oc(),e=Date.now(),n=[...ne.value,{ref:t,startedAt:e,lastActivityAt:e}];return ne.value=n,fe.value=t,Wt(n),t}function Fo(){fe.value=null}function Vo(t){const e=Date.now(),n=ne.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);ne.value=n,fe.value=t,Wt(n)}function Er(t){if(!t)return;const e=Date.now(),n=ne.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);ne.value=n,Wt(n)}const ue=$(Ho());function Ho(){return Ir.value?[{id:"home"}]:[{id:"home"},{id:"chat"}]}function Vc(){ue.value=Ho()}const Hc=$("screen");function Oe(t){ue.value=[...ue.value,t]}function $r(){ue.value.length>1&&(ue.value=ue.value.slice(0,-1))}function Pr(t){ue.value=[...ue.value.slice(0,-1),t]}const Qc=6e4,Kt=$(!1),Mr=$(!1),qr=new Set;function Wc(t){return qr.add(t),()=>{qr.delete(t)}}function Kc(){const t=fe.value;return t?ne.value.find(n=>n.ref===t)?.lastActivityAt??null:null}function Qo(t){const e=Kc();return e===null?!1:Date.now()-e>t}function Nr(){if(!(Kt.value&&ne.value.length===0)){ne.value=[],fe.value=null;try{sessionStorage.removeItem(Oo)}catch(t){console.warn("[JexityChat] Idle-lock storage clear failed:",t)}for(const t of qr)try{t()}catch(e){console.warn("[JexityChat] Lock reset callback threw:",e)}ue.value=[{id:"home"}],Kt.value=!0}}function En(){Kt.value&&(Kt.value=!1)}function Gc(t=Bo){let e=document.visibilityState==="hidden"?Date.now():null;const n=()=>{if(document.visibilityState==="hidden"){e=Date.now();return}(e!==null&&Date.now()-e>t||Qo(t))&&Nr(),e=null};document.addEventListener("visibilitychange",n);const r=setInterval(()=>{Mr.value||Qo(t)&&Nr()},Qc);return()=>{document.removeEventListener("visibilitychange",n),clearInterval(r),e=null}}function Jc(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 $n({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 Yc(){const t=j();return ue.value.length>1?s("button",{class:"jex-header-back",onClick:$r,"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($n,{size:24})}function Zc({title:t}){return s("div",{class:"jex-header-info",children:s("h3",{children:t})})}function Wo({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 Xc(){const t=j();return s("button",{class:"jex-header-close",type:"button",onClick:()=>{F.value=!1},"aria-label":t.closeChatAriaLabel,title:t.closeChatAriaLabel,children:s(Wo,{size:18})})}function eu({action:t,showClose:e=!0}){return!t&&!e?null:s("div",{class:"jex-header-right",children:[t,e&&s(Xc,{})]})}function Ko({title:t,rightAction:e,showClose:n=!0}){return s("header",{class:"jex-chat-header",children:[s(Yc,{}),s(Zc,{title:t}),s(eu,{action:e,showClose:n})]})}function tu({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(tu,{size:14}),s("span",{children:["Powered by ",s("strong",{children:"Jexity"})]})]})})}function Jo({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 nu({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 ru={chat:s(Jo,{size:28}),bot:s($n,{size:28}),sparkles:s(nu,{size:28})},iu={none:"0px",sm:"0.5rem",md:"0.75rem",lg:"1.25rem",full:"9999px"};function ou({radius:t="full",iconOption:e="chat",label:n}){const r=j(),i=n??r.fabLabel,o=i!=="";return s("button",{class:`jex-floating-button${F.value?"":" jex-fab-pulse"}${!F.value&&o?" jex-has-label":""}`,style:{borderRadius:iu[t]??"9999px"},onClick:()=>{F.value=!F.value},"aria-label":F.value?r.closeChatAriaLabel:r.openChatAriaLabel,children:F.value?s(Wo,{size:28}):s("div",{class:"jex-fab-inner",children:[ru[e],o&&s("span",{class:"jex-fab-label",children:i})]})})}const Pn=$(!1);function au(t,e){return e?`jex-proactive-dismissed:${t}:${e}`:`jex-proactive-dismissed:${t}`}function Yo(t){try{return sessionStorage.getItem(t)!==null}catch{return!1}}function su(t){try{sessionStorage.setItem(t,"1")}catch{}}function lu(t){return t.isOpen||t.mode==="off"||t.hasHistory||t.dismissed?"skip":t.mode==="teaser"?"teaser":"open"}function cu({title:t,message:e,guardKey:n}){const r=j();function i(){Pn.value=!1,F.value=!0}function o(a){a.stopPropagation(),su(n),Pn.value=!1}return s("div",{class:"jex-proactive-teaser",role:"button",tabIndex:0,"aria-label":r.proactiveOpenAria,onClick:i,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&i()},children:[s("div",{class:"jex-proactive-avatar",children:s($n,{size:20})}),s("div",{class:"jex-proactive-body",children:[s("span",{class:"jex-proactive-title",children:t}),s("span",{class:"jex-proactive-message",children:e})]}),s("button",{type:"button",class:"jex-proactive-dismiss","aria-label":r.proactiveDismiss,onClick:o,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","aria-hidden":"true",children:[s("path",{d:"M18 6 6 18"}),s("path",{d:"m6 6 12 12"})]})})]})}const yt=$("");function uu(t){if(!t)return;const e=t.trim().split(/\s+/)[0];if(!e)return;const n=`@${e} `,r=yt.value;r.includes(n)||r.includes(`@${e}`)||(yt.value=r.trimStart()?`${n}${r.trimStart()}`:n)}const Gt=$(null),Zo=$(Date.now()),Mn=$(!1),Lr=$(!1),Jt=$(!1),qn=$(null);function Xo(){return wr.value==="explicit"&&!Lr.value}function ea(){Xo()&&(Jt.value=!0)}function du(){Lr.value=!0,Jt.value=!1}function ta(){Lr.value=!1,Jt.value=!1,qn.value=null}const ze=$([]),hu=4,pu=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 gu(t){const e=Array.from(t).filter(i=>i.type.startsWith("image/")&&i.size<=pu);if(e.length===0)return;const n=hu-ze.value.length;if(n<=0)return;const r=e.slice(0,n).map(i=>({id:fu(),file:i,previewUrl:URL.createObjectURL(i)}));ze.value=[...ze.value,...r]}function mu(t){const e=ze.value.find(n=>n.id===t);e&&URL.revokeObjectURL(e.previewUrl),ze.value=ze.value.filter(n=>n.id!==t)}function xu(){for(const t of ze.value)URL.revokeObjectURL(t.previewUrl);ze.value=[]}function na(t,e){const n={get(r,i){if(typeof i=="string"){const o=[...e,i];return na(t,o)}else if(i===po){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 vu=()=>na("components",[]),re=pl;vu();function ra({sessionId:t,visitorId:e,ensureSession:n}){const r=Ye(re.functions.chat.public.conversations.send);return async function(o){if(Xo()){qn.value=o,ea();return}if(!Mn.value){Mn.value=!0;try{const a=t&&e?{sessionId:t,visitorId:e}:await n();if(!a)return;yt.value="",xu();try{const l=await r({sessionId:a.sessionId,visitorId:a.visitorId,content:o});l.ok?Er(a.visitorId):l.reason==="rate_limited"&&(Gt.value=Date.now()+l.retryAfterMs)}catch(l){console.error("[jexity] Failed to send message:",l)}}finally{Mn.value=!1}}}}function bu(){const t=Gt.value,e=Zo.value;T(()=>{if(t===null)return;const i=setInterval(()=>{Zo.value=Date.now()},1e3),o=setTimeout(()=>{Gt.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=j(),{isActive:e,remainingSeconds:n}=bu();return e?s("div",{class:"jex-rate-limit-notice",role:"status","aria-live":"polite",children:t.errorRateLimited.replace("{seconds}",String(n))}):null}const wt=$(null),Yt=$(null);function ia(){Yt.value=null}function wu(){const t=j(),e=wt.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 oa=132;function _u({onSend:t}){const e=me(null),n=me(null);T(()=>{const l=e.current;if(!l)return;l.style.height="0";const c=Math.min(l.scrollHeight,oa);l.style.height=`${c}px`,l.style.overflowY=l.scrollHeight>oa?"auto":"hidden"},[yt.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&&gu(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=j(),a=yt,l=ze,{textareaRef:c,fileInputRef:u,onKeyDown:h,onAttachClick:f,onFilesPicked:d,onCardClick:p}=_u({onSend:r}),g=a.value.trim().length>0,y=l.value.length>0,m=(g||y)&&!e;return s("div",{class:"jex-composer-card",onClick:p,children:[y&&s("div",{class:"jex-composer-attachments",role:"list",children:l.value.map(v=>s("div",{class:"jex-attachment-chip",role:"listitem",children:[s("img",{src:v.previewUrl,alt:v.file.name,class:"jex-attachment-thumb"}),s("button",{type:"button",class:"jex-attachment-remove","aria-label":o.removeAttachmentAriaLabel,onClick:()=>{mu(v.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"})]})})]},v.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:v=>{a.value=v.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:d,tabIndex:-1,"aria-hidden":"true"}),s("button",{type:"button",class:"jex-attach-btn","aria-label":o.attachComingSoon,title:o.attachComingSoon,disabled:!0,onClick:f,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",{type:"button",class:"jex-attach-btn","aria-label":o.voiceComingSoon,title:o.voiceComingSoon,disabled:!0,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:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"}),s("path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}),s("line",{x1:"12",y1:"19",x2:"12",y2:"22"})]})})]}),s("button",{class:`jex-send-btn${m?" jex-send-btn-active":""}`,type:"button",onClick:r,"aria-label":o.sendAriaLabel,disabled:e||!g&&!y,children:s(ku,{size:16})})]})]})}function aa({variant:t,isOpen:e=!1,onAcknowledge:n}){const r=j(),i=Qt.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=j(),c=yt,u=wr.value,h=ra({sessionId:t,visitorId:e,ensureSession:o}),f=Gt.value!==null&&Gt.value>Date.now(),d=n||r||f,p=u==="explicit"&&Jt.value;function g(){du();const m=qn.value;qn.value=null,m&&h(m)}if(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 y(){const m=c.value.trim();!m||d||await h(m)}return s("div",{class:"jex-chat-input",children:[s(yu,{}),s(wu,{}),u==="chip"&&s(aa,{variant:"chip"}),s("div",{class:`jex-chat-input-composer-gate${p?" jex-chat-input-composer-gate-open":""}`,children:[s(ju,{isStreaming:r,disabled:d,inputDisabled:n||r||p,onSend:y,onFocus:ea}),u==="explicit"&&s(aa,{variant:"explicit",isOpen:Jt.value,onAcknowledge:g})]})]})}const Cu=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const sa=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const Tu=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const la=t=>{const e=Tu(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Ru={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 Au=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const Iu=({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:r,children:i,iconNode:o,class:a="",...l})=>ge("svg",{...Ru,width:String(e),height:e,stroke:t,"stroke-width":r?Number(n)*24/Number(e):n,class:["lucide",a].join(" "),...!i&&!Au(l)&&{"aria-hidden":"true"},...l},[...o.map(([c,u])=>ge(c,u)),...Se(i)]);const Eu=(t,e)=>{const n=({class:r="",className:i="",children:o,...a})=>ge(Iu,{...a,iconNode:e,class:Cu(`lucide-${sa(la(t))}`,`lucide-${sa(t)}`,r,i)},o);return n.displayName=la(t),n};const $u=Eu("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 Xe=Or();function ca(t){Xe=t}var et={exec:()=>null};function A(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(se.caret,"$1"),n=n.replace(i,a),r},getRegex:()=>new RegExp(n,e)};return r}var Pu=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),se={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)}}>`)},Mu=/^(?:[ \t]*(?:\n|$))+/,qu=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Nu=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Zt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Lu=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,zr=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ua=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,da=A(ua).replace(/bull/g,zr).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(),Ou=A(ua).replace(/bull/g,zr).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(),Br=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,zu=/^[^\n]+/,Dr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Bu=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Dr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Du=A(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,zr).getRegex(),Nn="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",Ur=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Uu=A("^ {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",Ur).replace("tag",Nn).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ha=A(Br).replace("hr",Zt).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",Nn).getRegex(),Fu=A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ha).getRegex(),Fr={blockquote:Fu,code:qu,def:Bu,fences:Nu,heading:Lu,hr:Zt,html:Uu,lheading:da,list:Du,newline:Mu,paragraph:ha,table:et,text:zu},pa=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Zt).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",Nn).getRegex(),Vu={...Fr,lheading:Ou,table:pa,paragraph:A(Br).replace("hr",Zt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",pa).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",Nn).getRegex()},Hu={...Fr,html:A(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ur).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:et,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(Br).replace("hr",Zt).replace("heading",` *#{1,6} *[^
|
|
11
|
-
]`).replace("lheading",
|
|
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.",noticeAiResumed:"Der Assistent ist wieder da und kann Ihre Fragen beantworten.",quoteMessage:"Diese Nachricht zitieren",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.",magiclineTrialSuccessTitle:"Probetraining buchen",magiclineTrialSuccessDetail:"Geschafft! Dein Probetraining ist gebucht. Du bekommst gleich eine Bestätigung per E-Mail – schau bitte in dein Postfach.",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.",magiclineContractSuccessTitle:"Mitgliedschaft abschließen",magiclineContractSuccessDetail:"Willkommen an Bord! Deine Mitgliedschaft ist abgeschlossen. Die Bestätigung kommt gleich per E-Mail.",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",magiclineVoucherLabel:"Gutscheincode",magiclineVoucherPlaceholder:"Gutscheincode eingeben…",magiclineVoucherApply:"Einlösen",magiclineVoucherAppliedDiscount:"Rabatt ({discount})",magiclineVoucherCreditNotice:"Guthaben wird angerechnet — nicht vom Vertragsvolumen abgezogen.",magiclineVoucherRemarks:"Hinweis zum Gutschein",magiclineVoucherInvalid:'Gutscheincode „{code}" ist nicht gültig. Bitte überprüfen Sie den Code und versuchen Sie es erneut.',magiclineVoucherDisabled:"Gutscheincodes sind für diese Mitgliedschaft nicht verfügbar.",magiclineGesamtpreisBeforeDiscount:"Gesamtes Vertragsvolumen (vor Gutscheinrabatt)",newReplyTitle:"Neue Antwort",waitingTitle:"Du bist in der Warteschlange",waitingSubtitle:"Lass diesen Tab offen — wir benachrichtigen dich hier, sobald jemand antwortet.",waitingLeaveEmail:"Lieber per E-Mail? Hinterlasse deine Daten"},Mc=[{value:"de",label:"Deutsch",flag:"🇩🇪"},{value:"en",label:"English",flag:"🇬🇧"}],Nc="de",Lc="jex-locale",Ae=P("de"),Oc={en:Rr,de:Oo};function S(){return Oc[Ae.value]??Rr}function Ar(t){if(!t)return null;const e=(t.split("-")[0]??"").toLowerCase();return Mc.some(r=>r.value===e)?e:null}function zo(t){const e=Ar(t);if(e)return e;try{const n=Ar(localStorage.getItem(Lc));if(n)return n}catch{}if(typeof navigator<"u"){const n=Ar(navigator.language);if(n)return n}return Nc}function zc(t){R(()=>{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&&(Ae.value=zo(i))}return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t])}const Bo="jex-session-history",Do=Bo,Uo=1440*60*1e3,ne=P([]),ge=P(null),Qe=P(void 0),Ir=P(!1),Er=yr(()=>ne.value.length>0),bt=P(null),Bc="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",Dc=6;function Uc(){let t="";const e=new Uint8Array(1);for(;t.length<Dc;)crypto.getRandomValues(e),e[0]<252&&(t+=Bc[e[0]%36]);return"JEX-"+t}function Fc(t){if(t===null)return null;if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return t}function Fo(t,e,n){if(n===null)return t;const r=typeof n=="number"?n:Uo;return t.filter(i=>e-i.lastActivityAt<=r)}function Vc(t,e,n,r){return n?Fo(t,e,r):t}function Qc(t){try{const e=sessionStorage.getItem(Do);if(!e)return Qe.value=void 0,[];const n=JSON.parse(e);if(n.v!==1||!Array.isArray(n.entries))return Qe.value=void 0,[];const r=Object.prototype.hasOwnProperty.call(n,"timeoutMs");return Qe.value=Fc(n.timeoutMs),Vc(n.entries,t,r,Qe.value)}catch{return Qe.value=void 0,[]}}function Wt(t){try{const e={v:1,entries:t,timeoutMs:Qe.value};sessionStorage.setItem(Do,JSON.stringify(e))}catch{}}function Hc(){const t=Date.now(),e=Qc(t);ne.value=e,Wt(e),ge.value=e[e.length-1]?.ref??null,Ir.value=!0}function Wc(t){Qe.value=t;const e=Date.now(),n=Fo(ne.value,e,t),r=ge.value!==null&&!n.some(i=>i.ref===ge.value);return ne.value=n,r&&(ge.value=null),Wt(n),{activeRefPruned:r}}function Vo(){const t=Uc(),e=Date.now(),n=[...ne.value,{ref:t,startedAt:e,lastActivityAt:e}];return ne.value=n,ge.value=t,Wt(n),t}function Qo(){ge.value=null}function Ho(t){const e=Date.now(),n=ne.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);ne.value=n,ge.value=t,Wt(n)}function $r(t){if(!t)return;const e=Date.now(),n=ne.value.map(r=>r.ref===t?{...r,lastActivityAt:e}:r);ne.value=n,Wt(n)}const ue=P(Wo());function Wo(){return Er.value?[{id:"home"}]:[{id:"home"},{id:"chat"}]}function Kc(){ue.value=Wo()}const Gc=P("screen");function Oe(t){ue.value=[...ue.value,t]}function Pr(){ue.value.length>1&&(ue.value=ue.value.slice(0,-1))}function qr(t){ue.value=[...ue.value.slice(0,-1),t]}const Jc=6e4,Kt=P(!1),Mr=P(!1),Nr=new Set;function Yc(t){return Nr.add(t),()=>{Nr.delete(t)}}function Zc(){const t=ge.value;return t?ne.value.find(n=>n.ref===t)?.lastActivityAt??null:null}function Ko(t){const e=Zc();return e===null?!1:Date.now()-e>t}function Lr(){if(!(Kt.value&&ne.value.length===0)){ne.value=[],ge.value=null;try{sessionStorage.removeItem(Bo)}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)}ue.value=[{id:"home"}],Kt.value=!0}}function $n(){Kt.value&&(Kt.value=!1)}function Xc(t=Uo){let e=document.visibilityState==="hidden"?Date.now():null;const n=()=>{if(document.visibilityState==="hidden"){e=Date.now();return}(e!==null&&Date.now()-e>t||Ko(t))&&Lr(),e=null};document.addEventListener("visibilitychange",n);const r=setInterval(()=>{Mr.value||Ko(t)&&Lr()},Jc);return()=>{document.removeEventListener("visibilitychange",n),clearInterval(r),e=null}}function eu(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 Pn({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 tu(){const t=S();return ue.value.length>1?s("button",{class:"jex-header-back",onClick:Pr,"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(Pn,{size:24})}function nu({title:t}){return s("div",{class:"jex-header-info",children:s("h3",{children:t})})}function Go({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 ru(){const t=S();return s("button",{class:"jex-header-close",type:"button",onClick:()=>{F.value=!1},"aria-label":t.closeChatAriaLabel,title:t.closeChatAriaLabel,children:s(Go,{size:18})})}function iu({action:t,showClose:e=!0}){return!t&&!e?null:s("div",{class:"jex-header-right",children:[t,e&&s(ru,{})]})}function Jo({title:t,rightAction:e,showClose:n=!0}){return s("header",{class:"jex-chat-header",children:[s(tu,{}),s(nu,{title:t}),s(iu,{action:e,showClose:n})]})}function ou({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 Yo(){return s("div",{class:"jex-widget-footer",children:s("a",{href:"https://jexitychat.de",target:"_blank",rel:"noopener noreferrer",class:"jex-branding",children:[s(ou,{size:14}),s("span",{children:["Powered by ",s("strong",{children:"Jexity"})]})]})})}function Zo({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 au({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 su={chat:s(Zo,{size:28}),bot:s(Pn,{size:28}),sparkles:s(au,{size:28})},lu={none:"0px",sm:"0.5rem",md:"0.75rem",lg:"1.25rem",full:"9999px"};function cu({radius:t="full",iconOption:e="chat",label:n}){const r=S(),i=n??r.fabLabel,o=i!=="";return s("button",{class:`jex-floating-button${F.value?"":" jex-fab-pulse"}${!F.value&&o?" jex-has-label":""}`,style:{borderRadius:lu[t]??"9999px"},onClick:()=>{F.value=!F.value},"aria-label":F.value?r.closeChatAriaLabel:r.openChatAriaLabel,children:F.value?s(Go,{size:28}):s("div",{class:"jex-fab-inner",children:[su[e],o&&s("span",{class:"jex-fab-label",children:i})]})})}const qn=P(!1);function uu(t,e){return e?`jex-proactive-dismissed:${t}:${e}`:`jex-proactive-dismissed:${t}`}function Xo(t){try{return sessionStorage.getItem(t)!==null}catch{return!1}}function du(t){try{sessionStorage.setItem(t,"1")}catch{}}function hu(t){return t.isOpen||t.mode==="off"||t.hasHistory||t.dismissed?"skip":t.mode==="teaser"?"teaser":"open"}function pu({title:t,message:e,guardKey:n}){const r=S();function i(){qn.value=!1,F.value=!0}function o(a){a.stopPropagation(),du(n),qn.value=!1}return s("div",{class:"jex-proactive-teaser",role:"button",tabIndex:0,"aria-label":r.proactiveOpenAria,onClick:i,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&i()},children:[s("div",{class:"jex-proactive-avatar",children:s(Pn,{size:20})}),s("div",{class:"jex-proactive-body",children:[s("span",{class:"jex-proactive-title",children:t}),s("span",{class:"jex-proactive-message",children:e})]}),s("button",{type:"button",class:"jex-proactive-dismiss","aria-label":r.proactiveDismiss,onClick:o,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","aria-hidden":"true",children:[s("path",{d:"M18 6 6 18"}),s("path",{d:"m6 6 12 12"})]})})]})}const yt=P(""),Gt=P(0),ea=100,fu=/^Re: ".*?"\s*/;function ta(t){if(!t)return;const e=t.replace(/\s+/g," ").trim();if(!e)return;const n=e.length>ea?`${e.slice(0,ea)}…`:e,r=yt.value.replace(fu,"");yt.value=`Re: "${n}" ${r}`,Gt.value+=1}const Jt=P(null),na=P(Date.now()),Mn=P(!1),Or=P(!1),Yt=P(!1),Nn=P(null);function ra(){return kr.value==="explicit"&&!Or.value}function ia(){ra()&&(Yt.value=!0)}function gu(){Or.value=!0,Yt.value=!1}function oa(){Or.value=!1,Yt.value=!1,Nn.value=null}const ze=P([]),mu=4,xu=8*1024*1024;function vu(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`att-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function bu(t){const e=Array.from(t).filter(i=>i.type.startsWith("image/")&&i.size<=xu);if(e.length===0)return;const n=mu-ze.value.length;if(n<=0)return;const r=e.slice(0,n).map(i=>({id:vu(),file:i,previewUrl:URL.createObjectURL(i)}));ze.value=[...ze.value,...r]}function yu(t){const e=ze.value.find(n=>n.id===t);e&&URL.revokeObjectURL(e.previewUrl),ze.value=ze.value.filter(n=>n.id!==t)}function wu(){for(const t of ze.value)URL.revokeObjectURL(t.previewUrl);ze.value=[]}function aa(t,e){const n={get(r,i){if(typeof i=="string"){const o=[...e,i];return aa(t,o)}else if(i===go){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 ku=()=>aa("components",[]),re=xl;ku();function sa({sessionId:t,visitorId:e,ensureSession:n}){const r=Ye(re.functions.chat.public.conversations.send);return async function(o){if(ra()){Nn.value=o,ia();return}if(!Mn.value){Mn.value=!0;try{const a=t&&e?{sessionId:t,visitorId:e}:await n();if(!a)return;yt.value="",wu();try{const l=await r({sessionId:a.sessionId,visitorId:a.visitorId,content:o});l.ok?$r(a.visitorId):l.reason==="rate_limited"&&(Jt.value=Date.now()+l.retryAfterMs)}catch(l){console.error("[jexity] Failed to send message:",l)}}finally{Mn.value=!1}}}}function _u(){const t=Jt.value,e=na.value;R(()=>{if(t===null)return;const i=setInterval(()=>{na.value=Date.now()},1e3),o=setTimeout(()=>{Jt.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 ju(){const t=S(),{isActive:e,remainingSeconds:n}=_u();return e?s("div",{class:"jex-rate-limit-notice",role:"status","aria-live":"polite",children:t.errorRateLimited.replace("{seconds}",String(n))}):null}const wt=P(null),Zt=P(null);function la(){Zt.value=null}function Su(){const t=S(),e=wt.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 Cu({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 ca=132;function Tu({onSend:t}){const e=pe(null),n=pe(null);R(()=>{const c=e.current;if(!c)return;c.style.height="0";const u=Math.min(c.scrollHeight,ca);c.style.height=`${u}px`,c.style.overflowY=c.scrollHeight>ca?"auto":"hidden"},[yt.value]);const r=pe(Gt.value);R(()=>{if(Gt.value===r.current)return;r.current=Gt.value;const c=e.current;c&&(c.focus(),c.setSelectionRange(c.value.length,c.value.length))},[Gt.value]);function i(c){c.key==="Enter"&&!c.shiftKey&&(c.preventDefault(),t())}function o(){n.current?.click()}function a(c){const u=c.currentTarget;u.files&&u.files.length>0&&bu(u.files),u.value=""}function l(c){const u=c.target;(u===c.currentTarget||!u.closest("button, textarea, img"))&&e.current?.focus()}return{textareaRef:e,fileInputRef:n,onKeyDown:i,onAttachClick:o,onFilesPicked:a,onCardClick:l}}function Ru({isStreaming:t,disabled:e,inputDisabled:n,onSend:r,onFocus:i}){const o=S(),a=yt,l=ze,{textareaRef:c,fileInputRef:u,onKeyDown:h,onAttachClick:f,onFilesPicked:d,onCardClick:p}=Tu({onSend:r}),g=a.value.trim().length>0,y=l.value.length>0,m=(g||y)&&!e;return s("div",{class:"jex-composer-card",onClick:p,children:[y&&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:()=>{yu(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:d,tabIndex:-1,"aria-hidden":"true"}),s("button",{type:"button",class:"jex-attach-btn","aria-label":o.attachComingSoon,title:o.attachComingSoon,disabled:!0,onClick:f,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",{type:"button",class:"jex-attach-btn","aria-label":o.voiceComingSoon,title:o.voiceComingSoon,disabled:!0,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:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"}),s("path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}),s("line",{x1:"12",y1:"19",x2:"12",y2:"22"})]})})]}),s("button",{class:`jex-send-btn${m?" jex-send-btn-active":""}`,type:"button",onClick:r,"aria-label":o.sendAriaLabel,disabled:e||!g&&!y,children:s(Cu,{size:16})})]})]})}function ua({variant:t,isOpen:e=!1,onAcknowledge:n}){const r=S(),i=Ht.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 Au({sessionId:t,visitorId:e,isLoading:n,isStreaming:r,sessionStatus:i,ensureSession:o,onStartFresh:a}){const l=S(),c=yt,u=kr.value,h=sa({sessionId:t,visitorId:e,ensureSession:o}),f=Jt.value!==null&&Jt.value>Date.now(),d=n||r||f,p=u==="explicit"&&Yt.value;function g(){gu();const m=Nn.value;Nn.value=null,m&&h(m)}if(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 y(){const m=c.value.trim();!m||d||await h(m)}return s("div",{class:"jex-chat-input",children:[s(ju,{}),s(Su,{}),u==="chip"&&s(ua,{variant:"chip"}),s("div",{class:`jex-chat-input-composer-gate${p?" jex-chat-input-composer-gate-open":""}`,children:[s(Ru,{isStreaming:r,disabled:d,inputDisabled:n||r||p,onSend:y,onFocus:ia}),u==="explicit"&&s(ua,{variant:"explicit",isOpen:Yt.value,onAcknowledge:g})]})]})}function zr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Xe=zr();function da(t){Xe=t}var et={exec:()=>null};function I(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(se.caret,"$1"),n=n.replace(i,a),r},getRegex:()=>new RegExp(n,e)};return r}var Iu=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),se={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)}}>`)},Eu=/^(?:[ \t]*(?:\n|$))+/,$u=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Pu=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Xt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,qu=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Br=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ha=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,pa=I(ha).replace(/bull/g,Br).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(),Mu=I(ha).replace(/bull/g,Br).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(),Dr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Nu=/^[^\n]+/,Ur=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Lu=I(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ur).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Ou=I(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Br).getRegex(),Ln="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",Fr=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,zu=I("^ {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",Fr).replace("tag",Ln).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),fa=I(Dr).replace("hr",Xt).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",Ln).getRegex(),Bu=I(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",fa).getRegex(),Vr={blockquote:Bu,code:$u,def:Lu,fences:Pu,heading:qu,hr:Xt,html:zu,lheading:pa,list:Ou,newline:Eu,paragraph:fa,table:et,text:Nu},ga=I("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Xt).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",Ln).getRegex(),Du={...Vr,lheading:Mu,table:ga,paragraph:I(Dr).replace("hr",Xt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ga).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",Ln).getRegex()},Uu={...Vr,html:I(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Fr).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:et,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:I(Dr).replace("hr",Xt).replace("heading",` *#{1,6} *[^
|
|
11
|
+
]`).replace("lheading",pa).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Fu=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Vu=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ma=/^( {2,}|\\)\n(?!\s*$)/,Qu=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,kt=/[\p{P}\p{S}]/u,On=/[\s\p{P}\p{S}]/u,Qr=/[^\s\p{P}\p{S}]/u,Hu=I(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,On).getRegex(),xa=/(?!~)[\p{P}\p{S}]/u,Wu=/(?!~)[\s\p{P}\p{S}]/u,Ku=/(?:[^\s\p{P}\p{S}]|~)/u,Gu=I(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Iu?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),va=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ju=I(va,"u").replace(/punct/g,kt).getRegex(),Yu=I(va,"u").replace(/punct/g,xa).getRegex(),ba="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Zu=I(ba,"gu").replace(/notPunctSpace/g,Qr).replace(/punctSpace/g,On).replace(/punct/g,kt).getRegex(),Xu=I(ba,"gu").replace(/notPunctSpace/g,Ku).replace(/punctSpace/g,Wu).replace(/punct/g,xa).getRegex(),ed=I("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Qr).replace(/punctSpace/g,On).replace(/punct/g,kt).getRegex(),td=I(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,kt).getRegex(),nd="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",rd=I(nd,"gu").replace(/notPunctSpace/g,Qr).replace(/punctSpace/g,On).replace(/punct/g,kt).getRegex(),id=I(/\\(punct)/,"gu").replace(/punct/g,kt).getRegex(),od=I(/^<(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(),ad=I(Fr).replace("(?:-->|$)","-->").getRegex(),sd=I("^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",ad).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),zn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,ld=I(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",zn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ya=I(/^!?\[(label)\]\[(ref)\]/).replace("label",zn).replace("ref",Ur).getRegex(),wa=I(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ur).getRegex(),cd=I("reflink|nolink(?!\\()","g").replace("reflink",ya).replace("nolink",wa).getRegex(),ka=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Hr={_backpedal:et,anyPunctuation:id,autolink:od,blockSkip:Gu,br:ma,code:Vu,del:et,delLDelim:et,delRDelim:et,emStrongLDelim:Ju,emStrongRDelimAst:Zu,emStrongRDelimUnd:ed,escape:Fu,link:ld,nolink:wa,punctuation:Hu,reflink:ya,reflinkSearch:cd,tag:sd,text:Qu,url:et},ud={...Hr,link:I(/^!?\[(label)\]\((.*?)\)/).replace("label",zn).getRegex(),reflink:I(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",zn).getRegex()},Wr={...Hr,emStrongRDelimAst:Xu,emStrongLDelim:Yu,delLDelim:td,delRDelim:rd,url:I(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ka).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:I(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ka).getRegex()},dd={...Wr,br:I(ma).replace("{2,}","*").getRegex(),text:I(Wr.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Bn={normal:Vr,gfm:Du,pedantic:Uu},en={normal:Hr,gfm:Wr,breaks:dd,pedantic:ud},hd={"&":"&","<":"<",">":">",'"':""","'":"'"},_a=t=>hd[t];function Ie(t,e){if(e){if(se.escapeTest.test(t))return t.replace(se.escapeReplace,_a)}else if(se.escapeTestNoEncode.test(t))return t.replace(se.escapeReplaceNoEncode,_a);return t}function ja(t){try{t=encodeURI(t).replace(se.percentDecode,"%")}catch{return null}return t}function Sa(t,e){let n=t.replace(se.findPipe,(o,a,l)=>{let c=!1,u=a;for(;--u>=0&&l[u]==="\\";)c=!c;return c?"|":" |"}),r=n.split(se.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(se.slashPipe,"|");return r}function tn(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 pd(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 fd(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 Ca(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 gd(t,e,n){let r=t.match(n.other.indentCodeCompensation);if(r===null)return e;let i=r[1];return e.split(`
|
|
12
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
|
|
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=
|
|
13
|
+
`)}var Dn=class{options;rules;lexer;constructor(t){this.options=t||Xe}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:tn(n,`
|
|
14
|
+
`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],r=gd(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=tn(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:tn(e[0],`
|
|
15
|
+
`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=tn(e[0],`
|
|
16
16
|
`).split(`
|
|
17
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
18
|
`),h=u.replace(this.rules.other.blockquoteSetextReplace,`
|
|
@@ -23,16 +23,16 @@ ${h}`:h;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
23
23
|
`),y=this.blockquote(g);o[o.length-1]=y,r=r.substring(0,r.length-p.raw.length)+y.raw,i=i.substring(0,i.length-p.text.length)+y.text;break}else if(d?.type==="list"){let p=d,g=p.raw+`
|
|
24
24
|
`+n.join(`
|
|
25
25
|
`),y=this.list(g);o[o.length-1]=y,r=r.substring(0,r.length-d.raw.length)+y.raw,i=i.substring(0,i.length-p.raw.length)+y.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 f=
|
|
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 f=fd(e[2].split(`
|
|
27
27
|
`,1)[0],e[1].length),d=t.split(`
|
|
28
28
|
`,1)[0],p=!f.trim(),g=0;if(this.options.pedantic?(g=2,h=f.trimStart()):p?g=e[1].length+1:(g=f.search(this.rules.other.nonSpaceChar),g=g>4?1:g,h=f.slice(g),g+=e[1].length),p&&this.rules.other.blankLine.test(d)&&(u+=d+`
|
|
29
|
-
`,t=t.substring(d.length+1),c=!0),!c){let y=this.rules.other.nextBulletRegex(g),m=this.rules.other.hrRegex(g),
|
|
30
|
-
`,1)[0],
|
|
31
|
-
`+
|
|
32
|
-
`+d}p=!d.trim(),u+=
|
|
33
|
-
`,t=t.substring(
|
|
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(
|
|
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=
|
|
29
|
+
`,t=t.substring(d.length+1),c=!0),!c){let y=this.rules.other.nextBulletRegex(g),m=this.rules.other.hrRegex(g),x=this.rules.other.fencesBeginRegex(g),b=this.rules.other.headingBeginRegex(g),j=this.rules.other.htmlBeginRegex(g),v=this.rules.other.blockquoteBeginRegex(g);for(;t;){let C=t.split(`
|
|
30
|
+
`,1)[0],M;if(d=C,this.options.pedantic?(d=d.replace(this.rules.other.listReplaceNesting," "),M=d):M=d.replace(this.rules.other.tabCharGlobal," "),x.test(d)||b.test(d)||j.test(d)||v.test(d)||y.test(d)||m.test(d))break;if(M.search(this.rules.other.nonSpaceChar)>=g||!d.trim())h+=`
|
|
31
|
+
`+M.slice(g);else{if(p||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||x.test(f)||b.test(f)||m.test(f))break;h+=`
|
|
32
|
+
`+d}p=!d.trim(),u+=C+`
|
|
33
|
+
`,t=t.substring(C.length+1),f=M.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(f=>f.type==="space"),h=u.length>0&&u.some(f=>this.rules.other.anyLine.test(f.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=Sa(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(Sa(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=tn(n.slice(0,-1),"\\");if((n.length-o.length)%2===0)return}else{let o=pd(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)),Ca(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 Ca(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,f=t.slice(0,i+r.index+h+a);if(Math.min(i,a)%2){let p=f.slice(1,-1);return{type:"em",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}let d=f.slice(2,-2);return{type:"strong",raw:f,text:d,tokens:this.lexer.inlineTokens(d)}}}}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),f=h.slice(i,-i);return{type:"del",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}}}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}}}},we=class ti{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Xe,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:se,block:Bn.normal,inline:en.normal};this.options.pedantic?(n.block=Bn.pedantic,n.inline=en.pedantic):this.options.gfm&&(n.block=Bn.gfm,this.options.breaks?n.inline=en.breaks:n.inline=en.gfm),this.tokenizer.rules=n}static get rules(){return{block:Bn,inline:en}}static lex(e,n){return new ti(n).lex(e)}static lexInline(e,n){return new ti(n).inlineTokens(e)}lex(e){e=e.replace(se.carriageReturn,`
|
|
36
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(se.tabCharGlobal," ").replace(se.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
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
|
`)?"":`
|
|
@@ -46,7 +46,7 @@ ${h}`:h;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTo
|
|
|
46
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
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,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),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}},
|
|
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,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),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}},Un=class{options;parser;constructor(t){this.options=t||Xe}space(t){return""}code({text:t,lang:e,escaped:n}){let r=(e||"").match(se.notSpaceStart)?.[0],i=t.replace(se.endingNewline,"")+`
|
|
50
50
|
`;return r?'<pre><code class="language-'+Ie(r)+'">'+(n?i:Ie(i,!0))+`</code></pre>
|
|
51
51
|
`:"<pre><code>"+(n?i:Ie(i,!0))+`</code></pre>
|
|
52
52
|
`}blockquote({tokens:t}){return`<blockquote>
|
|
@@ -64,8 +64,8 @@ ${this.parser.parse(t)}</blockquote>
|
|
|
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>${Ie(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=
|
|
68
|
-
Please report this to https://github.com/markedjs/marked.`,t){let r="<p>An error occurred:</p><pre>"+Ie(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},tt=new bd;function M(t,e){return tt.parse(t,e)}M.options=M.setOptions=function(t){return tt.setOptions(t),M.defaults=tt.defaults,ca(M.defaults),M},M.getDefaults=Or,M.defaults=Xe,M.use=function(...t){return tt.use(...t),M.defaults=tt.defaults,ca(M.defaults),M},M.walkTokens=function(t,e){return tt.walkTokens(t,e)},M.parseInline=tt.parseInline,M.Parser=ke,M.parser=ke.parse,M.Renderer=Dn,M.TextRenderer=Wr,M.Lexer=we,M.lexer=we.lex,M.Tokenizer=Bn,M.Hooks=tn,M.parse=M,M.options,M.setOptions,M.use,M.walkTokens,M.parseInline,ke.parse,we.lex,M.setOptions({breaks:!0,gfm:!0});function yd({text:t}){const e=G(()=>{if(!t)return"";const n=M.parse(t);return typeof n=="string"?n:""},[t]);return s("div",{class:"jex-md",dangerouslySetInnerHTML:{__html:e}})}function wd(t){const e=t.trim().split(/\s+/).filter(Boolean);return e.length===0?"?":e.map(n=>n[0]).join("").slice(0,2).toUpperCase()}function _t({text:t,streaming:e,error:n,authorId:r,authorName:i,authorImage:o,botAvatarUrl:a,botName:l}){const c=j(),u=!!r,[h,f]=R(!1),d=N(()=>f(!0),[]),p=c.replyTo.replace("{name}",i??""),g=u?i??"":l??"",y=["jex-message bot",n?"jex-message-error":""].filter(Boolean).join(" ");return s("div",{class:"jex-message-row bot",children:[s("div",{class:"jex-message-head",children:[s("div",{class:`jex-avatar ${u?"jex-avatar-agent":"jex-avatar-bot"}`,children:u&&o&&!h?s("img",{src:o,alt:i??"",class:"jex-avatar-img",onError:d}):u?s("span",{class:"jex-avatar-initials",children:wd(i??"")}):a&&!h?s("img",{src:a,alt:"",class:"jex-avatar-img",onError:d}):s($n,{size:14})}),g&&s("span",{class:"jex-message-author",children:g}),u&&i&&s("button",{type:"button",class:"jex-reply-tag-btn","aria-label":p,title:p,onClick:()=>{uu(i)},children:s($u,{size:12})})]}),s("div",{class:y,children:[s(yd,{text:t}),e&&s("span",{class:"jex-streaming-cursor"})]})]})}function kd({questions:t,disabled:e,onPick:n}){return t.length===0?null:s("div",{class:"jex-starter-chips",children:t.map(r=>s("button",{type:"button",class:"jex-starter-chip",disabled:e,onClick:()=>{n(r)},children:r},r))})}function _d({text:t}){return s("div",{class:"jex-message user",children:t})}function Sa(){return Ye(re.functions.chat.public.helpdesk.submitEscalation)}function Ca(){const t=Ye(re.functions.chat.public.helpdesk.markEscalationWaiting);return e=>{Yt.value=e,t({sessionId:e.sessionId,visitorId:e.visitorId}).catch(n=>{console.error("[waiting] markEscalationWaiting failed:",n)})}}function jd({message:t,sessionId:e,visitorId:n,waitingSetAt:r}){const i=j();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:i.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(Sd,{messageId:t._id,sessionId:e,visitorId:n,waitingSetAt:r})})}function Sd({messageId:t,sessionId:e,visitorId:n,waitingSetAt:r}){const i=j(),[o,a]=R(""),[l,c]=R(""),[u,h]=R(!1),f=Qt.value,d=/^https?:\/\//i.test(f)?f:Ht,p=Sa(),g=Ca();async function y(m){if(m.preventDefault(),!u){h(!0);try{await p({sessionId:e,visitorId:n,formMessageId:t,visitorName:o.trim(),visitorEmail:l.trim(),locale:Ae.value})}catch(v){console.error("[FormMessage] Submit failed:",v),h(!1)}}}return s("div",{class:"jex-inline-form",children:[s("div",{class:"jex-inline-form-title",children:i.escalationFormTitle}),s("form",{class:"jex-form",onSubmit:m=>{y(m)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:i.escalationNameLabel,value:o,required:!0,disabled:u,onInput:m=>{a(m.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:i.escalationEmailLabel,value:l,required:!0,disabled:u,onInput:m=>{c(m.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",disabled:u,children:u?i.escalationSubmitting:i.escalationSubmit})]}),s("button",{type:"button",class:"jex-escalation-skip",onClick:()=>{g({formMessageId:t,sessionId:e,visitorId:n,waitingSetAt:r})},children:i.escalationSkip}),s("div",{class:"jex-inline-form-consent",children:[i.escalationConsent," ",s("a",{href:d,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:i.escalationPrivacyLinkText}),"."]})]})}function Cd(){return Ye(re.functions.magicline.public.submitForm)}function Td(){return Ut(re.functions.magicline.actions.getTrialConfig)}function Rd(){return Ut(re.functions.magicline.actions.listTrialSlots)}function Ad(){return Ut(re.functions.magicline.actions.getRateBundles)}function Ta(){return Ut(re.functions.magicline.actions.getContractPreview)}function Id(){return Ut(re.functions.magicline.actions.submitContractCreation)}const Kr={en:Tr,de:No},Ed=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Ra(t){return Ed.test(t.trim())}function $d(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 Aa(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 Ia(){const t=Qt.value;return/^https?:\/\//i.test(t)?t:Ht}const Pd={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},Md=15,qd=34;function Ea(t){return t.replace(/\s+/g,"").toUpperCase()}function Nd(t){const e=Ea(t),n=e.slice(0,2),r=Pd[n];if(r!==void 0){if(e.length!==r)return!1}else if(e.length<Md||e.length>qd)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 Ld(t){const e=Ea(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 _e(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 Un(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 Od(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 Gr(t,e,n){const r=Kr[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 zd(t,e,n,r,i){const o=Kr[i],a=_e(t,e,i);switch(n){case"TERM_BASED":return`${a} ${o.magiclineModulePerTerm}`;case"RECURRING":return`${a} ${Gr(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}}function Bd(t,e,n,r){return e==="PERCENTAGE"?`-${t}%`:`-${_e(t,n,r)}`}const Dd={startpaket:"magiclineFeeStarterPackage","starter package":"magiclineFeeStarterPackage",trainerpauschale:"magiclineFeeTrainerFee"};function $a(t,e){const n=t.trim().toLowerCase(),r=Dd[n];return r!==void 0?e[r]:t}function Ud(t,e,n){const r=Kr[n];if(t==="NONE")return r.magiclineRenewalNone;if(t==="TERM_EXTENSION"&&e!==null){const i=Un(e.value,e.unit,n);return r.magiclineRenewalTerm.replace("{n} {unit}",i)}return""}const Pa=["MALE","FEMALE","UNISEX"],Fd=[{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 Vd(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 Hd={firstName:"",lastName:"",email:"",phone:"",birthDate:"",gender:"",street:"",houseNumber:"",zip:"",city:"",country:"",note:"",slotId:"",consent:!1,trainerRequired:!0};function Qd(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 Wd({sessionId:t,visitorId:e}){const n=Td(),r=Rd(),[i,o]=he(Qd,Hd),[a,l]=he((v,b)=>b,{phase:"loading"}),[c,u]=he((v,b)=>b,{phase:"loading"}),[h,f]=he(v=>v+1,0),d=N((v,b)=>{o({type:"set",key:v,value:b})},[]),p=N(v=>{o({type:"setTrainer",trainerRequired:v}),f()},[]),g=N(()=>{f()},[]);T(()=>{let v=!1;return(async()=>{try{const b=await n({sessionId:t,visitorId:e});if(v)return;b.status==="ok"?l({phase:"ready",config:{plan:b.plan,minimumAge:b.minimumAge,bookingWithoutTrainerAllowed:b.bookingWithoutTrainerAllowed,studioZoneId:b.studioZoneId}}):l({phase:"error",code:b.status,backendMessage:b.message})}catch{v||l({phase:"error",code:"unavailable",backendMessage:""})}})(),()=>{v=!0}},[n,t,e]);const y=a.phase==="ready",{trainerRequired:m}=i;return T(()=>{if(!y)return;let v=!1;return u({phase:"loading"}),(async()=>{try{const b=await r({sessionId:t,visitorId:e,trainerRequired:m});if(v)return;b.status==="ok"?b.slots.length>0?(u({phase:"ready",slots:b.slots}),o({type:"clearSlotIfAbsent",available:b.slots.map(x=>x.startDateTime)})):u({phase:"empty"}):u({phase:"error"})}catch{v||u({phase:"error"})}})(),()=>{v=!0}},[y,r,t,e,m,h]),{fields:i,setField:d,setTrainerRequired:p,configState:a,slotsState:c,refetchSlots:g}}function Kd({formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r=!1,retryPending:i=!1}){const o=j(),a=Cd(),{fields:l,setField:c,setTrainerRequired:u,configState:h,slotsState:f,refetchSlots:d}=Wd({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:nh(h.code,h.backendMessage,o)})]}):s(Gd,{formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r,retryPending:i,config:h.config,fields:l,setField:c,setTrainerRequired:u,slotsState:f,refetchSlots:d,submitForm:a})}function Gd({formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r,retryPending:i,config:o,fields:a,setField:l,setTrainerRequired:c,slotsState:u,refetchSlots:h,submitForm:f}){const d=j(),{plan:p,minimumAge:g,bookingWithoutTrainerAllowed:y,studioZoneId:m}=o,v=G(()=>Vd(p,y),[p,y]),b=r?Math.max(v.indexOf("slot"),0):0,[x,P]=R(b),[S,z]=R({}),[W,V]=R(!1),[le,L]=R(null),H=G(()=>Ia(),[]),ie=Math.min(x,v.length-1),w=v[ie],Z=ie===v.length-1,rn=ie===0;function nt(K){const I={};if(K==="slot")return a.slotId===""&&(I.slotId=d.magiclineSlotRequiredError),I;if(K==="personal"){if(a.firstName.trim()===""&&(I.firstName=d.magiclineRequiredError),a.lastName.trim()===""&&(I.lastName=d.magiclineRequiredError),p.email.visible&&p.email.required&&a.email.trim()===""&&(I.email=d.magiclineRequiredError),a.email.trim()!==""&&!Ra(a.email)&&(I.email=d.magiclineEmailError),p.phone.visible&&p.phone.required&&a.phone.trim()===""&&(I.phone=d.magiclineRequiredError),p.gender.visible&&p.gender.required&&a.gender===""&&(I.gender=d.magiclineRequiredError),p.dateOfBirth.visible&&(p.dateOfBirth.required&&a.birthDate.trim()===""&&(I.birthDate=d.magiclineRequiredError),a.birthDate.trim()!=="")){const be=$d(a.birthDate);be!==null&&be<0?I.birthDate=d.magiclineRequiredError:g>0&&be!==null&&be<g&&(I.birthDate=d.magiclineMinAgeError.replace("{age}",String(g)))}return I}return K==="address"?(p.address.visible&&p.address.required&&(a.street.trim()===""&&(I.street=d.magiclineRequiredError),a.houseNumber.trim()===""&&(I.houseNumber=d.magiclineRequiredError),a.city.trim()===""&&(I.city=d.magiclineRequiredError),a.country===""&&(I.country=d.magiclineRequiredError)),p.zip.visible&&p.zip.required&&a.zip.trim()===""&&(I.zip=d.magiclineRequiredError),I):(K==="confirm"&&(a.consent||(I.consent=d.magiclineConsentError)),I)}function rt(){const K=nt(w);if(Object.keys(K).length>0){z(K);return}z({}),P(I=>Math.min(I+1,v.length-1))}function jt(){z({}),L(null),P(K=>Math.max(K-1,0))}async function it(){if(W)return;const K=nt("confirm");if(Object.keys(K).length>0){z(K);return}z({}),L(null),V(!0);try{const I=rh(p,a);await f({sessionId:e,visitorId:n,formMessageId:t,action:"trialSessionBooking",fields:I})}catch(I){console.error("[TrialSessionBookingForm] Submit failed:",I),L(d.magiclineFailedDetail),V(!1)}}function on(){Z?it():rt()}const St=th(w,d),$e=`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:d.magiclineTrialTitle}),s("div",{class:"jex-magicline-wizard-progress",children:[s("span",{class:"jex-magicline-wizard-step-label",children:St}),s("span",{class:"jex-magicline-wizard-counter",children:d.magiclineStepCounter.replace("{n}",String(ie+1)).replace("{total}",String(v.length))})]}),s("div",{class:"jex-magicline-wizard-dots","aria-hidden":"true",children:v.map((K,I)=>s("span",{class:I===ie?"jex-magicline-wizard-dot jex-magicline-wizard-dot-active":"jex-magicline-wizard-dot"},K))})]}),s("div",{class:"jex-form",role:"group","aria-label":St,children:[w==="trainer"?s(Jd,{formMessageId:t,trainerRequired:a.trainerRequired,disabled:W,onChange:c}):null,w==="slot"?s(Yd,{slotsState:u,slotId:a.slotId,studioZoneId:m,disabled:W,retryPending:i,slotUnavailable:r,error:S.slotId,onSelect:K=>{l("slotId",K)},onRetry:h}):null,w==="personal"?s(Zd,{plan:p,fields:a,errors:S,disabled:W,setField:l}):null,w==="address"?s(Xd,{plan:p,fields:a,errors:S,disabled:W,setField:l}):null,w==="confirm"?s(eh,{consentId:$e,privacyUrl:H,studioZoneId:m,fields:a,disabled:W,consentError:S.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:[rn?null:s("button",{type:"button",class:"jex-magicline-wizard-back",disabled:W,onClick:jt,children:d.magiclineWizardBack}),s("button",{type:"button",class:"jex-form-submit jex-magicline-wizard-next",disabled:W,onClick:on,children:Z?W?d.magiclineSubmitting:d.magiclineSubmit:d.magiclineWizardNext})]})]})]})}function Jd({formMessageId:t,trainerRequired:e,disabled:n,onChange:r}){const i=j(),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 Yd({slotsState:t,slotId:e,studioZoneId:n,disabled:r,retryPending:i,slotUnavailable:o,error:a,onSelect:l,onRetry:c}){const u=j();return s(O,{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:qa(h.startDateTime,Ae.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 Zd({plan:t,fields:e,errors:n,disabled:r,setField:i}){const o=j(),a=G(()=>Aa(),[]);return s(O,{children:[s("div",{class:"jex-magicline-row",children:[s(Qe,{label:o.magiclineFirstName,value:e.firstName,required:!0,disabled:r,error:n.firstName,fieldKey:"firstName",onInput:l=>{i("firstName",l)}}),s(Qe,{label:o.magiclineLastName,value:e.lastName,required:!0,disabled:r,error:n.lastName,fieldKey:"lastName",onInput:l=>{i("lastName",l)}})]}),t.email.visible?s(Qe,{label:ve(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(Qe,{label:ve(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:ve(o.magiclineBirthDate,t.dateOfBirth.required,o)}),s("input",{class:"jex-form-input",type:"date","aria-label":ve(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(Ma,{label:ve(o.magiclineGender,t.gender.required,o),value:e.gender,required:t.gender.required,disabled:r,placeholder:ve(o.magiclineGenderPlaceholder,t.gender.required,o),error:n.gender,onChange:l=>{i("gender",l)},options:Pa.map(l=>({value:l,label:ih(l,o)}))}):null]})}function Xd({plan:t,fields:e,errors:n,disabled:r,setField:i}){const o=j();return s(O,{children:[t.address.visible?s(O,{children:[s("div",{class:"jex-magicline-row",children:[s(Qe,{label:ve(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(Qe,{label:ve(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(Qe,{label:ve(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(Ma,{label:ve(o.magiclineCountry,t.address.required,o),value:e.country,required:t.address.required,disabled:r,placeholder:ve(o.magiclineCountryPlaceholder,t.address.required,o),error:n.country,onChange:a=>{i("country",a)},options:Fd.map(a=>({value:a.code,label:a.label}))})]}):null,t.zip.visible?s(Qe,{label:ve(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 eh({consentId:t,privacyUrl:e,studioZoneId:n,fields:r,disabled:i,consentError:o,setField:a}){const l=j(),c=r.slotId!==""?qa(r.slotId,Ae.value,n):"—",u=`${r.firstName} ${r.lastName}`.trim();return s(O,{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 Qe({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 Ma({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 ve(t,e,n){return e?t:t+n.magiclineOptionalSuffix}function th(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 nh(t,e,n){return e.trim()!==""?e:t==="unsupported"?n.magiclineConfigUnsupported:t==="inconsistent"?n.magiclineConfigInconsistent:n.magiclineConfigUnavailable}function rh(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 ih(t,e){return t==="MALE"?e.magiclineGenderMale:t==="FEMALE"?e.magiclineGenderFemale:e.magiclineGenderUnisex}function qa(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 oh={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 ah(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}}const Na={draftVoucherCode:"",appliedVoucherCode:null,appliedVoucher:null,voucherStatus:"idle",voucherRequestId:0,voucherUnavailable:!1},sh="voucher:";function lh(t){const e={};for(const n of Object.keys(t))n.startsWith(sh)||(e[n]=t[n]);return e}function ch(t,e){switch(e.type){case"SET_VOUCHER_DRAFT":{const n=t.appliedVoucher!==null||t.voucherStatus==="applied";return{...t,draftVoucherCode:e.value,...n?{appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"idle"}:{}}}case"VOUCHER_APPLYING":return{...t,voucherStatus:"applying",voucherRequestId:t.voucherRequestId+1};case"VOUCHER_APPLIED":return e.requestId!==t.voucherRequestId?t:{...t,appliedVoucher:e.voucher,appliedVoucherCode:e.appliedCode,voucherStatus:"applied"};case"VOUCHER_INVALID":return{...t,appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"invalid"};case"VOUCHER_DISABLED":return{...t,appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"disabled",voucherUnavailable:!0};case"CLEAR_VOUCHER":return{...t,appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"idle"};default:return t}}function uh(t,e){switch(e.type){case"dropVoucherAcks":{const n=lh(t.acknowledgedBlocks);return Object.keys(n).length===Object.keys(t.acknowledgedBlocks).length?t:{...t,acknowledgedBlocks:n}}case"seedVoucherAcks":{if(e.ackKeys.length===0)return t;const n={...t.acknowledgedBlocks};for(const r of e.ackKeys)r in n||(n[r]=!1);return{...t,acknowledgedBlocks:n}}default:return ah(t,e)}}function dh({sessionId:t,visitorId:e}){const n=Ad(),r=Ta(),[i,o]=he(uh,oh),[a,l]=he(ch,Na),[c,u]=he((k,C)=>C,{phase:"loading"}),h=me(null),[f,d]=he((k,C)=>C,{phase:"idle"}),p=N(k=>{k.phase==="ready"?h.current=k.pricing:(k.phase==="idle"||k.phase==="error")&&(h.current=null),d(k)},[]),[g,y]=he(k=>k+1,0),[m,v]=he(k=>k+1,0),b=N(k=>{o({type:"setTermId",termId:k}),l({type:"CLEAR_VOUCHER"})},[]),x=N((k,C)=>{o({type:"setPersonal",key:k,value:C})},[]),P=N((k,C)=>{o({type:"setAddress",key:k,value:C})},[]),S=N((k,C,De)=>{o({type:"toggleModule",moduleId:k,selected:C,consentAckKey:De}),o({type:"dropVoucherAcks"}),l({type:"CLEAR_VOUCHER"})},[]),z=N((k,C)=>{o({type:"setBlockAck",ackKey:k,value:C})},[]),W=N(k=>{o({type:"setAccountHolder",value:k})},[]),V=N(k=>{o({type:"setIban",value:k})},[]),le=N((k,C)=>{o({type:"setConsent",key:k,value:C})},[]),L=N(()=>{o({type:"clearIban"})},[]),H=N(()=>{o({type:"clearTermId"}),l({type:"CLEAR_VOUCHER"})},[]),ie=N(k=>{l({type:"SET_VOUCHER_DRAFT",value:k}),o({type:"dropVoucherAcks"})},[]),w=me(Na.voucherRequestId),Z=N(()=>{const k=w.current+1;return w.current=k,l({type:"VOUCHER_APPLYING"}),k},[]),rn=N(k=>{k.requestId===w.current&&(l({type:"VOUCHER_APPLIED",requestId:k.requestId,voucher:k.voucher,appliedCode:k.appliedCode,voucherAckKeys:k.voucherAckKeys}),p({phase:"ready",pricing:k.pricing}),o({type:"seedVoucherAcks",ackKeys:k.voucherAckKeys}))},[]),nt=N(()=>{l({type:"VOUCHER_INVALID"}),o({type:"dropVoucherAcks"}),v()},[]),rt=N(()=>{l({type:"VOUCHER_DISABLED"}),o({type:"dropVoucherAcks"}),v()},[]),jt=N(()=>{l({type:"CLEAR_VOUCHER"}),o({type:"dropVoucherAcks"}),v()},[]),it=N(()=>{y()},[]),on=N(()=>{p({phase:"idle"})},[]),St=N(()=>{v()},[]),$e=c.phase==="ready"&&i.termId!==null?c.terms.find(k=>k.termId===i.termId)??null:null,{selectedModuleIds:K,acknowledgedBlocks:I}=i,{appliedVoucher:be}=a,Be=G(()=>{if($e===null)return[];const k=new Set;for(const C of $e.textBlocks)C.isConfirmationRequired&&k.add(C.ackKey);for(const C of K){const De=$e.optionalModules.find(ot=>ot.id===C);De?.consent&&k.add(De.consent.ackKey)}if(be!==null)for(const C of be.textBlocks)k.add(C.ackKey);return[...k]},[$e,K,be]),an=G(()=>Be.every(k=>I[k]===!0),[Be,I]),{firstName:oe,lastName:Pe}=i.personal,{accountHolder:de,accountHolderTouched:Ct}=i.payment;return T(()=>{Ct||de!==""||oe.trim()!==""&&Pe.trim()!==""&&o({type:"prefillAccountHolder",value:`${oe.trim()} ${Pe.trim()}`})},[oe,Pe,de,Ct]),T(()=>{let k=!1;return u({phase:"loading"}),(async()=>{try{const C=await n({sessionId:t,visitorId:e});if(k)return;C.status==="ok"?C.terms.length>0?u({phase:"ready",terms:C.terms,allowVoucherCodes:C.allowVoucherCodes}):u({phase:"empty"}):u({phase:"error"})}catch{k||u({phase:"error"})}})(),()=>{k=!0}},[n,t,e,g]),T(()=>{if(m===0)return;const k=$e;if(!k){p({phase:"error",code:"offer_unavailable"});return}let C=!1;const De=h.current;p(De!==null?{phase:"reloading",pricing:De}:{phase:"loading"});const ot=k.defaultContractStartDate??"",Zr={sessionId:t,visitorId:e,termId:k.termId,startDate:ot,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:k.optionalModules.filter(Q=>i.selectedModuleIds.includes(Q.id)).map(Q=>Q.id),privacyConsent:i.consents.privacy,sepaConsent:i.consents.sepa};return(async()=>{try{const Q=await r(Zr);if(C)return;Q.status==="ok"?p({phase:"ready",pricing:{basePrice:Q.basePrice,preUseCharge:Q.preUseCharge,currencyCode:Q.currencyCode,flatFees:Q.flatFees,modules:Q.modules,contractVolume:Q.contractVolume,startDate:Q.startDate,paymentFrequency:Q.paymentFrequency,fingerprint:Q.pricingFingerprint}}):p({phase:"error",code:Q.status})}catch{C||p({phase:"error",code:"unavailable"})}})(),()=>{C=!0}},[m,r,t,e]),{fields:i,offersState:c,previewState:f,selectedTerm:$e,requiredAckKeys:Be,allAcknowledged:an,serverAllowVoucherCodes:c.phase==="ready"?c.allowVoucherCodes:!1,voucherStatus:a.voucherStatus,draftVoucherCode:a.draftVoucherCode,appliedVoucherCode:a.appliedVoucherCode,appliedVoucher:a.appliedVoucher,voucherUnavailable:a.voucherUnavailable,setTermId:b,setPersonal:x,setAddress:P,toggleModule:S,setBlockAck:z,setAccountHolder:W,setIban:V,setConsent:le,clearIban:L,clearTermId:H,refetchOffers:it,fetchPreview:St,resetPreview:on,setVoucherDraft:ie,beginVoucherApply:Z,commitVoucherApplied:rn,markVoucherInvalid:nt,markVoucherDisabled:rt,clearVoucher:jt}}function hh(t){return t!==null&&t.optionalModules.length>0?["offer","upgrades","personal","address","payment","review"]:["offer","personal","address","payment","review"]}function ph({formMessageId:t,sessionId:e,visitorId:n,projectId:r,formStatus:i}){const o=j(),a=Ae.value,l=Id(),c=Ta(),u=dh({sessionId:e,visitorId:n}),{fields:h,offersState:f,previewState:d,selectedTerm:p,requiredAckKeys:g,allAcknowledged:y,serverAllowVoucherCodes:m,voucherStatus:v,draftVoucherCode:b,appliedVoucher:x,appliedVoucherCode:P,voucherUnavailable:S,setTermId:z,setPersonal:W,setAddress:V,toggleModule:le,setBlockAck:L,setAccountHolder:H,setIban:ie,setConsent:w,clearIban:Z,clearTermId:rn,refetchOffers:nt,fetchPreview:rt,resetPreview:jt,setVoucherDraft:it,beginVoucherApply:on,commitVoucherApplied:St,markVoucherInvalid:$e,markVoucherDisabled:K}=u,[I,be]=R(0),[Be,an]=R({}),[oe,Pe]=R(!1),[de,Ct]=R(null),[k,C]=R(null),[De,ot]=R(null),Zr=G(()=>Ia(),[]);if(de!==null&&de.status==="succeeded")return s(La,{customerNumber:de.customerNumber});if(de!==null&&de.status==="failed"&&!de.retryable){const q=de.errorCode==="duplicate_submission"?o.magiclineDuplicateNotice:de.errorCode==="unknown_outcome"?o.magiclineUnknownOutcome:de.errorCode==="live_submission_disabled"?o.magiclineLiveSubmissionDisabled:o.magiclineFailedDetail;return s(Oa,{message:q})}if(de===null&&!oe&&i==="submitted")return s(La,{customerNumber:null});if(de===null&&!oe&&i==="failed")return s(Oa,{message:o.magiclineFailedDetail});const Q=G(()=>hh(p),[p]),Tt=Math.min(I,Q.length-1),Me=Q[Tt],Ja=Tt===Q.length-1,ap=Tt===0;function sp(q){const E={};if(q==="offer")return h.termId===null&&(E.termId=o.magiclineOfferRequiredError),E;if(q==="upgrades"){if(p!==null)for(const X of h.selectedModuleIds){const at=p.optionalModules.find(te=>te.id===X);if(at?.consent&&h.acknowledgedBlocks[at.consent.ackKey]!==!0){E.upgrades=o.magiclineUpgradeConsentError;break}}return E}if(q==="personal"){const X=h.personal;return X.firstName.trim()===""&&(E.firstName=o.magiclineRequiredError),X.lastName.trim()===""&&(E.lastName=o.magiclineRequiredError),X.email.trim()===""?E.email=o.magiclineRequiredError:Ra(X.email)||(E.email=o.magiclineEmailError),X.dateOfBirth.trim()===""&&(E.dateOfBirth=o.magiclineRequiredError),X.gender===""&&(E.gender=o.magiclineRequiredError),X.phone.trim()===""&&(E.phone=o.magiclineRequiredError),E}if(q==="address"){const X=h.address;return X.street.trim()===""&&(E.street=o.magiclineRequiredError),X.houseNumber.trim()===""&&(E.houseNumber=o.magiclineRequiredError),X.zipCode.trim()===""&&(E.zipCode=o.magiclineRequiredError),X.city.trim()===""&&(E.city=o.magiclineRequiredError),E}return q==="payment"&&(h.payment.accountHolder.trim()===""&&(E.accountHolder=o.magiclineRequiredError),Nd(h.payment.iban)||(E.iban=o.magiclineIbanInvalidError),h.consents.privacy||(E.privacy=o.magiclineConsentError),h.consents.sepa||(E.sepa=o.magiclineConsentError)),E}function lp(){const q=sp(Me);if(Object.keys(q).length>0){an(q);return}an({}),C(null);const E=Math.min(Tt+1,Q.length-1);Q[E]==="review"&&rt(),be(E)}function cp(){an({}),C(null),Me==="review"&&jt(),be(q=>Math.max(q-1,0))}function up(){C(null),rt()}async function dp(){if(!oe&&!(d.phase!=="ready"||p===null)){if(!y){C(o.magiclineConfirmRequiredError);return}Pe(!0),C(null);try{const q=await l({sessionId:e,visitorId:n,projectId:r,formMessageId:t,fields:{firstname:h.personal.firstName.trim(),lastname:h.personal.lastName.trim(),email:h.personal.email.trim(),phone:h.personal.phone.trim(),dateOfBirth:h.personal.dateOfBirth.trim(),gender:h.personal.gender,street:h.address.street.trim(),houseNumber:h.address.houseNumber.trim(),zipCode:h.address.zipCode.trim(),city:h.address.city.trim(),rateBundleTermId:p.termId,privacyConsent:h.consents.privacy,sepaConsent:h.consents.sepa},bankAccount:{accountHolder:h.payment.accountHolder.trim(),iban:h.payment.iban},selectedModuleIds:p.optionalModules.filter(E=>h.selectedModuleIds.includes(E.id)).map(E=>E.id),acknowledgedAckKeys:g,pricingFingerprint:d.pricing.fingerprint,voucherCode:P??void 0});if(q.status==="succeeded"){Ct(q);return}if(q.errorCode==="price_changed"){C(o.magiclinePriceChangedNotice),rt(),Pe(!1);return}if(q.errorCode==="offer_unavailable"){rn(),nt(),jt(),C(o.magiclineOfferUnavailableNotice),be(0),Pe(!1);return}if(q.errorCode==="confirmation_required"){C(o.magiclineConfirmationRequiredNotice),Pe(!1);return}if(q.errorCode==="live_submission_disabled"){Ct(q);return}if(!q.retryable){Ct(q);return}Z(),C(q.message!==""?q.message:o.magiclineFailedDetail),Pe(!1)}catch(q){console.error("[ContractCreationForm] Submit failed:",q),Z(),C(o.magiclineFailedDetail),Pe(!1)}}}async function hp(){if(d.phase!=="ready"||p===null||b.trim()==="")return;const q=b.trim(),E=on();ot(null);const X=te=>{$e(),it(""),ot(te)},at=o.magiclineVoucherInvalid.replace("{code}",q);try{const te=await c({sessionId:e,visitorId:n,termId:p.termId,startDate:p.defaultContractStartDate??"",fields:{firstname:h.personal.firstName.trim(),lastname:h.personal.lastName.trim(),email:h.personal.email.trim(),dateOfBirth:h.personal.dateOfBirth.trim(),gender:h.personal.gender,phone:h.personal.phone.trim(),street:h.address.street.trim(),houseNumber:h.address.houseNumber.trim(),zipCode:h.address.zipCode.trim(),city:h.address.city.trim()},selectedModuleIds:p.optionalModules.filter(st=>h.selectedModuleIds.includes(st.id)).map(st=>st.id),privacyConsent:h.consents.privacy,sepaConsent:h.consents.sepa,voucherCode:b.trim()});if(te.status==="ok"){const st=te.voucher;if(st!==null){const xp=st.textBlocks.map(vp=>vp.ackKey);St({requestId:E,voucher:st,appliedCode:b.trim(),voucherAckKeys:xp,pricing:{basePrice:te.basePrice,preUseCharge:te.preUseCharge,currencyCode:te.currencyCode,flatFees:te.flatFees,modules:te.modules,contractVolume:te.contractVolume,startDate:te.startDate,paymentFrequency:te.paymentFrequency,fingerprint:te.pricingFingerprint}})}else X(at)}else te.status==="voucher_invalid"?X(at):te.status==="voucher_disabled"?(K(),it(""),ot(o.magiclineVoucherDisabled)):X(at)}catch{X(at)}}function pp(){Ja?dp():lp()}const Ya=Ch(Me,o),fp=v==="applying"||b.trim()!==""&&b.trim()!==(P??""),gp=Me==="review"&&(d.phase!=="ready"||!y||fp),mp=oe||gp;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:Ya}),s("span",{class:"jex-magicline-wizard-counter",children:o.magiclineStepCounter.replace("{n}",String(Tt+1)).replace("{total}",String(Q.length))})]}),s("div",{class:"jex-magicline-wizard-dots","aria-hidden":"true",children:Q.map((q,E)=>s("span",{class:E===Tt?"jex-magicline-wizard-dot jex-magicline-wizard-dot-active":"jex-magicline-wizard-dot"},q))})]}),s("div",{class:"jex-form",role:"group","aria-label":Ya,children:[Me==="offer"?s(fh,{offersState:f,selectedTermId:h.termId,widgetLocale:a,disabled:oe,error:Be.termId,onSelect:z,onRetry:nt}):null,Me==="upgrades"&&p!==null?s(xh,{modules:p.optionalModules,selectedModuleIds:h.selectedModuleIds,acknowledgedBlocks:h.acknowledgedBlocks,widgetLocale:a,disabled:oe,error:Be.upgrades,onToggle:le,onAck:L}):null,Me==="personal"?s(bh,{personal:h.personal,errors:Be,disabled:oe,setPersonal:W}):null,Me==="address"?s(yh,{address:h.address,errors:Be,disabled:oe,setAddress:V}):null,Me==="payment"?s(wh,{formMessageId:t,fields:h,errors:Be,privacyUrl:Zr,disabled:oe,setAccountHolder:H,setIban:ie,setConsent:w}):null,Me==="review"?s(kh,{fields:h,term:p,previewState:d,widgetLocale:a,disabled:oe,acknowledgedBlocks:h.acknowledgedBlocks,onToggleAck:L,onRetry:up,allowVoucherCodes:m,voucherUnavailable:S,voucherStatus:v,draftVoucherCode:b,appliedVoucher:x,voucherBanner:De,onVoucherDraftChange:it,onApplyVoucher:()=>{hp()}}):null,k!==null?s("div",{class:"jex-magicline-error",role:"alert",children:k}):null,s("div",{class:"jex-magicline-wizard-nav",children:[ap?null:s("button",{type:"button",class:"jex-magicline-wizard-back",disabled:oe,onClick:cp,children:o.magiclineWizardBack}),s("button",{type:"button",class:"jex-form-submit jex-magicline-wizard-next",disabled:mp,onClick:pp,children:Ja?oe?o.magiclineSubmitting:o.magiclineSubmit:o.magiclineWizardNext})]})]})]})}function La({customerNumber:t}){const e=j();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.magiclineContractSuccessTitle}),s("div",{class:"jex-inline-form-submitted-detail",children:e.magiclineContractSuccessDetail}),t!==null&&t!==""?s("div",{class:"jex-inline-form-submitted-detail",children:e.magiclineCustomerNumber.replace("{number}",t)}):null]})]})}function Oa({message:t}){const e=j();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 fh({offersState:t,selectedTermId:e,widgetLocale:n,disabled:r,error:i,onSelect:o,onRetry:a}){const l=j();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=Sh(t.terms);return s(O,{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(gh,{term:h,checked:e===h.termId,widgetLocale:n,disabled:r,onSelect:o},h.termId)),s(mh,{subDescription:u.bundleSubDescription,footnote:u.footnote})]},u.bundleId))}),i!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:i}):null]})}function gh({term:t,checked:e,widgetLocale:n,disabled:r,onSelect:i}){const o=j(),a=Un(t.termValue,t.termUnit,n),l=_e(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," ",Gr(t.paymentFrequency.value,t.paymentFrequency.unit,n)]})]}),t.cancellationPeriod!==null?s("span",{class:"jex-magicline-offer-term-note",children:[o.magiclineCancellationPeriod,":"," ",Un(t.cancellationPeriod.value,t.cancellationPeriod.unit,n)]}):null,c!==void 0?s("span",{class:"jex-magicline-offer-term-note",children:[o.magiclineStarterPackage,":"," ",_e(c.price,t.currencyCode,n)]}):null,u.map(h=>s("span",{class:"jex-magicline-offer-term-note",children:[$a(h.name,o),": ",_e(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 mh({subDescription:t,footnote:e}){const n=j(),r=jh(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 xh({modules:t,selectedModuleIds:e,acknowledgedBlocks:n,widgetLocale:r,disabled:i,error:o,onToggle:a,onAck:l}){const c=j();return t.length===0?s("div",{class:"jex-magicline-slots-hint",children:c.magiclineUpgradesNone}):s(O,{children:[s("div",{class:"jex-magicline-slots-hint",children:c.magiclineUpgradesIntro}),s("div",{class:"jex-magicline-upgrade-group",children:t.map(u=>s(vh,{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 vh({module:t,selected:e,consentChecked:n,widgetLocale:r,disabled:i,onToggle:o,onAck:a}){const l=j(),c=zd(t.price,t.currencyCode,t.paymentFrequencyType,t.recurringUnit,r),u=Ud(t.extensionType,t.termExtension,r),h=t.termLabel!==null&&t.termLabel!==""?t.termLabel:l.magiclineUpgradeOneTime,f=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:d=>{o(t.id,d.currentTarget.checked,f?.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&&f!==null?s(Jr,{ackKey:f.ackKey,title:f.title,text:f.text,attachmentLabel:f.attachmentLabel,attachmentUrl:f.attachmentUrl,checked:n,disabled:i,onToggle:a,showRequiredPill:!0}):null]})}function bh({personal:t,errors:e,disabled:n,setPersonal:r}){const i=j(),o=G(()=>Aa(),[]);return s(O,{children:[s("div",{class:"jex-magicline-row",children:[s(Ee,{label:i.magiclineFirstName,value:t.firstName,required:!0,disabled:n,error:e.firstName,fieldKey:"firstName",onInput:a=>{r("firstName",a)}}),s(Ee,{label:i.magiclineLastName,value:t.lastName,required:!0,disabled:n,error:e.lastName,fieldKey:"lastName",onInput:a=>{r("lastName",a)}})]}),s(Ee,{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(_h,{label:i.magiclineGender,value:t.gender,required:!0,disabled:n,placeholder:i.magiclineGenderPlaceholder,error:e.gender,onChange:a=>{r("gender",a)},options:Pa.map(a=>({value:a,label:Th(a,i)}))}),s(Ee,{label:i.magiclinePhone,type:"tel",value:t.phone,required:!0,disabled:n,error:e.phone,fieldKey:"phone",onInput:a=>{r("phone",a)}})]})}function yh({address:t,errors:e,disabled:n,setAddress:r}){const i=j();return s(O,{children:[s("div",{class:"jex-magicline-row",children:[s(Ee,{label:i.magiclineStreet,value:t.street,required:!0,disabled:n,error:e.street,fieldKey:"street",onInput:o=>{r("street",o)}}),s(Ee,{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(Ee,{label:i.magiclineZip,value:t.zipCode,required:!0,disabled:n,error:e.zipCode,fieldKey:"zipCode",onInput:o=>{r("zipCode",o)}}),s(Ee,{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 wh({formMessageId:t,fields:e,errors:n,privacyUrl:r,disabled:i,setAccountHolder:o,setIban:a,setConsent:l}){const c=j(),u=`jex-ml-privacy-${t}`,h=`jex-ml-sepa-${t}`;return s(O,{children:[s(Ee,{label:c.magiclineAccountHolder,value:e.payment.accountHolder,required:!0,disabled:i,error:n.accountHolder,fieldKey:"accountHolder",onInput:o}),s(Ee,{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:f=>{l("privacy",f.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:f=>{l("sepa",f.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 kh({fields:t,term:e,previewState:n,widgetLocale:r,disabled:i,acknowledgedBlocks:o,onToggleAck:a,onRetry:l,allowVoucherCodes:c,voucherUnavailable:u,voucherStatus:h,draftVoucherCode:f,appliedVoucher:d,voucherBanner:p,onVoucherDraftChange:g,onApplyVoucher:y}){const m=j();if(n.phase==="loading"||n.phase==="idle")return s("div",{class:"jex-magicline-slots-hint","aria-live":"polite",children:m.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"?m.magiclineOfferUnavailableNotice:m.magiclineReviewError}),s("button",{type:"button",class:"jex-magicline-retry",disabled:i,onClick:l,children:m.magiclineRetry})]});const v=n.pricing,b=n.phase==="reloading",x=v.contractVolume,P=`${t.personal.firstName} ${t.personal.lastName}`.trim(),S=t.address,z=[`${S.street} ${S.houseNumber}`.trim(),`${S.zipCode} ${S.city}`.trim(),m.magiclineCountryStatic].filter(w=>w!=="").join(", "),W=e!==null?`${e.bundleName} · ${Un(e.termValue,e.termUnit,r)}`:"—",V=e!==null?e.textBlocks.filter(w=>w.isConfirmationRequired):[],le=e!==null?e.textBlocks.filter(w=>!w.isConfirmationRequired):[],L=e!==null?e.optionalModules.filter(w=>t.selectedModuleIds.includes(w.id)&&w.consent!==null).map(w=>({module:w,consent:w.consent})):[],H=d!==null?d.textBlocks.filter(w=>w.ackKey.startsWith("voucher:")):[],ie=c&&!u;return s("div",{class:"jex-magicline-review-wrap",children:[s("div",{class:b?"jex-magicline-review-body jex-magicline-review-body--reloading":"jex-magicline-review-body","aria-busy":b,children:[s("dl",{class:"jex-magicline-summary",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewOffer}),s("dd",{children:W})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewBasePrice}),s("dd",{children:[d!==null&&d.voucherType==="DISCOUNT"?_e(d.discountedBasePrice,v.currencyCode,r):_e(v.basePrice,v.currencyCode,r)," ",Gr(v.paymentFrequency.value,v.paymentFrequency.unit,r)]})]}),d!==null&&d.voucherType==="DISCOUNT"?s("div",{class:"jex-magicline-summary-row jex-magicline-voucher-discount-row",children:[s("dt",{children:m.magiclineVoucherAppliedDiscount.replace("{discount}",Bd(d.discountValue,d.discountType,v.currencyCode,r))}),s("dd",{})]}):null,d!==null&&d.remarks!==null&&d.remarks!==""?s("div",{class:"jex-magicline-summary-row jex-magicline-voucher-remarks-row",children:[s("dt",{children:m.magiclineVoucherRemarks}),s("dd",{children:d.remarks})]}):null,v.flatFees.map((w,Z)=>s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:$a(w.name,m)}),s("dd",{children:_e(w.price,v.currencyCode,r)})]},`${w.name}-${Z}`)),v.preUseCharge>0?s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewPreUseCharge}),s("dd",{children:_e(v.preUseCharge,v.currencyCode,r)})]}):null]}),v.modules.length>0?s("dl",{class:"jex-magicline-summary jex-magicline-summary-section",children:[s("div",{class:"jex-magicline-summary-heading",children:m.magiclineReviewSelectedUpgrades}),v.modules.map((w,Z)=>s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:w.name}),s("dd",{children:_e(w.amount,w.currencyCode,r)})]},`${w.moduleId}-${Z}`))]}):null,x!==null&&x.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:d!==null&&d.voucherType==="DISCOUNT"?m.magiclineGesamtpreisBeforeDiscount:m.magiclineReviewContractVolume}),s("dd",{children:_e(x.total,v.currencyCode,r)})]})}):null,d!==null&&d.voucherType==="CREDIT"?s("div",{class:"jex-magicline-voucher-credit-notice",role:"note",children:m.magiclineVoucherCreditNotice}):null,s("dl",{class:"jex-magicline-summary jex-magicline-summary-section",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewStartsOn}),s("dd",{children:Od(v.startDate,r)})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineSummaryName}),s("dd",{children:P!==""?P:"—"})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineSummaryAddress}),s("dd",{children:z})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewPayment}),s("dd",{children:Ld(t.payment.iban)})]})]}),ie?s("div",{class:"jex-magicline-voucher-section",children:[s("div",{class:"jex-magicline-field jex-magicline-voucher-field",children:[s("input",{class:"jex-form-input",type:"text","aria-label":m.magiclineVoucherLabel,placeholder:m.magiclineVoucherPlaceholder,value:f,disabled:i||h==="applying",onInput:w=>{g(w.currentTarget.value)}}),s("button",{type:"button",class:"jex-magicline-voucher-apply",disabled:i||h==="applying"||f.trim()==="",onClick:y,children:m.magiclineVoucherApply})]}),p!==null?s("div",{class:"jex-magicline-error",role:"alert",children:p}):null]}):null,L.length>0?s("div",{class:"jex-magicline-terms",role:"group","aria-label":m.magiclineReviewSelectedUpgrades,children:[s("div",{class:"jex-magicline-upgrades-recap-title",children:m.magiclineReviewSelectedUpgrades}),L.map(({module:w,consent:Z})=>s(za,{title:Z.title!==""?Z.title:w.name,text:Z.text,attachmentLabel:Z.attachmentLabel,attachmentUrl:Z.attachmentUrl},Z.ackKey))]}):null,V.length>0||le.length>0||H.length>0?s("div",{class:"jex-magicline-terms",role:"group","aria-label":m.magiclineReviewTerms,children:[V.length>0||H.length>0?s("div",{class:"jex-magicline-terms-prompt",children:[m.magiclineConfirmPrompt,s("span",{class:"jex-magicline-required-pill",children:m.magiclineRequired})]}):null,V.map(w=>s(Jr,{ackKey:w.ackKey,title:w.title,text:w.text,attachmentLabel:w.attachmentLabel,attachmentUrl:w.attachmentUrl,checked:o[w.ackKey]===!0,disabled:i,onToggle:a},w.ackKey)),H.map(w=>s(Jr,{ackKey:w.ackKey,title:w.title,text:w.text,attachmentLabel:w.attachmentLabel,attachmentUrl:w.attachmentUrl,checked:o[w.ackKey]===!0,disabled:i,onToggle:a},w.ackKey)),le.map((w,Z)=>s(za,{title:w.title,text:w.text,attachmentLabel:w.attachmentLabel,attachmentUrl:w.attachmentUrl},`${w.title}-${Z}`))]}):null]}),b?s("div",{class:"jex-magicline-review-overlay","aria-hidden":"true",children:s("span",{class:"jex-magicline-review-spinner"})}):null]})}function Jr({ackKey:t,title:e,text:n,attachmentLabel:r,attachmentUrl:i,checked:o,disabled:a,onToggle:l,showRequiredPill:c=!1}){const u=j(),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:f=>{l(t,f.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(O,{children:[" ",s("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r!==null&&r!==""?r:i})]}):null]})]})]})]})}function za({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(O,{children:[" ",s("a",{href:r,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:n!==null&&n!==""?n:r})]}):null]})]})}function Ee({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 _h({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 jh(t){return t===null?[]:t.split(`
|
|
69
|
-
`).map(e=>e.replace(/^\s*[-•]\s*/,"").trim()).filter(e=>e!=="")}function
|
|
70
|
-
${i.url}`:i.title,u=s(O,{children:[typeof i.id=="number"?s("span",{class:"jex-source-id",children:i.id}):null,s("span",{class:"jex-source-type",children:Ah[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 Eh(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 $h(){return s("div",{class:"jex-typing",children:[s("span",{}),s("span",{}),s("span",{})]})}const Ph=/\s?\[\d+\]/g;function Ba(t){return t.replace(Ph,"")}function Mh(t){return t?.at(-1)?._creationTime??0}function qh({conversations:t,greeting:e,botName:n,starterQuestions:r,onPickStarter:i,sessionNotFound:o,resumeFailed:a,onStartFresh:l,sessionId:c,visitorId:u}){const h=j(),f=me(null),[d,p]=R(null),g=Mh(t),y=Ca(),m=me(null);T(()=>{if(!u||!t)return;const x=t.at(-1);x&&x.role==="assistant"&&x.status!=="streaming"&&x._id!==m.current&&(m.current=x._id,Er(u))},[t,u]),T(()=>{f.current?.scrollIntoView({behavior:"smooth"})},[t?.length,t?.at(-1)?.content]);const v=c===null||t!==void 0&&t.length===0,b=r.length>0&&!o&&!a&&v;return s("div",{class:"jex-chat-messages",children:[s(_t,{text:e,botName:n}),b?s(kd,{questions:r,disabled:Mn.value,onPick:i}):null,o&&a&&l?s("div",{class:"jex-session-prompt",children:[s("div",{class:"jex-session-prompt-text",children:h.sessionNotFoundPrompt}),s("button",{class:"jex-session-prompt-btn",type:"button",onClick:()=>{l()},children:h.startNewConversation})]}):o?s("div",{class:"jex-session-notice",children:h.sessionNotFound}):null,t?.map(x=>{if(x.contentType==="human-notice"){const S=x.noticeKind==="agent-joined"?h.noticeAgentJoined.replace("{name}",x.noticeData?.agentName??""):x.noticeKind==="human-requested"?h.noticeHumanRequested:x.noticeKind==="human-requested-form"?h.noticeHumanRequestedForm:x.noticeKind==="message-received"?h.noticeMessageReceived:x.noticeKind==="agent-handling"?h.noticeAgentHandling:x.noticeKind==="ai-resumed"?h.noticeAiResumed:x.content;return s(_t,{text:S,botName:n},x._id)}if(x.contentType==="escalation-form"&&c&&u)return Hc.value==="screen"&&!x.formData?d===x._id?null:s("div",{class:"jex-inline-form jex-inline-form-card",children:[s("div",{class:"jex-inline-form-title",children:h.escalationPromptTitle}),s("div",{class:"jex-inline-form-subtitle",children:h.escalationPromptSubtitle}),s("button",{class:"jex-form-submit",type:"button",onClick:()=>{Oe({id:"escalation-form",formMessageId:x._id,sessionId:c,visitorId:u,waitingSetAt:g})},children:h.escalationPromptSubmit}),s("button",{class:"jex-escalation-skip",type:"button",onClick:()=>{y({formMessageId:x._id,sessionId:c,visitorId:u,waitingSetAt:g}),p(x._id)},children:h.escalationSkip})]},x._id):s(jd,{message:x,sessionId:c,visitorId:u,waitingSetAt:g},x._id);if(x.contentType==="magicline-form"&&c&&u)return s(Rh,{message:x,sessionId:c,visitorId:u},x._id);if(x.contentType==="escalation-confirm"){const S=x.noticeKind==="escalation-confirmed"?h.noticeEscalationConfirmed.replace("{name}",x.noticeData?.visitorName??"").replace("{email}",x.noticeData?.visitorEmail??"").replace("{ref}",x.noticeData?.visitorId??""):x.content;return s(_t,{text:S,botName:n},x._id)}if(x.role==="user")return s(_d,{text:x.content},x._id);const P={authorId:x.authorId,authorName:x.authorName,authorImage:x.authorImage};return x.status==="streaming"&&x.content===""?s($h,{},x._id):x.status==="streaming"?s(_t,{text:Ba(x.content),streaming:!0,botName:n,...P},x._id):x.status==="error"?s(_t,{text:x.errorMessage??`${h.somethingWentWrong}. ${h.tryAgain}.`,error:!0,botName:n,...P},x._id):s("div",{children:[s(_t,{text:Ba(x.content),botName:n,...P}),x.sources&&x.sources.length>0?s(Ih,{sources:x.sources}):null]},x._id)}),s("div",{ref:f})]})}function Nh(){const t=j();function e(){const n=Yt.peek();n&&(ia(),Oe({id:"escalation-form",formMessageId:n.formMessageId,sessionId:n.sessionId,visitorId:n.visitorId,waitingSetAt:n.waitingSetAt}))}return s("div",{class:"jex-waiting-card",role:"status","aria-live":"polite",children:[s("div",{class:"jex-waiting-indicator","aria-hidden":"true",children:[s("span",{class:"jex-waiting-dot"}),s("span",{class:"jex-waiting-ripple"})]}),s("div",{class:"jex-waiting-body",children:[s("div",{class:"jex-waiting-title",children:t.waitingTitle}),s("div",{class:"jex-waiting-subtitle",children:t.waitingSubtitle}),s("button",{class:"jex-waiting-leave-email",type:"button",onClick:e,children:t.waitingLeaveEmail})]})]})}function Da({message:t}){const[e,n]=R(!1);return T(()=>{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 Lh({sessionId:t,visitorId:e}){const n=wn(re.functions.chat.public.conversations.listBySession,t&&e?{sessionId:t,visitorId:e}:"skip"),r=wn(re.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 Oh(t){const e=j(),n=me(null),r=me(null),[i,o]=R(!1);T(()=>{try{n.current=document.title}catch{}},[]),T(()=>{if(!t||t.length===0)return;const a=t[t.length-1];if(r.current===null){r.current=a._id;return}if(a._id===r.current)return;r.current=a._id;const l=a.role!=="user";let c=!1;try{c=document.hidden}catch{}l&&c&&o(!0)},[t]),T(()=>{if(!i)return;let a=null,l=!1;const c=()=>{if(a!==null){try{clearInterval(a)}catch{}a=null}try{n.current!==null&&(document.title=n.current)}catch{}};try{a=setInterval(()=>{try{const u=`💬 ${e.newReplyTitle}`;document.title=l?n.current??"":u,l=!l}catch{c()}},1200)}catch{}return c},[i,e.newReplyTitle]),T(()=>{const a=()=>{try{document.hidden||o(!1)}catch{}};try{document.addEventListener("visibilitychange",a)}catch{}return()=>{try{document.removeEventListener("visibilitychange",a)}catch{}}},[])}function zh({sessionId:t,visitorId:e}){const n=Ye(re.functions.chat.public.visitorPresence.heartbeat);T(()=>{if(!t||!e)return;let r=null;const i=()=>{n({sessionId:t,visitorId:e}).catch(()=>{})},o=()=>{r===null&&(r=setInterval(i,6e4))},a=()=>{r!==null&&(clearInterval(r),r=null)},l=()=>{document.visibilityState==="visible"?(i(),o()):a()};return l(),document.addEventListener("visibilitychange",l),()=>{document.removeEventListener("visibilitychange",l),a()}},[t,e,n])}function Bh(){return Ye(re.functions.chat.public.helpdesk.createEscalationRequest)}function Ua({sessionId:t,visitorId:e,ensureSession:n,onSkipForm:r}){const i=j(),o=Bh(),[a,l]=R(!1),[c,u]=R(null);async function h(){if(!a){l(!0),u(null);try{const f=t&&e?{sessionId:t,visitorId:e}:await n();if(!f)return;const d=Ve.value;if(!d)return;const p=await o({sessionId:f.sessionId,visitorId:f.visitorId,bootstrapToken:d,locale:Ae.value});if(p.skipForm){r?.();return}Oe({id:"escalation-form",formMessageId:p.formMessageId,sessionId:f.sessionId,visitorId:f.visitorId,waitingSetAt:p.waitingSetAt})}catch(f){const d=f instanceof Error?f.message:String(f);u(/RATE_LIMITED|Too many/.test(d)?i.handoffRateLimited:i.handoffFailed)}finally{l(!1)}}}return{requestHuman:h,busy:a,error:c}}function Dh({greeting:t,botName:e,starterQuestions:n,sessionId:r,visitorId:i,isLoading:o,sessionNotFound:a,resumeFailed:l,isOrgDeleted:c,ensureSession:u,startFresh:h}){const f=j(),{conversations:d,sessionStatus:p,isLoading:g,isStreaming:y}=Lh({sessionId:r,visitorId:i});Oh(d),zh({sessionId:r,visitorId:i}),T(()=>{const S=Yt.peek();if(S===null||!d||d.length===0)return;const{waitingSetAt:z}=S;d.some(V=>V._creationTime>z&&(V.noticeKind==="agent-joined"||!!V.authorId))&&ia()},[d]);const m=ra({sessionId:r,visitorId:i,ensureSession:u}),v=me((()=>{const S=bt.peek();return S!==null?S:Ir.peek()&&fe.peek()!==null?"resume":"fresh"})()).current,{requestHuman:b,error:x}=Ua({sessionId:r,visitorId:i,ensureSession:u});return T(()=>{v==="escalate"&&b()},[v]),T(()=>{bt.value=null},[]),T(()=>{fe.peek()!==null&&u()},[u]),T(()=>{i&&Er(i)},[i]),c?s("div",{class:"jex-chat-messages",children:s("div",{class:"jex-session-notice",children:f.chatNoLongerAvailable})}):v==="resume"&&(!r||g)?s(Da,{message:f.resumeConversation}):s(O,{children:[s(qh,{conversations:d,greeting:t,botName:e,starterQuestions:n,onPickStarter:S=>{m(S)},sessionNotFound:a,resumeFailed:l,onStartFresh:h,sessionId:r,visitorId:i}),Yt.value!==null&&s(Nh,{}),x&&s("div",{class:"jex-session-error-notice",role:"alert",style:{margin:"8px 16px 0"},children:x}),s(Su,{sessionId:r,visitorId:i,isLoading:o,isStreaming:y,sessionStatus:p,ensureSession:u,onStartFresh:h})]})}function Fa(t){return wn(re.functions.chat.public.availability.getOrgAvailability,t?{orgSlug:t}:"skip")}function Va(t){return t?.anyOnline?"online":t?.anyAway?"away":"offline"}function Uh({formMessageId:t,sessionId:e,visitorId:n,orgSlug:r}){const i=j(),o=Qt.value,a=/^https?:\/\//i.test(o)?o:Ht,[l,c]=R(""),[u,h]=R(""),f=Fa(r),d=f&&!f.anyOnline?i.escalationOfflineSubtitle:i.escalationSubtitle,p=Sa(),[g,y]=R(!1),[m,v]=R(null);async function b(x){x.preventDefault(),y(!0),v(null);try{await p({sessionId:e,visitorId:n,formMessageId:t,visitorName:l.trim(),visitorEmail:u.trim(),locale:Ae.value}),$r()}catch(P){console.error("[EscalationFormScreen] Submit failed:",P),v(i.escalationSubmitFailed)}finally{y(!1)}}return s("div",{class:"jex-form-screen",children:[s("h2",{class:"jex-form-title",children:i.escalationFormTitle}),s("p",{class:"jex-escalation-subtitle",children:d}),m&&s("div",{class:"jex-form-error",role:"alert",children:m}),s("form",{class:"jex-form",onSubmit:x=>{b(x)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:i.escalationNameLabel,value:l,required:!0,onInput:x=>{c(x.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:i.escalationEmailLabel,value:u,required:!0,onInput:x=>{h(x.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",disabled:g,children:i.escalationSubmit})]}),s("div",{class:"jex-inline-form-consent",style:{textAlign:"center",margin:"16px 0 8px 0"},children:[i.escalationConsent," ",s("a",{href:a,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:i.escalationPrivacyLinkText}),"."]})]})}function Ha({sessionId:t,visitorId:e,ensureSession:n,availability:r}){const i=j(),{requestHuman:o,busy:a,error:l}=Ua({sessionId:t,visitorId:e,ensureSession:n}),c=`jex-presence-dot--${Va(r)}`,u=r?r.anyOnline?i.handoffAvailable:i.handoffOffline:i.talkToHuman;return s(O,{children:[s("button",{class:"jex-header-handoff",type:"button",onClick:()=>{o()},disabled:a,"aria-label":i.talkToHumanAria,title:u,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"})]}),r!==void 0&&s("span",{class:`jex-presence-dot ${c}`,"aria-hidden":"true"})]}),l&&s("div",{class:"jex-handoff-error",role:"alert",children:l})]})}async function Fh(){const t=Mo.value;if(!t)return console.warn("[JexityChat] Bootstrap refresh skipped — inputs missing"),{ok:!1,reason:"no-inputs"};const e=await Sr(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 Ve.value=n,{ok:!0,token:n}}function Qa(t){return Wa(t)?"unauthorized":t instanceof Error&&/network|fetch|failed to fetch/i.test(t.message)?"network":"unknown"}function Wa(t){return t instanceof fn?t.data?.code==="UNAUTHORIZED_ORIGIN":!1}function Vh(t=1e4){return Ve.value?Promise.resolve(Ve.value):new Promise(e=>{let n=!1;const r=a=>{n||(n=!0,clearTimeout(i),o(),e(a))},i=setTimeout(()=>{r(null)},t),o=Ve.subscribe(a=>{a&&r(a)})})}function Hh(t,e){const n=me(null),r=vt(!1),i=vt(!1),o=vt(!1),a=vt(null),l=Ye(re.functions.chat.public.sessions.createOrResume),c=async p=>{const g=await Vh();if(!g)return console.warn("[JexityChat] No bootstrap token after 10s — session creation blocked."),wt.value="no-token",null;const y=b=>({orgSlug:t,...e?{projSlug:e}:{},visitorId:p,bootstrapToken:b,locale:Ae.value,...An.value?{source:An.value}:{}});Mr.value=!0;let m;try{try{m=await l(y(g))}catch(b){if(!Wa(b))throw b;const x=await Fh();if(!x.ok)return wt.value=x.reason==="rate_limited"?"network":"unauthorized",null;m=await l(y(x.token))}}finally{Mr.value=!1}wt.value=null,a.value=m.status;const v={sessionId:m.sessionId,visitorId:p};return n.current=v,{session:v,result:m}},u=N(async()=>{if(n.current)return n.current;if(o.value)return null;r.value=!0;const p=fe.value!==null,g=fe.value??Uo();try{const y=await c(g);return y?(p&&y.result.isNew&&(i.value=!0,o.value=!0),y.session):null}catch(y){return console.error("[JexityChat] Failed to create session:",y),wt.value=Qa(y),null}finally{r.value=!1}},[t,e,l,r,i,o]),h=N(()=>{n.current=null,i.value=!1,o.value=!1,ta()},[i,o]);T(()=>Wc(h),[h]);const f=N(async()=>{n.current=null,o.value=!1,i.value=!1,ta();const p=Uo();r.value=!0;try{return(await c(p))?.session??null}catch(g){return console.error("[JexityChat] Failed to create fresh session:",g),wt.value=Qa(g),null}finally{r.value=!1}},[t,e,l,r,i,o,a]),d=n.current;return{sessionId:d?.sessionId??null,visitorId:d?.visitorId??null,isLoading:r.value,sessionNotFound:i.value,resumeFailed:o.value,sessionStatus:a.value,isOrgDeleted:a.value==="org_deleted",ensureSession:u,startFresh:f,resetSession:h}}function Qh({botName:t,availability:e,onResetSession:n}){const r=j(),[i,o]=R(""),a=e?.anyOnline===!0,l=Va(e);function c(){En(),bt.value="escalate",n(),Fo(),Oe({id:"chat"})}function u(){En(),bt.value="fresh",n(),Fo(),Oe({id:"chat"})}function h(d){En(),bt.value="resume",n(),Vo(d),Oe({id:"chat"})}function f(d){d.preventDefault();const p=i.trim().toUpperCase();p&&(En(),bt.value="resume",n(),Vo(p),Oe({id:"chat"}))}return s("div",{class:"jex-home",children:[Kt.value&&s("div",{class:"jex-session-prompt",role:"status",children:s("div",{class:"jex-session-prompt-text",children:r.sessionLocked})}),s("button",{class:"jex-home-hero",type:"button",onClick:c,"aria-label":r.talkToHumanAria,title:e?a?r.handoffAvailable:r.handoffOffline:r.talkToHuman,children:[s("div",{class:"jex-home-avatar",children:[s(Jo,{size:24}),e!==void 0&&s("span",{class:`jex-home-status-dot jex-home-status-dot--${l}`,"aria-hidden":"true"})]}),s("div",{class:"jex-home-hero-text",children:[s("h2",{class:"jex-home-title",children:t}),s("span",{class:"jex-home-status",children:[e===void 0?r.homeStatusOffline:a?r.homeStatusOnline:r.homeStatusOffline," | ",r.talkToHuman]})]})]}),s("div",{class:"jex-home-actions",children:[ne.value.length>0&&s(O,{children:[s("span",{class:"jex-home-section-label",children:r.pickUpWhereLeftOff}),s("div",{class:"jex-home-history",children:ne.value.slice().reverse().map(d=>s("button",{class:"jex-home-resume-card",onClick:()=>{h(d.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:d.ref}),s("span",{class:"jex-home-resume-meta",children:r.resumeListTimestamp.replace("{minutes}",String(Math.max(1,Math.round((Date.now()-d.lastActivityAt)/6e4))))})]},d.ref))})]}),s("button",{class:"jex-home-new-btn",onClick:u,children:ne.value.length>0?r.startNewConversation:r.chatWith})]}),s("div",{class:"jex-home-lookup-section",children:[s("span",{class:"jex-home-lookup-label",children:r.haveReferenceNumber}),s("form",{class:"jex-home-lookup",onSubmit:f,children:[s("input",{class:"jex-home-lookup-input",type:"text",placeholder:r.referencePlaceholder,value:i,onInput:d=>{o(d.currentTarget.value)}}),s("button",{class:"jex-home-lookup-submit",type:"submit",disabled:!i.trim(),children:r.resume})]})]})]})}function Wh({title:t}){const e=j();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:()=>Oe({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:()=>Oe({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})]})]})]})}function Kh(){const t=j(),[e,n]=R(""),[r,i]=R(""),[o,a]=R("");async function l(c){c.preventDefault(),Pr({id:"loading",message:t.submittingTicket}),await new Promise(h=>{setTimeout(h,1200)});const u="JEX-"+Math.random().toString(36).slice(2,8).toUpperCase();Pr({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 Gh({ticketRef:t}){const e=j();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:()=>{F.value=!1},children:e.done})]})}function Jh({message:t,onRetry:e,onBack:n}){const r=j();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 Ka({greeting:t,starterQuestions:e,title:n,botName:r,orgSlug:i,availability:o,sessionId:a,visitorId:l,isLoading:c,sessionNotFound:u,resumeFailed:h,isOrgDeleted:f,ensureSession:d,startFresh:p,resetSession:g}){const y=ue.value,m=y[y.length-1],v=[...y].reverse().find(b=>b.id==="confirmation");return s("div",{class:"jex-screen-container",children:[m.id==="home"&&s(Qh,{botName:r,availability:o,onResetSession:g}),m.id==="selection"&&s(Wh,{title:n}),m.id==="form"&&s(Kh,{}),m.id==="escalation-form"&&s(Uh,{formMessageId:m.formMessageId,sessionId:m.sessionId,visitorId:m.visitorId,orgSlug:i,waitingSetAt:m.waitingSetAt}),m.id==="confirmation"&&v&&s(Gh,{ticketRef:v.ref}),m.id==="chat"&&s(Dh,{greeting:t,botName:r,starterQuestions:e,sessionId:a,visitorId:l,isLoading:c,sessionNotFound:u,resumeFailed:h,isOrgDeleted:f,ensureSession:d,startFresh:p}),m.id==="loading"&&s(Da,{message:m.message}),m.id==="error"&&s(Jh,{message:m.message,onRetry:()=>Pr({id:"loading"}),onBack:$r})]})}function Yh({options:t}){return Tc({orgSlug:t.orgSlug,projSlug:t.projSlug,preToken:t.bootstrapToken,convexUrl:t.convexUrl,preAllowedUrls:t.allowedUrls??[],preExcludedPaths:t.excludePaths}),Ic()?s(Zh,{options:t}):null}function Zh({options:t}){const e=Sc(t.orgSlug,t.projSlug,t.convexUrl);qc(t.parentOrigin),T(()=>(Uc(),Vc(),()=>{Ar.value=!1}),[]);const{sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}=Hh(t.orgSlug,t.projSlug),f=Fa(t.orgSlug),d=wc(t,e.config),p=He.value,g=Ar.value,y=e.config!==null||p!==void 0||e.settled,m=e.config!==null?d.sessionTimeoutMs:p!==void 0?p:d.sessionTimeoutMs;T(()=>{Ae.value=Lo(d.locale)},[d.locale]),T(()=>{Qt.value=d.privacyPolicyUrl??Ht,wr.value=d.privacyNoticeStyle},[d.privacyNoticeStyle,d.privacyPolicyUrl]),T(()=>{if(!F.value||d.mode==="embedded"||!window.matchMedia("(max-width: 480px), (pointer: coarse) and (max-width: 768px)").matches)return;const ie=document.documentElement.style.overflow;return document.documentElement.style.overflow="hidden",()=>{document.documentElement.style.overflow=ie}},[F.value,d.mode]),T(()=>{if(g&&y&&d.mode!=="embedded"&&m!==null)try{return Gc(m)}catch(H){console.warn("[JexityChat] Idle-lock watcher failed to start:",H);return}},[g,d.mode,y,m]),T(()=>{if(!g||!y)return;const{activeRefPruned:H}=Fc(m);H&&Nr()},[g,y,m]);const v=d.position==="bottom-left",b=d.colorScheme==="dark"||d.colorScheme==="light"?d.colorScheme:"",x=Jc({...t,primaryColor:d.primaryColor,accentColor:d.accentColor,fontFamily:d.fontFamily,fontSize:d.fontSize,borderRadius:d.borderRadius,windowWidth:d.windowWidth,windowHeight:d.windowHeight}),P=d.mode==="embedded",S=ue.value,W=S[S.length-1]?.id==="chat",V=e.config!==null||P||!!t.parentOrigin,le=V?x:{...x,visibility:"hidden"},L=au(t.orgSlug,t.projSlug);return T(()=>{if(P||!V||d.proactiveMode==="off"||Yo(L))return;const H=window.setTimeout(()=>{const ie=lu({mode:d.proactiveMode,isOpen:F.peek(),hasHistory:Ir.peek(),dismissed:Yo(L)});ie==="teaser"?Pn.value=!0:ie==="open"&&(F.value=!0)},d.proactiveDelaySeconds*1e3);return()=>{window.clearTimeout(H)}},[P,V,d.proactiveMode,d.proactiveDelaySeconds,L]),s("div",{class:`jex-widget ${b}`.trim(),style:le,children:P?s("div",{class:"jex-embedded",children:[s(Ko,{title:d.title,rightAction:W?s(Ha,{sessionId:n,visitorId:r,ensureSession:c,availability:f}):null,showClose:!P}),s(Ka,{greeting:d.greeting,starterQuestions:d.starterQuestions,title:d.title,botName:d.botName,orgSlug:t.orgSlug,projSlug:t.projSlug,availability:f,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${v?" jex-pos-left":""}`,children:[F.value&&s("div",{class:"jex-chat-window",children:[s(Ko,{title:d.title,rightAction:W?s(Ha,{sessionId:n,visitorId:r,ensureSession:c,availability:f}):null}),s(Ka,{greeting:d.greeting,starterQuestions:d.starterQuestions,title:d.title,botName:d.botName,orgSlug:t.orgSlug,projSlug:t.projSlug,availability:f,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}),!d.hideBranding&&s(Go,{})]}),Pn.value&&!F.value&&s(cu,{title:d.title,message:d.greeting,guardKey:L}),s(ou,{iconOption:d.triggerIcon,radius:d.triggerRadius,label:d.triggerLabel})]})})}const Xh=`.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-fab-pulse{animation:jex-fab-pulse 2.4s ease-out infinite}@keyframes jex-fab-pulse{0%{box-shadow:var(--jex-shadow),0 0 color-mix(in srgb,var(--jex-bg-trigger) 50%,transparent)}70%{box-shadow:var(--jex-shadow),0 0 0 14px color-mix(in srgb,var(--jex-bg-trigger) 0%,transparent)}to{box-shadow:var(--jex-shadow),0 0 color-mix(in srgb,var(--jex-bg-trigger) 0%,transparent)}}@media(prefers-reduced-motion:reduce){.jex-fab-pulse{animation:none}}.jex-proactive-teaser{display:flex;align-items:flex-start;gap:10px;width:280px;max-width:calc(100vw - 48px);padding:12px 14px;align-self:flex-end;background:var(--jex-bg-window);color:var(--jex-text-main);border:1px solid var(--jex-border-window);border-radius:var(--jex-radius);box-shadow:var(--jex-shadow);cursor:pointer;text-align:left;animation:jex-teaser-in .22s ease-out}.jex-proactive-avatar{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9999px;background:var(--jex-bg-avatar-agent);color:var(--jex-text-avatar-agent)}.jex-proactive-body{display:flex;flex-direction:column;gap:2px;min-width:0}.jex-proactive-title{font-weight:600;font-size:13px;line-height:1.2}.jex-proactive-message{font-size:13px;line-height:1.35;color:var(--jex-text-muted)}.jex-proactive-dismiss{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:22px;height:22px;margin:-4px -4px 0 0;padding:0;border:none;background:transparent;color:var(--jex-text-muted);cursor:pointer;border-radius:9999px}.jex-proactive-dismiss:hover{background:var(--jex-bg-msg-bot)}@keyframes jex-teaser-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.jex-proactive-teaser{animation:none}}.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:14px 16px;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{position:relative;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;width:100%;padding:0;border:none;background:transparent;font-family:inherit;text-align:left;cursor:pointer;animation:jexFadeIn .4s ease both}.jex-home-hero:disabled{cursor:default;opacity:.7}.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:var(--jex-dot-color, #9ca3af);border:2.5px solid var(--jex-bg-window);animation:jexPulse 2s ease-in-out infinite}.jex-home-status-dot--online{--jex-dot-color: #10b981}.jex-home-status-dot--away{--jex-dot-color: #fbbf24}.jex-home-status-dot--offline{--jex-dot-color: #9ca3af}@keyframes jexPulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--jex-dot-color, #9ca3af) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--jex-dot-color, #9ca3af) 0%,transparent)}}.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:13px;font-weight:500;color:var(--jex-text-muted);letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jex-home-section-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--jex-text-muted)}.jex-home-lookup-section{display:flex;flex-direction:column;gap:8px;margin-top:auto}.jex-home-lookup-label{font-size:12px;font-weight:500;color:var(--jex-text-muted)}.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:12px;color:var(--jex-text-muted);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;flex-direction:column;align-items:stretch;gap:6px;max-width:92%}.jex-message-head{display:flex;align-items:center;gap:8px;padding-left:2px}.jex-message-head .jex-avatar{margin-bottom: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{font-size:13px;font-weight:600;color:var(--jex-text-main);line-height:1.2}.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-radius:16px}.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-voucher-section{display:flex;flex-direction:column;gap:6px;margin-top:4px}.jex-magicline-voucher-field{flex-direction:row;align-items:stretch;gap:8px}.jex-magicline-voucher-field .jex-form-input{flex:1;min-width:0}.jex-magicline-voucher-apply{flex:0 0 auto;padding:10px 16px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.jex-magicline-voucher-apply:hover{background:var(--jex-primary-hover)}.jex-magicline-voucher-apply:disabled{opacity:.7;cursor:not-allowed}.jex-magicline-review-wrap{position:relative}.jex-magicline-review-body{display:flex;flex-direction:column;gap:10px;transition:opacity .15s ease}.jex-magicline-review-body--reloading{opacity:.5;pointer-events:none}.jex-magicline-review-overlay{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:center;padding-top:48px}.jex-magicline-review-spinner{width:28px;height:28px;border-radius:50%;border:3px solid color-mix(in srgb,var(--jex-primary, #115A62) 25%,transparent);border-top-color:var(--jex-primary, #115A62);animation:jex-magicline-spin .7s linear infinite}@keyframes jex-magicline-spin{to{transform:rotate(360deg)}}.jex-magicline-voucher-discount-row dt,.jex-magicline-voucher-remarks-row dt{flex-shrink:1;min-width:0}.jex-magicline-voucher-remarks-row dd{min-width:0;overflow-wrap:anywhere;word-break:break-word}.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;min-width:0}.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-summary-total-row dt{flex-shrink:1;min-width:0}.jex-magicline-summary-total-row dd{flex-shrink:0;white-space:nowrap;overflow-wrap:normal}.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}.jex-starter-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}.jex-starter-chip{display:inline-flex;align-items:center;border-radius:999px;padding:7px 13px;background:var(--jex-bg-window);border:1px solid var(--jex-border-input);color:var(--jex-primary);text-align:left;font-size:13.5px;font-weight:500;line-height:1.2;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s}.jex-starter-chip:hover:not(:disabled){background:color-mix(in srgb,var(--jex-primary) 8%,var(--jex-bg-window));border-color:var(--jex-primary)}.jex-starter-chip:disabled{opacity:.5;cursor:default}.jex-presence-dot{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:999px;box-shadow:0 0 0 2px var(--jex-bg-header, #115A62)}.jex-presence-dot--online{background:#10b981}.jex-presence-dot--away{background:#fbbf24}.jex-presence-dot--offline{background:#9ca3af}@keyframes jex-ripple-expand{0%{transform:scale(1);opacity:.6}to{transform:scale(2.6);opacity:0}}.jex-waiting-card{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;margin:0 12px 8px;background:var(--jex-bg-msg-bot, #f1f5f9);border:1px solid var(--jex-border-input, #e2e8f0);border-radius:var(--jex-radius, .75rem)}.jex-waiting-indicator{position:relative;flex-shrink:0;width:20px;height:20px;margin-top:2px;display:flex;align-items:center;justify-content:center}.jex-waiting-dot{position:relative;z-index:1;width:8px;height:8px;border-radius:50%;background:var(--jex-primary, #115A62)}.jex-waiting-ripple{position:absolute;inset:0;width:8px;height:8px;margin:auto;border-radius:50%;background:var(--jex-primary, #115A62);animation:jex-ripple-expand 1.6s ease-out infinite}@media(prefers-reduced-motion:reduce){.jex-waiting-ripple{animation:none}}.jex-waiting-body{display:flex;flex-direction:column;gap:4px;min-width:0}.jex-waiting-title{font-weight:600;font-size:14px;color:var(--jex-text-main, #0f172a);line-height:1.3}.jex-waiting-subtitle{font-size:12px;color:var(--jex-text-muted, #64748b);line-height:1.4}.jex-waiting-leave-email{margin-top:6px;padding:0;border:none;background:transparent;color:var(--jex-primary, #115A62);font-size:12px;font-family:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer;text-align:left}.jex-waiting-leave-email:hover{opacity:.8}`;function ep(t){const e=document.createElement("style");e.textContent=Xh,t.appendChild(e)}const tp="https://festive-mouse-978.eu-west-1.convex.cloud";let Yr=null;function np(t){const e=t??tp;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 Yr||(Yr=new nc(bc(e))),Yr}function rp(t,e){const n=t.shadowRoot??t.attachShadow({mode:"open"});for(;n.firstChild;)n.removeChild(n.firstChild);ep(n),An.value=e.source,Ve.value=e.bootstrapToken,ue.value=[{id:"home"}],e.mode==="embedded"&&(t.classList.add("jex-mode-embedded"),F.value=!0);const r=document.createElement("div");return e.mode==="embedded"&&(r.style.cssText="width:100%;height:100%"),n.appendChild(r),Ke(s(ic,{client:np(e.convexUrl),children:s(Yh,{options:e})}),r),function(){Ke(null,r),F.value=!1,An.value=void 0,Ve.value=void 0,ue.value=[{id:"home"}]}}function ip(t,e,n){const r=rp(t,e),i=new Set,o=F.subscribe(l=>{for(const c of i)c(l)});return{shutdown(){o(),i.clear(),r(),n&&n()},open(){F.value=!0},close(){F.value=!1},toggle(){F.value=!F.value},get isOpen(){return F.value},subscribe(l){return i.add(l),()=>{i.delete(l)}}}}let nn=null;function op(t){nn&&nn.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=ip(e,t,()=>{t.container||e.remove(),nn===n&&(nn=null)});return nn=n,n}function We(t,e){return t.getAttribute(e)??void 0}async function Ga(){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=We(t,"data-convex-url")??"https://festive-mouse-978.eu-west-1.convex.cloud"??"",i=jr(r),o=await Sr(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=>Cr(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:We(t,"data-position")??void 0,theme:We(t,"data-theme")??void 0,greeting:We(t,"data-greeting"),title:We(t,"data-title"),primaryColor:We(t,"data-primary-color"),locale:We(t,"data-locale"),convexUrl:We(t,"data-convex-url")};window.JexityChat=op(a)}document.readyState==="complete"?Ga():window.addEventListener("load",Ga)})();
|
|
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>${Ie(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=ja(t);if(i===null)return r;t=i;let o='<a href="'+t+'"';return e&&(o+=' title="'+Ie(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=ja(t);if(i===null)return Ie(n);t=i;let o=`<img src="${t}" alt="${Ie(n)}"`;return e&&(o+=` title="${Ie(e)}"`),o+=">",o}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:Ie(t.text)}},Kr=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}},ke=class ni{options;renderer;textRenderer;constructor(e){this.options=e||Xe,this.options.renderer=this.options.renderer||new Un,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Kr}static parse(e,n){return new ni(n).parse(e)}static parseInline(e,n){return new ni(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}},nn=class{options;block;constructor(t){this.options=t||Xe}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?we.lex:we.lexInline}provideParser(){return this.block?ke.parse:ke.parseInline}},md=class{defaults=zr();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=ke;Renderer=Un;TextRenderer=Kr;Lexer=we;Tokenizer=Dn;Hooks=nn;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 Un(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 nn;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];nn.passThroughHooks.has(o)?i[a]=u=>{if(this.defaults.async&&nn.passThroughHooksRespectAsync.has(o))return(async()=>{let f=await l.call(i,u);return c.call(i,f)})();let h=l.call(i,u);return c.call(i,h)}:i[a]=(...u)=>{if(this.defaults.async)return(async()=>{let f=await l.apply(i,u);return f===!1&&(f=await c.apply(i,u)),f})();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 we.lex(t,e??this.defaults)}parser(t,e){return ke.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?we.lex:we.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?ke.parse:ke.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?we.lex:we.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?ke.parse:ke.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>"+Ie(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},tt=new md;function q(t,e){return tt.parse(t,e)}q.options=q.setOptions=function(t){return tt.setOptions(t),q.defaults=tt.defaults,da(q.defaults),q},q.getDefaults=zr,q.defaults=Xe,q.use=function(...t){return tt.use(...t),q.defaults=tt.defaults,da(q.defaults),q},q.walkTokens=function(t,e){return tt.walkTokens(t,e)},q.parseInline=tt.parseInline,q.Parser=ke,q.parser=ke.parse,q.Renderer=Un,q.TextRenderer=Kr,q.Lexer=we,q.lexer=we.lex,q.Tokenizer=Dn,q.Hooks=nn,q.parse=q,q.options,q.setOptions,q.use,q.walkTokens,q.parseInline,ke.parse,we.lex,q.setOptions({breaks:!0,gfm:!0});function xd({text:t}){const e=G(()=>{if(!t)return"";const n=q.parse(t);return typeof n=="string"?n:""},[t]);return s("div",{class:"jex-md",dangerouslySetInnerHTML:{__html:e}})}const vd=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const Ta=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const bd=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const Ra=t=>{const e=bd(t);return e.charAt(0).toUpperCase()+e.slice(1)};var yd={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 wd=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const kd=({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:r,children:i,iconNode:o,class:a="",...l})=>me("svg",{...yd,width:String(e),height:e,stroke:t,"stroke-width":r?Number(n)*24/Number(e):n,class:["lucide",a].join(" "),...!i&&!wd(l)&&{"aria-hidden":"true"},...l},[...o.map(([c,u])=>me(c,u)),...Se(i)]);const _d=(t,e)=>{const n=({class:r="",className:i="",children:o,...a})=>me(kd,{...a,iconNode:e,class:vd(`lucide-${Ta(Ra(t))}`,`lucide-${Ta(t)}`,r,i)},o);return n.displayName=Ra(t),n};const jd=_d("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 Aa({onQuote:t}){const e=S();return s("button",{type:"button",class:"jex-quote-btn","aria-label":e.quoteMessage,title:e.quoteMessage,onClick:t,children:s(jd,{size:12})})}function Sd(t){const e=t.trim().split(/\s+/).filter(Boolean);return e.length===0?"?":e.map(n=>n[0]).join("").slice(0,2).toUpperCase()}function _t({text:t,streaming:e,error:n,authorId:r,authorName:i,authorImage:o,botAvatarUrl:a,botName:l,onQuote:c}){const u=!!r,[h,f]=A(!1),d=L(()=>f(!0),[]),p=u?i??"":l??"",g=["jex-message bot",n?"jex-message-error":""].filter(Boolean).join(" ");return s("div",{class:"jex-message-row bot",children:[s("div",{class:"jex-message-head",children:[s("div",{class:`jex-avatar ${u?"jex-avatar-agent":"jex-avatar-bot"}`,children:u&&o&&!h?s("img",{src:o,alt:i??"",class:"jex-avatar-img",onError:d}):u?s("span",{class:"jex-avatar-initials",children:Sd(i??"")}):a&&!h?s("img",{src:a,alt:"",class:"jex-avatar-img",onError:d}):s(Pn,{size:14})}),p&&s("span",{class:"jex-message-author",children:p}),c&&s(Aa,{onQuote:c})]}),s("div",{class:g,children:[s(xd,{text:t}),e&&s("span",{class:"jex-streaming-cursor"})]})]})}function Cd({questions:t,disabled:e,onPick:n}){return t.length===0?null:s("div",{class:"jex-starter-chips",children:t.map(r=>s("button",{type:"button",class:"jex-starter-chip",disabled:e,onClick:()=>{n(r)},children:r},r))})}function Td(t,e){const n=[...new Set(e.flatMap(c=>c.split(/\s+/)).filter(c=>c.length>1))];if(n.length===0)return[t];const r=n.map(c=>c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=new RegExp(`@(?:${r.join("|")})\\b`,"gi"),o=[];let a=0,l;for(;(l=i.exec(t))!==null;)l.index>a&&o.push(t.slice(a,l.index)),o.push(s("span",{class:"jex-mention",children:l[0]},l.index)),a=l.index+l[0].length;return a<t.length&&o.push(t.slice(a)),o}function Rd({text:t,onQuote:e,agentNames:n}){return s("div",{class:"jex-message-row user",children:[e&&s(Aa,{onQuote:e}),s("div",{class:"jex-message user",children:Td(t,n??[])})]})}function Ia(){return Ye(re.functions.chat.public.helpdesk.submitEscalation)}function Ea(){const t=Ye(re.functions.chat.public.helpdesk.markEscalationWaiting);return e=>{Zt.value=e,t({sessionId:e.sessionId,visitorId:e.visitorId}).catch(n=>{console.error("[waiting] markEscalationWaiting failed:",n)})}}function Ad({message:t,sessionId:e,visitorId:n,waitingSetAt:r}){const i=S();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:i.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(Id,{messageId:t._id,sessionId:e,visitorId:n,waitingSetAt:r})})}function Id({messageId:t,sessionId:e,visitorId:n,waitingSetAt:r}){const i=S(),[o,a]=A(""),[l,c]=A(""),[u,h]=A(!1),f=Ht.value,d=/^https?:\/\//i.test(f)?f:Qt,p=Ia(),g=Ea();async function y(m){if(m.preventDefault(),!u){h(!0);try{await p({sessionId:e,visitorId:n,formMessageId:t,visitorName:o.trim(),visitorEmail:l.trim(),locale:Ae.value})}catch(x){console.error("[FormMessage] Submit failed:",x),h(!1)}}}return s("div",{class:"jex-inline-form",children:[s("div",{class:"jex-inline-form-title",children:i.escalationFormTitle}),s("form",{class:"jex-form",onSubmit:m=>{y(m)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:i.escalationNameLabel,value:o,required:!0,disabled:u,onInput:m=>{a(m.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:i.escalationEmailLabel,value:l,required:!0,disabled:u,onInput:m=>{c(m.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",disabled:u,children:u?i.escalationSubmitting:i.escalationSubmit})]}),s("button",{type:"button",class:"jex-escalation-skip",onClick:()=>{g({formMessageId:t,sessionId:e,visitorId:n,waitingSetAt:r})},children:i.escalationSkip}),s("div",{class:"jex-inline-form-consent",children:[i.escalationConsent," ",s("a",{href:d,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:i.escalationPrivacyLinkText}),"."]})]})}function Ed(){return Ye(re.functions.magicline.public.submitForm)}function $d(){return Ut(re.functions.magicline.actions.getTrialConfig)}function Pd(){return Ut(re.functions.magicline.actions.listTrialSlots)}function qd(){return Ut(re.functions.magicline.actions.getRateBundles)}function $a(){return Ut(re.functions.magicline.actions.getContractPreview)}function Md(){return Ut(re.functions.magicline.actions.submitContractCreation)}const Gr={en:Rr,de:Oo},Nd=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Pa(t){return Nd.test(t.trim())}function Ld(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 qa(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 Ma(){const t=Ht.value;return/^https?:\/\//i.test(t)?t:Qt}const Od={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},zd=15,Bd=34;function Na(t){return t.replace(/\s+/g,"").toUpperCase()}function Dd(t){const e=Na(t),n=e.slice(0,2),r=Od[n];if(r!==void 0){if(e.length!==r)return!1}else if(e.length<zd||e.length>Bd)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 Ud(t){const e=Na(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 _e(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 Fd(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 Jr(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 Vd(t,e,n,r,i){const o=Gr[i],a=_e(t,e,i);switch(n){case"TERM_BASED":return`${a} ${o.magiclineModulePerTerm}`;case"RECURRING":return`${a} ${Jr(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}}function Qd(t,e,n,r){return e==="PERCENTAGE"?`-${t}%`:`-${_e(t,n,r)}`}const Hd={startpaket:"magiclineFeeStarterPackage","starter package":"magiclineFeeStarterPackage",trainerpauschale:"magiclineFeeTrainerFee"};function La(t,e){const n=t.trim().toLowerCase(),r=Hd[n];return r!==void 0?e[r]:t}function Wd(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 Oa=["MALE","FEMALE","UNISEX"],Kd=[{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 Gd(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 Jd={firstName:"",lastName:"",email:"",phone:"",birthDate:"",gender:"",street:"",houseNumber:"",zip:"",city:"",country:"",note:"",slotId:"",consent:!1,trainerRequired:!0};function Yd(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 Zd({sessionId:t,visitorId:e}){const n=$d(),r=Pd(),[i,o]=he(Yd,Jd),[a,l]=he((x,b)=>b,{phase:"loading"}),[c,u]=he((x,b)=>b,{phase:"loading"}),[h,f]=he(x=>x+1,0),d=L((x,b)=>{o({type:"set",key:x,value:b})},[]),p=L(x=>{o({type:"setTrainer",trainerRequired:x}),f()},[]),g=L(()=>{f()},[]);R(()=>{let x=!1;return(async()=>{try{const b=await n({sessionId:t,visitorId:e});if(x)return;b.status==="ok"?l({phase:"ready",config:{plan:b.plan,minimumAge:b.minimumAge,bookingWithoutTrainerAllowed:b.bookingWithoutTrainerAllowed,studioZoneId:b.studioZoneId}}):l({phase:"error",code:b.status,backendMessage:b.message})}catch{x||l({phase:"error",code:"unavailable",backendMessage:""})}})(),()=>{x=!0}},[n,t,e]);const y=a.phase==="ready",{trainerRequired:m}=i;return R(()=>{if(!y)return;let x=!1;return u({phase:"loading"}),(async()=>{try{const b=await r({sessionId:t,visitorId:e,trainerRequired:m});if(x)return;b.status==="ok"?b.slots.length>0?(u({phase:"ready",slots:b.slots}),o({type:"clearSlotIfAbsent",available:b.slots.map(j=>j.startDateTime)})):u({phase:"empty"}):u({phase:"error"})}catch{x||u({phase:"error"})}})(),()=>{x=!0}},[y,r,t,e,m,h]),{fields:i,setField:d,setTrainerRequired:p,configState:a,slotsState:c,refetchSlots:g}}function Xd({formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r=!1,retryPending:i=!1}){const o=S(),a=Ed(),{fields:l,setField:c,setTrainerRequired:u,configState:h,slotsState:f,refetchSlots:d}=Zd({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:sh(h.code,h.backendMessage,o)})]}):s(eh,{formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r,retryPending:i,config:h.config,fields:l,setField:c,setTrainerRequired:u,slotsState:f,refetchSlots:d,submitForm:a})}function eh({formMessageId:t,sessionId:e,visitorId:n,slotUnavailable:r,retryPending:i,config:o,fields:a,setField:l,setTrainerRequired:c,slotsState:u,refetchSlots:h,submitForm:f}){const d=S(),{plan:p,minimumAge:g,bookingWithoutTrainerAllowed:y,studioZoneId:m}=o,x=G(()=>Gd(p,y),[p,y]),b=r?Math.max(x.indexOf("slot"),0):0,[j,v]=A(b),[C,M]=A({}),[W,V]=A(!1),[le,O]=A(null),Q=G(()=>Ma(),[]),ie=Math.min(j,x.length-1),w=x[ie],Z=ie===x.length-1,on=ie===0;function nt(K){const E={};if(K==="slot")return a.slotId===""&&(E.slotId=d.magiclineSlotRequiredError),E;if(K==="personal"){if(a.firstName.trim()===""&&(E.firstName=d.magiclineRequiredError),a.lastName.trim()===""&&(E.lastName=d.magiclineRequiredError),p.email.visible&&p.email.required&&a.email.trim()===""&&(E.email=d.magiclineRequiredError),a.email.trim()!==""&&!Pa(a.email)&&(E.email=d.magiclineEmailError),p.phone.visible&&p.phone.required&&a.phone.trim()===""&&(E.phone=d.magiclineRequiredError),p.gender.visible&&p.gender.required&&a.gender===""&&(E.gender=d.magiclineRequiredError),p.dateOfBirth.visible&&(p.dateOfBirth.required&&a.birthDate.trim()===""&&(E.birthDate=d.magiclineRequiredError),a.birthDate.trim()!=="")){const be=Ld(a.birthDate);be!==null&&be<0?E.birthDate=d.magiclineRequiredError:g>0&&be!==null&&be<g&&(E.birthDate=d.magiclineMinAgeError.replace("{age}",String(g)))}return E}return K==="address"?(p.address.visible&&p.address.required&&(a.street.trim()===""&&(E.street=d.magiclineRequiredError),a.houseNumber.trim()===""&&(E.houseNumber=d.magiclineRequiredError),a.city.trim()===""&&(E.city=d.magiclineRequiredError),a.country===""&&(E.country=d.magiclineRequiredError)),p.zip.visible&&p.zip.required&&a.zip.trim()===""&&(E.zip=d.magiclineRequiredError),E):(K==="confirm"&&(a.consent||(E.consent=d.magiclineConsentError)),E)}function rt(){const K=nt(w);if(Object.keys(K).length>0){M(K);return}M({}),v(E=>Math.min(E+1,x.length-1))}function jt(){M({}),O(null),v(K=>Math.max(K-1,0))}async function it(){if(W)return;const K=nt("confirm");if(Object.keys(K).length>0){M(K);return}M({}),O(null),V(!0);try{const E=lh(p,a);await f({sessionId:e,visitorId:n,formMessageId:t,action:"trialSessionBooking",fields:E})}catch(E){console.error("[TrialSessionBookingForm] Submit failed:",E),O(d.magiclineFailedDetail),V(!1)}}function an(){Z?it():rt()}const St=ah(w,d),$e=`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:d.magiclineTrialTitle}),s("div",{class:"jex-magicline-wizard-progress",children:[s("span",{class:"jex-magicline-wizard-step-label",children:St}),s("span",{class:"jex-magicline-wizard-counter",children:d.magiclineStepCounter.replace("{n}",String(ie+1)).replace("{total}",String(x.length))})]}),s("div",{class:"jex-magicline-wizard-dots","aria-hidden":"true",children:x.map((K,E)=>s("span",{class:E===ie?"jex-magicline-wizard-dot jex-magicline-wizard-dot-active":"jex-magicline-wizard-dot"},K))})]}),s("div",{class:"jex-form",role:"group","aria-label":St,children:[w==="trainer"?s(th,{formMessageId:t,trainerRequired:a.trainerRequired,disabled:W,onChange:c}):null,w==="slot"?s(nh,{slotsState:u,slotId:a.slotId,studioZoneId:m,disabled:W,retryPending:i,slotUnavailable:r,error:C.slotId,onSelect:K=>{l("slotId",K)},onRetry:h}):null,w==="personal"?s(rh,{plan:p,fields:a,errors:C,disabled:W,setField:l}):null,w==="address"?s(ih,{plan:p,fields:a,errors:C,disabled:W,setField:l}):null,w==="confirm"?s(oh,{consentId:$e,privacyUrl:Q,studioZoneId:m,fields:a,disabled:W,consentError:C.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:[on?null:s("button",{type:"button",class:"jex-magicline-wizard-back",disabled:W,onClick:jt,children:d.magiclineWizardBack}),s("button",{type:"button",class:"jex-form-submit jex-magicline-wizard-next",disabled:W,onClick:an,children:Z?W?d.magiclineSubmitting:d.magiclineSubmit:d.magiclineWizardNext})]})]})]})}function th({formMessageId:t,trainerRequired:e,disabled:n,onChange:r}){const i=S(),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 nh({slotsState:t,slotId:e,studioZoneId:n,disabled:r,retryPending:i,slotUnavailable:o,error:a,onSelect:l,onRetry:c}){const u=S();return s(z,{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:Ba(h.startDateTime,Ae.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 rh({plan:t,fields:e,errors:n,disabled:r,setField:i}){const o=S(),a=G(()=>qa(),[]);return s(z,{children:[s("div",{class:"jex-magicline-row",children:[s(He,{label:o.magiclineFirstName,value:e.firstName,required:!0,disabled:r,error:n.firstName,fieldKey:"firstName",onInput:l=>{i("firstName",l)}}),s(He,{label:o.magiclineLastName,value:e.lastName,required:!0,disabled:r,error:n.lastName,fieldKey:"lastName",onInput:l=>{i("lastName",l)}})]}),t.email.visible?s(He,{label:ve(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(He,{label:ve(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:ve(o.magiclineBirthDate,t.dateOfBirth.required,o)}),s("input",{class:"jex-form-input",type:"date","aria-label":ve(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(za,{label:ve(o.magiclineGender,t.gender.required,o),value:e.gender,required:t.gender.required,disabled:r,placeholder:ve(o.magiclineGenderPlaceholder,t.gender.required,o),error:n.gender,onChange:l=>{i("gender",l)},options:Oa.map(l=>({value:l,label:ch(l,o)}))}):null]})}function ih({plan:t,fields:e,errors:n,disabled:r,setField:i}){const o=S();return s(z,{children:[t.address.visible?s(z,{children:[s("div",{class:"jex-magicline-row",children:[s(He,{label:ve(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(He,{label:ve(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(He,{label:ve(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(za,{label:ve(o.magiclineCountry,t.address.required,o),value:e.country,required:t.address.required,disabled:r,placeholder:ve(o.magiclineCountryPlaceholder,t.address.required,o),error:n.country,onChange:a=>{i("country",a)},options:Kd.map(a=>({value:a.code,label:a.label}))})]}):null,t.zip.visible?s(He,{label:ve(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 oh({consentId:t,privacyUrl:e,studioZoneId:n,fields:r,disabled:i,consentError:o,setField:a}){const l=S(),c=r.slotId!==""?Ba(r.slotId,Ae.value,n):"—",u=`${r.firstName} ${r.lastName}`.trim();return s(z,{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 He({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 za({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 ve(t,e,n){return e?t:t+n.magiclineOptionalSuffix}function ah(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 sh(t,e,n){return e.trim()!==""?e:t==="unsupported"?n.magiclineConfigUnsupported:t==="inconsistent"?n.magiclineConfigInconsistent:n.magiclineConfigUnavailable}function lh(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 ch(t,e){return t==="MALE"?e.magiclineGenderMale:t==="FEMALE"?e.magiclineGenderFemale:e.magiclineGenderUnisex}function Ba(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 uh={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 dh(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}}const Da={draftVoucherCode:"",appliedVoucherCode:null,appliedVoucher:null,voucherStatus:"idle",voucherRequestId:0,voucherUnavailable:!1},hh="voucher:";function ph(t){const e={};for(const n of Object.keys(t))n.startsWith(hh)||(e[n]=t[n]);return e}function fh(t,e){switch(e.type){case"SET_VOUCHER_DRAFT":{const n=t.appliedVoucher!==null||t.voucherStatus==="applied";return{...t,draftVoucherCode:e.value,...n?{appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"idle"}:{}}}case"VOUCHER_APPLYING":return{...t,voucherStatus:"applying",voucherRequestId:t.voucherRequestId+1};case"VOUCHER_APPLIED":return e.requestId!==t.voucherRequestId?t:{...t,appliedVoucher:e.voucher,appliedVoucherCode:e.appliedCode,voucherStatus:"applied"};case"VOUCHER_INVALID":return{...t,appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"invalid"};case"VOUCHER_DISABLED":return{...t,appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"disabled",voucherUnavailable:!0};case"CLEAR_VOUCHER":return{...t,appliedVoucher:null,appliedVoucherCode:null,voucherStatus:"idle"};default:return t}}function gh(t,e){switch(e.type){case"dropVoucherAcks":{const n=ph(t.acknowledgedBlocks);return Object.keys(n).length===Object.keys(t.acknowledgedBlocks).length?t:{...t,acknowledgedBlocks:n}}case"seedVoucherAcks":{if(e.ackKeys.length===0)return t;const n={...t.acknowledgedBlocks};for(const r of e.ackKeys)r in n||(n[r]=!1);return{...t,acknowledgedBlocks:n}}default:return dh(t,e)}}function mh({sessionId:t,visitorId:e}){const n=qd(),r=$a(),[i,o]=he(gh,uh),[a,l]=he(fh,Da),[c,u]=he((k,T)=>T,{phase:"loading"}),h=pe(null),[f,d]=he((k,T)=>T,{phase:"idle"}),p=L(k=>{k.phase==="ready"?h.current=k.pricing:(k.phase==="idle"||k.phase==="error")&&(h.current=null),d(k)},[]),[g,y]=he(k=>k+1,0),[m,x]=he(k=>k+1,0),b=L(k=>{o({type:"setTermId",termId:k}),l({type:"CLEAR_VOUCHER"})},[]),j=L((k,T)=>{o({type:"setPersonal",key:k,value:T})},[]),v=L((k,T)=>{o({type:"setAddress",key:k,value:T})},[]),C=L((k,T,De)=>{o({type:"toggleModule",moduleId:k,selected:T,consentAckKey:De}),o({type:"dropVoucherAcks"}),l({type:"CLEAR_VOUCHER"})},[]),M=L((k,T)=>{o({type:"setBlockAck",ackKey:k,value:T})},[]),W=L(k=>{o({type:"setAccountHolder",value:k})},[]),V=L(k=>{o({type:"setIban",value:k})},[]),le=L((k,T)=>{o({type:"setConsent",key:k,value:T})},[]),O=L(()=>{o({type:"clearIban"})},[]),Q=L(()=>{o({type:"clearTermId"}),l({type:"CLEAR_VOUCHER"})},[]),ie=L(k=>{l({type:"SET_VOUCHER_DRAFT",value:k}),o({type:"dropVoucherAcks"})},[]),w=pe(Da.voucherRequestId),Z=L(()=>{const k=w.current+1;return w.current=k,l({type:"VOUCHER_APPLYING"}),k},[]),on=L(k=>{k.requestId===w.current&&(l({type:"VOUCHER_APPLIED",requestId:k.requestId,voucher:k.voucher,appliedCode:k.appliedCode,voucherAckKeys:k.voucherAckKeys}),p({phase:"ready",pricing:k.pricing}),o({type:"seedVoucherAcks",ackKeys:k.voucherAckKeys}))},[]),nt=L(()=>{l({type:"VOUCHER_INVALID"}),o({type:"dropVoucherAcks"}),x()},[]),rt=L(()=>{l({type:"VOUCHER_DISABLED"}),o({type:"dropVoucherAcks"}),x()},[]),jt=L(()=>{l({type:"CLEAR_VOUCHER"}),o({type:"dropVoucherAcks"}),x()},[]),it=L(()=>{y()},[]),an=L(()=>{p({phase:"idle"})},[]),St=L(()=>{x()},[]),$e=c.phase==="ready"&&i.termId!==null?c.terms.find(k=>k.termId===i.termId)??null:null,{selectedModuleIds:K,acknowledgedBlocks:E}=i,{appliedVoucher:be}=a,Be=G(()=>{if($e===null)return[];const k=new Set;for(const T of $e.textBlocks)T.isConfirmationRequired&&k.add(T.ackKey);for(const T of K){const De=$e.optionalModules.find(ot=>ot.id===T);De?.consent&&k.add(De.consent.ackKey)}if(be!==null)for(const T of be.textBlocks)k.add(T.ackKey);return[...k]},[$e,K,be]),sn=G(()=>Be.every(k=>E[k]===!0),[Be,E]),{firstName:oe,lastName:Pe}=i.personal,{accountHolder:de,accountHolderTouched:Ct}=i.payment;return R(()=>{Ct||de!==""||oe.trim()!==""&&Pe.trim()!==""&&o({type:"prefillAccountHolder",value:`${oe.trim()} ${Pe.trim()}`})},[oe,Pe,de,Ct]),R(()=>{let k=!1;return u({phase:"loading"}),(async()=>{try{const T=await n({sessionId:t,visitorId:e});if(k)return;T.status==="ok"?T.terms.length>0?u({phase:"ready",terms:T.terms,allowVoucherCodes:T.allowVoucherCodes}):u({phase:"empty"}):u({phase:"error"})}catch{k||u({phase:"error"})}})(),()=>{k=!0}},[n,t,e,g]),R(()=>{if(m===0)return;const k=$e;if(!k){p({phase:"error",code:"offer_unavailable"});return}let T=!1;const De=h.current;p(De!==null?{phase:"reloading",pricing:De}:{phase:"loading"});const ot=k.defaultContractStartDate??"",ei={sessionId:t,visitorId:e,termId:k.termId,startDate:ot,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:k.optionalModules.filter(H=>i.selectedModuleIds.includes(H.id)).map(H=>H.id),privacyConsent:i.consents.privacy,sepaConsent:i.consents.sepa};return(async()=>{try{const H=await r(ei);if(T)return;H.status==="ok"?p({phase:"ready",pricing:{basePrice:H.basePrice,preUseCharge:H.preUseCharge,currencyCode:H.currencyCode,flatFees:H.flatFees,modules:H.modules,contractVolume:H.contractVolume,startDate:H.startDate,paymentFrequency:H.paymentFrequency,fingerprint:H.pricingFingerprint}}):p({phase:"error",code:H.status})}catch{T||p({phase:"error",code:"unavailable"})}})(),()=>{T=!0}},[m,r,t,e]),{fields:i,offersState:c,previewState:f,selectedTerm:$e,requiredAckKeys:Be,allAcknowledged:sn,serverAllowVoucherCodes:c.phase==="ready"?c.allowVoucherCodes:!1,voucherStatus:a.voucherStatus,draftVoucherCode:a.draftVoucherCode,appliedVoucherCode:a.appliedVoucherCode,appliedVoucher:a.appliedVoucher,voucherUnavailable:a.voucherUnavailable,setTermId:b,setPersonal:j,setAddress:v,toggleModule:C,setBlockAck:M,setAccountHolder:W,setIban:V,setConsent:le,clearIban:O,clearTermId:Q,refetchOffers:it,fetchPreview:St,resetPreview:an,setVoucherDraft:ie,beginVoucherApply:Z,commitVoucherApplied:on,markVoucherInvalid:nt,markVoucherDisabled:rt,clearVoucher:jt}}function xh(t){return t!==null&&t.optionalModules.length>0?["offer","upgrades","personal","address","payment","review"]:["offer","personal","address","payment","review"]}function vh({formMessageId:t,sessionId:e,visitorId:n,projectId:r,formStatus:i}){const o=S(),a=Ae.value,l=Md(),c=$a(),u=mh({sessionId:e,visitorId:n}),{fields:h,offersState:f,previewState:d,selectedTerm:p,requiredAckKeys:g,allAcknowledged:y,serverAllowVoucherCodes:m,voucherStatus:x,draftVoucherCode:b,appliedVoucher:j,appliedVoucherCode:v,voucherUnavailable:C,setTermId:M,setPersonal:W,setAddress:V,toggleModule:le,setBlockAck:O,setAccountHolder:Q,setIban:ie,setConsent:w,clearIban:Z,clearTermId:on,refetchOffers:nt,fetchPreview:rt,resetPreview:jt,setVoucherDraft:it,beginVoucherApply:an,commitVoucherApplied:St,markVoucherInvalid:$e,markVoucherDisabled:K}=u,[E,be]=A(0),[Be,sn]=A({}),[oe,Pe]=A(!1),[de,Ct]=A(null),[k,T]=A(null),[De,ot]=A(null),ei=G(()=>Ma(),[]);if(de!==null&&de.status==="succeeded")return s(Ua,{customerNumber:de.customerNumber});if(de!==null&&de.status==="failed"&&!de.retryable){const N=de.errorCode==="duplicate_submission"?o.magiclineDuplicateNotice:de.errorCode==="unknown_outcome"?o.magiclineUnknownOutcome:de.errorCode==="live_submission_disabled"?o.magiclineLiveSubmissionDisabled:o.magiclineFailedDetail;return s(Fa,{message:N})}if(de===null&&!oe&&i==="submitted")return s(Ua,{customerNumber:null});if(de===null&&!oe&&i==="failed")return s(Fa,{message:o.magiclineFailedDetail});const H=G(()=>xh(p),[p]),Tt=Math.min(E,H.length-1),qe=H[Tt],es=Tt===H.length-1,hp=Tt===0;function pp(N){const $={};if(N==="offer")return h.termId===null&&($.termId=o.magiclineOfferRequiredError),$;if(N==="upgrades"){if(p!==null)for(const X of h.selectedModuleIds){const at=p.optionalModules.find(te=>te.id===X);if(at?.consent&&h.acknowledgedBlocks[at.consent.ackKey]!==!0){$.upgrades=o.magiclineUpgradeConsentError;break}}return $}if(N==="personal"){const X=h.personal;return X.firstName.trim()===""&&($.firstName=o.magiclineRequiredError),X.lastName.trim()===""&&($.lastName=o.magiclineRequiredError),X.email.trim()===""?$.email=o.magiclineRequiredError:Pa(X.email)||($.email=o.magiclineEmailError),X.dateOfBirth.trim()===""&&($.dateOfBirth=o.magiclineRequiredError),X.gender===""&&($.gender=o.magiclineRequiredError),X.phone.trim()===""&&($.phone=o.magiclineRequiredError),$}if(N==="address"){const X=h.address;return X.street.trim()===""&&($.street=o.magiclineRequiredError),X.houseNumber.trim()===""&&($.houseNumber=o.magiclineRequiredError),X.zipCode.trim()===""&&($.zipCode=o.magiclineRequiredError),X.city.trim()===""&&($.city=o.magiclineRequiredError),$}return N==="payment"&&(h.payment.accountHolder.trim()===""&&($.accountHolder=o.magiclineRequiredError),Dd(h.payment.iban)||($.iban=o.magiclineIbanInvalidError),h.consents.privacy||($.privacy=o.magiclineConsentError),h.consents.sepa||($.sepa=o.magiclineConsentError)),$}function fp(){const N=pp(qe);if(Object.keys(N).length>0){sn(N);return}sn({}),T(null);const $=Math.min(Tt+1,H.length-1);H[$]==="review"&&rt(),be($)}function gp(){sn({}),T(null),qe==="review"&&jt(),be(N=>Math.max(N-1,0))}function mp(){T(null),rt()}async function xp(){if(!oe&&!(d.phase!=="ready"||p===null)){if(!y){T(o.magiclineConfirmRequiredError);return}Pe(!0),T(null);try{const N=await l({sessionId:e,visitorId:n,projectId:r,formMessageId:t,fields:{firstname:h.personal.firstName.trim(),lastname:h.personal.lastName.trim(),email:h.personal.email.trim(),phone:h.personal.phone.trim(),dateOfBirth:h.personal.dateOfBirth.trim(),gender:h.personal.gender,street:h.address.street.trim(),houseNumber:h.address.houseNumber.trim(),zipCode:h.address.zipCode.trim(),city:h.address.city.trim(),rateBundleTermId:p.termId,privacyConsent:h.consents.privacy,sepaConsent:h.consents.sepa},bankAccount:{accountHolder:h.payment.accountHolder.trim(),iban:h.payment.iban},selectedModuleIds:p.optionalModules.filter($=>h.selectedModuleIds.includes($.id)).map($=>$.id),acknowledgedAckKeys:g,pricingFingerprint:d.pricing.fingerprint,voucherCode:v??void 0});if(N.status==="succeeded"){Ct(N);return}if(N.errorCode==="price_changed"){T(o.magiclinePriceChangedNotice),rt(),Pe(!1);return}if(N.errorCode==="offer_unavailable"){on(),nt(),jt(),T(o.magiclineOfferUnavailableNotice),be(0),Pe(!1);return}if(N.errorCode==="confirmation_required"){T(o.magiclineConfirmationRequiredNotice),Pe(!1);return}if(N.errorCode==="live_submission_disabled"){Ct(N);return}if(!N.retryable){Ct(N);return}Z(),T(N.message!==""?N.message:o.magiclineFailedDetail),Pe(!1)}catch(N){console.error("[ContractCreationForm] Submit failed:",N),Z(),T(o.magiclineFailedDetail),Pe(!1)}}}async function vp(){if(d.phase!=="ready"||p===null||b.trim()==="")return;const N=b.trim(),$=an();ot(null);const X=te=>{$e(),it(""),ot(te)},at=o.magiclineVoucherInvalid.replace("{code}",N);try{const te=await c({sessionId:e,visitorId:n,termId:p.termId,startDate:p.defaultContractStartDate??"",fields:{firstname:h.personal.firstName.trim(),lastname:h.personal.lastName.trim(),email:h.personal.email.trim(),dateOfBirth:h.personal.dateOfBirth.trim(),gender:h.personal.gender,phone:h.personal.phone.trim(),street:h.address.street.trim(),houseNumber:h.address.houseNumber.trim(),zipCode:h.address.zipCode.trim(),city:h.address.city.trim()},selectedModuleIds:p.optionalModules.filter(st=>h.selectedModuleIds.includes(st.id)).map(st=>st.id),privacyConsent:h.consents.privacy,sepaConsent:h.consents.sepa,voucherCode:b.trim()});if(te.status==="ok"){const st=te.voucher;if(st!==null){const _p=st.textBlocks.map(jp=>jp.ackKey);St({requestId:$,voucher:st,appliedCode:b.trim(),voucherAckKeys:_p,pricing:{basePrice:te.basePrice,preUseCharge:te.preUseCharge,currencyCode:te.currencyCode,flatFees:te.flatFees,modules:te.modules,contractVolume:te.contractVolume,startDate:te.startDate,paymentFrequency:te.paymentFrequency,fingerprint:te.pricingFingerprint}})}else X(at)}else te.status==="voucher_invalid"?X(at):te.status==="voucher_disabled"?(K(),it(""),ot(o.magiclineVoucherDisabled)):X(at)}catch{X(at)}}function bp(){es?xp():fp()}const ts=Eh(qe,o),yp=x==="applying"||b.trim()!==""&&b.trim()!==(v??""),wp=qe==="review"&&(d.phase!=="ready"||!y||yp),kp=oe||wp;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:ts}),s("span",{class:"jex-magicline-wizard-counter",children:o.magiclineStepCounter.replace("{n}",String(Tt+1)).replace("{total}",String(H.length))})]}),s("div",{class:"jex-magicline-wizard-dots","aria-hidden":"true",children:H.map((N,$)=>s("span",{class:$===Tt?"jex-magicline-wizard-dot jex-magicline-wizard-dot-active":"jex-magicline-wizard-dot"},N))})]}),s("div",{class:"jex-form",role:"group","aria-label":ts,children:[qe==="offer"?s(bh,{offersState:f,selectedTermId:h.termId,widgetLocale:a,disabled:oe,error:Be.termId,onSelect:M,onRetry:nt}):null,qe==="upgrades"&&p!==null?s(kh,{modules:p.optionalModules,selectedModuleIds:h.selectedModuleIds,acknowledgedBlocks:h.acknowledgedBlocks,widgetLocale:a,disabled:oe,error:Be.upgrades,onToggle:le,onAck:O}):null,qe==="personal"?s(jh,{personal:h.personal,errors:Be,disabled:oe,setPersonal:W}):null,qe==="address"?s(Sh,{address:h.address,errors:Be,disabled:oe,setAddress:V}):null,qe==="payment"?s(Ch,{formMessageId:t,fields:h,errors:Be,privacyUrl:ei,disabled:oe,setAccountHolder:Q,setIban:ie,setConsent:w}):null,qe==="review"?s(Th,{fields:h,term:p,previewState:d,widgetLocale:a,disabled:oe,acknowledgedBlocks:h.acknowledgedBlocks,onToggleAck:O,onRetry:mp,allowVoucherCodes:m,voucherUnavailable:C,voucherStatus:x,draftVoucherCode:b,appliedVoucher:j,voucherBanner:De,onVoucherDraftChange:it,onApplyVoucher:()=>{vp()}}):null,k!==null?s("div",{class:"jex-magicline-error",role:"alert",children:k}):null,s("div",{class:"jex-magicline-wizard-nav",children:[hp?null:s("button",{type:"button",class:"jex-magicline-wizard-back",disabled:oe,onClick:gp,children:o.magiclineWizardBack}),s("button",{type:"button",class:"jex-form-submit jex-magicline-wizard-next",disabled:kp,onClick:bp,children:es?oe?o.magiclineSubmitting:o.magiclineSubmit:o.magiclineWizardNext})]})]})]})}function Ua({customerNumber:t}){const e=S();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.magiclineContractSuccessTitle}),s("div",{class:"jex-inline-form-submitted-detail",children:e.magiclineContractSuccessDetail}),t!==null&&t!==""?s("div",{class:"jex-inline-form-submitted-detail",children:e.magiclineCustomerNumber.replace("{number}",t)}):null]})]})}function Fa({message:t}){const e=S();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 bh({offersState:t,selectedTermId:e,widgetLocale:n,disabled:r,error:i,onSelect:o,onRetry:a}){const l=S();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=Ih(t.terms);return s(z,{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(yh,{term:h,checked:e===h.termId,widgetLocale:n,disabled:r,onSelect:o},h.termId)),s(wh,{subDescription:u.bundleSubDescription,footnote:u.footnote})]},u.bundleId))}),i!==void 0?s("div",{class:"jex-magicline-error",role:"alert",children:i}):null]})}function yh({term:t,checked:e,widgetLocale:n,disabled:r,onSelect:i}){const o=S(),a=Fn(t.termValue,t.termUnit,n),l=_e(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," ",Jr(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,":"," ",_e(c.price,t.currencyCode,n)]}):null,u.map(h=>s("span",{class:"jex-magicline-offer-term-note",children:[La(h.name,o),": ",_e(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 wh({subDescription:t,footnote:e}){const n=S(),r=Ah(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 kh({modules:t,selectedModuleIds:e,acknowledgedBlocks:n,widgetLocale:r,disabled:i,error:o,onToggle:a,onAck:l}){const c=S();return t.length===0?s("div",{class:"jex-magicline-slots-hint",children:c.magiclineUpgradesNone}):s(z,{children:[s("div",{class:"jex-magicline-slots-hint",children:c.magiclineUpgradesIntro}),s("div",{class:"jex-magicline-upgrade-group",children:t.map(u=>s(_h,{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 _h({module:t,selected:e,consentChecked:n,widgetLocale:r,disabled:i,onToggle:o,onAck:a}){const l=S(),c=Vd(t.price,t.currencyCode,t.paymentFrequencyType,t.recurringUnit,r),u=Wd(t.extensionType,t.termExtension,r),h=t.termLabel!==null&&t.termLabel!==""?t.termLabel:l.magiclineUpgradeOneTime,f=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:d=>{o(t.id,d.currentTarget.checked,f?.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&&f!==null?s(Yr,{ackKey:f.ackKey,title:f.title,text:f.text,attachmentLabel:f.attachmentLabel,attachmentUrl:f.attachmentUrl,checked:n,disabled:i,onToggle:a,showRequiredPill:!0}):null]})}function jh({personal:t,errors:e,disabled:n,setPersonal:r}){const i=S(),o=G(()=>qa(),[]);return s(z,{children:[s("div",{class:"jex-magicline-row",children:[s(Ee,{label:i.magiclineFirstName,value:t.firstName,required:!0,disabled:n,error:e.firstName,fieldKey:"firstName",onInput:a=>{r("firstName",a)}}),s(Ee,{label:i.magiclineLastName,value:t.lastName,required:!0,disabled:n,error:e.lastName,fieldKey:"lastName",onInput:a=>{r("lastName",a)}})]}),s(Ee,{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(Rh,{label:i.magiclineGender,value:t.gender,required:!0,disabled:n,placeholder:i.magiclineGenderPlaceholder,error:e.gender,onChange:a=>{r("gender",a)},options:Oa.map(a=>({value:a,label:$h(a,i)}))}),s(Ee,{label:i.magiclinePhone,type:"tel",value:t.phone,required:!0,disabled:n,error:e.phone,fieldKey:"phone",onInput:a=>{r("phone",a)}})]})}function Sh({address:t,errors:e,disabled:n,setAddress:r}){const i=S();return s(z,{children:[s("div",{class:"jex-magicline-row",children:[s(Ee,{label:i.magiclineStreet,value:t.street,required:!0,disabled:n,error:e.street,fieldKey:"street",onInput:o=>{r("street",o)}}),s(Ee,{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(Ee,{label:i.magiclineZip,value:t.zipCode,required:!0,disabled:n,error:e.zipCode,fieldKey:"zipCode",onInput:o=>{r("zipCode",o)}}),s(Ee,{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 Ch({formMessageId:t,fields:e,errors:n,privacyUrl:r,disabled:i,setAccountHolder:o,setIban:a,setConsent:l}){const c=S(),u=`jex-ml-privacy-${t}`,h=`jex-ml-sepa-${t}`;return s(z,{children:[s(Ee,{label:c.magiclineAccountHolder,value:e.payment.accountHolder,required:!0,disabled:i,error:n.accountHolder,fieldKey:"accountHolder",onInput:o}),s(Ee,{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:f=>{l("privacy",f.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:f=>{l("sepa",f.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 Th({fields:t,term:e,previewState:n,widgetLocale:r,disabled:i,acknowledgedBlocks:o,onToggleAck:a,onRetry:l,allowVoucherCodes:c,voucherUnavailable:u,voucherStatus:h,draftVoucherCode:f,appliedVoucher:d,voucherBanner:p,onVoucherDraftChange:g,onApplyVoucher:y}){const m=S();if(n.phase==="loading"||n.phase==="idle")return s("div",{class:"jex-magicline-slots-hint","aria-live":"polite",children:m.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"?m.magiclineOfferUnavailableNotice:m.magiclineReviewError}),s("button",{type:"button",class:"jex-magicline-retry",disabled:i,onClick:l,children:m.magiclineRetry})]});const x=n.pricing,b=n.phase==="reloading",j=x.contractVolume,v=`${t.personal.firstName} ${t.personal.lastName}`.trim(),C=t.address,M=[`${C.street} ${C.houseNumber}`.trim(),`${C.zipCode} ${C.city}`.trim(),m.magiclineCountryStatic].filter(w=>w!=="").join(", "),W=e!==null?`${e.bundleName} · ${Fn(e.termValue,e.termUnit,r)}`:"—",V=e!==null?e.textBlocks.filter(w=>w.isConfirmationRequired):[],le=e!==null?e.textBlocks.filter(w=>!w.isConfirmationRequired):[],O=e!==null?e.optionalModules.filter(w=>t.selectedModuleIds.includes(w.id)&&w.consent!==null).map(w=>({module:w,consent:w.consent})):[],Q=d!==null?d.textBlocks.filter(w=>w.ackKey.startsWith("voucher:")):[],ie=c&&!u;return s("div",{class:"jex-magicline-review-wrap",children:[s("div",{class:b?"jex-magicline-review-body jex-magicline-review-body--reloading":"jex-magicline-review-body","aria-busy":b,children:[s("dl",{class:"jex-magicline-summary",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewOffer}),s("dd",{children:W})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewBasePrice}),s("dd",{children:[d!==null&&d.voucherType==="DISCOUNT"?_e(d.discountedBasePrice,x.currencyCode,r):_e(x.basePrice,x.currencyCode,r)," ",Jr(x.paymentFrequency.value,x.paymentFrequency.unit,r)]})]}),d!==null&&d.voucherType==="DISCOUNT"?s("div",{class:"jex-magicline-summary-row jex-magicline-voucher-discount-row",children:[s("dt",{children:m.magiclineVoucherAppliedDiscount.replace("{discount}",Qd(d.discountValue,d.discountType,x.currencyCode,r))}),s("dd",{})]}):null,d!==null&&d.remarks!==null&&d.remarks!==""?s("div",{class:"jex-magicline-summary-row jex-magicline-voucher-remarks-row",children:[s("dt",{children:m.magiclineVoucherRemarks}),s("dd",{children:d.remarks})]}):null,x.flatFees.map((w,Z)=>s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:La(w.name,m)}),s("dd",{children:_e(w.price,x.currencyCode,r)})]},`${w.name}-${Z}`)),x.preUseCharge>0?s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewPreUseCharge}),s("dd",{children:_e(x.preUseCharge,x.currencyCode,r)})]}):null]}),x.modules.length>0?s("dl",{class:"jex-magicline-summary jex-magicline-summary-section",children:[s("div",{class:"jex-magicline-summary-heading",children:m.magiclineReviewSelectedUpgrades}),x.modules.map((w,Z)=>s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:w.name}),s("dd",{children:_e(w.amount,w.currencyCode,r)})]},`${w.moduleId}-${Z}`))]}):null,j!==null&&j.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:d!==null&&d.voucherType==="DISCOUNT"?m.magiclineGesamtpreisBeforeDiscount:m.magiclineReviewContractVolume}),s("dd",{children:_e(j.total,x.currencyCode,r)})]})}):null,d!==null&&d.voucherType==="CREDIT"?s("div",{class:"jex-magicline-voucher-credit-notice",role:"note",children:m.magiclineVoucherCreditNotice}):null,s("dl",{class:"jex-magicline-summary jex-magicline-summary-section",children:[s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewStartsOn}),s("dd",{children:Fd(x.startDate,r)})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineSummaryName}),s("dd",{children:v!==""?v:"—"})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineSummaryAddress}),s("dd",{children:M})]}),s("div",{class:"jex-magicline-summary-row",children:[s("dt",{children:m.magiclineReviewPayment}),s("dd",{children:Ud(t.payment.iban)})]})]}),ie?s("div",{class:"jex-magicline-voucher-section",children:[s("div",{class:"jex-magicline-field jex-magicline-voucher-field",children:[s("input",{class:"jex-form-input",type:"text","aria-label":m.magiclineVoucherLabel,placeholder:m.magiclineVoucherPlaceholder,value:f,disabled:i||h==="applying",onInput:w=>{g(w.currentTarget.value)}}),s("button",{type:"button",class:"jex-magicline-voucher-apply",disabled:i||h==="applying"||f.trim()==="",onClick:y,children:m.magiclineVoucherApply})]}),p!==null?s("div",{class:"jex-magicline-error",role:"alert",children:p}):null]}):null,O.length>0?s("div",{class:"jex-magicline-terms",role:"group","aria-label":m.magiclineReviewSelectedUpgrades,children:[s("div",{class:"jex-magicline-upgrades-recap-title",children:m.magiclineReviewSelectedUpgrades}),O.map(({module:w,consent:Z})=>s(Va,{title:Z.title!==""?Z.title:w.name,text:Z.text,attachmentLabel:Z.attachmentLabel,attachmentUrl:Z.attachmentUrl},Z.ackKey))]}):null,V.length>0||le.length>0||Q.length>0?s("div",{class:"jex-magicline-terms",role:"group","aria-label":m.magiclineReviewTerms,children:[V.length>0||Q.length>0?s("div",{class:"jex-magicline-terms-prompt",children:[m.magiclineConfirmPrompt,s("span",{class:"jex-magicline-required-pill",children:m.magiclineRequired})]}):null,V.map(w=>s(Yr,{ackKey:w.ackKey,title:w.title,text:w.text,attachmentLabel:w.attachmentLabel,attachmentUrl:w.attachmentUrl,checked:o[w.ackKey]===!0,disabled:i,onToggle:a},w.ackKey)),Q.map(w=>s(Yr,{ackKey:w.ackKey,title:w.title,text:w.text,attachmentLabel:w.attachmentLabel,attachmentUrl:w.attachmentUrl,checked:o[w.ackKey]===!0,disabled:i,onToggle:a},w.ackKey)),le.map((w,Z)=>s(Va,{title:w.title,text:w.text,attachmentLabel:w.attachmentLabel,attachmentUrl:w.attachmentUrl},`${w.title}-${Z}`))]}):null]}),b?s("div",{class:"jex-magicline-review-overlay","aria-hidden":"true",children:s("span",{class:"jex-magicline-review-spinner"})}):null]})}function Yr({ackKey:t,title:e,text:n,attachmentLabel:r,attachmentUrl:i,checked:o,disabled:a,onToggle:l,showRequiredPill:c=!1}){const u=S(),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:f=>{l(t,f.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(z,{children:[" ",s("a",{href:i,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:r!==null&&r!==""?r:i})]}):null]})]})]})]})}function Va({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(z,{children:[" ",s("a",{href:r,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:n!==null&&n!==""?n:r})]}):null]})]})}function Ee({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 Rh({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 Ah(t){return t===null?[]:t.split(`
|
|
69
|
+
`).map(e=>e.replace(/^\s*[-•]\s*/,"").trim()).filter(e=>e!=="")}function Ih(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 Eh(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 $h(t,e){return t==="MALE"?e.magiclineGenderMale:t==="FEMALE"?e.magiclineGenderFemale:e.magiclineGenderUnisex}function Ph({message:t,sessionId:e,visitorId:n}){const r=S(),i=t.magiclineForm,o=!!i&&i.status==="open"&&!!i.submissionId,a=kn(re.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(vh,{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.magiclineTrialSuccessTitle}),s("div",{class:"jex-inline-form-submitted-detail",children:r.magiclineTrialSuccessDetail})]})]});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(Xd,{formMessageId:t._id,sessionId:e,visitorId:n,slotUnavailable:l,retryPending:c})}const qh={crawl:"🌐",file:"📄",snippet:"💡",qa:"❓"};function Mh({sources:t}){const e=S(),[n,r]=A(!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=Nh(i),c=a&&i.url?`${i.title}
|
|
70
|
+
${i.url}`:i.title,u=s(z,{children:[typeof i.id=="number"?s("span",{class:"jex-source-id",children:i.id}):null,s("span",{class:"jex-source-type",children:qh[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 Nh(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 Lh(){return s("div",{class:"jex-typing",children:[s("span",{}),s("span",{}),s("span",{})]})}const Oh=/\s?\[\d+\]/g;function Zr(t){return t.replace(Oh,"")}function zh(t){return t?.at(-1)?._creationTime??0}function Bh(t){if(!t)return[];const e=new Set;for(const n of t)n.authorId&&n.authorName&&e.add(n.authorName),n.noticeKind==="agent-joined"&&n.noticeData?.agentName&&e.add(n.noticeData.agentName);return[...e]}function Dh({conversations:t,greeting:e,botName:n,starterQuestions:r,onPickStarter:i,sessionNotFound:o,resumeFailed:a,onStartFresh:l,sessionId:c,visitorId:u}){const h=S(),f=pe(null),[d,p]=A(null),g=zh(t),y=Bh(t),m=Ea(),x=pe(null);R(()=>{if(!u||!t)return;const v=t.at(-1);v&&v.role==="assistant"&&v.status!=="streaming"&&v._id!==x.current&&(x.current=v._id,$r(u))},[t,u]),R(()=>{f.current?.scrollIntoView({behavior:"smooth"})},[t?.length,t?.at(-1)?.content]);const b=c===null||t!==void 0&&t.length===0,j=r.length>0&&!o&&!a&&b;return s("div",{class:"jex-chat-messages",children:[s(_t,{text:e,botName:n}),j?s(Cd,{questions:r,disabled:Mn.value,onPick:i}):null,o&&a&&l?s("div",{class:"jex-session-prompt",children:[s("div",{class:"jex-session-prompt-text",children:h.sessionNotFoundPrompt}),s("button",{class:"jex-session-prompt-btn",type:"button",onClick:()=>{l()},children:h.startNewConversation})]}):o?s("div",{class:"jex-session-notice",children:h.sessionNotFound}):null,t?.map(v=>{if(v.contentType==="human-notice"){const M=v.noticeKind==="agent-joined"?h.noticeAgentJoined.replace("{name}",v.noticeData?.agentName??""):v.noticeKind==="human-requested"?h.noticeHumanRequested:v.noticeKind==="human-requested-form"?h.noticeHumanRequestedForm:v.noticeKind==="message-received"?h.noticeMessageReceived:v.noticeKind==="agent-handling"?h.noticeAgentHandling:v.noticeKind==="ai-resumed"?h.noticeAiResumed:v.content;return s(_t,{text:M,botName:n},v._id)}if(v.contentType==="escalation-form"&&c&&u)return Gc.value==="screen"&&!v.formData?d===v._id?null:s("div",{class:"jex-inline-form jex-inline-form-card",children:[s("div",{class:"jex-inline-form-title",children:h.escalationPromptTitle}),s("div",{class:"jex-inline-form-subtitle",children:h.escalationPromptSubtitle}),s("button",{class:"jex-form-submit",type:"button",onClick:()=>{Oe({id:"escalation-form",formMessageId:v._id,sessionId:c,visitorId:u,waitingSetAt:g})},children:h.escalationPromptSubmit}),s("button",{class:"jex-escalation-skip",type:"button",onClick:()=>{m({formMessageId:v._id,sessionId:c,visitorId:u,waitingSetAt:g}),p(v._id)},children:h.escalationSkip})]},v._id):s(Ad,{message:v,sessionId:c,visitorId:u,waitingSetAt:g},v._id);if(v.contentType==="magicline-form"&&c&&u)return s(Ph,{message:v,sessionId:c,visitorId:u},v._id);if(v.contentType==="escalation-confirm"){const M=v.noticeKind==="escalation-confirmed"?h.noticeEscalationConfirmed.replace("{name}",v.noticeData?.visitorName??"").replace("{email}",v.noticeData?.visitorEmail??"").replace("{ref}",v.noticeData?.visitorId??""):v.content;return s(_t,{text:M,botName:n},v._id)}if(v.role==="user")return s(Rd,{text:v.content,onQuote:()=>{ta(v.content)},agentNames:y},v._id);const C={authorId:v.authorId,authorName:v.authorName,authorImage:v.authorImage};return v.status==="streaming"&&v.content===""?s(Lh,{},v._id):v.status==="streaming"?s(_t,{text:Zr(v.content),streaming:!0,botName:n,...C},v._id):v.status==="error"?s(_t,{text:v.errorMessage??`${h.somethingWentWrong}. ${h.tryAgain}.`,error:!0,botName:n,...C},v._id):s("div",{children:[s(_t,{text:Zr(v.content),botName:n,onQuote:()=>{ta(Zr(v.content))},...C}),v.sources&&v.sources.length>0?s(Mh,{sources:v.sources}):null]},v._id)}),s("div",{ref:f})]})}function Uh(){const t=S();function e(){const n=Zt.peek();n&&(la(),Oe({id:"escalation-form",formMessageId:n.formMessageId,sessionId:n.sessionId,visitorId:n.visitorId,waitingSetAt:n.waitingSetAt}))}return s("div",{class:"jex-waiting-card",role:"status","aria-live":"polite",children:[s("div",{class:"jex-waiting-indicator","aria-hidden":"true",children:[s("span",{class:"jex-waiting-dot"}),s("span",{class:"jex-waiting-ripple"})]}),s("div",{class:"jex-waiting-body",children:[s("div",{class:"jex-waiting-title",children:t.waitingTitle}),s("div",{class:"jex-waiting-subtitle",children:t.waitingSubtitle}),s("button",{class:"jex-waiting-leave-email",type:"button",onClick:e,children:t.waitingLeaveEmail})]})]})}function Qa({message:t}){const[e,n]=A(!1);return R(()=>{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 Fh({sessionId:t,visitorId:e}){const n=kn(re.functions.chat.public.conversations.listBySession,t&&e?{sessionId:t,visitorId:e}:"skip"),r=kn(re.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 Vh(t){const e=S(),n=pe(null),r=pe(null),[i,o]=A(!1);R(()=>{try{n.current=document.title}catch{}},[]),R(()=>{if(!t||t.length===0)return;const a=t[t.length-1];if(r.current===null){r.current=a._id;return}if(a._id===r.current)return;r.current=a._id;const l=a.role!=="user";let c=!1;try{c=document.hidden}catch{}l&&c&&o(!0)},[t]),R(()=>{if(!i)return;let a=null,l=!1;const c=()=>{if(a!==null){try{clearInterval(a)}catch{}a=null}try{n.current!==null&&(document.title=n.current)}catch{}};try{a=setInterval(()=>{try{const u=`💬 ${e.newReplyTitle}`;document.title=l?n.current??"":u,l=!l}catch{c()}},1200)}catch{}return c},[i,e.newReplyTitle]),R(()=>{const a=()=>{try{document.hidden||o(!1)}catch{}};try{document.addEventListener("visibilitychange",a)}catch{}return()=>{try{document.removeEventListener("visibilitychange",a)}catch{}}},[])}function Qh({sessionId:t,visitorId:e}){const n=Ye(re.functions.chat.public.visitorPresence.heartbeat);R(()=>{if(!t||!e)return;let r=null;const i=()=>{n({sessionId:t,visitorId:e}).catch(()=>{})},o=()=>{r===null&&(r=setInterval(i,6e4))},a=()=>{r!==null&&(clearInterval(r),r=null)},l=()=>{document.visibilityState==="visible"?(i(),o()):a()};return l(),document.addEventListener("visibilitychange",l),()=>{document.removeEventListener("visibilitychange",l),a()}},[t,e,n])}function Hh(){return Ye(re.functions.chat.public.helpdesk.createEscalationRequest)}function Ha({sessionId:t,visitorId:e,ensureSession:n,onSkipForm:r}){const i=S(),o=Hh(),[a,l]=A(!1),[c,u]=A(null);async function h(){if(!a){l(!0),u(null);try{const f=t&&e?{sessionId:t,visitorId:e}:await n();if(!f)return;const d=Ve.value;if(!d)return;const p=await o({sessionId:f.sessionId,visitorId:f.visitorId,bootstrapToken:d,locale:Ae.value});if(p.skipForm){r?.();return}Oe({id:"escalation-form",formMessageId:p.formMessageId,sessionId:f.sessionId,visitorId:f.visitorId,waitingSetAt:p.waitingSetAt})}catch(f){const d=f instanceof Error?f.message:String(f);u(/RATE_LIMITED|Too many/.test(d)?i.handoffRateLimited:i.handoffFailed)}finally{l(!1)}}}return{requestHuman:h,busy:a,error:c}}function Wh({greeting:t,botName:e,starterQuestions:n,sessionId:r,visitorId:i,isLoading:o,sessionNotFound:a,resumeFailed:l,isOrgDeleted:c,ensureSession:u,startFresh:h}){const f=S(),{conversations:d,sessionStatus:p,isLoading:g,isStreaming:y}=Fh({sessionId:r,visitorId:i});Vh(d),Qh({sessionId:r,visitorId:i}),R(()=>{const C=Zt.peek();if(C===null||!d||d.length===0)return;const{waitingSetAt:M}=C;d.some(V=>V._creationTime>M&&(V.noticeKind==="agent-joined"||!!V.authorId))&&la()},[d]);const m=sa({sessionId:r,visitorId:i,ensureSession:u}),x=pe((()=>{const C=bt.peek();return C!==null?C:Er.peek()&&ge.peek()!==null?"resume":"fresh"})()).current,{requestHuman:b,error:j}=Ha({sessionId:r,visitorId:i,ensureSession:u});return R(()=>{x==="escalate"&&b()},[x]),R(()=>{bt.value=null},[]),R(()=>{ge.peek()!==null&&u()},[u]),R(()=>{i&&$r(i)},[i]),c?s("div",{class:"jex-chat-messages",children:s("div",{class:"jex-session-notice",children:f.chatNoLongerAvailable})}):x==="resume"&&(!r||g)?s(Qa,{message:f.resumeConversation}):s(z,{children:[s(Dh,{conversations:d,greeting:t,botName:e,starterQuestions:n,onPickStarter:C=>{m(C)},sessionNotFound:a,resumeFailed:l,onStartFresh:h,sessionId:r,visitorId:i}),Zt.value!==null&&s(Uh,{}),j&&s("div",{class:"jex-session-error-notice",role:"alert",style:{margin:"8px 16px 0"},children:j}),s(Au,{sessionId:r,visitorId:i,isLoading:o,isStreaming:y,sessionStatus:p,ensureSession:u,onStartFresh:h})]})}function Wa(t){return kn(re.functions.chat.public.availability.getOrgAvailability,t?{orgSlug:t}:"skip")}function Ka(t){return t?.anyOnline?"online":t?.anyAway?"away":"offline"}function Kh({formMessageId:t,sessionId:e,visitorId:n,orgSlug:r}){const i=S(),o=Ht.value,a=/^https?:\/\//i.test(o)?o:Qt,[l,c]=A(""),[u,h]=A(""),f=Wa(r),d=f&&!f.anyOnline?i.escalationOfflineSubtitle:i.escalationSubtitle,p=Ia(),[g,y]=A(!1),[m,x]=A(null);async function b(j){j.preventDefault(),y(!0),x(null);try{await p({sessionId:e,visitorId:n,formMessageId:t,visitorName:l.trim(),visitorEmail:u.trim(),locale:Ae.value}),Pr()}catch(v){console.error("[EscalationFormScreen] Submit failed:",v),x(i.escalationSubmitFailed)}finally{y(!1)}}return s("div",{class:"jex-form-screen",children:[s("h2",{class:"jex-form-title",children:i.escalationFormTitle}),s("p",{class:"jex-escalation-subtitle",children:d}),m&&s("div",{class:"jex-form-error",role:"alert",children:m}),s("form",{class:"jex-form",onSubmit:j=>{b(j)},children:[s("input",{class:"jex-form-input",type:"text",placeholder:i.escalationNameLabel,value:l,required:!0,onInput:j=>{c(j.currentTarget.value)}}),s("input",{class:"jex-form-input",type:"email",placeholder:i.escalationEmailLabel,value:u,required:!0,onInput:j=>{h(j.currentTarget.value)}}),s("button",{class:"jex-form-submit",type:"submit",disabled:g,children:i.escalationSubmit})]}),s("div",{class:"jex-inline-form-consent",style:{textAlign:"center",margin:"16px 0 8px 0"},children:[i.escalationConsent," ",s("a",{href:a,target:"_blank",rel:"noopener noreferrer",class:"jex-privacy-notice-link",children:i.escalationPrivacyLinkText}),"."]})]})}function Ga({sessionId:t,visitorId:e,ensureSession:n,availability:r}){const i=S(),{requestHuman:o,busy:a,error:l}=Ha({sessionId:t,visitorId:e,ensureSession:n}),c=`jex-presence-dot--${Ka(r)}`,u=r?r.anyOnline?i.handoffAvailable:i.handoffOffline:i.talkToHuman;return s(z,{children:[s("button",{class:"jex-header-handoff",type:"button",onClick:()=>{o()},disabled:a,"aria-label":i.talkToHumanAria,title:u,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"})]}),r!==void 0&&s("span",{class:`jex-presence-dot ${c}`,"aria-hidden":"true"})]}),l&&s("div",{class:"jex-handoff-error",role:"alert",children:l})]})}async function Gh(){const t=No.value;if(!t)return console.warn("[JexityChat] Bootstrap refresh skipped — inputs missing"),{ok:!1,reason:"no-inputs"};const e=await Cr(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 Ve.value=n,{ok:!0,token:n}}function Ja(t){return Ya(t)?"unauthorized":t instanceof Error&&/network|fetch|failed to fetch/i.test(t.message)?"network":"unknown"}function Ya(t){return t instanceof gn?t.data?.code==="UNAUTHORIZED_ORIGIN":!1}function Jh(t=1e4){return Ve.value?Promise.resolve(Ve.value):new Promise(e=>{let n=!1;const r=a=>{n||(n=!0,clearTimeout(i),o(),e(a))},i=setTimeout(()=>{r(null)},t),o=Ve.subscribe(a=>{a&&r(a)})})}function Yh(t,e){const n=pe(null),r=vt(!1),i=vt(!1),o=vt(!1),a=vt(null),l=Ye(re.functions.chat.public.sessions.createOrResume),c=async p=>{const g=await Jh();if(!g)return console.warn("[JexityChat] No bootstrap token after 10s — session creation blocked."),wt.value="no-token",null;const y=b=>({orgSlug:t,...e?{projSlug:e}:{},visitorId:p,bootstrapToken:b,locale:Ae.value,...In.value?{source:In.value}:{}});Mr.value=!0;let m;try{try{m=await l(y(g))}catch(b){if(!Ya(b))throw b;const j=await Gh();if(!j.ok)return wt.value=j.reason==="rate_limited"?"network":"unauthorized",null;m=await l(y(j.token))}}finally{Mr.value=!1}wt.value=null,a.value=m.status;const x={sessionId:m.sessionId,visitorId:p};return n.current=x,{session:x,result:m}},u=L(async()=>{if(n.current)return n.current;if(o.value)return null;r.value=!0;const p=ge.value!==null,g=ge.value??Vo();try{const y=await c(g);return y?(p&&y.result.isNew&&(i.value=!0,o.value=!0),y.session):null}catch(y){return console.error("[JexityChat] Failed to create session:",y),wt.value=Ja(y),null}finally{r.value=!1}},[t,e,l,r,i,o]),h=L(()=>{n.current=null,i.value=!1,o.value=!1,oa()},[i,o]);R(()=>Yc(h),[h]);const f=L(async()=>{n.current=null,o.value=!1,i.value=!1,oa();const p=Vo();r.value=!0;try{return(await c(p))?.session??null}catch(g){return console.error("[JexityChat] Failed to create fresh session:",g),wt.value=Ja(g),null}finally{r.value=!1}},[t,e,l,r,i,o,a]),d=n.current;return{sessionId:d?.sessionId??null,visitorId:d?.visitorId??null,isLoading:r.value,sessionNotFound:i.value,resumeFailed:o.value,sessionStatus:a.value,isOrgDeleted:a.value==="org_deleted",ensureSession:u,startFresh:f,resetSession:h}}function Zh({botName:t,availability:e,onResetSession:n}){const r=S(),[i,o]=A(""),a=e?.anyOnline===!0,l=Ka(e);function c(){$n(),bt.value="escalate",n(),Qo(),Oe({id:"chat"})}function u(){$n(),bt.value="fresh",n(),Qo(),Oe({id:"chat"})}function h(d){$n(),bt.value="resume",n(),Ho(d),Oe({id:"chat"})}function f(d){d.preventDefault();const p=i.trim().toUpperCase();p&&($n(),bt.value="resume",n(),Ho(p),Oe({id:"chat"}))}return s("div",{class:"jex-home",children:[Kt.value&&s("div",{class:"jex-session-prompt",role:"status",children:s("div",{class:"jex-session-prompt-text",children:r.sessionLocked})}),s("button",{class:"jex-home-hero",type:"button",onClick:c,"aria-label":r.talkToHumanAria,title:e?a?r.handoffAvailable:r.handoffOffline:r.talkToHuman,children:[s("div",{class:"jex-home-avatar",children:[s(Zo,{size:24}),e!==void 0&&s("span",{class:`jex-home-status-dot jex-home-status-dot--${l}`,"aria-hidden":"true"})]}),s("div",{class:"jex-home-hero-text",children:[s("h2",{class:"jex-home-title",children:t}),s("span",{class:"jex-home-status",children:[e===void 0?r.homeStatusOffline:a?r.homeStatusOnline:r.homeStatusOffline," | ",r.talkToHuman]})]})]}),s("div",{class:"jex-home-actions",children:[ne.value.length>0&&s(z,{children:[s("span",{class:"jex-home-section-label",children:r.pickUpWhereLeftOff}),s("div",{class:"jex-home-history",children:ne.value.slice().reverse().map(d=>s("button",{class:"jex-home-resume-card",onClick:()=>{h(d.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:d.ref}),s("span",{class:"jex-home-resume-meta",children:r.resumeListTimestamp.replace("{minutes}",String(Math.max(1,Math.round((Date.now()-d.lastActivityAt)/6e4))))})]},d.ref))})]}),s("button",{class:"jex-home-new-btn",onClick:u,children:ne.value.length>0?r.startNewConversation:r.chatWith})]}),s("div",{class:"jex-home-lookup-section",children:[s("span",{class:"jex-home-lookup-label",children:r.haveReferenceNumber}),s("form",{class:"jex-home-lookup",onSubmit:f,children:[s("input",{class:"jex-home-lookup-input",type:"text",placeholder:r.referencePlaceholder,value:i,onInput:d=>{o(d.currentTarget.value)}}),s("button",{class:"jex-home-lookup-submit",type:"submit",disabled:!i.trim(),children:r.resume})]})]})]})}function Xh({title:t}){const e=S();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:()=>Oe({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:()=>Oe({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})]})]})]})}function ep(){const t=S(),[e,n]=A(""),[r,i]=A(""),[o,a]=A("");async function l(c){c.preventDefault(),qr({id:"loading",message:t.submittingTicket}),await new Promise(h=>{setTimeout(h,1200)});const u="JEX-"+Math.random().toString(36).slice(2,8).toUpperCase();qr({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 tp({ticketRef:t}){const e=S();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:()=>{F.value=!1},children:e.done})]})}function np({message:t,onRetry:e,onBack:n}){const r=S();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 Za({greeting:t,starterQuestions:e,title:n,botName:r,orgSlug:i,availability:o,sessionId:a,visitorId:l,isLoading:c,sessionNotFound:u,resumeFailed:h,isOrgDeleted:f,ensureSession:d,startFresh:p,resetSession:g}){const y=ue.value,m=y[y.length-1],x=[...y].reverse().find(b=>b.id==="confirmation");return s("div",{class:"jex-screen-container",children:[m.id==="home"&&s(Zh,{botName:r,availability:o,onResetSession:g}),m.id==="selection"&&s(Xh,{title:n}),m.id==="form"&&s(ep,{}),m.id==="escalation-form"&&s(Kh,{formMessageId:m.formMessageId,sessionId:m.sessionId,visitorId:m.visitorId,orgSlug:i,waitingSetAt:m.waitingSetAt}),m.id==="confirmation"&&x&&s(tp,{ticketRef:x.ref}),m.id==="chat"&&s(Wh,{greeting:t,botName:r,starterQuestions:e,sessionId:a,visitorId:l,isLoading:c,sessionNotFound:u,resumeFailed:h,isOrgDeleted:f,ensureSession:d,startFresh:p}),m.id==="loading"&&s(Qa,{message:m.message}),m.id==="error"&&s(np,{message:m.message,onRetry:()=>qr({id:"loading"}),onBack:Pr})]})}function rp({options:t}){return Ec({orgSlug:t.orgSlug,projSlug:t.projSlug,preToken:t.bootstrapToken,convexUrl:t.convexUrl,preAllowedUrls:t.allowedUrls??[],preExcludedPaths:t.excludePaths}),qc()?s(ip,{options:t}):null}function ip({options:t}){const e=Ac(t.orgSlug,t.projSlug,t.convexUrl);zc(t.parentOrigin),R(()=>(Hc(),Kc(),()=>{Ir.value=!1}),[]);const{sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}=Yh(t.orgSlug,t.projSlug),f=Wa(t.orgSlug),d=Sc(t,e.config),p=Qe.value,g=Ir.value,y=e.config!==null||p!==void 0||e.settled,m=e.config!==null?d.sessionTimeoutMs:p!==void 0?p:d.sessionTimeoutMs;R(()=>{Ae.value=zo(d.locale)},[d.locale]),R(()=>{Ht.value=d.privacyPolicyUrl??Qt,kr.value=d.privacyNoticeStyle},[d.privacyNoticeStyle,d.privacyPolicyUrl]),R(()=>{if(!F.value||d.mode==="embedded"||!window.matchMedia("(max-width: 480px), (pointer: coarse) and (max-width: 768px)").matches)return;const ie=document.documentElement.style.overflow;return document.documentElement.style.overflow="hidden",()=>{document.documentElement.style.overflow=ie}},[F.value,d.mode]),R(()=>{if(g&&y&&d.mode!=="embedded"&&m!==null)try{return Xc(m)}catch(Q){console.warn("[JexityChat] Idle-lock watcher failed to start:",Q);return}},[g,d.mode,y,m]),R(()=>{if(!g||!y)return;const{activeRefPruned:Q}=Wc(m);Q&&Lr()},[g,y,m]);const x=d.position==="bottom-left",b=d.colorScheme==="dark"||d.colorScheme==="light"?d.colorScheme:"",j=eu({...t,primaryColor:d.primaryColor,accentColor:d.accentColor,fontFamily:d.fontFamily,fontSize:d.fontSize,borderRadius:d.borderRadius,windowWidth:d.windowWidth,windowHeight:d.windowHeight}),v=d.mode==="embedded",C=ue.value,W=C[C.length-1]?.id==="chat",V=e.config!==null||v||!!t.parentOrigin,le=V?j:{...j,visibility:"hidden"},O=uu(t.orgSlug,t.projSlug);return R(()=>{if(v||!V||d.proactiveMode==="off"||Xo(O))return;const Q=window.setTimeout(()=>{const ie=hu({mode:d.proactiveMode,isOpen:F.peek(),hasHistory:Er.peek(),dismissed:Xo(O)});ie==="teaser"?qn.value=!0:ie==="open"&&(F.value=!0)},d.proactiveDelaySeconds*1e3);return()=>{window.clearTimeout(Q)}},[v,V,d.proactiveMode,d.proactiveDelaySeconds,O]),s("div",{class:`jex-widget ${b}`.trim(),style:le,children:v?s("div",{class:"jex-embedded",children:[s(Jo,{title:d.title,rightAction:W?s(Ga,{sessionId:n,visitorId:r,ensureSession:c,availability:f}):null,showClose:!v}),s(Za,{greeting:d.greeting,starterQuestions:d.starterQuestions,title:d.title,botName:d.botName,orgSlug:t.orgSlug,projSlug:t.projSlug,availability:f,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}),!d.hideBranding&&s(Yo,{})]}):s("div",{class:`jex-container${x?" jex-pos-left":""}`,children:[F.value&&s("div",{class:"jex-chat-window",children:[s(Jo,{title:d.title,rightAction:W?s(Ga,{sessionId:n,visitorId:r,ensureSession:c,availability:f}):null}),s(Za,{greeting:d.greeting,starterQuestions:d.starterQuestions,title:d.title,botName:d.botName,orgSlug:t.orgSlug,projSlug:t.projSlug,availability:f,sessionId:n,visitorId:r,isLoading:i,sessionNotFound:o,resumeFailed:a,isOrgDeleted:l,ensureSession:c,startFresh:u,resetSession:h}),!d.hideBranding&&s(Yo,{})]}),qn.value&&!F.value&&s(pu,{title:d.title,message:d.greeting,guardKey:O}),s(cu,{iconOption:d.triggerIcon,radius:d.triggerRadius,label:d.triggerLabel})]})})}const op=`.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-fab-pulse{animation:jex-fab-pulse 2.4s ease-out infinite}@keyframes jex-fab-pulse{0%{box-shadow:var(--jex-shadow),0 0 color-mix(in srgb,var(--jex-bg-trigger) 50%,transparent)}70%{box-shadow:var(--jex-shadow),0 0 0 14px color-mix(in srgb,var(--jex-bg-trigger) 0%,transparent)}to{box-shadow:var(--jex-shadow),0 0 color-mix(in srgb,var(--jex-bg-trigger) 0%,transparent)}}@media(prefers-reduced-motion:reduce){.jex-fab-pulse{animation:none}}.jex-proactive-teaser{display:flex;align-items:flex-start;gap:10px;width:280px;max-width:calc(100vw - 48px);padding:12px 14px;align-self:flex-end;background:var(--jex-bg-window);color:var(--jex-text-main);border:1px solid var(--jex-border-window);border-radius:var(--jex-radius);box-shadow:var(--jex-shadow);cursor:pointer;text-align:left;animation:jex-teaser-in .22s ease-out}.jex-proactive-avatar{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9999px;background:var(--jex-bg-avatar-agent);color:var(--jex-text-avatar-agent)}.jex-proactive-body{display:flex;flex-direction:column;gap:2px;min-width:0}.jex-proactive-title{font-weight:600;font-size:13px;line-height:1.2}.jex-proactive-message{font-size:13px;line-height:1.35;color:var(--jex-text-muted)}.jex-proactive-dismiss{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:22px;height:22px;margin:-4px -4px 0 0;padding:0;border:none;background:transparent;color:var(--jex-text-muted);cursor:pointer;border-radius:9999px}.jex-proactive-dismiss:hover{background:var(--jex-bg-msg-bot)}@keyframes jex-teaser-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.jex-proactive-teaser{animation:none}}.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:14px 16px;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{position:relative;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;width:100%;padding:0;border:none;background:transparent;font-family:inherit;text-align:left;cursor:pointer;animation:jexFadeIn .4s ease both}.jex-home-hero:disabled{cursor:default;opacity:.7}.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:var(--jex-dot-color, #9ca3af);border:2.5px solid var(--jex-bg-window);animation:jexPulse 2s ease-in-out infinite}.jex-home-status-dot--online{--jex-dot-color: #10b981}.jex-home-status-dot--away{--jex-dot-color: #fbbf24}.jex-home-status-dot--offline{--jex-dot-color: #9ca3af}@keyframes jexPulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--jex-dot-color, #9ca3af) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--jex-dot-color, #9ca3af) 0%,transparent)}}.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:13px;font-weight:500;color:var(--jex-text-muted);letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jex-home-section-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--jex-text-muted)}.jex-home-lookup-section{display:flex;flex-direction:column;gap:8px;margin-top:auto}.jex-home-lookup-label{font-size:12px;font-weight:500;color:var(--jex-text-muted)}.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:12px;color:var(--jex-text-muted);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;flex-direction:column;align-items:stretch;gap:6px;max-width:92%}.jex-message-head{display:flex;align-items:center;gap:8px;padding-left:2px}.jex-message-head .jex-avatar{margin-bottom: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{font-size:13px;font-weight:600;color:var(--jex-text-main);line-height:1.2}.jex-quote-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;opacity:0;transition:background .15s,color .15s,opacity .12s}.jex-quote-btn:hover{background:#0000000f;color:var(--jex-primary, #115A62)}.jex-quote-btn:focus-visible{opacity:1;outline:2px solid var(--jex-primary, #115A62);outline-offset:1px}@media(hover:hover){.jex-message-row:hover .jex-quote-btn{opacity:1}}@media(hover:none){.jex-quote-btn{opacity:1}}.jex-message-row.user{align-self:flex-end;flex-direction:row;align-items:center;gap:6px}.jex-message.user .jex-mention{font-weight:700;background:#ffffff38;border-radius:4px;padding:0 3px}.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-radius:16px}.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-voucher-section{display:flex;flex-direction:column;gap:6px;margin-top:4px}.jex-magicline-voucher-field{flex-direction:row;align-items:stretch;gap:8px}.jex-magicline-voucher-field .jex-form-input{flex:1;min-width:0}.jex-magicline-voucher-apply{flex:0 0 auto;padding:10px 16px;border-radius:8px;border:none;background:var(--jex-primary, #115A62);color:#fff;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.jex-magicline-voucher-apply:hover{background:var(--jex-primary-hover)}.jex-magicline-voucher-apply:disabled{opacity:.7;cursor:not-allowed}.jex-magicline-review-wrap{position:relative}.jex-magicline-review-body{display:flex;flex-direction:column;gap:10px;transition:opacity .15s ease}.jex-magicline-review-body--reloading{opacity:.5;pointer-events:none}.jex-magicline-review-overlay{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:center;padding-top:48px}.jex-magicline-review-spinner{width:28px;height:28px;border-radius:50%;border:3px solid color-mix(in srgb,var(--jex-primary, #115A62) 25%,transparent);border-top-color:var(--jex-primary, #115A62);animation:jex-magicline-spin .7s linear infinite}@keyframes jex-magicline-spin{to{transform:rotate(360deg)}}.jex-magicline-voucher-discount-row dt,.jex-magicline-voucher-remarks-row dt{flex-shrink:1;min-width:0}.jex-magicline-voucher-remarks-row dd{min-width:0;overflow-wrap:anywhere;word-break:break-word}.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;min-width:0}.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-summary-total-row dt{flex-shrink:1;min-width:0}.jex-magicline-summary-total-row dd{flex-shrink:0;white-space:nowrap;overflow-wrap:normal}.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}.jex-starter-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}.jex-starter-chip{display:inline-flex;align-items:center;border-radius:999px;padding:7px 13px;background:var(--jex-bg-window);border:1px solid var(--jex-border-input);color:var(--jex-primary);text-align:left;font-size:13.5px;font-weight:500;line-height:1.2;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s}.jex-starter-chip:hover:not(:disabled){background:color-mix(in srgb,var(--jex-primary) 8%,var(--jex-bg-window));border-color:var(--jex-primary)}.jex-starter-chip:disabled{opacity:.5;cursor:default}.jex-presence-dot{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:999px;box-shadow:0 0 0 2px var(--jex-bg-header, #115A62)}.jex-presence-dot--online{background:#10b981}.jex-presence-dot--away{background:#fbbf24}.jex-presence-dot--offline{background:#9ca3af}@keyframes jex-ripple-expand{0%{transform:scale(1);opacity:.6}to{transform:scale(2.6);opacity:0}}.jex-waiting-card{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;margin:0 12px 8px;background:var(--jex-bg-msg-bot, #f1f5f9);border:1px solid var(--jex-border-input, #e2e8f0);border-radius:var(--jex-radius, .75rem)}.jex-waiting-indicator{position:relative;flex-shrink:0;width:20px;height:20px;margin-top:2px;display:flex;align-items:center;justify-content:center}.jex-waiting-dot{position:relative;z-index:1;width:8px;height:8px;border-radius:50%;background:var(--jex-primary, #115A62)}.jex-waiting-ripple{position:absolute;inset:0;width:8px;height:8px;margin:auto;border-radius:50%;background:var(--jex-primary, #115A62);animation:jex-ripple-expand 1.6s ease-out infinite}@media(prefers-reduced-motion:reduce){.jex-waiting-ripple{animation:none}}.jex-waiting-body{display:flex;flex-direction:column;gap:4px;min-width:0}.jex-waiting-title{font-weight:600;font-size:14px;color:var(--jex-text-main, #0f172a);line-height:1.3}.jex-waiting-subtitle{font-size:12px;color:var(--jex-text-muted, #64748b);line-height:1.4}.jex-waiting-leave-email{margin-top:6px;padding:0;border:none;background:transparent;color:var(--jex-primary, #115A62);font-size:12px;font-family:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer;text-align:left}.jex-waiting-leave-email:hover{opacity:.8}`;function ap(t){const e=document.createElement("style");e.textContent=op,t.appendChild(e)}const sp="https://tame-spider-109.eu-west-1.convex.cloud";let Xr=null;function lp(t){const e=t??sp;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 Xr||(Xr=new ac(_c(e))),Xr}function cp(t,e){const n=t.shadowRoot??t.attachShadow({mode:"open"});for(;n.firstChild;)n.removeChild(n.firstChild);ap(n),In.value=e.source,Ve.value=e.bootstrapToken,ue.value=[{id:"home"}],e.mode==="embedded"&&(t.classList.add("jex-mode-embedded"),F.value=!0);const r=document.createElement("div");return e.mode==="embedded"&&(r.style.cssText="width:100%;height:100%"),n.appendChild(r),Ke(s(lc,{client:lp(e.convexUrl),children:s(rp,{options:e})}),r),function(){Ke(null,r),F.value=!1,In.value=void 0,Ve.value=void 0,ue.value=[{id:"home"}]}}function up(t,e,n){const r=cp(t,e),i=new Set,o=F.subscribe(l=>{for(const c of i)c(l)});return{shutdown(){o(),i.clear(),r(),n&&n()},open(){F.value=!0},close(){F.value=!1},toggle(){F.value=!F.value},get isOpen(){return F.value},subscribe(l){return i.add(l),()=>{i.delete(l)}}}}let rn=null;function dp(t){rn&&rn.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=up(e,t,()=>{t.container||e.remove(),rn===n&&(rn=null)});return rn=n,n}function We(t,e){return t.getAttribute(e)??void 0}async function Xa(){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=We(t,"data-convex-url")??"https://tame-spider-109.eu-west-1.convex.cloud"??"",i=Sr(r),o=await Cr(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=>Tr(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:We(t,"data-position")??void 0,theme:We(t,"data-theme")??void 0,greeting:We(t,"data-greeting"),title:We(t,"data-title"),primaryColor:We(t,"data-primary-color"),locale:We(t,"data-locale"),convexUrl:We(t,"data-convex-url")};window.JexityChat=dp(a)}document.readyState==="complete"?Xa():window.addEventListener("load",Xa)})();
|
|
71
71
|
//# sourceMappingURL=widget.js.map
|