@evelan/jexity-widget 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +4503 -877
- package/dist/index.mjs.map +1 -1
- package/dist/types/features/chat/components/ChatInput.d.ts +13 -2
- package/dist/types/features/chat/components/ChatInput.d.ts.map +1 -1
- package/dist/types/features/chat/components/ChatScreen.d.ts +6 -3
- package/dist/types/features/chat/components/ChatScreen.d.ts.map +1 -1
- package/dist/types/features/chat/components/MessageList.d.ts +9 -2
- package/dist/types/features/chat/components/MessageList.d.ts.map +1 -1
- package/dist/types/features/chat/hooks/useConvexSession.d.ts +22 -0
- package/dist/types/features/chat/hooks/useConvexSession.d.ts.map +1 -0
- package/dist/types/features/chat/lib/chat.d.ts +1 -11
- package/dist/types/features/chat/lib/chat.d.ts.map +1 -1
- package/dist/types/lib/convex-url.d.ts +18 -0
- package/dist/types/lib/convex-url.d.ts.map +1 -0
- package/dist/types/lib/widget-config.d.ts +61 -0
- package/dist/types/lib/widget-config.d.ts.map +1 -0
- package/dist/types/module/screens/ScreenRouter.d.ts +2 -1
- package/dist/types/module/screens/ScreenRouter.d.ts.map +1 -1
- package/dist/types/module/shell/{AppShell.d.ts → WidgetShell.d.ts} +3 -3
- package/dist/types/module/shell/WidgetShell.d.ts.map +1 -0
- package/dist/types/module/shell/hooks/usePreviewBridge.d.ts +16 -0
- package/dist/types/module/shell/hooks/usePreviewBridge.d.ts.map +1 -0
- package/dist/types/module/shell/hooks/useRemoteConfig.d.ts +13 -0
- package/dist/types/module/shell/hooks/useRemoteConfig.d.ts.map +1 -0
- package/dist/types/module/shell/mount.d.ts +20 -9
- package/dist/types/module/shell/mount.d.ts.map +1 -1
- package/dist/types/module/shell/shell.state.d.ts +12 -0
- package/dist/types/module/shell/shell.state.d.ts.map +1 -1
- package/dist/types/module/shell/widget-instance.d.ts +27 -0
- package/dist/types/module/shell/widget-instance.d.ts.map +1 -0
- package/dist/widget.js +2 -1
- package/dist/widget.js.map +1 -1
- package/package.json +3 -1
- package/dist/types/module/shell/AppShell.d.ts.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/dist/preact.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/hooks/dist/hooks.module.js","../../../node_modules/.pnpm/@preact+signals-core@1.13.0/node_modules/@preact/signals-core/dist/signals-core.module.js","../../../node_modules/.pnpm/@preact+signals@2.7.1_preact@10.27.2/node_modules/@preact/signals/dist/signals.module.js","../src/module/shell/shell.state.ts","../src/module/visitor/visitor.state.ts","../src/i18n/locales/en.ts","../src/i18n/locales/de.ts","../src/i18n/config.ts","../src/i18n/index.ts","../src/i18n/resolve-widget-locale.ts","../src/shared/theme/build-theme.ts","../src/module/screens/screens.state.ts","../src/shared/icons/BotIcon.tsx","../src/shared/ui/Header.tsx","../src/shared/icons/ZapIcon.tsx","../src/shared/ui/Footer.tsx","../src/shared/icons/MessageIcon.tsx","../src/shared/icons/CloseIcon.tsx","../src/shared/icons/SparklesIcon.tsx","../src/shared/ui/FAB.tsx","../src/features/chat/lib/chat.ts","../src/features/home/components/HomeScreen.tsx","../src/features/selection/components/SelectionScreen.tsx","../src/features/chat/components/BotMessage.tsx","../src/features/chat/components/UserMessage.tsx","../src/features/chat/components/TypingIndicator.tsx","../src/features/chat/components/MessageList.tsx","../src/shared/icons/SendIcon.tsx","../src/features/chat/components/ChatInput.tsx","../src/features/chat/components/ChatScreen.tsx","../src/features/ticket/components/FormScreen.tsx","../src/features/ticket/components/ConfirmationScreen.tsx","../src/shared/ui/LoadingScreen.tsx","../src/shared/ui/ErrorScreen.tsx","../src/module/screens/ScreenRouter.tsx","../src/module/shell/AppShell.tsx","../src/shared/theme/inject-styles.ts","../src/module/shell/mount.tsx","../src/entries/esm.ts"],"sourcesContent":["var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==n.key||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.o;n.o=void 0;n.f&=-3;if(!(8&n.f)&&a(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0;function e(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function d(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}d.prototype.brand=i;d.prototype.h=function(){return!0};d.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};d.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};d.prototype.subscribe=function(i){var t=this;return m(function(){var n=t.value,o=r;r=void 0;try{i(n)}finally{r=o}},{name:\"sub\"})};d.prototype.valueOf=function(){return this.value};d.prototype.toString=function(){return this.value+\"\"};d.prototype.toJSON=function(){return this.value};d.prototype.peek=function(){var i=r;r=void 0;try{return this.value}finally{r=i}};Object.defineProperty(d.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;u++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function c(i,t){return new d(i,t)}function a(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function l(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function w(i,t){d.call(this,void 0);this.x=i;this.s=void 0;this.g=u-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}w.prototype=new d;w.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===u)return!0;this.g=u;this.f|=1;if(this.i>0&&!a(this)){this.f&=-2;return!0}var i=r;try{l(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;y(this);this.f&=-2;return!0};w.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}d.prototype.S.call(this,i)};w.prototype.U=function(i){if(void 0!==this.t){d.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};w.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(w.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function b(i,t){return new w(i,t)}function _(i){var n=i.u;i.u=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;p(i);throw t}finally{r=o;t()}}}function p(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function g(i){if(r!==this)throw new Error(\"Out-of-order effect\");y(this);r=i;this.f&=-2;if(8&this.f)p(this);t()}function S(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}S.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};S.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);s++;var i=r;r=this;return g.bind(this,i)};S.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};S.prototype.d=function(){this.f|=8;if(!(1&this.f))p(this)};S.prototype.dispose=function(){this.d()};function m(i,t){var n=new S(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function E(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function x(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}function C(i){return function(){var t,n,r=x();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}for(var o in n)if(\"function\"==typeof n[o])n[o]=E(n[o]);n[Symbol.dispose]=E(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{w as Computed,S as Effect,d as Signal,E as action,n as batch,b as computed,C as createModel,m as effect,c as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import{Component as i,options as n,isValidElement as t,Fragment as r}from\"preact\";import{useMemo as o,useRef as f,useEffect as e}from\"preact/hooks\";import{effect as u,Signal as a,computed as c,signal as v,batch as s}from\"@preact/signals-core\";export{Signal,action,batch,computed,createModel,effect,signal,untracked}from\"@preact/signals-core\";var l,h,d,p=\"undefined\"!=typeof window&&!!window.__PREACT_SIGNALS_DEVTOOLS__,m=[],_=[];u(function(){l=this.N})();function g(i,t){n[i]=t.bind(null,n[i]||function(){})}function b(i){if(d){var n=d;d=void 0;n()}d=i&&i.S()}function y(i){var n=this,r=i.data,f=useSignal(r);f.value=r;var e=o(function(){var i=n,r=n.__v;while(r=r.__)if(r.__c){r.__c.__$f|=4;break}var o=c(function(){var i=f.value.value;return 0===i?0:!0===i?\"\":i||\"\"}),e=c(function(){return!Array.isArray(o.value)&&!t(o.value)}),a=u(function(){this.N=F;if(e.value){var n=o.value;if(i.__v&&i.__v.__e&&3===i.__v.__e.nodeType)i.__v.__e.data=n}}),v=n.__$u.d;n.__$u.d=function(){a();v.call(this)};return[e,o]},[]),a=e[0],v=e[1];return a.value?v.peek():v.value}y.displayName=\"ReactiveTextNode\";Object.defineProperties(a.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:y},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}});g(\"__b\",function(i,n){if(\"string\"==typeof n.type){var t,r=n.props;for(var o in r)if(\"children\"!==o){var f=r[o];if(f instanceof a){if(!t)n.__np=t={};t[o]=f;r[o]=f.peek()}}}i(n)});g(\"__r\",function(i,n){i(n);if(n.type!==r){b();var t,o=n.__c;if(o){o.__$f&=-2;if(void 0===(t=o.__$u))o.__$u=t=function(i,n){var t;u(function(){t=this},{name:n});t.c=i;return t}(function(){var i;if(p)null==(i=t.y)||i.call(t);o.__$f|=1;o.setState({})},\"function\"==typeof n.type?n.type.displayName||n.type.name:\"\")}h=o;b(t)}});g(\"__e\",function(i,n,t,r){b();h=void 0;i(n,t,r)});g(\"diffed\",function(i,n){b();h=void 0;var t;if(\"string\"==typeof n.type&&(t=n.__e)){var r=n.__np,o=n.props;if(r){var f=t.U;if(f)for(var e in f){var u=f[e];if(void 0!==u&&!(e in r)){u.d();f[e]=void 0}}else{f={};t.U=f}for(var a in r){var c=f[a],v=r[a];if(void 0===c){c=w(t,a,v,o);f[a]=c}else c.o(v,o)}}}i(n)});function w(i,n,t,r){var o=n in i&&void 0===i.ownerSVGElement,f=v(t);return{o:function(i,n){f.value=i;r=n},d:u(function(){this.N=F;var t=f.value.value;if(r[n]!==t){r[n]=t;if(o)i[n]=t;else if(null!=t&&(!1!==t||\"-\"===n[4]))i.setAttribute(n,t);else i.removeAttribute(n)}})}}g(\"unmount\",function(i,n){if(\"string\"==typeof n.type){var t=n.__e;if(t){var r=t.U;if(r){t.U=void 0;for(var o in r){var f=r[o];if(f)f.d()}}}}else{var e=n.__c;if(e){var u=e.__$u;if(u){e.__$u=void 0;u.d()}}}i(n)});g(\"__h\",function(i,n,t,r){if(r<3||9===r)n.__$f|=2;i(n,t,r)});i.prototype.shouldComponentUpdate=function(i,n){if(this.__R)return!0;var t=this.__$u,r=t&&void 0!==t.s;for(var o in n)return!0;if(this.__f||\"boolean\"==typeof this.u&&!0===this.u){var f=2&this.__$f;if(!(r||f||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(r||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var e in i)if(\"__source\"!==e&&i[e]!==this.props[e])return!0;for(var u in this.props)if(!(u in i))return!0;return!1};function useSignal(i,n){return o(function(){return v(i,n)},[])}function useComputed(i,n){var t=f(i);t.current=i;h.__$f|=4;return o(function(){return c(function(){return t.current()},n)},[])}var k=\"undefined\"==typeof requestAnimationFrame?setTimeout:function(i){var n=function(){clearTimeout(t);cancelAnimationFrame(r);i()},t=setTimeout(n,35),r=requestAnimationFrame(n)},q=function(i){queueMicrotask(function(){queueMicrotask(i)})};function A(){s(function(){var i;while(i=m.shift())l.call(i)})}function T(){if(1===m.push(this))(n.requestAnimationFrame||k)(A)}function x(){s(function(){var i;while(i=_.shift())l.call(i)})}function F(){if(1===_.push(this))(n.requestAnimationFrame||q)(x)}function useSignalEffect(i,n){var t=f(i);t.current=i;e(function(){return u(function(){this.N=T;return t.current()},n)},[])}function M(i){var n=o(function(){return i()},[]);e(function(){return n[Symbol.dispose]},[n]);return n}export{useComputed,M as useModel,useSignal,useSignalEffect};//# sourceMappingURL=signals.module.js.map\n","import { signal } from '@preact/signals'\n\nexport const isOpen = signal(false)\n","import { signal } from '@preact/signals'\n\nconst SESSION_REF_KEY = 'jex-session-ref'\nconst SESSION_ACTIVE_KEY = 'jex-session-active'\n\n/** Short alphanumeric reference visible to the visitor (e.g. \"JEX-A3B7C2\"). */\nexport const sessionRef = signal<string | null>(null)\n\n/** True once the visitor has sent at least one message in any session. */\nexport const hasActiveSession = signal(false)\n\nfunction generateRef(): string {\n return 'JEX-' + Math.random().toString(36).slice(2, 8).toUpperCase()\n}\n\n/**\n * Load session state from sessionStorage on widget boot.\n * sessionStorage is cleared when the browser tab closes — GDPR safe.\n * Call once from WidgetShell on mount.\n */\nexport function initVisitor(): void {\n try {\n const stored = sessionStorage.getItem(SESSION_REF_KEY)\n const active = sessionStorage.getItem(SESSION_ACTIVE_KEY)\n sessionRef.value = stored ?? null\n hasActiveSession.value = stored !== null && active === 'true'\n } catch {\n sessionRef.value = null\n hasActiveSession.value = false\n }\n}\n\n/**\n * Create a fresh session ref and persist it.\n * Called when the visitor starts a new conversation.\n */\nexport function startNewSession(): string {\n const ref = generateRef()\n sessionRef.value = ref\n hasActiveSession.value = false\n try {\n sessionStorage.setItem(SESSION_REF_KEY, ref)\n sessionStorage.removeItem(SESSION_ACTIVE_KEY)\n } catch { /* storage blocked */ }\n return ref\n}\n\n/**\n * Mark the current session as active (first message sent).\n * Called from ChatInput on first send.\n */\nexport function markSessionActive(): void {\n if (!sessionRef.value) { return }\n hasActiveSession.value = true\n try {\n sessionStorage.setItem(SESSION_ACTIVE_KEY, 'true')\n } catch { /* storage blocked */ }\n}\n","// Keep in sync with de.ts — both must export the same WidgetStrings shape.\nexport interface WidgetStrings {\n title: string\n statusOnline: string\n inputPlaceholder: string\n sendAriaLabel: string\n openChatAriaLabel: string\n closeChatAriaLabel: string\n errorNetwork: string\n errorQuota: string\n localeLabelDe: string\n localeLabelEn: string\n resumeConversation: string\n startNewConversation: string\n chatWith: string\n haveReferenceNumber: string\n referencePlaceholder: string\n resume: string\n howCanWeHelp: string\n getInstantHelp: string\n submitTicket: string\n replyByEmail: string\n ticketSubmitted: string\n yourReferenceNumber: string\n sentToEmailHint: string\n done: string\n submittingTicket: string\n yourName: string\n yourEmail: string\n submit: string\n back: string\n}\n\nexport const en: WidgetStrings = {\n title: 'Assistant',\n statusOnline: 'Online \\u00b7 Responds in seconds',\n inputPlaceholder: 'Type a message\\u2026',\n sendAriaLabel: 'Send message',\n openChatAriaLabel: 'Open chat',\n closeChatAriaLabel: 'Close chat',\n errorNetwork: 'Network error. Please try again.',\n errorQuota: 'Message limit reached. Please try again later.',\n localeLabelDe: 'DE',\n localeLabelEn: 'EN',\n resumeConversation: 'Resume conversation',\n startNewConversation: 'Start new conversation',\n chatWith: 'Chat with {title}',\n haveReferenceNumber: 'Have a reference number?',\n referencePlaceholder: 'e.g. JEX-A3B7C2',\n resume: 'Resume',\n howCanWeHelp: 'How can we help?',\n getInstantHelp: 'Get instant help',\n submitTicket: 'Submit a ticket',\n replyByEmail: \"We'll reply by email\",\n ticketSubmitted: 'Ticket submitted',\n yourReferenceNumber: 'Your reference number:',\n sentToEmailHint: \"We've sent it to your email. Use this number to follow up.\",\n done: 'Done',\n submittingTicket: 'Submitting your ticket\\u2026',\n yourName: 'Your name',\n yourEmail: 'Your email',\n submit: 'Submit',\n back: 'Go back',\n}\n","import type { WidgetStrings } from './en'\n\nexport const de: WidgetStrings = {\n title: 'Assistent',\n statusOnline: 'Online \\u00b7 Antwortet in Sekunden',\n inputPlaceholder: 'Nachricht eingeben\\u2026',\n sendAriaLabel: 'Nachricht senden',\n openChatAriaLabel: 'Chat \\u00f6ffnen',\n closeChatAriaLabel: 'Chat schlie\\u00dfen',\n errorNetwork: 'Netzwerkfehler. Bitte versuche es erneut.',\n errorQuota: 'Nachrichtenlimit erreicht. Bitte versuche es sp\\u00e4ter erneut.',\n localeLabelDe: 'DE',\n localeLabelEn: 'EN',\n resumeConversation: 'Gespr\\u00e4ch fortsetzen',\n startNewConversation: 'Neues Gespr\\u00e4ch beginnen',\n chatWith: 'Chatte mit {title}',\n haveReferenceNumber: 'Hast du eine Referenznummer?',\n referencePlaceholder: 'z.B. JEX-A3B7C2',\n resume: 'Fortsetzen',\n howCanWeHelp: 'Wie k\\u00f6nnen wir helfen?',\n getInstantHelp: 'Soforthilfe erhalten',\n submitTicket: 'Ticket einreichen',\n replyByEmail: 'Wir antworten per E-Mail',\n ticketSubmitted: 'Ticket eingereicht',\n yourReferenceNumber: 'Deine Referenznummer:',\n sentToEmailHint: 'Wir haben sie an deine E-Mail gesendet. Verwende diese Nummer f\\u00fcr R\\u00fcckfragen.',\n done: 'Fertig',\n submittingTicket: 'Dein Ticket wird \\u00fcbermittelt\\u2026',\n yourName: 'Dein Name',\n yourEmail: 'Deine E-Mail',\n submit: 'Absenden',\n back: 'Zur\\u00fcck',\n}\n","export type WidgetLocale = 'en' | 'de'\n\nexport interface LocaleConfig {\n value: WidgetLocale\n label: string\n flag: string\n}\n\nexport const SUPPORTED_LOCALES: LocaleConfig[] = [\n { value: 'de', label: 'Deutsch', flag: '🇩🇪' },\n { value: 'en', label: 'English', flag: '🇬🇧' },\n]\n\nexport const WIDGET_DEFAULT_LOCALE: WidgetLocale = 'de'\nexport const LOCALE_STORAGE_KEY = 'jex-locale'\n","import { signal } from '@preact/signals'\nimport { en, type WidgetStrings } from './locales/en'\nimport { de } from './locales/de'\n\nexport type { WidgetStrings }\nexport {\n type WidgetLocale,\n SUPPORTED_LOCALES as WIDGET_LOCALES,\n WIDGET_DEFAULT_LOCALE,\n LOCALE_STORAGE_KEY,\n} from './config'\n\n/**\n * Active locale for the widget UI.\n * Initialised to 'de' (default); overridden in WidgetShell on mount via resolveWidgetLocale.\n */\nexport const locale = signal<'en' | 'de'>('de')\n\nconst STRINGS: Record<string, WidgetStrings> = { en, de }\n\n/**\n * Returns the current locale's string dictionary.\n * Reactive — components that call this re-render when locale changes.\n *\n * Usage inside a Preact component:\n * const s = useLocale();\n * return <p>{s.inputPlaceholder}</p>;\n */\nexport function useLocale(): WidgetStrings {\n // Accessing locale.value inside render subscribes this component to changes.\n return STRINGS[locale.value] ?? en\n}\n\n/**\n * Switch the active locale and persist the visitor's choice to localStorage.\n * Call this from the footer toggle's onClick handler.\n */\nexport function setLocale(next: 'en' | 'de'): void {\n locale.value = next\n try {\n localStorage.setItem('jex-locale', next)\n } catch {\n // Storage blocked — still update the in-memory signal\n }\n}\n","import { \n type WidgetLocale, \n SUPPORTED_LOCALES, \n WIDGET_DEFAULT_LOCALE, \n LOCALE_STORAGE_KEY \n} from './config'\n\n/** Normalise a raw locale string (e.g. \"en-US\") to a WidgetLocale, or null. */\nfunction parseLocale(raw: string | null | undefined): WidgetLocale | null {\n if (!raw) { return null }\n const base = (raw.split('-')[0] ?? '').toLowerCase()\n const isValid = SUPPORTED_LOCALES.some(l => l.value === base)\n return isValid ? (base as WidgetLocale) : null\n}\n\n/**\n * Resolve the active locale using the priority chain:\n * 1. configLocale (explicit prop/dashboard override — HIGHEST)\n * 2. localStorage['jex-locale'] (visitor's persistent choice)\n * 3. navigator.language (browser auto-detect)\n * 4. 'de' (hardcoded default)\n * \n * Priority Note:\n * Explicit configuration (configLocale) now outranks localStorage. \n * This ensures that changing the language in the Dashboard or Playground \n * instantly reflects in the preview, even if the user previously selected\n * a different language inside the widget's persistent session.\n */\nexport function resolveWidgetLocale(configLocale?: string): WidgetLocale {\n // 1. Explicit UI Configuration (Dashboard/Playground override)\n const config = parseLocale(configLocale)\n if (config) { return config }\n\n // 2. Visitor's persistent saved choice\n try {\n const saved = parseLocale(localStorage.getItem(LOCALE_STORAGE_KEY))\n if (saved) { return saved }\n } catch {\n // localStorage blocked (e.g. Safari private mode)\n }\n\n // 3. Browser language fallback\n if (typeof navigator !== 'undefined') {\n const browser = parseLocale(navigator.language)\n if (browser) { return browser }\n }\n\n // 4. Global default\n return WIDGET_DEFAULT_LOCALE\n}\n","import type { JSX } from 'preact'\nimport type { JexityChatOptions } from '../../types'\n\n/** Maps JexityChatOptions theme fields → CSS custom properties on the widget root. */\nexport function buildThemeStyle(options: JexityChatOptions): JSX.CSSProperties | undefined {\n const vars: Record<string, string> = {}\n const { primaryColor, theme } = options\n\n if (primaryColor) {\n vars['--jex-primary'] = primaryColor\n vars['--jex-bg-trigger'] = primaryColor\n vars['--jex-bg-header'] = primaryColor\n vars['--jex-bg-msg-user'] = primaryColor\n vars['--jex-bg-send-btn'] = primaryColor\n }\n \n if (options.accentColor) {\n vars['--jex-accent'] = options.accentColor\n }\n\n if (theme?.bg) {\n const bg = theme.bg\n if (bg.trigger) { vars['--jex-bg-trigger'] = bg.trigger }\n if (bg.header) { vars['--jex-bg-header'] = bg.header }\n if (bg.msgUser) { vars['--jex-bg-msg-user'] = bg.msgUser }\n if (bg.msgBot) { vars['--jex-bg-msg-bot'] = bg.msgBot }\n if (bg.window) { vars['--jex-bg-window'] = bg.window }\n if (bg.sendBtn) { vars['--jex-bg-send-btn'] = bg.sendBtn }\n }\n if (theme?.text) {\n const text = theme.text\n if (text.header) { vars['--jex-text-header'] = text.header }\n if (text.msgUser) { vars['--jex-text-msg-user'] = text.msgUser }\n if (text.msgBot) { vars['--jex-text-msg-bot'] = text.msgBot }\n if (text.main) { vars['--jex-text-main'] = text.main }\n if (text.muted) { vars['--jex-text-muted'] = text.muted }\n }\n if (theme?.border) {\n const border = theme.border\n if (border.window) { vars['--jex-border-window'] = border.window }\n if (border.input) { vars['--jex-border-input'] = border.input }\n }\n\n // Layout & Typography (from Extended Config)\n if (options.fontFamily) { vars['--jex-font-family'] = options.fontFamily }\n if (options.fontSize) { vars['--jex-font-size'] = `${options.fontSize}px` }\n if (options.borderRadius) { vars['--jex-radius'] = options.borderRadius }\n if (options.windowWidth) { vars['--jex-window-width'] = `${options.windowWidth}px` }\n if (options.windowHeight) { vars['--jex-window-height'] = `${options.windowHeight}px` }\n\n return Object.keys(vars).length > 0 ? (vars as JSX.CSSProperties) : undefined\n}\n","import { signal } from '@preact/signals'\n\nexport type ScreenState =\n | { id: 'home' }\n | { id: 'selection' }\n | { id: 'chat' }\n | { id: 'form' }\n | { id: 'confirmation'; ref: string }\n | { id: 'loading'; message?: string }\n | { id: 'error'; message: string }\n\nexport const screenStack = signal<ScreenState[]>([{ id: 'home' }])\n\n/** Push a new screen onto the stack. */\nexport function navigate(screen: ScreenState): void {\n screenStack.value = [...screenStack.value, screen]\n}\n\n/** Pop the top screen. No-op if already at root. */\nexport function back(): void {\n if (screenStack.value.length > 1) {\n screenStack.value = screenStack.value.slice(0, -1)\n }\n}\n\n/** Swap the top of the stack. Used for loading→result transitions. */\nexport function replace(screen: ScreenState): void {\n screenStack.value = [...screenStack.value.slice(0, -1), screen]\n}\n","export function BotIcon({ size = 24 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 8V4H8\" />\n <rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\" />\n <path d=\"M2 14h2\" />\n <path d=\"M20 14h2\" />\n <path d=\"M15 13v2\" />\n <path d=\"M9 13v2\" />\n </svg>\n )\n}\n","import { screenStack, back } from '../../module/screens/screens.state'\nimport { useLocale } from '../../i18n/index'\nimport { BotIcon } from '../icons/BotIcon'\n\ninterface HeaderProps {\n title: string\n}\n\n/** Chat window header bar — shows bot icon, title, and back button when on a nested screen. */\nexport function Header({ title }: HeaderProps) {\n const t = useLocale()\n const canGoBack = screenStack.value.length > 1\n\n return (\n <header class=\"jex-chat-header\">\n {canGoBack && (\n <button\n class=\"jex-header-back\"\n onClick={back}\n aria-label={t.back || 'Go back'}\n >\n {/* Chevron-left arrow */}\n <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\">\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n )}\n {!canGoBack && <BotIcon size={24} />}\n <div class=\"jex-header-info\">\n <h3>{title}</h3>\n <p>{t.statusOnline}</p>\n </div>\n </header>\n )\n}\n","export function ZapIcon({ size = 14 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <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\" />\n </svg>\n )\n}\n","import { ZapIcon } from '../icons/ZapIcon'\n\n/** \"Powered by Jexity\" branding bar with locale switcher. */\nexport function Footer() {\n return (\n <div class=\"jex-widget-footer\">\n <a\n href=\"https://jexity.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"jex-branding\"\n >\n <ZapIcon size={14} />\n <span>\n Powered by <strong>Jexity</strong>\n </span>\n </a>\n </div>\n )\n}\n","export function MessageIcon({ size = 28 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n )\n}\n","export function CloseIcon({ size = 28 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n )\n}\n","import type { JSX } from 'preact'\n\nexport function SparklesIcon({ size = 24, ...props }: JSX.SVGAttributes<SVGSVGElement> & { size?: number | string }) {\n return (\n <svg \n width={size} \n height={size} \n viewBox=\"0 0 24 24\" \n fill=\"none\" \n stroke=\"currentColor\" \n stroke-width=\"2\" \n stroke-linecap=\"round\" \n stroke-linejoin=\"round\"\n {...props}\n >\n <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\" />\n </svg>\n )\n}\n","import { isOpen } from '../../module/shell/shell.state'\nimport { useLocale } from '../../i18n/index'\nimport { MessageIcon } from '../icons/MessageIcon'\nimport { CloseIcon } from '../icons/CloseIcon'\nimport { BotIcon } from '../icons/BotIcon'\nimport { SparklesIcon } from '../icons/SparklesIcon'\n\ninterface FABProps {\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n iconOption?: 'chat' | 'bot' | 'sparkles'\n label?: string\n}\n\nconst ICON_MAP: Record<NonNullable<FABProps['iconOption']>, import('preact').VNode> = {\n chat: <MessageIcon size={28} />,\n bot: <BotIcon size={28} />,\n sparkles: <SparklesIcon size={28} />,\n}\n\nconst RADIUS_MAP: Record<NonNullable<FABProps['radius']>, string> = {\n none: '0px',\n sm: '0.5rem',\n md: '0.75rem',\n lg: '1.25rem',\n full: '9999px',\n}\n\n/** Floating action button — the circular or pill-shaped trigger. */\nexport function FAB({ radius = 'full', iconOption = 'chat', label = 'Chatte mit uns' }: FABProps) {\n const s = useLocale()\n const hasLabel = label !== ''\n\n return (\n <button\n class={`jex-floating-button ${!isOpen.value && hasLabel ? 'jex-has-label' : ''}`}\n style={{ borderRadius: RADIUS_MAP[radius] ?? '9999px' }}\n onClick={() => { isOpen.value = !isOpen.value }}\n aria-label={isOpen.value ? s.closeChatAriaLabel : s.openChatAriaLabel}\n >\n {isOpen.value ? (\n <CloseIcon size={28} />\n ) : (\n <div class=\"jex-fab-inner\">\n {ICON_MAP[iconOption]}\n {hasLabel && <span class=\"jex-fab-label\">{label}</span>}\n </div>\n )}\n </button>\n )\n}\n","import { signal } from '@preact/signals'\n\nexport interface Message {\n id: number\n text: string\n sender: 'user' | 'bot'\n}\n\n/** Demo messages — replaced in Phase 2 with Convex subscription */\nexport const messages = signal<Message[]>([])\nexport const isTyping = signal(false)\n/** Convex session ID — populated in Phase 2 */\nexport const sessionId = signal<string | null>(null)\n\n/** Reset all chat state for a new conversation. */\nexport function clearChat(): void {\n messages.value = []\n isTyping.value = false\n sessionId.value = null\n}\n","import { useState } from 'preact/hooks'\nimport { navigate } from '../../../module/screens/screens.state'\nimport { sessionRef, startNewSession } from '../../../module/visitor/visitor.state'\nimport { clearChat } from '../../chat/lib/chat'\nimport { useLocale } from '../../../i18n/index'\n\ninterface HomeScreenProps {\n greeting: string\n title: string\n}\n\n/**\n * Home / greeting screen.\n *\n * Session resume (GDPR):\n * - sessionStorage ref exists (same tab) → show \"Resume\" link\n * - No ref (new tab / after close) → show \"Have a reference number?\" manual input\n */\nexport function HomeScreen({ greeting, title }: HomeScreenProps) {\n const t = useLocale()\n const ref = sessionRef.value\n const [showLookup, setShowLookup] = useState(false)\n const [lookupRef, setLookupRef] = useState('')\n\n function handleStartChat() {\n startNewSession()\n clearChat()\n navigate({ id: 'chat' })\n }\n\n function handleResumeSession() {\n navigate({ id: 'chat' })\n }\n\n function handleLookupSubmit(e: Event) {\n e.preventDefault()\n if (lookupRef.trim()) {\n // TODO: Phase 2 — validate ref against Convex and load session\n navigate({ id: 'chat' })\n }\n }\n\n return (\n <div class=\"jex-home\">\n <div class=\"jex-home-greeting\">{greeting}</div>\n\n {ref ? (\n // Same-tab session exists in sessionStorage\n <div class=\"jex-home-actions\">\n <button class=\"jex-home-start-btn\" onClick={handleResumeSession}>\n {t.resumeConversation}\n </button>\n <button class=\"jex-home-new-btn\" onClick={handleStartChat}>\n {t.startNewConversation}\n </button>\n </div>\n ) : (\n // Fresh session or tab was closed\n <div class=\"jex-home-actions\">\n <button class=\"jex-home-start-btn\" onClick={handleStartChat}>\n {t.chatWith.replace('{title}', title)}\n </button>\n {!showLookup && (\n <button\n class=\"jex-home-lookup-link\"\n onClick={() => { setShowLookup(true) }}\n >\n {t.haveReferenceNumber}\n </button>\n )}\n {showLookup && (\n <form class=\"jex-home-lookup\" onSubmit={handleLookupSubmit}>\n <input\n class=\"jex-home-lookup-input\"\n type=\"text\"\n placeholder={t.referencePlaceholder}\n value={lookupRef}\n autoFocus\n onInput={(e) => { setLookupRef(e.currentTarget.value) }}\n />\n <button class=\"jex-home-lookup-submit\" type=\"submit\">{t.resume}</button>\n </form>\n )}\n </div>\n )}\n </div>\n )\n}\n","import { navigate } from '../../../module/screens/screens.state'\nimport { useLocale } from '../../../i18n/index'\n\ninterface SelectionScreenProps {\n title: string\n}\n\n/** Contact method selection — chat vs. submit ticket. */\nexport function SelectionScreen({ title }: SelectionScreenProps) {\n const t = useLocale()\n return (\n <div class=\"jex-selection\">\n <h2 class=\"jex-selection-title\">{t.howCanWeHelp}</h2>\n <div class=\"jex-selection-options\">\n <button\n class=\"jex-selection-option\"\n onClick={() => navigate({ id: 'chat' })}\n >\n <span class=\"jex-selection-icon\">💬</span>\n <span class=\"jex-selection-label\">{t.chatWith.replace('{title}', title)}</span>\n <span class=\"jex-selection-sub\">{t.getInstantHelp}</span>\n </button>\n <button\n class=\"jex-selection-option\"\n onClick={() => navigate({ id: 'form' })}\n >\n <span class=\"jex-selection-icon\">📝</span>\n <span class=\"jex-selection-label\">{t.submitTicket}</span>\n <span class=\"jex-selection-sub\">{t.replyByEmail}</span>\n </button>\n </div>\n </div>\n )\n}\n","interface BotMessageProps {\n text: string\n}\n\nexport function BotMessage({ text }: BotMessageProps) {\n return <div class=\"jex-message bot\">{text}</div>\n}\n","interface UserMessageProps {\n text: string\n}\n\nexport function UserMessage({ text }: UserMessageProps) {\n return <div class=\"jex-message user\">{text}</div>\n}\n","export function TypingIndicator() {\n return (\n <div class=\"jex-typing\">\n <span />\n <span />\n <span />\n </div>\n )\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { messages, isTyping } from '../lib/chat'\nimport { BotMessage } from './BotMessage'\nimport { UserMessage } from './UserMessage'\nimport { TypingIndicator } from './TypingIndicator'\n\n/** Scrollable message area — auto-scrolls to the latest message. */\nexport function MessageList() {\n const bottomRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n bottomRef.current?.scrollIntoView({ behavior: 'smooth' })\n }, [messages.value.length, isTyping.value])\n\n return (\n <div class=\"jex-chat-messages\">\n {messages.value.map((msg) =>\n msg.sender === 'bot'\n ? <BotMessage key={msg.id} text={msg.text} />\n : <UserMessage key={msg.id} text={msg.text} />\n )}\n {isTyping.value && <TypingIndicator />}\n <div ref={bottomRef} />\n </div>\n )\n}\n","export function SendIcon({ size = 18 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M22 2 11 13\" />\n <path d=\"M22 2 15 22 11 13 2 9l20-7z\" />\n </svg>\n )\n}\n","import { useSignal } from '@preact/signals'\nimport { messages, isTyping } from '../lib/chat'\nimport { markSessionActive } from '../../../module/visitor/visitor.state'\nimport { useLocale } from '../../../i18n/index'\nimport { SendIcon } from '../../../shared/icons/SendIcon'\n\n/** Text input + send button. Demo mode: echoes user messages with a 1s bot delay. */\nexport function ChatInput() {\n const s = useLocale()\n const input = useSignal('')\n\n function handleSend() {\n const text = input.value.trim()\n if (!text) { return }\n\n markSessionActive()\n\n messages.value = [\n ...messages.value,\n { id: Date.now(), text, sender: 'user' },\n ]\n input.value = ''\n isTyping.value = true\n\n // Demo echo — replaced in Phase 2 with Convex mutation\n setTimeout(() => {\n isTyping.value = false\n messages.value = [\n ...messages.value,\n {\n id: Date.now() + 1,\n text: `You said: \"${text}\". This is a demo of the Jexity Chat Widget!`,\n sender: 'bot',\n },\n ]\n }, 1000)\n }\n\n return (\n <div class=\"jex-chat-input\">\n <input\n type=\"text\"\n aria-label={s.inputPlaceholder}\n placeholder={s.inputPlaceholder}\n value={input.value}\n onInput={(e) => { input.value = e.currentTarget.value }}\n onKeyDown={(e) => { if (e.key === 'Enter') { handleSend() } }}\n />\n <button\n class=\"jex-send-btn\"\n onClick={handleSend}\n aria-label={s.sendAriaLabel}\n >\n <SendIcon size={18} />\n </button>\n </div>\n )\n}\n","import { useEffect } from 'preact/hooks'\nimport { messages } from '../lib/chat'\nimport { MessageList } from './MessageList'\nimport { ChatInput } from './ChatInput'\n\ninterface ChatScreenProps {\n /** Initial bot greeting — seeded once when chat is first opened. */\n greeting: string\n}\n\n/** Full chat conversation screen — orchestrates message list and input. */\nexport function ChatScreen({ greeting }: ChatScreenProps) {\n // Seed initial greeting message on first open (demo mode).\n // Phase 2: this becomes the first message from Convex subscription.\n useEffect(() => {\n if (messages.value.length === 0) {\n messages.value = [{ id: Date.now(), text: greeting, sender: 'bot' }]\n }\n }, [greeting])\n\n return (\n <>\n <MessageList />\n <ChatInput />\n </>\n )\n}\n","import { useState } from 'preact/hooks'\nimport { replace } from '../../../module/screens/screens.state'\nimport { useLocale } from '../../../i18n/index'\n\n/** Contact / ticket submission form. On submit: replace with loading, then confirmation/error. */\nexport function FormScreen() {\n const t = useLocale()\n const [name, setName] = useState('')\n const [email, setEmail] = useState('')\n const [message, setMessage] = useState('')\n\n async function handleSubmit(e: Event) {\n e.preventDefault()\n replace({ id: 'loading', message: t.submittingTicket })\n\n // TODO: Phase 2 — replace with Convex mutation\n await new Promise<void>(resolve => { setTimeout(resolve, 1200) })\n const ref = 'JEX-' + Math.random().toString(36).slice(2, 8).toUpperCase()\n replace({ id: 'confirmation', ref })\n }\n\n return (\n <div class=\"jex-form-screen\">\n <h2 class=\"jex-form-title\">{t.submitTicket}</h2>\n <form class=\"jex-form\" onSubmit={(e) => { void handleSubmit(e) }}>\n <input\n class=\"jex-form-input\"\n type=\"text\"\n placeholder={t.yourName}\n value={name}\n required\n onInput={(e) => { setName(e.currentTarget.value) }}\n />\n <input\n class=\"jex-form-input\"\n type=\"email\"\n placeholder={t.yourEmail}\n value={email}\n required\n onInput={(e) => { setEmail(e.currentTarget.value) }}\n />\n <textarea\n class=\"jex-form-textarea\"\n placeholder={t.howCanWeHelp}\n value={message}\n required\n onInput={(e) => { setMessage(e.currentTarget.value) }}\n />\n <button class=\"jex-form-submit\" type=\"submit\">{t.submit}</button>\n </form>\n </div>\n )\n}\n","import { isOpen } from '../../../module/shell/shell.state'\nimport { useLocale } from '../../../i18n/index'\n\ninterface ConfirmationScreenProps {\n ticketRef: string\n}\n\n/** Shown after async ticket submission. Displays ref# and closes widget on Done. */\nexport function ConfirmationScreen({ ticketRef }: ConfirmationScreenProps) {\n const t = useLocale()\n return (\n <div class=\"jex-confirmation\">\n <div class=\"jex-confirmation-icon\" aria-hidden=\"true\">✓</div>\n <h2 class=\"jex-confirmation-title\">{t.ticketSubmitted}</h2>\n <p class=\"jex-confirmation-body\">{t.yourReferenceNumber}</p>\n <div class=\"jex-confirmation-ref\">{ticketRef}</div>\n <p class=\"jex-confirmation-hint\">{t.sentToEmailHint}</p>\n <button\n class=\"jex-confirmation-done\"\n onClick={() => { isOpen.value = false }}\n >\n {t.done}\n </button>\n </div>\n )\n}\n","interface LoadingScreenProps {\n message?: string\n}\n\n/** Full-coverage overlay shown during async operations. */\nexport function LoadingScreen({ message }: LoadingScreenProps) {\n return (\n <div class=\"jex-overlay jex-loading\">\n <div class=\"jex-loading-spinner\" aria-hidden=\"true\" />\n {message && <p class=\"jex-loading-message\">{message}</p>}\n </div>\n )\n}\n","interface ErrorScreenProps {\n message: string\n onRetry?: () => void\n onBack?: () => void\n}\n\n/** Full-coverage overlay shown when an async operation fails. */\nexport function ErrorScreen({ message, onRetry, onBack }: ErrorScreenProps) {\n return (\n <div class=\"jex-overlay jex-error\">\n <p class=\"jex-error-message\">{message}</p>\n <div class=\"jex-error-actions\">\n {onRetry && (\n <button class=\"jex-error-retry\" onClick={onRetry}>\n Try again\n </button>\n )}\n {onBack && (\n <button class=\"jex-error-back\" onClick={onBack}>\n Go back\n </button>\n )}\n </div>\n </div>\n )\n}\n","import { screenStack } from './screens.state'\nimport type { ScreenState } from './screens.state'\nimport { back, replace } from './screens.state'\nimport { HomeScreen } from '../../features/home/components/HomeScreen'\nimport { SelectionScreen } from '../../features/selection/components/SelectionScreen'\nimport { ChatScreen } from '../../features/chat/components/ChatScreen'\nimport { FormScreen } from '../../features/ticket/components/FormScreen'\nimport { ConfirmationScreen } from '../../features/ticket/components/ConfirmationScreen'\nimport { LoadingScreen } from '../../shared/ui/LoadingScreen'\nimport { ErrorScreen } from '../../shared/ui/ErrorScreen'\n\ninterface ScreenRouterProps {\n greeting: string\n title: string\n}\n\n/** Renders only the active screen. No animation — add transitions later once routing is stable. */\nexport function ScreenRouter({ greeting, title }: ScreenRouterProps) {\n const stack = screenStack.value\n const currentScreen = stack[stack.length - 1] as ScreenState\n\n const confirmationState = stack.findLast(\n (s): s is Extract<ScreenState, { id: 'confirmation' }> => s.id === 'confirmation'\n )\n\n return (\n <div class=\"jex-screen-container\">\n {currentScreen.id === 'home' && (\n <HomeScreen greeting={greeting} title={title} />\n )}\n {currentScreen.id === 'selection' && (\n <SelectionScreen title={title} />\n )}\n {currentScreen.id === 'form' && (\n <FormScreen />\n )}\n {currentScreen.id === 'confirmation' && confirmationState && (\n <ConfirmationScreen ticketRef={confirmationState.ref} />\n )}\n {currentScreen.id === 'chat' && (\n <ChatScreen greeting={greeting} />\n )}\n {currentScreen.id === 'loading' && (\n <LoadingScreen message={currentScreen.message} />\n )}\n {currentScreen.id === 'error' && (\n <ErrorScreen\n message={currentScreen.message}\n onRetry={() => replace({ id: 'loading' })}\n onBack={back}\n />\n )}\n </div>\n )\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport { isOpen } from './shell.state'\nimport { initVisitor } from '../visitor/visitor.state'\nimport { locale, WIDGET_LOCALES, type WidgetLocale } from '../../i18n/index'\nimport { resolveWidgetLocale } from '../../i18n/resolve-widget-locale'\nimport { buildThemeStyle } from '../../shared/theme/build-theme'\nimport { Header } from '../../shared/ui/Header'\nimport { Footer } from '../../shared/ui/Footer'\nimport { FAB } from '../../shared/ui/FAB'\nimport { ScreenRouter } from '../screens/ScreenRouter'\nimport type { JexityChatOptions } from '../../types'\n\ninterface AppShellProps {\n options: JexityChatOptions\n}\n\n// Shape of the public /widget/config endpoint response.\n// Uses Pick so field types stay in sync with JexityChatOptions automatically.\ntype RemoteConfig = Pick<JexityChatOptions,\n | 'position' | 'colorScheme' | 'hideBranding'\n | 'accentColor' | 'fontFamily' | 'fontSize'\n | 'borderRadius' | 'windowWidth' | 'windowHeight'\n | 'triggerIcon' | 'triggerRadius' | 'triggerLabel'\n> & {\n primaryColor: string // required in DB (always set)\n title: string // maps from widgetConfigs.name\n welcomeMessage: string // maps from widgetConfigs.welcomeMessage\n locale?: WidgetLocale\n}\n\n/** Inner Preact component tree — rendered inside the shadow root container. */\nexport function AppShell({ options }: AppShellProps) {\n const [remoteConfig, setRemoteConfig] = useState<RemoteConfig | null>(null)\n\n // Fetch widget config from Convex by orgSlug; aborts on re-run or unmount\n useEffect(() => {\n const siteUrl = import.meta.env.VITE_CONVEX_SITE_URL\n\n if (!siteUrl) { return }\n\n const controller = new AbortController()\n\n void fetch(`${siteUrl}/widget/config?orgSlug=${encodeURIComponent(options.orgSlug)}`, { signal: controller.signal })\n .then(r => r.ok ? (r.json() as Promise<RemoteConfig>) : null)\n .then(cfg => { if (cfg) { setRemoteConfig(cfg) } })\n .catch(err => {\n if ((err as Error).name !== 'AbortError') {\n /* silent fail — widget renders with passed-in options */\n }\n })\n return () => {\n controller.abort()\n }\n }, [options.orgSlug])\n\n // Merge: embed script options take precedence over Convex config\n const title = options.title ?? remoteConfig?.title ?? 'Assistant'\n const greeting = options.greeting ?? remoteConfig?.welcomeMessage ?? `Hi! I'm ${title}. How can I help?`\n const effectiveLocale = options.locale ?? remoteConfig?.locale\n const effectivePosition = options.position ?? remoteConfig?.position\n const effectiveColorScheme = options.colorScheme ?? remoteConfig?.colorScheme\n const effectiveHideBranding = options.hideBranding ?? remoteConfig?.hideBranding ?? false\n const mergedTriggerIcon = options.triggerIcon ?? remoteConfig?.triggerIcon ?? 'chat'\n const mergedTriggerRadius = options.triggerRadius ?? remoteConfig?.triggerRadius ?? 'full'\n const mergedTriggerLabel = options.triggerLabel ?? remoteConfig?.triggerLabel ?? 'Chatte mit uns'\n\n const posLeft = effectivePosition === 'bottom-left'\n const colorSchemeClass = effectiveColorScheme === 'dark' || effectiveColorScheme === 'light' ? effectiveColorScheme : ''\n\n // All theme fields merged — remote config fills gaps not set by embed script\n const themeStyle = buildThemeStyle({\n ...options,\n primaryColor: options.primaryColor ?? remoteConfig?.primaryColor,\n accentColor: options.accentColor ?? remoteConfig?.accentColor,\n fontFamily: options.fontFamily ?? remoteConfig?.fontFamily,\n fontSize: options.fontSize ?? remoteConfig?.fontSize,\n borderRadius: options.borderRadius ?? remoteConfig?.borderRadius,\n windowWidth: options.windowWidth ?? remoteConfig?.windowWidth,\n windowHeight: options.windowHeight ?? remoteConfig?.windowHeight,\n })\n\n // Boot visitor state (loads session ref + active flag from sessionStorage)\n useEffect(() => {\n initVisitor()\n }, [])\n\n // Resolve locale from config + browser on mount\n useEffect(() => {\n locale.value = resolveWidgetLocale(effectiveLocale)\n }, [effectiveLocale])\n\n // Handle postMessage locale updates (dashboard preview)\n useEffect(() => {\n function handleMessage(e: MessageEvent): void {\n const allowedOrigin = options.parentOrigin ?? window.location.origin\n\n if (e.origin !== allowedOrigin) { return }\n if (e.data?.type !== 'jexity:config') { return }\n\n const { locale: newLocale } = e.data.payload as { locale?: string }\n\n if (newLocale && WIDGET_LOCALES.some(l => l.value === newLocale)) {\n locale.value = newLocale as WidgetLocale\n }\n }\n\n window.addEventListener('message', handleMessage)\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [options.parentOrigin])\n\n return (\n <div\n class={`jex-widget ${colorSchemeClass}`.trim()}\n style={themeStyle}\n >\n <div class={`jex-container${posLeft ? ' jex-pos-left' : ''}`}>\n {isOpen.value && (\n <div class=\"jex-chat-window\">\n <Header title={title} />\n <ScreenRouter greeting={greeting} title={title} />\n {!effectiveHideBranding && <Footer />}\n </div>\n )}\n <FAB\n iconOption={mergedTriggerIcon}\n radius={mergedTriggerRadius}\n label={mergedTriggerLabel}\n />\n </div>\n </div>\n )\n}\n","import widgetCss from './widget.css?inline'\n\n/**\n * Injects the widget's CSS into the given shadow root.\n *\n * We use a <style> element rather than Constructable StyleSheets because:\n * - Works in all browsers (Safari < 16.4 lacks adoptedStyleSheets support)\n * - Vite's ?inline import gives us the processed CSS as a string\n * - No external requests — fully bundled in the JS output\n */\nexport function injectStyles(shadowRoot: ShadowRoot): void {\n const style = document.createElement('style')\n style.textContent = widgetCss\n shadowRoot.appendChild(style)\n}\n","import { render } from 'preact'\nimport { AppShell } from './AppShell'\nimport { isOpen } from './shell.state'\nimport { injectStyles } from '../../shared/theme/inject-styles'\nimport type { JexityChatOptions, JexityChatInstance } from '../../types'\n\n/**\n * Mounts the widget into a Shadow DOM on the given host element.\n * Reuses an existing shadow root on re-mount (avoids \"already has a shadow root\" error\n * when the dev playground re-mounts on options change).\n */\nexport function mountWidget(\n hostEl: HTMLElement,\n options: JexityChatOptions,\n): () => void {\n const shadow = hostEl.shadowRoot ?? hostEl.attachShadow({ mode: 'open' })\n\n // Clear previous content\n while (shadow.firstChild) {\n shadow.removeChild(shadow.firstChild)\n }\n\n injectStyles(shadow)\n\n const container = document.createElement('div')\n shadow.appendChild(container)\n\n render(<AppShell options={options} />, container)\n\n return function shutdown() {\n render(null, container)\n isOpen.value = false\n }\n}\n\n/**\n * Creates a JexityChatInstance wrapping mountWidget.\n * Used by entry points (iife.ts, esm.ts).\n */\nexport function createInstance(\n mountEl: HTMLElement,\n options: JexityChatOptions,\n onRemove?: () => void,\n): JexityChatInstance {\n const shutdown = mountWidget(mountEl, options)\n const listeners = new Set<(open: boolean) => void>()\n\n const disposeSignal = isOpen.subscribe((value) => {\n for (const cb of listeners) { cb(value) }\n })\n\n const instance: JexityChatInstance = {\n shutdown() {\n disposeSignal()\n listeners.clear()\n shutdown()\n if (onRemove) { onRemove() }\n },\n open() { isOpen.value = true },\n close() { isOpen.value = false },\n toggle() { isOpen.value = !isOpen.value },\n get isOpen() { return isOpen.value },\n subscribe(cb: (open: boolean) => void) {\n listeners.add(cb)\n return () => { listeners.delete(cb) }\n },\n }\n\n return instance\n}\n","import { createInstance } from '../module/shell/mount'\nimport type { JexityChatOptions, JexityChatInstance } from '../types'\n\nexport type { JexityChatOptions, JexityChatInstance }\n\nlet activeInstance: JexityChatInstance | null = null\n\nexport function JexityChat(options: JexityChatOptions): JexityChatInstance {\n // Singleton: shut down previous instance if one exists\n if (activeInstance) {\n activeInstance.shutdown()\n }\n\n let mountEl: HTMLElement\n\n if (options.container) {\n mountEl =\n typeof options.container === 'string'\n ? document.querySelector<HTMLElement>(options.container)!\n : options.container\n } else {\n mountEl = document.createElement('div')\n mountEl.id = 'jexity-chat-widget'\n document.body.appendChild(mountEl)\n }\n\n const instance = createInstance(mountEl, options, () => {\n if (!options.container) { mountEl.remove() }\n if (activeInstance === instance) { activeInstance = null }\n })\n\n activeInstance = instance\n return instance\n}\n"],"names":["n","l","u","t","i","r","o","e","f","c","s","a","p","v","y","w","d","g","_","m","k","x","S","C","M","$","O","N","I","h","b","P","B","A","L","D","T","j","F","H","E","V","z","q","G","useSignal","isOpen","signal","SESSION_REF_KEY","SESSION_ACTIVE_KEY","sessionRef","hasActiveSession","generateRef","initVisitor","stored","active","startNewSession","ref","markSessionActive","en","de","SUPPORTED_LOCALES","WIDGET_DEFAULT_LOCALE","LOCALE_STORAGE_KEY","locale","STRINGS","useLocale","parseLocale","raw","base","resolveWidgetLocale","configLocale","config","saved","browser","buildThemeStyle","options","vars","primaryColor","theme","bg","text","border","screenStack","navigate","screen","back","replace","BotIcon","size","jsx","Header","title","canGoBack","jsxs","ZapIcon","Footer","MessageIcon","CloseIcon","SparklesIcon","props","ICON_MAP","RADIUS_MAP","FAB","radius","iconOption","label","hasLabel","messages","isTyping","sessionId","clearChat","HomeScreen","greeting","showLookup","setShowLookup","useState","lookupRef","setLookupRef","handleStartChat","handleResumeSession","handleLookupSubmit","SelectionScreen","BotMessage","UserMessage","TypingIndicator","MessageList","bottomRef","useRef","useEffect","msg","SendIcon","ChatInput","input","handleSend","ChatScreen","Fragment","FormScreen","name","setName","email","setEmail","message","setMessage","handleSubmit","resolve","ConfirmationScreen","ticketRef","LoadingScreen","ErrorScreen","onRetry","onBack","ScreenRouter","stack","currentScreen","confirmationState","AppShell","remoteConfig","setRemoteConfig","effectiveLocale","effectivePosition","effectiveColorScheme","effectiveHideBranding","mergedTriggerIcon","mergedTriggerRadius","mergedTriggerLabel","posLeft","colorSchemeClass","themeStyle","handleMessage","allowedOrigin","newLocale","WIDGET_LOCALES","injectStyles","shadowRoot","style","widgetCss","mountWidget","hostEl","shadow","container","render","createInstance","mountEl","onRemove","shutdown","listeners","disposeSignal","value","cb","activeInstance","JexityChat","instance"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/dist/preact.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/hooks/dist/hooks.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/compat/dist/compat.module.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/values/base64.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/common/index.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/values/value.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/values/errors.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/values/compare_utf8.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/index.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/logging.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/udf_path_utils.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/local_state.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/request_manager.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/server/functionName.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/server/components/paths.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/server/api.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/optimistic_updates_impl.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/vendor/long.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/remote_query_set.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/protocol.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/web_socket_manager.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/session.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/vendor/jwt-decode/index.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/authentication_manager.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/metrics.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/client.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/pagination.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/browser/sync/paginated_query_client.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/react/use_subscription.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/react/client.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/react/queries_observer.js","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/react/use_queries.js","../../../node_modules/.pnpm/@preact+signals-core@1.13.0/node_modules/@preact/signals-core/dist/signals-core.module.js","../../../node_modules/.pnpm/@preact+signals@2.7.1_preact@10.27.2/node_modules/@preact/signals/dist/signals.module.js","../src/module/shell/shell.state.ts","../src/lib/convex-url.ts","../src/lib/widget-config.ts","../src/module/shell/hooks/useRemoteConfig.ts","../src/i18n/locales/en.ts","../src/i18n/locales/de.ts","../src/i18n/config.ts","../src/i18n/index.ts","../src/i18n/resolve-widget-locale.ts","../src/module/shell/hooks/usePreviewBridge.ts","../src/module/visitor/visitor.state.ts","../src/shared/theme/build-theme.ts","../src/module/screens/screens.state.ts","../src/shared/icons/BotIcon.tsx","../src/shared/ui/Header.tsx","../src/shared/icons/ZapIcon.tsx","../src/shared/ui/Footer.tsx","../src/shared/icons/MessageIcon.tsx","../src/shared/icons/CloseIcon.tsx","../src/shared/icons/SparklesIcon.tsx","../src/shared/ui/FAB.tsx","../src/features/home/components/HomeScreen.tsx","../src/features/selection/components/SelectionScreen.tsx","../../../node_modules/.pnpm/convex@1.33.0_react@19.2.4/node_modules/convex/dist/esm/server/components/index.js","../../../packages/backend/convex/_generated/api.js","../src/features/chat/hooks/useConvexSession.ts","../src/features/chat/components/BotMessage.tsx","../src/features/chat/components/UserMessage.tsx","../src/features/chat/components/TypingIndicator.tsx","../src/features/chat/components/MessageList.tsx","../src/shared/icons/SendIcon.tsx","../src/features/chat/components/ChatInput.tsx","../src/features/chat/components/ChatScreen.tsx","../src/features/ticket/components/FormScreen.tsx","../src/features/ticket/components/ConfirmationScreen.tsx","../src/shared/ui/LoadingScreen.tsx","../src/shared/ui/ErrorScreen.tsx","../src/module/screens/ScreenRouter.tsx","../src/module/shell/WidgetShell.tsx","../src/shared/theme/inject-styles.ts","../src/module/shell/mount.tsx","../src/module/shell/widget-instance.ts","../src/entries/esm.ts"],"sourcesContent":["var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==n.key||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,x(u)&&o({t:u})},[n,e,t]),h(function(){return x(u)&&o({t:u}),n(function(){x(u)&&o({t:u})})},[n]),e}function x(n){var t,e,r=n.u,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}function R(n){n()}function w(n){return n}function k(){return[!1,R]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u.type=n,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},F=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);F(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?: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]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var ln,cn={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",cn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),ln=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),ln=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return ln.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function mn(n){return!!n&&n.$$typeof===q}function pn(n){return mn(n)&&n.type===u}function yn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function _n(n){return mn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,xn=mn,Rn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:R,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:l,createFactory:dn,cloneElement:_n,createRef:c,Fragment:u,isValidElement:mn,isElement:xn,isFragment:pn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,Rn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,xn as isElement,pn as isFragment,yn as isMemo,mn as isValidElement,z as lazy,M as memo,nn as render,R as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","\"use strict\";\nvar lookup = [];\nvar revLookup = [];\nvar Arr = Uint8Array;\nvar code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\nrevLookup[\"-\".charCodeAt(0)] = 62;\nrevLookup[\"_\".charCodeAt(0)] = 63;\nfunction getLens(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n var validLen = b64.indexOf(\"=\");\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n}\nexport function byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nfunction _byteLength(_b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nexport function toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0;\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 255;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 255;\n }\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n return arr;\n}\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n}\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n output.push(tripletToBase64(tmp));\n }\n return output.join(\"\");\n}\nexport function fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3;\n var parts = [];\n var maxChunkLength = 16383;\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(\n encodeChunk(\n uint8,\n i,\n i + maxChunkLength > len2 ? len2 : i + maxChunkLength\n )\n );\n }\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(\n lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\"\n );\n }\n return parts.join(\"\");\n}\nexport function fromByteArrayUrlSafeNoPadding(uint8) {\n return fromByteArray(uint8).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n//# sourceMappingURL=base64.js.map\n","\"use strict\";\nexport function parseArgs(args) {\n if (args === void 0) {\n return {};\n }\n if (!isSimpleObject(args)) {\n throw new Error(\n `The arguments to a Convex function must be an object. Received: ${args}`\n );\n }\n return args;\n}\nexport function validateDeploymentUrl(deploymentUrl) {\n if (typeof deploymentUrl === \"undefined\") {\n throw new Error(\n `Client created with undefined deployment address. If you used an environment variable, check that it's set.`\n );\n }\n if (typeof deploymentUrl !== \"string\") {\n throw new Error(\n `Invalid deployment address: found ${deploymentUrl}\".`\n );\n }\n if (!(deploymentUrl.startsWith(\"http:\") || deploymentUrl.startsWith(\"https:\"))) {\n throw new Error(\n `Invalid deployment address: Must start with \"https://\" or \"http://\". Found \"${deploymentUrl}\".`\n );\n }\n try {\n new URL(deploymentUrl);\n } catch {\n throw new Error(\n `Invalid deployment address: \"${deploymentUrl}\" is not a valid URL. If you believe this URL is correct, use the \\`skipConvexDeploymentUrlCheck\\` option to bypass this.`\n );\n }\n if (deploymentUrl.endsWith(\".convex.site\")) {\n throw new Error(\n `Invalid deployment address: \"${deploymentUrl}\" 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.`\n );\n }\n}\nexport function isSimpleObject(value) {\n const isObject = typeof value === \"object\";\n const prototype = Object.getPrototypeOf(value);\n const isSimple = prototype === null || prototype === Object.prototype || // Objects generated from other contexts (e.g. across Node.js `vm` modules) will not satisfy the previous\n // conditions but are still simple objects.\n prototype?.constructor?.name === \"Object\";\n return isObject && isSimple;\n}\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nimport * as Base64 from \"./base64.js\";\nimport { isSimpleObject } from \"../common/index.js\";\nconst LITTLE_ENDIAN = true;\nconst MIN_INT64 = BigInt(\"-9223372036854775808\");\nconst MAX_INT64 = BigInt(\"9223372036854775807\");\nconst ZERO = BigInt(\"0\");\nconst EIGHT = BigInt(\"8\");\nconst TWOFIFTYSIX = BigInt(\"256\");\nfunction isSpecial(n) {\n return Number.isNaN(n) || !Number.isFinite(n) || Object.is(n, -0);\n}\nexport function slowBigIntToBase64(value) {\n if (value < ZERO) {\n value -= MIN_INT64 + MIN_INT64;\n }\n let hex = value.toString(16);\n if (hex.length % 2 === 1) hex = \"0\" + hex;\n const bytes = new Uint8Array(new ArrayBuffer(8));\n let i = 0;\n for (const hexByte of hex.match(/.{2}/g).reverse()) {\n bytes.set([parseInt(hexByte, 16)], i++);\n value >>= EIGHT;\n }\n return Base64.fromByteArray(bytes);\n}\nexport function slowBase64ToBigInt(encoded) {\n const integerBytes = Base64.toByteArray(encoded);\n if (integerBytes.byteLength !== 8) {\n throw new Error(\n `Received ${integerBytes.byteLength} bytes, expected 8 for $integer`\n );\n }\n let value = ZERO;\n let power = ZERO;\n for (const byte of integerBytes) {\n value += BigInt(byte) * TWOFIFTYSIX ** power;\n power++;\n }\n if (value > MAX_INT64) {\n value += MIN_INT64 + MIN_INT64;\n }\n return value;\n}\nexport function modernBigIntToBase64(value) {\n if (value < MIN_INT64 || MAX_INT64 < value) {\n throw new Error(\n `BigInt ${value} does not fit into a 64-bit signed integer.`\n );\n }\n const buffer = new ArrayBuffer(8);\n new DataView(buffer).setBigInt64(0, value, true);\n return Base64.fromByteArray(new Uint8Array(buffer));\n}\nexport function modernBase64ToBigInt(encoded) {\n const integerBytes = Base64.toByteArray(encoded);\n if (integerBytes.byteLength !== 8) {\n throw new Error(\n `Received ${integerBytes.byteLength} bytes, expected 8 for $integer`\n );\n }\n const intBytesView = new DataView(integerBytes.buffer);\n return intBytesView.getBigInt64(0, true);\n}\nexport const bigIntToBase64 = DataView.prototype.setBigInt64 ? modernBigIntToBase64 : slowBigIntToBase64;\nexport const base64ToBigInt = DataView.prototype.getBigInt64 ? modernBase64ToBigInt : slowBase64ToBigInt;\nconst MAX_IDENTIFIER_LEN = 1024;\nfunction validateObjectField(k) {\n if (k.length > MAX_IDENTIFIER_LEN) {\n throw new Error(\n `Field name ${k} exceeds maximum field name length ${MAX_IDENTIFIER_LEN}.`\n );\n }\n if (k.startsWith(\"$\")) {\n throw new Error(`Field name ${k} starts with a '$', which is reserved.`);\n }\n for (let i = 0; i < k.length; i += 1) {\n const charCode = k.charCodeAt(i);\n if (charCode < 32 || charCode >= 127) {\n throw new Error(\n `Field name ${k} has invalid character '${k[i]}': Field names can only contain non-control ASCII characters`\n );\n }\n }\n}\nexport function jsonToConvex(value) {\n if (value === null) {\n return value;\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((value2) => jsonToConvex(value2));\n }\n if (typeof value !== \"object\") {\n throw new Error(`Unexpected type of ${value}`);\n }\n const entries = Object.entries(value);\n if (entries.length === 1) {\n const key = entries[0][0];\n if (key === \"$bytes\") {\n if (typeof value.$bytes !== \"string\") {\n throw new Error(`Malformed $bytes field on ${value}`);\n }\n return Base64.toByteArray(value.$bytes).buffer;\n }\n if (key === \"$integer\") {\n if (typeof value.$integer !== \"string\") {\n throw new Error(`Malformed $integer field on ${value}`);\n }\n return base64ToBigInt(value.$integer);\n }\n if (key === \"$float\") {\n if (typeof value.$float !== \"string\") {\n throw new Error(`Malformed $float field on ${value}`);\n }\n const floatBytes = Base64.toByteArray(value.$float);\n if (floatBytes.byteLength !== 8) {\n throw new Error(\n `Received ${floatBytes.byteLength} bytes, expected 8 for $float`\n );\n }\n const floatBytesView = new DataView(floatBytes.buffer);\n const float = floatBytesView.getFloat64(0, LITTLE_ENDIAN);\n if (!isSpecial(float)) {\n throw new Error(`Float ${float} should be encoded as a number`);\n }\n return float;\n }\n if (key === \"$set\") {\n throw new Error(\n `Received a Set which is no longer supported as a Convex type.`\n );\n }\n if (key === \"$map\") {\n throw new Error(\n `Received a Map which is no longer supported as a Convex type.`\n );\n }\n }\n const out = {};\n for (const [k, v] of Object.entries(value)) {\n validateObjectField(k);\n out[k] = jsonToConvex(v);\n }\n return out;\n}\nconst MAX_VALUE_FOR_ERROR_LEN = 16384;\nexport function stringifyValueForError(value) {\n const str = JSON.stringify(value, (_key, value2) => {\n if (value2 === void 0) {\n return \"undefined\";\n }\n if (typeof value2 === \"bigint\") {\n return `${value2.toString()}n`;\n }\n return value2;\n });\n if (str.length > MAX_VALUE_FOR_ERROR_LEN) {\n const rest = \"[...truncated]\";\n let truncateAt = MAX_VALUE_FOR_ERROR_LEN - rest.length;\n const codePoint = str.codePointAt(truncateAt - 1);\n if (codePoint !== void 0 && codePoint > 65535) {\n truncateAt -= 1;\n }\n return str.substring(0, truncateAt) + rest;\n }\n return str;\n}\nfunction convexToJsonInternal(value, originalValue, context, includeTopLevelUndefined) {\n if (value === void 0) {\n const contextText = context && ` (present at path ${context} in original object ${stringifyValueForError(\n originalValue\n )})`;\n throw new Error(\n `undefined is not a valid Convex value${contextText}. To learn about Convex's supported types, see https://docs.convex.dev/using/types.`\n );\n }\n if (value === null) {\n return value;\n }\n if (typeof value === \"bigint\") {\n if (value < MIN_INT64 || MAX_INT64 < value) {\n throw new Error(\n `BigInt ${value} does not fit into a 64-bit signed integer.`\n );\n }\n return { $integer: bigIntToBase64(value) };\n }\n if (typeof value === \"number\") {\n if (isSpecial(value)) {\n const buffer = new ArrayBuffer(8);\n new DataView(buffer).setFloat64(0, value, LITTLE_ENDIAN);\n return { $float: Base64.fromByteArray(new Uint8Array(buffer)) };\n } else {\n return value;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if (value instanceof ArrayBuffer) {\n return { $bytes: Base64.fromByteArray(new Uint8Array(value)) };\n }\n if (Array.isArray(value)) {\n return value.map(\n (value2, i) => convexToJsonInternal(value2, originalValue, context + `[${i}]`, false)\n );\n }\n if (value instanceof Set) {\n throw new Error(\n errorMessageForUnsupportedType(context, \"Set\", [...value], originalValue)\n );\n }\n if (value instanceof Map) {\n throw new Error(\n errorMessageForUnsupportedType(context, \"Map\", [...value], originalValue)\n );\n }\n if (!isSimpleObject(value)) {\n const theType = value?.constructor?.name;\n const typeName = theType ? `${theType} ` : \"\";\n throw new Error(\n errorMessageForUnsupportedType(context, typeName, value, originalValue)\n );\n }\n const out = {};\n const entries = Object.entries(value);\n entries.sort(([k1, _v1], [k2, _v2]) => k1 === k2 ? 0 : k1 < k2 ? -1 : 1);\n for (const [k, v] of entries) {\n if (v !== void 0) {\n validateObjectField(k);\n out[k] = convexToJsonInternal(v, originalValue, context + `.${k}`, false);\n } else if (includeTopLevelUndefined) {\n validateObjectField(k);\n out[k] = convexOrUndefinedToJsonInternal(\n v,\n originalValue,\n context + `.${k}`\n );\n }\n }\n return out;\n}\nfunction errorMessageForUnsupportedType(context, typeName, value, originalValue) {\n if (context) {\n return `${typeName}${stringifyValueForError(\n value\n )} is not a supported Convex type (present at path ${context} in original object ${stringifyValueForError(\n originalValue\n )}). To learn about Convex's supported types, see https://docs.convex.dev/using/types.`;\n } else {\n return `${typeName}${stringifyValueForError(\n value\n )} is not a supported Convex type.`;\n }\n}\nfunction convexOrUndefinedToJsonInternal(value, originalValue, context) {\n if (value === void 0) {\n return { $undefined: null };\n } else {\n if (originalValue === void 0) {\n throw new Error(\n `Programming error. Current value is ${stringifyValueForError(\n value\n )} but original value is undefined`\n );\n }\n return convexToJsonInternal(value, originalValue, context, false);\n }\n}\nexport function convexToJson(value) {\n return convexToJsonInternal(value, value, \"\", false);\n}\nexport function convexOrUndefinedToJson(value) {\n return convexOrUndefinedToJsonInternal(value, value, \"\");\n}\nexport function patchValueToJson(value) {\n return convexToJsonInternal(value, value, \"\", true);\n}\n//# sourceMappingURL=value.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a, _b;\nimport { stringifyValueForError } from \"./value.js\";\nconst IDENTIFYING_FIELD = Symbol.for(\"ConvexError\");\nexport class ConvexError extends (_b = Error, _a = IDENTIFYING_FIELD, _b) {\n constructor(data) {\n super(typeof data === \"string\" ? data : stringifyValueForError(data));\n __publicField(this, \"name\", \"ConvexError\");\n __publicField(this, \"data\");\n __publicField(this, _a, true);\n this.data = data;\n }\n}\n//# sourceMappingURL=errors.js.map\n","\"use strict\";\nexport function compareUTF8(a, b) {\n const aLength = a.length;\n const bLength = b.length;\n const length = Math.min(aLength, bLength);\n for (let i = 0; i < length; ) {\n const aCodePoint = a.codePointAt(i);\n const bCodePoint = b.codePointAt(i);\n if (aCodePoint !== bCodePoint) {\n if (aCodePoint < 128 && bCodePoint < 128) {\n return aCodePoint - bCodePoint;\n }\n const aLength2 = utf8Bytes(aCodePoint, aBytes);\n const bLength2 = utf8Bytes(bCodePoint, bBytes);\n return compareArrays(aBytes, aLength2, bBytes, bLength2);\n }\n i += utf16LengthForCodePoint(aCodePoint);\n }\n return aLength - bLength;\n}\nfunction compareArrays(a, aLength, b, bLength) {\n const length = Math.min(aLength, bLength);\n for (let i = 0; i < length; i++) {\n const aValue = a[i];\n const bValue = b[i];\n if (aValue !== bValue) {\n return aValue - bValue;\n }\n }\n return aLength - bLength;\n}\nexport function utf16LengthForCodePoint(aCodePoint) {\n return aCodePoint > 65535 ? 2 : 1;\n}\nconst arr = () => Array.from({ length: 4 }, () => 0);\nconst aBytes = arr();\nconst bBytes = arr();\nfunction utf8Bytes(codePoint, bytes) {\n if (codePoint < 128) {\n bytes[0] = codePoint;\n return 1;\n }\n let count;\n let offset;\n if (codePoint <= 2047) {\n count = 1;\n offset = 192;\n } else if (codePoint <= 65535) {\n count = 2;\n offset = 224;\n } else if (codePoint <= 1114111) {\n count = 3;\n offset = 240;\n } else {\n throw new Error(\"Invalid code point\");\n }\n bytes[0] = (codePoint >> 6 * count) + offset;\n let i = 1;\n for (; count > 0; count--) {\n const temp = codePoint >> 6 * (count - 1);\n bytes[i++] = 128 | temp & 63;\n }\n return i;\n}\nexport function greaterThan(a, b) {\n return compareUTF8(a, b) > 0;\n}\nexport function greaterThanEq(a, b) {\n return compareUTF8(a, b) >= 0;\n}\nexport function lessThan(a, b) {\n return compareUTF8(a, b) < 0;\n}\nexport function lessThanEq(a, b) {\n return compareUTF8(a, b) <= 0;\n}\n//# sourceMappingURL=compare_utf8.js.map\n","\"use strict\";\nexport const version = \"1.33.0\";\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nconst INFO_COLOR = \"color:rgb(0, 145, 255)\";\nfunction prefix_for_source(source) {\n switch (source) {\n case \"query\":\n return \"Q\";\n case \"mutation\":\n return \"M\";\n case \"action\":\n return \"A\";\n case \"any\":\n return \"?\";\n }\n}\nexport class DefaultLogger {\n constructor(options) {\n __publicField(this, \"_onLogLineFuncs\");\n __publicField(this, \"_verbose\");\n this._onLogLineFuncs = {};\n this._verbose = options.verbose;\n }\n addLogLineListener(func) {\n let id = Math.random().toString(36).substring(2, 15);\n for (let i = 0; i < 10; i++) {\n if (this._onLogLineFuncs[id] === void 0) {\n break;\n }\n id = Math.random().toString(36).substring(2, 15);\n }\n this._onLogLineFuncs[id] = func;\n return () => {\n delete this._onLogLineFuncs[id];\n };\n }\n logVerbose(...args) {\n if (this._verbose) {\n for (const func of Object.values(this._onLogLineFuncs)) {\n func(\"debug\", `${(/* @__PURE__ */ new Date()).toISOString()}`, ...args);\n }\n }\n }\n log(...args) {\n for (const func of Object.values(this._onLogLineFuncs)) {\n func(\"info\", ...args);\n }\n }\n warn(...args) {\n for (const func of Object.values(this._onLogLineFuncs)) {\n func(\"warn\", ...args);\n }\n }\n error(...args) {\n for (const func of Object.values(this._onLogLineFuncs)) {\n func(\"error\", ...args);\n }\n }\n}\nexport function instantiateDefaultLogger(options) {\n const logger = new DefaultLogger(options);\n logger.addLogLineListener((level, ...args) => {\n switch (level) {\n case \"debug\":\n console.debug(...args);\n break;\n case \"info\":\n console.log(...args);\n break;\n case \"warn\":\n console.warn(...args);\n break;\n case \"error\":\n console.error(...args);\n break;\n default: {\n level;\n console.log(...args);\n }\n }\n });\n return logger;\n}\nexport function instantiateNoopLogger(options) {\n return new DefaultLogger(options);\n}\nexport function logForFunction(logger, type, source, udfPath, message) {\n const prefix = prefix_for_source(source);\n if (typeof message === \"object\") {\n message = `ConvexError ${JSON.stringify(message.errorData, null, 2)}`;\n }\n if (type === \"info\") {\n const match = message.match(/^\\[.*?\\] /);\n if (match === null) {\n logger.error(\n `[CONVEX ${prefix}(${udfPath})] Could not parse console.log`\n );\n return;\n }\n const level = message.slice(1, match[0].length - 2);\n const args = message.slice(match[0].length);\n logger.log(`%c[CONVEX ${prefix}(${udfPath})] [${level}]`, INFO_COLOR, args);\n } else {\n logger.error(`[CONVEX ${prefix}(${udfPath})] ${message}`);\n }\n}\nexport function logFatalError(logger, message) {\n const errorMessage = `[CONVEX FATAL ERROR] ${message}`;\n logger.error(errorMessage);\n return new Error(errorMessage);\n}\nexport function createHybridErrorStacktrace(source, udfPath, result) {\n const prefix = prefix_for_source(source);\n return `[CONVEX ${prefix}(${udfPath})] ${result.errorMessage}\n Called by client`;\n}\nexport function forwardData(result, error) {\n error.data = result.errorData;\n return error;\n}\n//# sourceMappingURL=logging.js.map\n","\"use strict\";\nimport { convexToJson } from \"../../values/index.js\";\nexport function canonicalizeUdfPath(udfPath) {\n const pieces = udfPath.split(\":\");\n let moduleName;\n let functionName;\n if (pieces.length === 1) {\n moduleName = pieces[0];\n functionName = \"default\";\n } else {\n moduleName = pieces.slice(0, pieces.length - 1).join(\":\");\n functionName = pieces[pieces.length - 1];\n }\n if (moduleName.endsWith(\".js\")) {\n moduleName = moduleName.slice(0, -3);\n }\n return `${moduleName}:${functionName}`;\n}\nexport function serializePathAndArgs(udfPath, args) {\n return JSON.stringify({\n udfPath: canonicalizeUdfPath(udfPath),\n args: convexToJson(args)\n });\n}\nexport function serializePaginatedPathAndArgs(udfPath, args, options) {\n const { initialNumItems, id } = options;\n const result = JSON.stringify({\n type: \"paginated\",\n udfPath: canonicalizeUdfPath(udfPath),\n args: convexToJson(args),\n options: convexToJson({ initialNumItems, id })\n });\n return result;\n}\nexport function serializedQueryTokenIsPaginated(token) {\n return JSON.parse(token).type === \"paginated\";\n}\n//# sourceMappingURL=udf_path_utils.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { convexToJson } from \"../../values/index.js\";\nimport {\n canonicalizeUdfPath,\n serializePathAndArgs\n} from \"./udf_path_utils.js\";\nexport class LocalSyncState {\n constructor() {\n __publicField(this, \"nextQueryId\");\n __publicField(this, \"querySetVersion\");\n __publicField(this, \"querySet\");\n __publicField(this, \"queryIdToToken\");\n __publicField(this, \"identityVersion\");\n __publicField(this, \"auth\");\n __publicField(this, \"outstandingQueriesOlderThanRestart\");\n __publicField(this, \"outstandingAuthOlderThanRestart\");\n __publicField(this, \"paused\");\n __publicField(this, \"pendingQuerySetModifications\");\n this.nextQueryId = 0;\n this.querySetVersion = 0;\n this.identityVersion = 0;\n this.querySet = /* @__PURE__ */ new Map();\n this.queryIdToToken = /* @__PURE__ */ new Map();\n this.outstandingQueriesOlderThanRestart = /* @__PURE__ */ new Set();\n this.outstandingAuthOlderThanRestart = false;\n this.paused = false;\n this.pendingQuerySetModifications = /* @__PURE__ */ new Map();\n }\n hasSyncedPastLastReconnect() {\n return this.outstandingQueriesOlderThanRestart.size === 0 && !this.outstandingAuthOlderThanRestart;\n }\n markAuthCompletion() {\n this.outstandingAuthOlderThanRestart = false;\n }\n subscribe(udfPath, args, journal, componentPath) {\n const canonicalizedUdfPath = canonicalizeUdfPath(udfPath);\n const queryToken = serializePathAndArgs(canonicalizedUdfPath, args);\n const existingEntry = this.querySet.get(queryToken);\n if (existingEntry !== void 0) {\n existingEntry.numSubscribers += 1;\n return {\n queryToken,\n modification: null,\n unsubscribe: () => this.removeSubscriber(queryToken)\n };\n } else {\n const queryId = this.nextQueryId++;\n const query = {\n id: queryId,\n canonicalizedUdfPath,\n args,\n numSubscribers: 1,\n journal,\n componentPath\n };\n this.querySet.set(queryToken, query);\n this.queryIdToToken.set(queryId, queryToken);\n const baseVersion = this.querySetVersion;\n const newVersion = this.querySetVersion + 1;\n const add = {\n type: \"Add\",\n queryId,\n udfPath: canonicalizedUdfPath,\n args: [convexToJson(args)],\n journal,\n componentPath\n };\n if (this.paused) {\n this.pendingQuerySetModifications.set(queryId, add);\n } else {\n this.querySetVersion = newVersion;\n }\n const modification = {\n type: \"ModifyQuerySet\",\n baseVersion,\n newVersion,\n modifications: [add]\n };\n return {\n queryToken,\n modification,\n unsubscribe: () => this.removeSubscriber(queryToken)\n };\n }\n }\n transition(transition) {\n for (const modification of transition.modifications) {\n switch (modification.type) {\n case \"QueryUpdated\":\n case \"QueryFailed\": {\n this.outstandingQueriesOlderThanRestart.delete(modification.queryId);\n const journal = modification.journal;\n if (journal !== void 0) {\n const queryToken = this.queryIdToToken.get(modification.queryId);\n if (queryToken !== void 0) {\n this.querySet.get(queryToken).journal = journal;\n }\n }\n break;\n }\n case \"QueryRemoved\": {\n this.outstandingQueriesOlderThanRestart.delete(modification.queryId);\n break;\n }\n default: {\n modification;\n throw new Error(`Invalid modification ${modification.type}`);\n }\n }\n }\n }\n queryId(udfPath, args) {\n const canonicalizedUdfPath = canonicalizeUdfPath(udfPath);\n const queryToken = serializePathAndArgs(canonicalizedUdfPath, args);\n const existingEntry = this.querySet.get(queryToken);\n if (existingEntry !== void 0) {\n return existingEntry.id;\n }\n return null;\n }\n isCurrentOrNewerAuthVersion(version) {\n return version >= this.identityVersion;\n }\n getAuth() {\n return this.auth;\n }\n setAuth(value) {\n this.auth = {\n tokenType: \"User\",\n value\n };\n const baseVersion = this.identityVersion;\n if (!this.paused) {\n this.identityVersion = baseVersion + 1;\n }\n return {\n type: \"Authenticate\",\n baseVersion,\n ...this.auth\n };\n }\n setAdminAuth(value, actingAs) {\n const auth = {\n tokenType: \"Admin\",\n value,\n impersonating: actingAs\n };\n this.auth = auth;\n const baseVersion = this.identityVersion;\n if (!this.paused) {\n this.identityVersion = baseVersion + 1;\n }\n return {\n type: \"Authenticate\",\n baseVersion,\n ...auth\n };\n }\n clearAuth() {\n this.auth = void 0;\n this.markAuthCompletion();\n const baseVersion = this.identityVersion;\n if (!this.paused) {\n this.identityVersion = baseVersion + 1;\n }\n return {\n type: \"Authenticate\",\n tokenType: \"None\",\n baseVersion\n };\n }\n hasAuth() {\n return !!this.auth;\n }\n isNewAuth(value) {\n return this.auth?.value !== value;\n }\n queryPath(queryId) {\n const pathAndArgs = this.queryIdToToken.get(queryId);\n if (pathAndArgs) {\n return this.querySet.get(pathAndArgs).canonicalizedUdfPath;\n }\n return null;\n }\n queryArgs(queryId) {\n const pathAndArgs = this.queryIdToToken.get(queryId);\n if (pathAndArgs) {\n return this.querySet.get(pathAndArgs).args;\n }\n return null;\n }\n queryToken(queryId) {\n return this.queryIdToToken.get(queryId) ?? null;\n }\n queryJournal(queryToken) {\n return this.querySet.get(queryToken)?.journal;\n }\n restart(oldRemoteQueryResults) {\n this.unpause();\n this.outstandingQueriesOlderThanRestart.clear();\n const modifications = [];\n for (const localQuery of this.querySet.values()) {\n const add = {\n type: \"Add\",\n queryId: localQuery.id,\n udfPath: localQuery.canonicalizedUdfPath,\n args: [convexToJson(localQuery.args)],\n journal: localQuery.journal,\n componentPath: localQuery.componentPath\n };\n modifications.push(add);\n if (!oldRemoteQueryResults.has(localQuery.id)) {\n this.outstandingQueriesOlderThanRestart.add(localQuery.id);\n }\n }\n this.querySetVersion = 1;\n const querySet = {\n type: \"ModifyQuerySet\",\n baseVersion: 0,\n newVersion: 1,\n modifications\n };\n if (!this.auth) {\n this.identityVersion = 0;\n return [querySet, void 0];\n }\n this.outstandingAuthOlderThanRestart = true;\n const authenticate = {\n type: \"Authenticate\",\n baseVersion: 0,\n ...this.auth\n };\n this.identityVersion = 1;\n return [querySet, authenticate];\n }\n pause() {\n this.paused = true;\n }\n resume() {\n const querySet = this.pendingQuerySetModifications.size > 0 ? {\n type: \"ModifyQuerySet\",\n baseVersion: this.querySetVersion,\n newVersion: ++this.querySetVersion,\n modifications: Array.from(\n this.pendingQuerySetModifications.values()\n )\n } : void 0;\n const authenticate = this.auth !== void 0 ? {\n type: \"Authenticate\",\n baseVersion: this.identityVersion++,\n ...this.auth\n } : void 0;\n this.unpause();\n return [querySet, authenticate];\n }\n unpause() {\n this.paused = false;\n this.pendingQuerySetModifications.clear();\n }\n removeSubscriber(queryToken) {\n const localQuery = this.querySet.get(queryToken);\n if (localQuery.numSubscribers > 1) {\n localQuery.numSubscribers -= 1;\n return null;\n } else {\n this.querySet.delete(queryToken);\n this.queryIdToToken.delete(localQuery.id);\n this.outstandingQueriesOlderThanRestart.delete(localQuery.id);\n const baseVersion = this.querySetVersion;\n const newVersion = this.querySetVersion + 1;\n const remove = {\n type: \"Remove\",\n queryId: localQuery.id\n };\n if (this.paused) {\n if (this.pendingQuerySetModifications.has(localQuery.id)) {\n this.pendingQuerySetModifications.delete(localQuery.id);\n } else {\n this.pendingQuerySetModifications.set(localQuery.id, remove);\n }\n } else {\n this.querySetVersion = newVersion;\n }\n return {\n type: \"ModifyQuerySet\",\n baseVersion,\n newVersion,\n modifications: [remove]\n };\n }\n }\n}\n//# sourceMappingURL=local_state.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { jsonToConvex } from \"../../values/index.js\";\nimport { logForFunction } from \"../logging.js\";\nexport class RequestManager {\n constructor(logger, markConnectionStateDirty) {\n this.logger = logger;\n this.markConnectionStateDirty = markConnectionStateDirty;\n __publicField(this, \"inflightRequests\");\n __publicField(this, \"requestsOlderThanRestart\");\n __publicField(this, \"inflightMutationsCount\", 0);\n __publicField(this, \"inflightActionsCount\", 0);\n this.inflightRequests = /* @__PURE__ */ new Map();\n this.requestsOlderThanRestart = /* @__PURE__ */ new Set();\n }\n request(message, sent) {\n const result = new Promise((resolve) => {\n const status = sent ? \"Requested\" : \"NotSent\";\n this.inflightRequests.set(message.requestId, {\n message,\n status: { status, requestedAt: /* @__PURE__ */ new Date(), onResult: resolve }\n });\n if (message.type === \"Mutation\") {\n this.inflightMutationsCount++;\n } else if (message.type === \"Action\") {\n this.inflightActionsCount++;\n }\n });\n this.markConnectionStateDirty();\n return result;\n }\n /**\n * Update the state after receiving a response.\n *\n * @returns A RequestId if the request is complete and its optimistic update\n * can be dropped, null otherwise.\n */\n onResponse(response) {\n const requestInfo = this.inflightRequests.get(response.requestId);\n if (requestInfo === void 0) {\n return null;\n }\n if (requestInfo.status.status === \"Completed\") {\n return null;\n }\n const udfType = requestInfo.message.type === \"Mutation\" ? \"mutation\" : \"action\";\n const udfPath = requestInfo.message.udfPath;\n for (const line of response.logLines) {\n logForFunction(this.logger, \"info\", udfType, udfPath, line);\n }\n const status = requestInfo.status;\n let result;\n let onResolve;\n if (response.success) {\n result = {\n success: true,\n logLines: response.logLines,\n value: jsonToConvex(response.result)\n };\n onResolve = () => status.onResult(result);\n } else {\n const errorMessage = response.result;\n const { errorData } = response;\n logForFunction(this.logger, \"error\", udfType, udfPath, errorMessage);\n result = {\n success: false,\n errorMessage,\n errorData: errorData !== void 0 ? jsonToConvex(errorData) : void 0,\n logLines: response.logLines\n };\n onResolve = () => status.onResult(result);\n }\n if (response.type === \"ActionResponse\" || !response.success) {\n onResolve();\n this.inflightRequests.delete(response.requestId);\n this.requestsOlderThanRestart.delete(response.requestId);\n if (requestInfo.message.type === \"Action\") {\n this.inflightActionsCount--;\n } else if (requestInfo.message.type === \"Mutation\") {\n this.inflightMutationsCount--;\n }\n this.markConnectionStateDirty();\n return { requestId: response.requestId, result };\n }\n requestInfo.status = {\n status: \"Completed\",\n result,\n ts: response.ts,\n onResolve\n };\n return null;\n }\n // Remove and returns completed requests.\n removeCompleted(ts) {\n const completeRequests = /* @__PURE__ */ new Map();\n for (const [requestId, requestInfo] of this.inflightRequests.entries()) {\n const status = requestInfo.status;\n if (status.status === \"Completed\" && status.ts.lessThanOrEqual(ts)) {\n status.onResolve();\n completeRequests.set(requestId, status.result);\n if (requestInfo.message.type === \"Mutation\") {\n this.inflightMutationsCount--;\n } else if (requestInfo.message.type === \"Action\") {\n this.inflightActionsCount--;\n }\n this.inflightRequests.delete(requestId);\n this.requestsOlderThanRestart.delete(requestId);\n }\n }\n if (completeRequests.size > 0) {\n this.markConnectionStateDirty();\n }\n return completeRequests;\n }\n restart() {\n this.requestsOlderThanRestart = new Set(this.inflightRequests.keys());\n const allMessages = [];\n for (const [requestId, value] of this.inflightRequests) {\n if (value.status.status === \"NotSent\") {\n value.status.status = \"Requested\";\n allMessages.push(value.message);\n continue;\n }\n if (value.message.type === \"Mutation\") {\n allMessages.push(value.message);\n } else if (value.message.type === \"Action\") {\n this.inflightRequests.delete(requestId);\n this.requestsOlderThanRestart.delete(requestId);\n this.inflightActionsCount--;\n if (value.status.status === \"Completed\") {\n throw new Error(\"Action should never be in 'Completed' state\");\n }\n value.status.onResult({\n success: false,\n errorMessage: \"Connection lost while action was in flight\",\n logLines: []\n });\n }\n }\n this.markConnectionStateDirty();\n return allMessages;\n }\n resume() {\n const allMessages = [];\n for (const [, value] of this.inflightRequests) {\n if (value.status.status === \"NotSent\") {\n value.status.status = \"Requested\";\n allMessages.push(value.message);\n continue;\n }\n }\n return allMessages;\n }\n /**\n * @returns true if there are any requests that have been requested but have\n * not be completed yet.\n */\n hasIncompleteRequests() {\n for (const requestInfo of this.inflightRequests.values()) {\n if (requestInfo.status.status === \"Requested\") {\n return true;\n }\n }\n return false;\n }\n /**\n * @returns true if there are any inflight requests, including ones that have\n * completed on the server, but have not been applied.\n */\n hasInflightRequests() {\n return this.inflightRequests.size > 0;\n }\n /**\n * @returns true if there are any inflight requests, that have been hanging around\n * since prior to the most recent restart.\n */\n hasSyncedPastLastReconnect() {\n return this.requestsOlderThanRestart.size === 0;\n }\n timeOfOldestInflightRequest() {\n if (this.inflightRequests.size === 0) {\n return null;\n }\n let oldestInflightRequest = Date.now();\n for (const request of this.inflightRequests.values()) {\n if (request.status.status !== \"Completed\") {\n if (request.status.requestedAt.getTime() < oldestInflightRequest) {\n oldestInflightRequest = request.status.requestedAt.getTime();\n }\n }\n }\n return new Date(oldestInflightRequest);\n }\n /**\n * @returns The number of mutations currently in flight.\n */\n inflightMutations() {\n return this.inflightMutationsCount;\n }\n /**\n * @returns The number of actions currently in flight.\n */\n inflightActions() {\n return this.inflightActionsCount;\n }\n}\n//# sourceMappingURL=request_manager.js.map\n","\"use strict\";\nexport const functionName = Symbol.for(\"functionName\");\n//# sourceMappingURL=functionName.js.map\n","\"use strict\";\nimport { functionName } from \"../functionName.js\";\nexport const toReferencePath = Symbol.for(\"toReferencePath\");\nexport function setReferencePath(obj, value) {\n obj[toReferencePath] = value;\n}\nexport function extractReferencePath(reference) {\n return reference[toReferencePath] ?? null;\n}\nexport function isFunctionHandle(s) {\n return s.startsWith(\"function://\");\n}\nexport function getFunctionAddress(functionReference) {\n let functionAddress;\n if (typeof functionReference === \"string\") {\n if (isFunctionHandle(functionReference)) {\n functionAddress = { functionHandle: functionReference };\n } else {\n functionAddress = { name: functionReference };\n }\n } else if (functionReference[functionName]) {\n functionAddress = { name: functionReference[functionName] };\n } else {\n const referencePath = extractReferencePath(functionReference);\n if (!referencePath) {\n throw new Error(`${functionReference} is not a functionReference`);\n }\n functionAddress = { reference: referencePath };\n }\n return functionAddress;\n}\n//# sourceMappingURL=paths.js.map\n","\"use strict\";\nimport { functionName } from \"./functionName.js\";\nimport { getFunctionAddress } from \"./components/paths.js\";\nexport function getFunctionName(functionReference) {\n const address = getFunctionAddress(functionReference);\n if (address.name === void 0) {\n if (address.functionHandle !== void 0) {\n throw new Error(\n `Expected function reference like \"api.file.func\" or \"internal.file.func\", but received function handle ${address.functionHandle}`\n );\n } else if (address.reference !== void 0) {\n throw new Error(\n `Expected function reference in the current component like \"api.file.func\" or \"internal.file.func\", but received reference ${address.reference}`\n );\n }\n throw new Error(\n `Expected function reference like \"api.file.func\" or \"internal.file.func\", but received ${JSON.stringify(address)}`\n );\n }\n if (typeof functionReference === \"string\") return functionReference;\n const name = functionReference[functionName];\n if (!name) {\n throw new Error(`${functionReference} is not a functionReference`);\n }\n return name;\n}\nexport function makeFunctionReference(name) {\n return { [functionName]: name };\n}\nfunction createApi(pathParts = []) {\n const handler = {\n get(_, prop) {\n if (typeof prop === \"string\") {\n const newParts = [...pathParts, prop];\n return createApi(newParts);\n } else if (prop === functionName) {\n if (pathParts.length < 2) {\n const found = [\"api\", ...pathParts].join(\".\");\n throw new Error(\n `API path is expected to be of the form \\`api.moduleName.functionName\\`. Found: \\`${found}\\``\n );\n }\n const path = pathParts.slice(0, -1).join(\"/\");\n const exportName = pathParts[pathParts.length - 1];\n if (exportName === \"default\") {\n return path;\n } else {\n return path + \":\" + exportName;\n }\n } else if (prop === Symbol.toStringTag) {\n return \"FunctionReference\";\n } else {\n return void 0;\n }\n }\n };\n return new Proxy({}, handler);\n}\nexport function filterApi(api) {\n return api;\n}\nexport function justInternal(api) {\n return api;\n}\nexport function justPublic(api) {\n return api;\n}\nexport function justQueries(api) {\n return api;\n}\nexport function justMutations(api) {\n return api;\n}\nexport function justActions(api) {\n return api;\n}\nexport function justPaginatedQueries(api) {\n return api;\n}\nexport function justSchedulable(api) {\n return api;\n}\nexport const anyApi = createApi();\n//# sourceMappingURL=api.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport {\n getFunctionName\n} from \"../../server/api.js\";\nimport { parseArgs } from \"../../common/index.js\";\nimport { createHybridErrorStacktrace, forwardData } from \"../logging.js\";\nimport {\n canonicalizeUdfPath,\n serializePathAndArgs\n} from \"./udf_path_utils.js\";\nimport { ConvexError } from \"../../values/errors.js\";\nclass OptimisticLocalStoreImpl {\n constructor(queryResults) {\n // A references of the query results in OptimisticQueryResults\n __publicField(this, \"queryResults\");\n // All of the queries modified by this class\n __publicField(this, \"modifiedQueries\");\n this.queryResults = queryResults;\n this.modifiedQueries = [];\n }\n getQuery(query, ...args) {\n const queryArgs = parseArgs(args[0]);\n const name = getFunctionName(query);\n const queryResult = this.queryResults.get(\n serializePathAndArgs(name, queryArgs)\n );\n if (queryResult === void 0) {\n return void 0;\n }\n return OptimisticLocalStoreImpl.queryValue(queryResult.result);\n }\n getAllQueries(query) {\n const queriesWithName = [];\n const name = getFunctionName(query);\n for (const queryResult of this.queryResults.values()) {\n if (queryResult.udfPath === canonicalizeUdfPath(name)) {\n queriesWithName.push({\n args: queryResult.args,\n value: OptimisticLocalStoreImpl.queryValue(queryResult.result)\n });\n }\n }\n return queriesWithName;\n }\n setQuery(queryReference, args, value) {\n const queryArgs = parseArgs(args);\n const name = getFunctionName(queryReference);\n const queryToken = serializePathAndArgs(name, queryArgs);\n let result;\n if (value === void 0) {\n result = void 0;\n } else {\n result = {\n success: true,\n value,\n // It's an optimistic update, so there are no function logs to show.\n logLines: []\n };\n }\n const query = {\n udfPath: name,\n args: queryArgs,\n result\n };\n this.queryResults.set(queryToken, query);\n this.modifiedQueries.push(queryToken);\n }\n static queryValue(result) {\n if (result === void 0) {\n return void 0;\n } else if (result.success) {\n return result.value;\n } else {\n return void 0;\n }\n }\n}\nexport class OptimisticQueryResults {\n constructor() {\n __publicField(this, \"queryResults\");\n __publicField(this, \"optimisticUpdates\");\n this.queryResults = /* @__PURE__ */ new Map();\n this.optimisticUpdates = [];\n }\n /**\n * Apply all optimistic updates on top of server query results\n */\n ingestQueryResultsFromServer(serverQueryResults, optimisticUpdatesToDrop) {\n this.optimisticUpdates = this.optimisticUpdates.filter((updateAndId) => {\n return !optimisticUpdatesToDrop.has(updateAndId.mutationId);\n });\n const oldQueryResults = this.queryResults;\n this.queryResults = new Map(serverQueryResults);\n const localStore = new OptimisticLocalStoreImpl(this.queryResults);\n for (const updateAndId of this.optimisticUpdates) {\n updateAndId.update(localStore);\n }\n const changedQueries = [];\n for (const [queryToken, query] of this.queryResults) {\n const oldQuery = oldQueryResults.get(queryToken);\n if (oldQuery === void 0 || oldQuery.result !== query.result) {\n changedQueries.push(queryToken);\n }\n }\n return changedQueries;\n }\n applyOptimisticUpdate(update, mutationId) {\n this.optimisticUpdates.push({\n update,\n mutationId\n });\n const localStore = new OptimisticLocalStoreImpl(this.queryResults);\n update(localStore);\n return localStore.modifiedQueries;\n }\n /**\n * \"Raw\" with respect to errors vs values, but query results still have\n * optimistic updates applied.\n *\n * @internal\n */\n rawQueryResult(queryToken) {\n const query = this.queryResults.get(queryToken);\n if (query === void 0) {\n return void 0;\n }\n return query.result;\n }\n queryResult(queryToken) {\n const query = this.queryResults.get(queryToken);\n if (query === void 0) {\n return void 0;\n }\n const result = query.result;\n if (result === void 0) {\n return void 0;\n } else if (result.success) {\n return result.value;\n } else {\n if (result.errorData !== void 0) {\n throw forwardData(\n result,\n new ConvexError(\n createHybridErrorStacktrace(\"query\", query.udfPath, result)\n )\n );\n }\n throw new Error(\n createHybridErrorStacktrace(\"query\", query.udfPath, result)\n );\n }\n }\n hasQueryResult(queryToken) {\n return this.queryResults.get(queryToken) !== void 0;\n }\n /**\n * @internal\n */\n queryLogs(queryToken) {\n const query = this.queryResults.get(queryToken);\n return query?.result?.logLines;\n }\n}\n//# sourceMappingURL=optimistic_updates_impl.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nexport class Long {\n constructor(low, high) {\n __publicField(this, \"low\");\n __publicField(this, \"high\");\n __publicField(this, \"__isUnsignedLong__\");\n this.low = low | 0;\n this.high = high | 0;\n this.__isUnsignedLong__ = true;\n }\n static isLong(obj) {\n return (obj && obj.__isUnsignedLong__) === true;\n }\n // prettier-ignore\n static fromBytesLE(bytes) {\n return new Long(\n bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24,\n bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24\n );\n }\n // prettier-ignore\n toBytesLE() {\n const hi = this.high;\n const lo = this.low;\n return [\n lo & 255,\n lo >>> 8 & 255,\n lo >>> 16 & 255,\n lo >>> 24,\n hi & 255,\n hi >>> 8 & 255,\n hi >>> 16 & 255,\n hi >>> 24\n ];\n }\n static fromNumber(value) {\n if (isNaN(value)) return UZERO;\n if (value < 0) return UZERO;\n if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n return new Long(value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0);\n }\n toString() {\n return (BigInt(this.high) * BigInt(TWO_PWR_32_DBL) + BigInt(this.low)).toString();\n }\n equals(other) {\n if (!Long.isLong(other)) other = Long.fromValue(other);\n if (this.high >>> 31 === 1 && other.high >>> 31 === 1) return false;\n return this.high === other.high && this.low === other.low;\n }\n notEquals(other) {\n return !this.equals(other);\n }\n comp(other) {\n if (!Long.isLong(other)) other = Long.fromValue(other);\n if (this.equals(other)) return 0;\n return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1;\n }\n lessThanOrEqual(other) {\n return this.comp(\n /* validates */\n other\n ) <= 0;\n }\n static fromValue(val) {\n if (typeof val === \"number\") return Long.fromNumber(val);\n return new Long(val.low, val.high);\n }\n}\nconst UZERO = new Long(0, 0);\nconst TWO_PWR_16_DBL = 1 << 16;\nconst TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\nconst TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\nconst MAX_UNSIGNED_VALUE = new Long(4294967295 | 0, 4294967295 | 0);\n//# sourceMappingURL=long.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { jsonToConvex } from \"../../values/index.js\";\nimport { Long } from \"../../vendor/long.js\";\nimport { logForFunction } from \"../logging.js\";\nexport class RemoteQuerySet {\n constructor(queryPath, logger) {\n __publicField(this, \"version\");\n __publicField(this, \"remoteQuerySet\");\n __publicField(this, \"queryPath\");\n __publicField(this, \"logger\");\n this.version = { querySet: 0, ts: Long.fromNumber(0), identity: 0 };\n this.remoteQuerySet = /* @__PURE__ */ new Map();\n this.queryPath = queryPath;\n this.logger = logger;\n }\n transition(transition) {\n const start = transition.startVersion;\n if (this.version.querySet !== start.querySet || this.version.ts.notEquals(start.ts) || this.version.identity !== start.identity) {\n throw new Error(\n `Invalid start version: ${start.ts.toString()}:${start.querySet}:${start.identity}, transitioning from ${this.version.ts.toString()}:${this.version.querySet}:${this.version.identity}`\n );\n }\n for (const modification of transition.modifications) {\n switch (modification.type) {\n case \"QueryUpdated\": {\n const queryPath = this.queryPath(modification.queryId);\n if (queryPath) {\n for (const line of modification.logLines) {\n logForFunction(this.logger, \"info\", \"query\", queryPath, line);\n }\n }\n const value = jsonToConvex(modification.value ?? null);\n this.remoteQuerySet.set(modification.queryId, {\n success: true,\n value,\n logLines: modification.logLines\n });\n break;\n }\n case \"QueryFailed\": {\n const queryPath = this.queryPath(modification.queryId);\n if (queryPath) {\n for (const line of modification.logLines) {\n logForFunction(this.logger, \"info\", \"query\", queryPath, line);\n }\n }\n const { errorData } = modification;\n this.remoteQuerySet.set(modification.queryId, {\n success: false,\n errorMessage: modification.errorMessage,\n errorData: errorData !== void 0 ? jsonToConvex(errorData) : void 0,\n logLines: modification.logLines\n });\n break;\n }\n case \"QueryRemoved\": {\n this.remoteQuerySet.delete(modification.queryId);\n break;\n }\n default: {\n modification;\n throw new Error(`Invalid modification ${modification.type}`);\n }\n }\n }\n this.version = transition.endVersion;\n }\n remoteQueryResults() {\n return this.remoteQuerySet;\n }\n timestamp() {\n return this.version.ts;\n }\n}\n//# sourceMappingURL=remote_query_set.js.map\n","\"use strict\";\nimport { Base64 } from \"../../values/index.js\";\nimport { Long } from \"../../vendor/long.js\";\nexport function u64ToLong(encoded) {\n const integerBytes = Base64.toByteArray(encoded);\n return Long.fromBytesLE(Array.from(integerBytes));\n}\nexport function longToU64(raw) {\n const integerBytes = new Uint8Array(raw.toBytesLE());\n return Base64.fromByteArray(integerBytes);\n}\nexport function parseServerMessage(encoded) {\n switch (encoded.type) {\n case \"FatalError\":\n case \"AuthError\":\n case \"ActionResponse\":\n case \"TransitionChunk\":\n case \"Ping\": {\n return { ...encoded };\n }\n case \"MutationResponse\": {\n if (encoded.success) {\n return { ...encoded, ts: u64ToLong(encoded.ts) };\n } else {\n return { ...encoded };\n }\n }\n case \"Transition\": {\n return {\n ...encoded,\n startVersion: {\n ...encoded.startVersion,\n ts: u64ToLong(encoded.startVersion.ts)\n },\n endVersion: {\n ...encoded.endVersion,\n ts: u64ToLong(encoded.endVersion.ts)\n }\n };\n }\n default: {\n encoded;\n }\n }\n return void 0;\n}\nexport function encodeClientMessage(message) {\n switch (message.type) {\n case \"Authenticate\":\n case \"ModifyQuerySet\":\n case \"Mutation\":\n case \"Action\":\n case \"Event\": {\n return { ...message };\n }\n case \"Connect\": {\n if (message.maxObservedTimestamp !== void 0) {\n return {\n ...message,\n maxObservedTimestamp: longToU64(message.maxObservedTimestamp)\n };\n } else {\n return { ...message, maxObservedTimestamp: void 0 };\n }\n }\n default: {\n message;\n }\n }\n return void 0;\n}\n//# sourceMappingURL=protocol.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport {\n encodeClientMessage,\n parseServerMessage\n} from \"./protocol.js\";\nconst CLOSE_NORMAL = 1e3;\nconst CLOSE_GOING_AWAY = 1001;\nconst CLOSE_NO_STATUS = 1005;\nconst CLOSE_NOT_FOUND = 4040;\nlet firstTime;\nfunction monotonicMillis() {\n if (firstTime === void 0) {\n firstTime = Date.now();\n }\n if (typeof performance === \"undefined\" || !performance.now) {\n return Date.now();\n }\n return Math.round(firstTime + performance.now());\n}\nfunction prettyNow() {\n return `t=${Math.round((monotonicMillis() - firstTime) / 100) / 10}s`;\n}\nconst serverDisconnectErrors = {\n // A known error, e.g. during a restart or push\n InternalServerError: { timeout: 1e3 },\n // ErrorMetadata::overloaded() messages that we realy should back off\n SubscriptionsWorkerFullError: { timeout: 3e3 },\n TooManyConcurrentRequests: { timeout: 3e3 },\n CommitterFullError: { timeout: 3e3 },\n AwsTooManyRequestsException: { timeout: 3e3 },\n ExecuteFullError: { timeout: 3e3 },\n SystemTimeoutError: { timeout: 3e3 },\n ExpiredInQueue: { timeout: 3e3 },\n // ErrorMetadata::feature_temporarily_unavailable() that typically indicate a deploy just happened\n VectorIndexesUnavailable: { timeout: 1e3 },\n SearchIndexesUnavailable: { timeout: 1e3 },\n TableSummariesUnavailable: { timeout: 1e3 },\n // More ErrorMetadata::overloaded()\n VectorIndexTooLarge: { timeout: 3e3 },\n SearchIndexTooLarge: { timeout: 3e3 },\n TooManyWritesInTimePeriod: { timeout: 3e3 }\n};\nfunction classifyDisconnectError(s) {\n if (s === void 0) return \"Unknown\";\n for (const prefix of Object.keys(\n serverDisconnectErrors\n )) {\n if (s.startsWith(prefix)) {\n return prefix;\n }\n }\n return \"Unknown\";\n}\nexport class WebSocketManager {\n constructor(uri, callbacks, webSocketConstructor, logger, markConnectionStateDirty, debug) {\n this.markConnectionStateDirty = markConnectionStateDirty;\n this.debug = debug;\n __publicField(this, \"socket\");\n __publicField(this, \"connectionCount\");\n __publicField(this, \"_hasEverConnected\", false);\n __publicField(this, \"lastCloseReason\");\n // State for assembling the split-up Transition currently being received.\n __publicField(this, \"transitionChunkBuffer\", null);\n /** Upon HTTPS/WSS failure, the first jittered backoff duration, in ms. */\n __publicField(this, \"defaultInitialBackoff\");\n /** We backoff exponentially, but we need to cap that--this is the jittered max. */\n __publicField(this, \"maxBackoff\");\n /** How many times have we failed consecutively? */\n __publicField(this, \"retries\");\n /** How long before lack of server response causes us to initiate a reconnect,\n * in ms */\n __publicField(this, \"serverInactivityThreshold\");\n __publicField(this, \"reconnectDueToServerInactivityTimeout\");\n /** Scheduled reconnect state: timeout handle and timing info */\n __publicField(this, \"scheduledReconnect\", null);\n __publicField(this, \"networkOnlineHandler\", null);\n /** Pending event to send after reconnecting due to network recovery */\n __publicField(this, \"pendingNetworkRecoveryInfo\", null);\n __publicField(this, \"uri\");\n __publicField(this, \"onOpen\");\n __publicField(this, \"onResume\");\n __publicField(this, \"onMessage\");\n __publicField(this, \"webSocketConstructor\");\n __publicField(this, \"logger\");\n __publicField(this, \"onServerDisconnectError\");\n this.webSocketConstructor = webSocketConstructor;\n this.socket = { state: \"disconnected\" };\n this.connectionCount = 0;\n this.lastCloseReason = \"InitialConnect\";\n this.defaultInitialBackoff = 1e3;\n this.maxBackoff = 16e3;\n this.retries = 0;\n this.serverInactivityThreshold = 6e4;\n this.reconnectDueToServerInactivityTimeout = null;\n this.uri = uri;\n this.onOpen = callbacks.onOpen;\n this.onResume = callbacks.onResume;\n this.onMessage = callbacks.onMessage;\n this.onServerDisconnectError = callbacks.onServerDisconnectError;\n this.logger = logger;\n this.setupNetworkListener();\n this.connect();\n }\n setSocketState(state) {\n this.socket = state;\n this._logVerbose(\n `socket state changed: ${this.socket.state}, paused: ${\"paused\" in this.socket ? this.socket.paused : void 0}`\n );\n this.markConnectionStateDirty();\n }\n setupNetworkListener() {\n if (typeof window === \"undefined\" || typeof window.addEventListener !== \"function\") {\n return;\n }\n if (this.networkOnlineHandler !== null) {\n return;\n }\n this.networkOnlineHandler = () => {\n this._logVerbose(\"network online event detected\");\n this.tryReconnectImmediately();\n };\n window.addEventListener(\"online\", this.networkOnlineHandler);\n this._logVerbose(\"network online event listener registered\");\n }\n cleanupNetworkListener() {\n if (this.networkOnlineHandler && typeof window !== \"undefined\" && typeof window.removeEventListener === \"function\") {\n window.removeEventListener(\"online\", this.networkOnlineHandler);\n this.networkOnlineHandler = null;\n this._logVerbose(\"network online event listener removed\");\n }\n }\n assembleTransition(chunk) {\n if (chunk.partNumber < 0 || chunk.partNumber >= chunk.totalParts || chunk.totalParts === 0 || this.transitionChunkBuffer && (this.transitionChunkBuffer.totalParts !== chunk.totalParts || this.transitionChunkBuffer.transitionId !== chunk.transitionId)) {\n this.transitionChunkBuffer = null;\n throw new Error(\"Invalid TransitionChunk\");\n }\n if (this.transitionChunkBuffer === null) {\n this.transitionChunkBuffer = {\n chunks: [],\n totalParts: chunk.totalParts,\n transitionId: chunk.transitionId\n };\n }\n if (chunk.partNumber !== this.transitionChunkBuffer.chunks.length) {\n const expectedLength = this.transitionChunkBuffer.chunks.length;\n this.transitionChunkBuffer = null;\n throw new Error(\n `TransitionChunk received out of order: expected part ${expectedLength}, got ${chunk.partNumber}`\n );\n }\n this.transitionChunkBuffer.chunks.push(chunk.chunk);\n if (this.transitionChunkBuffer.chunks.length === chunk.totalParts) {\n const fullJson = this.transitionChunkBuffer.chunks.join(\"\");\n this.transitionChunkBuffer = null;\n const transition = parseServerMessage(JSON.parse(fullJson));\n if (transition.type !== \"Transition\") {\n throw new Error(\n `Expected Transition, got ${transition.type} after assembling chunks`\n );\n }\n return transition;\n }\n return null;\n }\n connect() {\n if (this.socket.state === \"terminated\") {\n return;\n }\n if (this.socket.state !== \"disconnected\" && this.socket.state !== \"stopped\") {\n throw new Error(\n \"Didn't start connection from disconnected state: \" + this.socket.state\n );\n }\n const ws = new this.webSocketConstructor(this.uri);\n this._logVerbose(\"constructed WebSocket\");\n this.setSocketState({\n state: \"connecting\",\n ws,\n paused: \"no\"\n });\n this.resetServerInactivityTimeout();\n ws.onopen = () => {\n this.logger.logVerbose(\"begin ws.onopen\");\n if (this.socket.state !== \"connecting\") {\n throw new Error(\"onopen called with socket not in connecting state\");\n }\n this.setSocketState({\n state: \"ready\",\n ws,\n paused: this.socket.paused === \"yes\" ? \"uninitialized\" : \"no\"\n });\n this.resetServerInactivityTimeout();\n if (this.socket.paused === \"no\") {\n this._hasEverConnected = true;\n this.onOpen({\n connectionCount: this.connectionCount,\n lastCloseReason: this.lastCloseReason,\n clientTs: monotonicMillis()\n });\n }\n if (this.lastCloseReason !== \"InitialConnect\") {\n if (this.lastCloseReason) {\n this.logger.log(\n \"WebSocket reconnected at\",\n prettyNow(),\n \"after disconnect due to\",\n this.lastCloseReason\n );\n } else {\n this.logger.log(\"WebSocket reconnected at\", prettyNow());\n }\n }\n this.connectionCount += 1;\n this.lastCloseReason = null;\n if (this.pendingNetworkRecoveryInfo !== null) {\n const { timeSavedMs } = this.pendingNetworkRecoveryInfo;\n this.pendingNetworkRecoveryInfo = null;\n this.sendMessage({\n type: \"Event\",\n eventType: \"NetworkRecoveryReconnect\",\n event: { timeSavedMs }\n });\n this.logger.log(\n `Network recovery reconnect saved ~${Math.round(timeSavedMs / 1e3)}s of waiting`\n );\n }\n };\n ws.onerror = (error) => {\n this.transitionChunkBuffer = null;\n const message = error.message;\n if (message) {\n this.logger.log(`WebSocket error message: ${message}`);\n }\n };\n ws.onmessage = (message) => {\n this.resetServerInactivityTimeout();\n const messageLength = message.data.length;\n let serverMessage = parseServerMessage(JSON.parse(message.data));\n this._logVerbose(`received ws message with type ${serverMessage.type}`);\n if (serverMessage.type === \"Ping\") {\n return;\n }\n if (serverMessage.type === \"TransitionChunk\") {\n const transition = this.assembleTransition(serverMessage);\n if (!transition) {\n return;\n }\n serverMessage = transition;\n this._logVerbose(\n `assembled full ws message of type ${serverMessage.type}`\n );\n }\n if (this.transitionChunkBuffer !== null) {\n this.transitionChunkBuffer = null;\n this.logger.log(\n `Received unexpected ${serverMessage.type} while buffering TransitionChunks`\n );\n }\n if (serverMessage.type === \"Transition\") {\n this.reportLargeTransition({\n messageLength,\n transition: serverMessage\n });\n }\n const response = this.onMessage(serverMessage);\n if (response.hasSyncedPastLastReconnect) {\n this.retries = 0;\n this.markConnectionStateDirty();\n }\n };\n ws.onclose = (event) => {\n this._logVerbose(\"begin ws.onclose\");\n this.transitionChunkBuffer = null;\n if (this.lastCloseReason === null) {\n this.lastCloseReason = event.reason || `closed with code ${event.code}`;\n }\n if (event.code !== CLOSE_NORMAL && event.code !== CLOSE_GOING_AWAY && // This commonly gets fired on mobile apps when the app is backgrounded\n event.code !== CLOSE_NO_STATUS && event.code !== CLOSE_NOT_FOUND) {\n let msg = `WebSocket closed with code ${event.code}`;\n if (event.reason) {\n msg += `: ${event.reason}`;\n }\n this.logger.log(msg);\n if (this.onServerDisconnectError && event.reason) {\n this.onServerDisconnectError(msg);\n }\n }\n const reason = classifyDisconnectError(event.reason);\n this.scheduleReconnect(reason);\n return;\n };\n }\n /**\n * @returns The state of the {@link Socket}.\n */\n socketState() {\n return this.socket.state;\n }\n /**\n * @param message - A ClientMessage to send.\n * @returns Whether the message (might have been) sent.\n */\n sendMessage(message) {\n const messageForLog = {\n type: message.type,\n ...message.type === \"Authenticate\" && message.tokenType === \"User\" ? {\n value: `...${message.value.slice(-7)}`\n } : {}\n };\n if (this.socket.state === \"ready\" && this.socket.paused === \"no\") {\n const encodedMessage = encodeClientMessage(message);\n const request = JSON.stringify(encodedMessage);\n let sent = false;\n try {\n this.socket.ws.send(request);\n sent = true;\n } catch (error) {\n this.logger.log(\n `Failed to send message on WebSocket, reconnecting: ${error}`\n );\n this.closeAndReconnect(\"FailedToSendMessage\");\n }\n this._logVerbose(\n `${sent ? \"sent\" : \"failed to send\"} message with type ${message.type}: ${JSON.stringify(\n messageForLog\n )}`\n );\n return true;\n }\n this._logVerbose(\n `message not sent (socket state: ${this.socket.state}, paused: ${\"paused\" in this.socket ? this.socket.paused : void 0}): ${JSON.stringify(\n messageForLog\n )}`\n );\n return false;\n }\n resetServerInactivityTimeout() {\n if (this.socket.state === \"terminated\") {\n return;\n }\n if (this.reconnectDueToServerInactivityTimeout !== null) {\n clearTimeout(this.reconnectDueToServerInactivityTimeout);\n this.reconnectDueToServerInactivityTimeout = null;\n }\n this.reconnectDueToServerInactivityTimeout = setTimeout(() => {\n this.closeAndReconnect(\"InactiveServer\");\n }, this.serverInactivityThreshold);\n }\n scheduleReconnect(reason) {\n if (this.scheduledReconnect) {\n clearTimeout(this.scheduledReconnect.timeout);\n this.scheduledReconnect = null;\n }\n this.socket = { state: \"disconnected\" };\n const backoff = this.nextBackoff(reason);\n this.markConnectionStateDirty();\n this.logger.log(`Attempting reconnect in ${Math.round(backoff)}ms`);\n const scheduledAt = monotonicMillis();\n const timeoutId = setTimeout(() => {\n if (this.scheduledReconnect?.timeout === timeoutId) {\n this.scheduledReconnect = null;\n this.connect();\n }\n }, backoff);\n this.scheduledReconnect = {\n timeout: timeoutId,\n scheduledAt,\n backoffMs: backoff\n };\n }\n /**\n * Close the WebSocket and schedule a reconnect.\n *\n * This should be used when we hit an error and would like to restart the session.\n */\n closeAndReconnect(closeReason) {\n this._logVerbose(`begin closeAndReconnect with reason ${closeReason}`);\n switch (this.socket.state) {\n case \"disconnected\":\n case \"terminated\":\n case \"stopped\":\n return;\n case \"connecting\":\n case \"ready\": {\n this.lastCloseReason = closeReason;\n void this.close();\n this.scheduleReconnect(\"client\");\n return;\n }\n default: {\n this.socket;\n }\n }\n }\n /**\n * Close the WebSocket, being careful to clear the onclose handler to avoid re-entrant\n * calls. Use this instead of directly calling `ws.close()`\n *\n * It is the callers responsibility to update the state after this method is called so that the\n * closed socket is not accessible or used again after this method is called\n */\n close() {\n this.transitionChunkBuffer = null;\n switch (this.socket.state) {\n case \"disconnected\":\n case \"terminated\":\n case \"stopped\":\n return Promise.resolve();\n case \"connecting\": {\n const ws = this.socket.ws;\n ws.onmessage = (_message) => {\n this._logVerbose(\"Ignoring message received after close\");\n };\n return new Promise((r) => {\n ws.onclose = () => {\n this._logVerbose(\"Closed after connecting\");\n r();\n };\n ws.onopen = () => {\n this._logVerbose(\"Opened after connecting\");\n ws.close();\n };\n });\n }\n case \"ready\": {\n this._logVerbose(\"ws.close called\");\n const ws = this.socket.ws;\n ws.onmessage = (_message) => {\n this._logVerbose(\"Ignoring message received after close\");\n };\n const result = new Promise((r) => {\n ws.onclose = () => {\n r();\n };\n });\n ws.close();\n return result;\n }\n default: {\n this.socket;\n return Promise.resolve();\n }\n }\n }\n /**\n * Close the WebSocket and do not reconnect.\n * @returns A Promise that resolves when the WebSocket `onClose` callback is called.\n */\n terminate() {\n if (this.reconnectDueToServerInactivityTimeout) {\n clearTimeout(this.reconnectDueToServerInactivityTimeout);\n }\n if (this.scheduledReconnect) {\n clearTimeout(this.scheduledReconnect.timeout);\n this.scheduledReconnect = null;\n }\n this.cleanupNetworkListener();\n switch (this.socket.state) {\n case \"terminated\":\n case \"stopped\":\n case \"disconnected\":\n case \"connecting\":\n case \"ready\": {\n const result = this.close();\n this.setSocketState({ state: \"terminated\" });\n return result;\n }\n default: {\n this.socket;\n throw new Error(\n `Invalid websocket state: ${this.socket.state}`\n );\n }\n }\n }\n stop() {\n switch (this.socket.state) {\n case \"terminated\":\n return Promise.resolve();\n case \"connecting\":\n case \"stopped\":\n case \"disconnected\":\n case \"ready\": {\n this.cleanupNetworkListener();\n const result = this.close();\n this.socket = { state: \"stopped\" };\n return result;\n }\n default: {\n this.socket;\n return Promise.resolve();\n }\n }\n }\n /**\n * Create a new WebSocket after a previous `stop()`, unless `terminate()` was\n * called before.\n */\n tryRestart() {\n switch (this.socket.state) {\n case \"stopped\":\n break;\n case \"terminated\":\n case \"connecting\":\n case \"ready\":\n case \"disconnected\":\n this.logger.logVerbose(\"Restart called without stopping first\");\n return;\n default: {\n this.socket;\n }\n }\n this.setupNetworkListener();\n this.connect();\n }\n pause() {\n switch (this.socket.state) {\n case \"disconnected\":\n case \"stopped\":\n case \"terminated\":\n return;\n case \"connecting\":\n case \"ready\": {\n this.socket = { ...this.socket, paused: \"yes\" };\n return;\n }\n default: {\n this.socket;\n return;\n }\n }\n }\n /**\n * Try to reconnect immediately, canceling any scheduled reconnect.\n * This is useful when detecting network recovery.\n * Only takes action if we're in disconnected state (waiting to reconnect).\n */\n tryReconnectImmediately() {\n this._logVerbose(\"tryReconnectImmediately called\");\n if (this.socket.state !== \"disconnected\") {\n this._logVerbose(\n `tryReconnectImmediately called but socket state is ${this.socket.state}, no action taken`\n );\n return;\n }\n let timeSavedMs = null;\n if (this.scheduledReconnect) {\n const elapsed = monotonicMillis() - this.scheduledReconnect.scheduledAt;\n timeSavedMs = Math.max(0, this.scheduledReconnect.backoffMs - elapsed);\n this._logVerbose(\n `would have waited ${Math.round(timeSavedMs)}ms more (backoff was ${Math.round(this.scheduledReconnect.backoffMs)}ms, elapsed ${Math.round(elapsed)}ms)`\n );\n clearTimeout(this.scheduledReconnect.timeout);\n this.scheduledReconnect = null;\n this._logVerbose(\"canceled scheduled reconnect\");\n }\n this.logger.log(\"Network recovery detected, reconnecting immediately\");\n this.pendingNetworkRecoveryInfo = timeSavedMs !== null ? { timeSavedMs } : null;\n this.connect();\n }\n /**\n * Resume the state machine if previously paused.\n */\n resume() {\n switch (this.socket.state) {\n case \"connecting\":\n this.socket = { ...this.socket, paused: \"no\" };\n return;\n case \"ready\":\n if (this.socket.paused === \"uninitialized\") {\n this.socket = { ...this.socket, paused: \"no\" };\n this.onOpen({\n connectionCount: this.connectionCount,\n lastCloseReason: this.lastCloseReason,\n clientTs: monotonicMillis()\n });\n } else if (this.socket.paused === \"yes\") {\n this.socket = { ...this.socket, paused: \"no\" };\n this.onResume();\n }\n return;\n case \"terminated\":\n case \"stopped\":\n case \"disconnected\":\n return;\n default: {\n this.socket;\n }\n }\n this.connect();\n }\n connectionState() {\n return {\n isConnected: this.socket.state === \"ready\",\n hasEverConnected: this._hasEverConnected,\n connectionCount: this.connectionCount,\n connectionRetries: this.retries\n };\n }\n _logVerbose(message) {\n this.logger.logVerbose(message);\n }\n nextBackoff(reason) {\n const initialBackoff = reason === \"client\" ? 100 : reason === \"Unknown\" ? this.defaultInitialBackoff : serverDisconnectErrors[reason].timeout;\n const baseBackoff = initialBackoff * Math.pow(2, this.retries);\n this.retries += 1;\n const actualBackoff = Math.min(baseBackoff, this.maxBackoff);\n const jitter = actualBackoff * (Math.random() - 0.5);\n return actualBackoff + jitter;\n }\n reportLargeTransition({\n transition,\n messageLength\n }) {\n if (transition.clientClockSkew === void 0 || transition.serverTs === void 0) {\n return;\n }\n const transitionTransitTime = monotonicMillis() - // client time now\n // clientClockSkew = (server time + upstream latency) - client time\n // clientClockSkew is \"how many milliseconds behind (slow) is the client clock\"\n // but the latency of the Connect message inflates this, making it appear further behind\n transition.clientClockSkew - transition.serverTs / 1e6;\n const prettyTransitionTime = `${Math.round(transitionTransitTime)}ms`;\n const prettyMessageMB = `${Math.round(messageLength / 1e4) / 100}MB`;\n const bytesPerSecond = messageLength / (transitionTransitTime / 1e3);\n const prettyBytesPerSecond = `${Math.round(bytesPerSecond / 1e4) / 100}MB per second`;\n this._logVerbose(\n `received ${prettyMessageMB} transition in ${prettyTransitionTime} at ${prettyBytesPerSecond}`\n );\n if (messageLength > 2e7) {\n this.logger.log(\n `received query results totaling more that 20MB (${prettyMessageMB}) which will take a long time to download on slower connections`\n );\n } else if (transitionTransitTime > 2e4) {\n this.logger.log(\n `received query results totaling ${prettyMessageMB} which took more than 20s to arrive (${prettyTransitionTime})`\n );\n }\n if (this.debug) {\n this.sendMessage({\n type: \"Event\",\n eventType: \"ClientReceivedTransition\",\n event: { transitionTransitTime, messageLength }\n });\n }\n }\n}\n//# sourceMappingURL=web_socket_manager.js.map\n","\"use strict\";\nexport function newSessionId() {\n return uuidv4();\n}\nfunction uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0, v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n}\n//# sourceMappingURL=session.js.map\n","\"use strict\";\nexport class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, (_m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n } catch {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(\n `Invalid token specified: missing part #${pos + 1}`\n );\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n } catch (e) {\n throw new InvalidTokenError(\n `Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`\n );\n }\n try {\n return JSON.parse(decoded);\n } catch (e) {\n throw new InvalidTokenError(\n `Invalid token specified: invalid json for part #${pos + 1} (${e.message})`\n );\n }\n}\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { jwtDecode } from \"../../vendor/jwt-decode/index.js\";\nconst MAXIMUM_REFRESH_DELAY = 20 * 24 * 60 * 60 * 1e3;\nconst MAX_TOKEN_CONFIRMATION_ATTEMPTS = 2;\nexport class AuthenticationManager {\n constructor(syncState, callbacks, config) {\n __publicField(this, \"authState\", { state: \"noAuth\" });\n // Used to detect races involving `setConfig` calls\n // while a token is being fetched.\n __publicField(this, \"configVersion\", 0);\n // Shared by the BaseClient so that the auth manager can easily inspect it\n __publicField(this, \"syncState\");\n // Passed down by BaseClient, sends a message to the server\n __publicField(this, \"authenticate\");\n __publicField(this, \"stopSocket\");\n __publicField(this, \"tryRestartSocket\");\n __publicField(this, \"pauseSocket\");\n __publicField(this, \"resumeSocket\");\n // Passed down by BaseClient, sends a message to the server\n __publicField(this, \"clearAuth\");\n __publicField(this, \"logger\");\n __publicField(this, \"refreshTokenLeewaySeconds\");\n // Number of times we have attempted to confirm the latest token. We retry up\n // to `MAX_TOKEN_CONFIRMATION_ATTEMPTS` times.\n __publicField(this, \"tokenConfirmationAttempts\", 0);\n this.syncState = syncState;\n this.authenticate = callbacks.authenticate;\n this.stopSocket = callbacks.stopSocket;\n this.tryRestartSocket = callbacks.tryRestartSocket;\n this.pauseSocket = callbacks.pauseSocket;\n this.resumeSocket = callbacks.resumeSocket;\n this.clearAuth = callbacks.clearAuth;\n this.logger = config.logger;\n this.refreshTokenLeewaySeconds = config.refreshTokenLeewaySeconds;\n }\n async setConfig(fetchToken, onChange) {\n this.resetAuthState();\n this._logVerbose(\"pausing WS for auth token fetch\");\n this.pauseSocket();\n const token = await this.fetchTokenAndGuardAgainstRace(fetchToken, {\n forceRefreshToken: false\n });\n if (token.isFromOutdatedConfig) {\n return;\n }\n if (token.value) {\n this.setAuthState({\n state: \"waitingForServerConfirmationOfCachedToken\",\n config: { fetchToken, onAuthChange: onChange },\n hasRetried: false\n });\n this.authenticate(token.value);\n } else {\n this.setAuthState({\n state: \"initialRefetch\",\n config: { fetchToken, onAuthChange: onChange }\n });\n await this.refetchToken();\n }\n this._logVerbose(\"resuming WS after auth token fetch\");\n this.resumeSocket();\n }\n onTransition(serverMessage) {\n if (!this.syncState.isCurrentOrNewerAuthVersion(\n serverMessage.endVersion.identity\n )) {\n return;\n }\n if (serverMessage.endVersion.identity <= serverMessage.startVersion.identity) {\n return;\n }\n if (this.authState.state === \"waitingForServerConfirmationOfCachedToken\") {\n this._logVerbose(\"server confirmed auth token is valid\");\n void this.refetchToken();\n this.authState.config.onAuthChange(true);\n return;\n }\n if (this.authState.state === \"waitingForServerConfirmationOfFreshToken\") {\n this._logVerbose(\"server confirmed new auth token is valid\");\n this.scheduleTokenRefetch(this.authState.token);\n this.tokenConfirmationAttempts = 0;\n if (!this.authState.hadAuth) {\n this.authState.config.onAuthChange(true);\n }\n }\n }\n onAuthError(serverMessage) {\n if (serverMessage.authUpdateAttempted === false && (this.authState.state === \"waitingForServerConfirmationOfFreshToken\" || this.authState.state === \"waitingForServerConfirmationOfCachedToken\")) {\n this._logVerbose(\"ignoring non-auth token expired error\");\n return;\n }\n const { baseVersion } = serverMessage;\n if (!this.syncState.isCurrentOrNewerAuthVersion(baseVersion + 1)) {\n this._logVerbose(\"ignoring auth error for previous auth attempt\");\n return;\n }\n void this.tryToReauthenticate(serverMessage);\n return;\n }\n // This is similar to `refetchToken` defined below, in fact we\n // don't represent them as different states, but it is different\n // in that we pause the WebSocket so that mutations\n // don't retry with bad auth.\n async tryToReauthenticate(serverMessage) {\n this._logVerbose(`attempting to reauthenticate: ${serverMessage.error}`);\n if (\n // No way to fetch another token, kaboom\n this.authState.state === \"noAuth\" || // We failed on a fresh token. After a small number of retries, we give up\n // and clear the auth state to avoid infinite retries.\n this.authState.state === \"waitingForServerConfirmationOfFreshToken\" && this.tokenConfirmationAttempts >= MAX_TOKEN_CONFIRMATION_ATTEMPTS\n ) {\n this.logger.error(\n `Failed to authenticate: \"${serverMessage.error}\", check your server auth config`\n );\n if (this.syncState.hasAuth()) {\n this.syncState.clearAuth();\n }\n if (this.authState.state !== \"noAuth\") {\n this.setAndReportAuthFailed(this.authState.config.onAuthChange);\n }\n return;\n }\n if (this.authState.state === \"waitingForServerConfirmationOfFreshToken\") {\n this.tokenConfirmationAttempts++;\n this._logVerbose(\n `retrying reauthentication, ${MAX_TOKEN_CONFIRMATION_ATTEMPTS - this.tokenConfirmationAttempts} attempts remaining`\n );\n }\n await this.stopSocket();\n const token = await this.fetchTokenAndGuardAgainstRace(\n this.authState.config.fetchToken,\n {\n forceRefreshToken: true\n }\n );\n if (token.isFromOutdatedConfig) {\n return;\n }\n if (token.value && this.syncState.isNewAuth(token.value)) {\n this.authenticate(token.value);\n this.setAuthState({\n state: \"waitingForServerConfirmationOfFreshToken\",\n config: this.authState.config,\n token: token.value,\n hadAuth: this.authState.state === \"notRefetching\" || this.authState.state === \"waitingForScheduledRefetch\"\n });\n } else {\n this._logVerbose(\"reauthentication failed, could not fetch a new token\");\n if (this.syncState.hasAuth()) {\n this.syncState.clearAuth();\n }\n this.setAndReportAuthFailed(this.authState.config.onAuthChange);\n }\n this.tryRestartSocket();\n }\n // Force refetch the token and schedule another refetch\n // before the token expires - an active client should never\n // need to reauthenticate.\n async refetchToken() {\n if (this.authState.state === \"noAuth\") {\n return;\n }\n this._logVerbose(\"refetching auth token\");\n const token = await this.fetchTokenAndGuardAgainstRace(\n this.authState.config.fetchToken,\n {\n forceRefreshToken: true\n }\n );\n if (token.isFromOutdatedConfig) {\n return;\n }\n if (token.value) {\n if (this.syncState.isNewAuth(token.value)) {\n this.setAuthState({\n state: \"waitingForServerConfirmationOfFreshToken\",\n hadAuth: this.syncState.hasAuth(),\n token: token.value,\n config: this.authState.config\n });\n this.authenticate(token.value);\n } else {\n this.setAuthState({\n state: \"notRefetching\",\n config: this.authState.config\n });\n }\n } else {\n this._logVerbose(\"refetching token failed\");\n if (this.syncState.hasAuth()) {\n this.clearAuth();\n }\n this.setAndReportAuthFailed(this.authState.config.onAuthChange);\n }\n this._logVerbose(\n \"restarting WS after auth token fetch (if currently stopped)\"\n );\n this.tryRestartSocket();\n }\n scheduleTokenRefetch(token) {\n if (this.authState.state === \"noAuth\") {\n return;\n }\n const decodedToken = this.decodeToken(token);\n if (!decodedToken) {\n this.logger.error(\n \"Auth token is not a valid JWT, cannot refetch the token\"\n );\n return;\n }\n const { iat, exp } = decodedToken;\n if (!iat || !exp) {\n this.logger.error(\n \"Auth token does not have required fields, cannot refetch the token\"\n );\n return;\n }\n const tokenValiditySeconds = exp - iat;\n if (tokenValiditySeconds <= 2) {\n this.logger.error(\n \"Auth token does not live long enough, cannot refetch the token\"\n );\n return;\n }\n let delay = Math.min(\n MAXIMUM_REFRESH_DELAY,\n (tokenValiditySeconds - this.refreshTokenLeewaySeconds) * 1e3\n );\n if (delay <= 0) {\n this.logger.warn(\n `Refetching auth token immediately, configured leeway ${this.refreshTokenLeewaySeconds}s is larger than the token's lifetime ${tokenValiditySeconds}s`\n );\n delay = 0;\n }\n const refetchTokenTimeoutId = setTimeout(() => {\n this._logVerbose(\"running scheduled token refetch\");\n void this.refetchToken();\n }, delay);\n this.setAuthState({\n state: \"waitingForScheduledRefetch\",\n refetchTokenTimeoutId,\n config: this.authState.config\n });\n this._logVerbose(\n `scheduled preemptive auth token refetching in ${delay}ms`\n );\n }\n // Protects against simultaneous calls to `setConfig`\n // while we're fetching a token\n async fetchTokenAndGuardAgainstRace(fetchToken, fetchArgs) {\n const originalConfigVersion = ++this.configVersion;\n this._logVerbose(\n `fetching token with config version ${originalConfigVersion}`\n );\n const token = await fetchToken(fetchArgs);\n if (this.configVersion !== originalConfigVersion) {\n this._logVerbose(\n `stale config version, expected ${originalConfigVersion}, got ${this.configVersion}`\n );\n return { isFromOutdatedConfig: true };\n }\n return { isFromOutdatedConfig: false, value: token };\n }\n stop() {\n this.resetAuthState();\n this.configVersion++;\n this._logVerbose(`config version bumped to ${this.configVersion}`);\n }\n setAndReportAuthFailed(onAuthChange) {\n onAuthChange(false);\n this.resetAuthState();\n }\n resetAuthState() {\n this.setAuthState({ state: \"noAuth\" });\n }\n setAuthState(newAuth) {\n const authStateForLog = newAuth.state === \"waitingForServerConfirmationOfFreshToken\" ? {\n hadAuth: newAuth.hadAuth,\n state: newAuth.state,\n token: `...${newAuth.token.slice(-7)}`\n } : { state: newAuth.state };\n this._logVerbose(\n `setting auth state to ${JSON.stringify(authStateForLog)}`\n );\n switch (newAuth.state) {\n case \"waitingForScheduledRefetch\":\n case \"notRefetching\":\n case \"noAuth\":\n this.tokenConfirmationAttempts = 0;\n break;\n case \"waitingForServerConfirmationOfFreshToken\":\n case \"waitingForServerConfirmationOfCachedToken\":\n case \"initialRefetch\":\n break;\n default: {\n newAuth;\n }\n }\n if (this.authState.state === \"waitingForScheduledRefetch\") {\n clearTimeout(this.authState.refetchTokenTimeoutId);\n this.syncState.markAuthCompletion();\n }\n this.authState = newAuth;\n }\n decodeToken(token) {\n try {\n return jwtDecode(token);\n } catch (e) {\n this._logVerbose(\n `Error decoding token: ${e instanceof Error ? e.message : \"Unknown error\"}`\n );\n return null;\n }\n }\n _logVerbose(message) {\n this.logger.logVerbose(`${message} [v${this.configVersion}]`);\n }\n}\n//# sourceMappingURL=authentication_manager.js.map\n","\"use strict\";\nconst markNames = [\n \"convexClientConstructed\",\n \"convexWebSocketOpen\",\n \"convexFirstMessageReceived\"\n];\nexport function mark(name, sessionId) {\n const detail = { sessionId };\n if (typeof performance === \"undefined\" || !performance.mark) return;\n performance.mark(name, { detail });\n}\nfunction performanceMarkToJson(mark2) {\n let name = mark2.name.slice(\"convex\".length);\n name = name.charAt(0).toLowerCase() + name.slice(1);\n return {\n name,\n startTime: mark2.startTime\n };\n}\nexport function getMarksReport(sessionId) {\n if (typeof performance === \"undefined\" || !performance.getEntriesByName) {\n return [];\n }\n const allMarks = [];\n for (const name of markNames) {\n const marks = performance.getEntriesByName(name).filter((entry) => entry.entryType === \"mark\").filter((mark2) => mark2.detail.sessionId === sessionId);\n allMarks.push(...marks);\n }\n return allMarks.map(performanceMarkToJson);\n}\n//# sourceMappingURL=metrics.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { version } from \"../../index.js\";\nimport { convexToJson } from \"../../values/index.js\";\nimport {\n createHybridErrorStacktrace,\n forwardData,\n instantiateDefaultLogger,\n instantiateNoopLogger,\n logFatalError\n} from \"../logging.js\";\nimport { LocalSyncState } from \"./local_state.js\";\nimport { RequestManager } from \"./request_manager.js\";\nimport {\n OptimisticQueryResults\n} from \"./optimistic_updates_impl.js\";\nimport { RemoteQuerySet } from \"./remote_query_set.js\";\nimport { serializePathAndArgs } from \"./udf_path_utils.js\";\nimport { WebSocketManager } from \"./web_socket_manager.js\";\nimport { newSessionId } from \"./session.js\";\nimport {\n AuthenticationManager\n} from \"./authentication_manager.js\";\nimport { getMarksReport, mark } from \"./metrics.js\";\nimport { parseArgs, validateDeploymentUrl } from \"../../common/index.js\";\nimport { ConvexError } from \"../../values/errors.js\";\nimport { jwtDecode } from \"../../vendor/jwt-decode/index.js\";\nexport class BaseConvexClient {\n /**\n * @param address - The url of your Convex deployment, often provided\n * by an environment variable. E.g. `https://small-mouse-123.convex.cloud`.\n * @param onTransition - A callback receiving an array of query tokens\n * corresponding to query results that have changed -- additional handlers\n * can be added via `addOnTransitionHandler`.\n * @param options - See {@link BaseConvexClientOptions} for a full description.\n */\n constructor(address, onTransition, options) {\n __publicField(this, \"address\");\n __publicField(this, \"state\");\n __publicField(this, \"requestManager\");\n __publicField(this, \"webSocketManager\");\n __publicField(this, \"authenticationManager\");\n __publicField(this, \"remoteQuerySet\");\n __publicField(this, \"optimisticQueryResults\");\n __publicField(this, \"_transitionHandlerCounter\", 0);\n __publicField(this, \"_nextRequestId\");\n __publicField(this, \"_onTransitionFns\", /* @__PURE__ */ new Map());\n __publicField(this, \"_sessionId\");\n __publicField(this, \"firstMessageReceived\", false);\n __publicField(this, \"debug\");\n __publicField(this, \"logger\");\n __publicField(this, \"maxObservedTimestamp\");\n __publicField(this, \"connectionStateSubscribers\", /* @__PURE__ */ new Map());\n __publicField(this, \"nextConnectionStateSubscriberId\", 0);\n __publicField(this, \"_lastPublishedConnectionState\");\n /**\n * Call this whenever the connection state may have changed in a way that could\n * require publishing it. Schedules a possibly update.\n */\n __publicField(this, \"markConnectionStateDirty\", () => {\n void Promise.resolve().then(() => {\n const curConnectionState = this.connectionState();\n if (JSON.stringify(curConnectionState) !== JSON.stringify(this._lastPublishedConnectionState)) {\n this._lastPublishedConnectionState = curConnectionState;\n for (const cb of this.connectionStateSubscribers.values()) {\n cb(curConnectionState);\n }\n }\n });\n });\n // Instance property so that `mark()` doesn't need to be called as a method.\n __publicField(this, \"mark\", (name) => {\n if (this.debug) {\n mark(name, this.sessionId);\n }\n });\n if (typeof address === \"object\") {\n throw new Error(\n \"Passing a ClientConfig object is no longer supported. Pass the URL of the Convex deployment as a string directly.\"\n );\n }\n if (options?.skipConvexDeploymentUrlCheck !== true) {\n validateDeploymentUrl(address);\n }\n options = { ...options };\n const authRefreshTokenLeewaySeconds = options.authRefreshTokenLeewaySeconds ?? 10;\n let webSocketConstructor = options.webSocketConstructor;\n if (!webSocketConstructor && typeof WebSocket === \"undefined\") {\n throw new Error(\n \"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\"\n );\n }\n webSocketConstructor = webSocketConstructor || WebSocket;\n this.debug = options.reportDebugInfoToConvex ?? false;\n this.address = address;\n this.logger = options.logger === false ? instantiateNoopLogger({ verbose: options.verbose ?? false }) : options.logger !== true && options.logger ? options.logger : instantiateDefaultLogger({ verbose: options.verbose ?? false });\n const i = address.search(\"://\");\n if (i === -1) {\n throw new Error(\"Provided address was not an absolute URL.\");\n }\n const origin = address.substring(i + 3);\n const protocol = address.substring(0, i);\n let wsProtocol;\n if (protocol === \"http\") {\n wsProtocol = \"ws\";\n } else if (protocol === \"https\") {\n wsProtocol = \"wss\";\n } else {\n throw new Error(`Unknown parent protocol ${protocol}`);\n }\n const wsUri = `${wsProtocol}://${origin}/api/${version}/sync`;\n this.state = new LocalSyncState();\n this.remoteQuerySet = new RemoteQuerySet(\n (queryId) => this.state.queryPath(queryId),\n this.logger\n );\n this.requestManager = new RequestManager(\n this.logger,\n this.markConnectionStateDirty\n );\n const pauseSocket = () => {\n this.webSocketManager.pause();\n this.state.pause();\n };\n this.authenticationManager = new AuthenticationManager(\n this.state,\n {\n authenticate: (token) => {\n const message = this.state.setAuth(token);\n this.webSocketManager.sendMessage(message);\n return message.baseVersion;\n },\n stopSocket: () => this.webSocketManager.stop(),\n tryRestartSocket: () => this.webSocketManager.tryRestart(),\n pauseSocket,\n resumeSocket: () => this.webSocketManager.resume(),\n clearAuth: () => {\n this.clearAuth();\n }\n },\n {\n logger: this.logger,\n refreshTokenLeewaySeconds: authRefreshTokenLeewaySeconds\n }\n );\n this.optimisticQueryResults = new OptimisticQueryResults();\n this.addOnTransitionHandler((transition) => {\n onTransition(transition.queries.map((q) => q.token));\n });\n this._nextRequestId = 0;\n this._sessionId = newSessionId();\n const { unsavedChangesWarning } = options;\n if (typeof window === \"undefined\" || typeof window.addEventListener === \"undefined\") {\n if (unsavedChangesWarning === true) {\n throw new Error(\n \"unsavedChangesWarning requested, but window.addEventListener not found! Remove {unsavedChangesWarning: true} from Convex client options.\"\n );\n }\n } else if (unsavedChangesWarning !== false) {\n window.addEventListener(\"beforeunload\", (e) => {\n if (this.requestManager.hasIncompleteRequests()) {\n e.preventDefault();\n const confirmationMessage = \"Are you sure you want to leave? Your changes may not be saved.\";\n (e || window.event).returnValue = confirmationMessage;\n return confirmationMessage;\n }\n });\n }\n this.webSocketManager = new WebSocketManager(\n wsUri,\n {\n onOpen: (reconnectMetadata) => {\n this.mark(\"convexWebSocketOpen\");\n this.webSocketManager.sendMessage({\n ...reconnectMetadata,\n type: \"Connect\",\n sessionId: this._sessionId,\n maxObservedTimestamp: this.maxObservedTimestamp\n });\n const oldRemoteQueryResults = new Set(\n this.remoteQuerySet.remoteQueryResults().keys()\n );\n this.remoteQuerySet = new RemoteQuerySet(\n (queryId) => this.state.queryPath(queryId),\n this.logger\n );\n const [querySetModification, authModification] = this.state.restart(\n oldRemoteQueryResults\n );\n if (authModification) {\n this.webSocketManager.sendMessage(authModification);\n }\n this.webSocketManager.sendMessage(querySetModification);\n for (const message of this.requestManager.restart()) {\n this.webSocketManager.sendMessage(message);\n }\n },\n onResume: () => {\n const [querySetModification, authModification] = this.state.resume();\n if (authModification) {\n this.webSocketManager.sendMessage(authModification);\n }\n if (querySetModification) {\n this.webSocketManager.sendMessage(querySetModification);\n }\n for (const message of this.requestManager.resume()) {\n this.webSocketManager.sendMessage(message);\n }\n },\n onMessage: (serverMessage) => {\n if (!this.firstMessageReceived) {\n this.firstMessageReceived = true;\n this.mark(\"convexFirstMessageReceived\");\n this.reportMarks();\n }\n switch (serverMessage.type) {\n case \"Transition\": {\n this.observedTimestamp(serverMessage.endVersion.ts);\n this.authenticationManager.onTransition(serverMessage);\n this.remoteQuerySet.transition(serverMessage);\n this.state.transition(serverMessage);\n const completedRequests = this.requestManager.removeCompleted(\n this.remoteQuerySet.timestamp()\n );\n this.notifyOnQueryResultChanges(completedRequests);\n break;\n }\n case \"MutationResponse\": {\n if (serverMessage.success) {\n this.observedTimestamp(serverMessage.ts);\n }\n const completedMutationInfo = this.requestManager.onResponse(serverMessage);\n if (completedMutationInfo !== null) {\n this.notifyOnQueryResultChanges(\n /* @__PURE__ */ new Map([\n [\n completedMutationInfo.requestId,\n completedMutationInfo.result\n ]\n ])\n );\n }\n break;\n }\n case \"ActionResponse\": {\n this.requestManager.onResponse(serverMessage);\n break;\n }\n case \"AuthError\": {\n this.authenticationManager.onAuthError(serverMessage);\n break;\n }\n case \"FatalError\": {\n const error = logFatalError(this.logger, serverMessage.error);\n void this.webSocketManager.terminate();\n throw error;\n }\n default: {\n serverMessage;\n }\n }\n return {\n hasSyncedPastLastReconnect: this.hasSyncedPastLastReconnect()\n };\n },\n onServerDisconnectError: options.onServerDisconnectError\n },\n webSocketConstructor,\n this.logger,\n this.markConnectionStateDirty,\n this.debug\n );\n this.mark(\"convexClientConstructed\");\n if (options.expectAuth) {\n pauseSocket();\n }\n }\n /**\n * Return true if there is outstanding work from prior to the time of the most recent restart.\n * This indicates that the client has not proven itself to have gotten past the issue that\n * potentially led to the restart. Use this to influence when to reset backoff after a failure.\n */\n hasSyncedPastLastReconnect() {\n const hasSyncedPastLastReconnect = this.requestManager.hasSyncedPastLastReconnect() || this.state.hasSyncedPastLastReconnect();\n return hasSyncedPastLastReconnect;\n }\n observedTimestamp(observedTs) {\n if (this.maxObservedTimestamp === void 0 || this.maxObservedTimestamp.lessThanOrEqual(observedTs)) {\n this.maxObservedTimestamp = observedTs;\n }\n }\n getMaxObservedTimestamp() {\n return this.maxObservedTimestamp;\n }\n /**\n * Compute the current query results based on the remoteQuerySet and the\n * current optimistic updates and call `onTransition` for all the changed\n * queries.\n *\n * @param completedMutations - A set of mutation IDs whose optimistic updates\n * are no longer needed.\n */\n notifyOnQueryResultChanges(completedRequests) {\n const remoteQueryResults = this.remoteQuerySet.remoteQueryResults();\n const queryTokenToValue = /* @__PURE__ */ new Map();\n for (const [queryId, result] of remoteQueryResults) {\n const queryToken = this.state.queryToken(queryId);\n if (queryToken !== null) {\n const query = {\n result,\n udfPath: this.state.queryPath(queryId),\n args: this.state.queryArgs(queryId)\n };\n queryTokenToValue.set(queryToken, query);\n }\n }\n const changedQueryTokens = this.optimisticQueryResults.ingestQueryResultsFromServer(\n queryTokenToValue,\n new Set(completedRequests.keys())\n );\n this.handleTransition({\n queries: changedQueryTokens.map((token) => {\n const optimisticResult = this.optimisticQueryResults.rawQueryResult(token);\n return {\n token,\n modification: {\n kind: \"Updated\",\n result: optimisticResult\n }\n };\n }),\n reflectedMutations: Array.from(completedRequests).map(\n ([requestId, result]) => ({\n requestId,\n result\n })\n ),\n timestamp: this.remoteQuerySet.timestamp()\n });\n }\n handleTransition(transition) {\n for (const fn of this._onTransitionFns.values()) {\n fn(transition);\n }\n }\n /**\n * Add a handler that will be called on a transition.\n *\n * Any external side effects (e.g. setting React state) should be handled here.\n *\n * @param fn\n *\n * @returns\n */\n addOnTransitionHandler(fn) {\n const id = this._transitionHandlerCounter++;\n this._onTransitionFns.set(id, fn);\n return () => this._onTransitionFns.delete(id);\n }\n /**\n * Get the current JWT auth token and decoded claims.\n */\n getCurrentAuthClaims() {\n const authToken = this.state.getAuth();\n let decoded = {};\n if (authToken && authToken.tokenType === \"User\") {\n try {\n decoded = authToken ? jwtDecode(authToken.value) : {};\n } catch {\n decoded = {};\n }\n } else {\n return void 0;\n }\n return { token: authToken.value, decoded };\n }\n /**\n * Set the authentication token to be used for subsequent queries and mutations.\n * `fetchToken` will be called automatically again if a token expires.\n * `fetchToken` should return `null` if the token cannot be retrieved, for example\n * when the user's rights were permanently revoked.\n * @param fetchToken - an async function returning the JWT-encoded OpenID Connect Identity Token\n * @param onChange - a callback that will be called when the authentication status changes\n */\n setAuth(fetchToken, onChange) {\n void this.authenticationManager.setConfig(fetchToken, onChange);\n }\n hasAuth() {\n return this.state.hasAuth();\n }\n /** @internal */\n setAdminAuth(value, fakeUserIdentity) {\n const message = this.state.setAdminAuth(value, fakeUserIdentity);\n this.webSocketManager.sendMessage(message);\n }\n clearAuth() {\n const message = this.state.clearAuth();\n this.webSocketManager.sendMessage(message);\n }\n /**\n * Subscribe to a query function.\n *\n * Whenever this query's result changes, the `onTransition` callback\n * passed into the constructor will be called.\n *\n * @param name - The name of the query.\n * @param args - An arguments object for the query. If this is omitted, the\n * arguments will be `{}`.\n * @param options - A {@link SubscribeOptions} options object for this query.\n \n * @returns An object containing a {@link QueryToken} corresponding to this\n * query and an `unsubscribe` callback.\n */\n subscribe(name, args, options) {\n const argsObject = parseArgs(args);\n const { modification, queryToken, unsubscribe } = this.state.subscribe(\n name,\n argsObject,\n options?.journal,\n options?.componentPath\n );\n if (modification !== null) {\n this.webSocketManager.sendMessage(modification);\n }\n return {\n queryToken,\n unsubscribe: () => {\n const modification2 = unsubscribe();\n if (modification2) {\n this.webSocketManager.sendMessage(modification2);\n }\n }\n };\n }\n /**\n * A query result based only on the current, local state.\n *\n * The only way this will return a value is if we're already subscribed to the\n * query or its value has been set optimistically.\n */\n localQueryResult(udfPath, args) {\n const argsObject = parseArgs(args);\n const queryToken = serializePathAndArgs(udfPath, argsObject);\n return this.optimisticQueryResults.queryResult(queryToken);\n }\n /**\n * Get query result by query token based on current, local state\n *\n * The only way this will return a value is if we're already subscribed to the\n * query or its value has been set optimistically.\n *\n * @internal\n */\n localQueryResultByToken(queryToken) {\n return this.optimisticQueryResults.queryResult(queryToken);\n }\n /**\n * Whether local query result is available for a token.\n *\n * This method does not throw if the result is an error.\n *\n * @internal\n */\n hasLocalQueryResultByToken(queryToken) {\n return this.optimisticQueryResults.hasQueryResult(queryToken);\n }\n /**\n * @internal\n */\n localQueryLogs(udfPath, args) {\n const argsObject = parseArgs(args);\n const queryToken = serializePathAndArgs(udfPath, argsObject);\n return this.optimisticQueryResults.queryLogs(queryToken);\n }\n /**\n * Retrieve the current {@link QueryJournal} for this query function.\n *\n * If we have not yet received a result for this query, this will be `undefined`.\n *\n * @param name - The name of the query.\n * @param args - The arguments object for this query.\n * @returns The query's {@link QueryJournal} or `undefined`.\n */\n queryJournal(name, args) {\n const argsObject = parseArgs(args);\n const queryToken = serializePathAndArgs(name, argsObject);\n return this.state.queryJournal(queryToken);\n }\n /**\n * Get the current {@link ConnectionState} between the client and the Convex\n * backend.\n *\n * @returns The {@link ConnectionState} with the Convex backend.\n */\n connectionState() {\n const wsConnectionState = this.webSocketManager.connectionState();\n return {\n hasInflightRequests: this.requestManager.hasInflightRequests(),\n isWebSocketConnected: wsConnectionState.isConnected,\n hasEverConnected: wsConnectionState.hasEverConnected,\n connectionCount: wsConnectionState.connectionCount,\n connectionRetries: wsConnectionState.connectionRetries,\n timeOfOldestInflightRequest: this.requestManager.timeOfOldestInflightRequest(),\n inflightMutations: this.requestManager.inflightMutations(),\n inflightActions: this.requestManager.inflightActions()\n };\n }\n /**\n * Subscribe to the {@link ConnectionState} between the client and the Convex\n * backend, calling a callback each time it changes.\n *\n * Subscribed callbacks will be called when any part of ConnectionState changes.\n * ConnectionState may grow in future versions (e.g. to provide a array of\n * inflight requests) in which case callbacks would be called more frequently.\n *\n * @returns An unsubscribe function to stop listening.\n */\n subscribeToConnectionState(cb) {\n const id = this.nextConnectionStateSubscriberId++;\n this.connectionStateSubscribers.set(id, cb);\n return () => {\n this.connectionStateSubscribers.delete(id);\n };\n }\n /**\n * Execute a mutation function.\n *\n * @param name - The name of the mutation.\n * @param args - An arguments object for the mutation. If this is omitted,\n * the arguments will be `{}`.\n * @param options - A {@link MutationOptions} options object for this mutation.\n \n * @returns - A promise of the mutation's result.\n */\n async mutation(name, args, options) {\n const result = await this.mutationInternal(name, args, options);\n if (!result.success) {\n if (result.errorData !== void 0) {\n throw forwardData(\n result,\n new ConvexError(\n createHybridErrorStacktrace(\"mutation\", name, result)\n )\n );\n }\n throw new Error(createHybridErrorStacktrace(\"mutation\", name, result));\n }\n return result.value;\n }\n /**\n * @internal\n */\n async mutationInternal(udfPath, args, options, componentPath) {\n const { mutationPromise } = this.enqueueMutation(\n udfPath,\n args,\n options,\n componentPath\n );\n return mutationPromise;\n }\n /**\n * @internal\n */\n enqueueMutation(udfPath, args, options, componentPath) {\n const mutationArgs = parseArgs(args);\n this.tryReportLongDisconnect();\n const requestId = this.nextRequestId;\n this._nextRequestId++;\n if (options !== void 0) {\n const optimisticUpdate = options.optimisticUpdate;\n if (optimisticUpdate !== void 0) {\n const wrappedUpdate = (localQueryStore) => {\n const result = optimisticUpdate(\n localQueryStore,\n mutationArgs\n );\n if (result instanceof Promise) {\n this.logger.warn(\n \"Optimistic update handler returned a Promise. Optimistic updates should be synchronous.\"\n );\n }\n };\n const changedQueryTokens = this.optimisticQueryResults.applyOptimisticUpdate(\n wrappedUpdate,\n requestId\n );\n const changedQueries = changedQueryTokens.map((token) => {\n const localResult = this.localQueryResultByToken(token);\n return {\n token,\n modification: {\n kind: \"Updated\",\n result: localResult === void 0 ? void 0 : {\n success: true,\n value: localResult,\n logLines: []\n }\n }\n };\n });\n this.handleTransition({\n queries: changedQueries,\n reflectedMutations: [],\n timestamp: this.remoteQuerySet.timestamp()\n });\n }\n }\n const message = {\n type: \"Mutation\",\n requestId,\n udfPath,\n componentPath,\n args: [convexToJson(mutationArgs)]\n };\n const mightBeSent = this.webSocketManager.sendMessage(message);\n const mutationPromise = this.requestManager.request(message, mightBeSent);\n return {\n requestId,\n mutationPromise\n };\n }\n /**\n * Execute an action function.\n *\n * @param name - The name of the action.\n * @param args - An arguments object for the action. If this is omitted,\n * the arguments will be `{}`.\n * @returns A promise of the action's result.\n */\n async action(name, args) {\n const result = await this.actionInternal(name, args);\n if (!result.success) {\n if (result.errorData !== void 0) {\n throw forwardData(\n result,\n new ConvexError(createHybridErrorStacktrace(\"action\", name, result))\n );\n }\n throw new Error(createHybridErrorStacktrace(\"action\", name, result));\n }\n return result.value;\n }\n /**\n * @internal\n */\n async actionInternal(udfPath, args, componentPath) {\n const actionArgs = parseArgs(args);\n const requestId = this.nextRequestId;\n this._nextRequestId++;\n this.tryReportLongDisconnect();\n const message = {\n type: \"Action\",\n requestId,\n udfPath,\n componentPath,\n args: [convexToJson(actionArgs)]\n };\n const mightBeSent = this.webSocketManager.sendMessage(message);\n return this.requestManager.request(message, mightBeSent);\n }\n /**\n * Close any network handles associated with this client and stop all subscriptions.\n *\n * Call this method when you're done with an {@link BaseConvexClient} to\n * dispose of its sockets and resources.\n *\n * @returns A `Promise` fulfilled when the connection has been completely closed.\n */\n async close() {\n this.authenticationManager.stop();\n return this.webSocketManager.terminate();\n }\n /**\n * Return the address for this client, useful for creating a new client.\n *\n * Not guaranteed to match the address with which this client was constructed:\n * it may be canonicalized.\n */\n get url() {\n return this.address;\n }\n /**\n * @internal\n */\n get nextRequestId() {\n return this._nextRequestId;\n }\n /**\n * @internal\n */\n get sessionId() {\n return this._sessionId;\n }\n /**\n * Reports performance marks to the server. This should only be called when\n * we have a functional websocket.\n */\n reportMarks() {\n if (this.debug) {\n const report = getMarksReport(this.sessionId);\n this.webSocketManager.sendMessage({\n type: \"Event\",\n eventType: \"ClientConnect\",\n event: report\n });\n }\n }\n tryReportLongDisconnect() {\n if (!this.debug) {\n return;\n }\n const timeOfOldestRequest = this.connectionState().timeOfOldestInflightRequest;\n if (timeOfOldestRequest === null || Date.now() - timeOfOldestRequest.getTime() <= 60 * 1e3) {\n return;\n }\n const endpoint = `${this.address}/api/debug_event`;\n fetch(endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Convex-Client\": `npm-${version}`\n },\n body: JSON.stringify({ event: \"LongWebsocketDisconnect\" })\n }).then((response) => {\n if (!response.ok) {\n this.logger.warn(\n \"Analytics request failed with response:\",\n response.body\n );\n }\n }).catch((error) => {\n this.logger.warn(\"Analytics response failed with error:\", error);\n });\n }\n}\n//# sourceMappingURL=client.js.map\n","\"use strict\";\nexport function asPaginationArgs(value) {\n if (typeof value.paginationOpts.numItems !== \"number\") {\n throw new Error(`Not valid paginated query args: ${JSON.stringify(value)}`);\n }\n return value;\n}\nexport function asPaginationResult(value) {\n if (typeof value !== \"object\" || value === null || !Array.isArray(value.page) || typeof value.isDone !== \"boolean\" || typeof value.continueCursor !== \"string\") {\n throw new Error(`Not a valid paginated query result: ${value?.toString()}`);\n }\n return value;\n}\n//# sourceMappingURL=pagination.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport {\n serializePaginatedPathAndArgs,\n canonicalizeUdfPath\n} from \"./udf_path_utils.js\";\nimport {\n asPaginationResult\n} from \"./pagination.js\";\nimport { Long } from \"../../vendor/long.js\";\nexport class PaginatedQueryClient {\n constructor(client, onTransition) {\n this.client = client;\n this.onTransition = onTransition;\n __publicField(this, \"paginatedQuerySet\", /* @__PURE__ */ new Map());\n // hold onto a real Transition so we can construct synthetic ones with that timestamp\n __publicField(this, \"lastTransitionTs\");\n this.lastTransitionTs = Long.fromNumber(0);\n this.client.addOnTransitionHandler(\n (transition) => this.onBaseTransition(transition)\n );\n }\n /**\n * Subscribe to a paginated query.\n *\n * @param name - The name of the paginated query function\n * @param args - Arguments for the query (excluding paginationOpts)\n * @param options - Pagination options including initialNumItems\n * @returns Object with paginatedQueryToken and unsubscribe function\n */\n subscribe(name, args, options) {\n const canonicalizedUdfPath = canonicalizeUdfPath(name);\n const token = serializePaginatedPathAndArgs(\n canonicalizedUdfPath,\n args,\n options\n );\n const unsubscribe = () => this.removePaginatedQuerySubscriber(token);\n const existingEntry = this.paginatedQuerySet.get(token);\n if (existingEntry) {\n existingEntry.numSubscribers += 1;\n return {\n paginatedQueryToken: token,\n unsubscribe\n };\n }\n this.paginatedQuerySet.set(token, {\n token,\n canonicalizedUdfPath,\n args,\n numSubscribers: 1,\n options: { initialNumItems: options.initialNumItems },\n nextPageKey: 0,\n pageKeys: [],\n pageKeyToQuery: /* @__PURE__ */ new Map(),\n ongoingSplits: /* @__PURE__ */ new Map(),\n skip: false,\n id: options.id\n });\n this.addPageToPaginatedQuery(token, null, options.initialNumItems);\n return {\n paginatedQueryToken: token,\n unsubscribe\n };\n }\n /**\n * Get current results for a paginated query based on local state.\n *\n * Throws an error when one of the pages has errored.\n */\n localQueryResult(name, args, options) {\n const canonicalizedUdfPath = canonicalizeUdfPath(name);\n const token = serializePaginatedPathAndArgs(\n canonicalizedUdfPath,\n args,\n options\n );\n return this.localQueryResultByToken(token);\n }\n /**\n * @internal\n */\n localQueryResultByToken(token) {\n const paginatedQuery = this.paginatedQuerySet.get(token);\n if (!paginatedQuery) {\n return void 0;\n }\n const activePages = this.activePageQueryTokens(paginatedQuery);\n if (activePages.length === 0) {\n return {\n results: [],\n status: \"LoadingFirstPage\",\n loadMore: (numItems) => {\n return this.loadMoreOfPaginatedQuery(token, numItems);\n }\n };\n }\n let allResults = [];\n let hasUndefined = false;\n let isDone = false;\n for (const pageToken of activePages) {\n const result = this.client.localQueryResultByToken(pageToken);\n if (result === void 0) {\n hasUndefined = true;\n isDone = false;\n continue;\n }\n const paginationResult = asPaginationResult(result);\n allResults = allResults.concat(paginationResult.page);\n isDone = !!paginationResult.isDone;\n }\n let status;\n if (hasUndefined) {\n status = allResults.length === 0 ? \"LoadingFirstPage\" : \"LoadingMore\";\n } else if (isDone) {\n status = \"Exhausted\";\n } else {\n status = \"CanLoadMore\";\n }\n return {\n results: allResults,\n status,\n loadMore: (numItems) => {\n return this.loadMoreOfPaginatedQuery(token, numItems);\n }\n };\n }\n onBaseTransition(transition) {\n const changedBaseTokens = transition.queries.map((q) => q.token);\n const changed = this.queriesContainingTokens(changedBaseTokens);\n let paginatedQueries = [];\n if (changed.length > 0) {\n this.processPaginatedQuerySplits(\n changed,\n (token) => this.client.localQueryResultByToken(token)\n );\n paginatedQueries = changed.map((token) => ({\n token,\n modification: {\n kind: \"Updated\",\n result: this.localQueryResultByToken(token)\n }\n }));\n }\n const extendedTransition = {\n ...transition,\n paginatedQueries\n };\n this.onTransition(extendedTransition);\n }\n /**\n * Load more items for a paginated query.\n *\n * This *always* causes a transition, the status of the query\n * has probably changed from \"CanLoadMore\" to \"LoadingMore\".\n * Data might have changed too: maybe a subscription to this page\n * query already exists (unlikely but possible) or this page query\n * has an optimistic update providing some initial data.\n *\n * @internal\n */\n loadMoreOfPaginatedQuery(token, numItems) {\n this.mustGetPaginatedQuery(token);\n const lastPageToken = this.queryTokenForLastPageOfPaginatedQuery(token);\n const lastPageResult = this.client.localQueryResultByToken(lastPageToken);\n if (!lastPageResult) {\n return false;\n }\n const paginationResult = asPaginationResult(lastPageResult);\n if (paginationResult.isDone) {\n return false;\n }\n this.addPageToPaginatedQuery(\n token,\n paginationResult.continueCursor,\n numItems\n );\n const loadMoreTransition = {\n timestamp: this.lastTransitionTs,\n reflectedMutations: [],\n queries: [],\n paginatedQueries: [\n {\n token,\n modification: {\n kind: \"Updated\",\n result: this.localQueryResultByToken(token)\n }\n }\n ]\n };\n this.onTransition(loadMoreTransition);\n return true;\n }\n /**\n * @internal\n */\n queriesContainingTokens(queryTokens) {\n if (queryTokens.length === 0) {\n return [];\n }\n const changed = [];\n const queryTokenSet = new Set(queryTokens);\n for (const [paginatedToken, paginatedQuery] of this.paginatedQuerySet) {\n for (const pageToken of this.allQueryTokens(paginatedQuery)) {\n if (queryTokenSet.has(pageToken)) {\n changed.push(paginatedToken);\n break;\n }\n }\n }\n return changed;\n }\n /**\n * @internal\n */\n processPaginatedQuerySplits(changed, getResult) {\n for (const paginatedQueryToken of changed) {\n const paginatedQuery = this.mustGetPaginatedQuery(paginatedQueryToken);\n const { ongoingSplits, pageKeyToQuery, pageKeys } = paginatedQuery;\n for (const [pageKey, [splitKey1, splitKey2]] of ongoingSplits) {\n const bothNewPagesLoaded = getResult(pageKeyToQuery.get(splitKey1).queryToken) !== void 0 && getResult(pageKeyToQuery.get(splitKey2).queryToken) !== void 0;\n if (bothNewPagesLoaded) {\n this.completePaginatedQuerySplit(\n paginatedQuery,\n pageKey,\n splitKey1,\n splitKey2\n );\n }\n }\n for (const pageKey of pageKeys) {\n if (ongoingSplits.has(pageKey)) {\n continue;\n }\n const pageToken = pageKeyToQuery.get(pageKey).queryToken;\n const pageResult = getResult(pageToken);\n if (!pageResult) {\n continue;\n }\n const result = asPaginationResult(pageResult);\n const shouldSplit = result.splitCursor && (result.pageStatus === \"SplitRecommended\" || result.pageStatus === \"SplitRequired\" || // This client-driven page splitting condition will change in the future.\n result.page.length > paginatedQuery.options.initialNumItems * 2);\n if (shouldSplit) {\n this.splitPaginatedQueryPage(\n paginatedQuery,\n pageKey,\n result.splitCursor,\n // we just checked\n result.continueCursor\n );\n }\n }\n }\n }\n splitPaginatedQueryPage(paginatedQuery, pageKey, splitCursor, continueCursor) {\n const splitKey1 = paginatedQuery.nextPageKey++;\n const splitKey2 = paginatedQuery.nextPageKey++;\n const paginationOpts = {\n cursor: continueCursor,\n numItems: paginatedQuery.options.initialNumItems,\n id: paginatedQuery.id\n };\n const firstSubscription = this.client.subscribe(\n paginatedQuery.canonicalizedUdfPath,\n {\n ...paginatedQuery.args,\n paginationOpts: {\n ...paginationOpts,\n cursor: null,\n // Start from beginning for first split\n endCursor: splitCursor\n }\n }\n );\n paginatedQuery.pageKeyToQuery.set(splitKey1, firstSubscription);\n const secondSubscription = this.client.subscribe(\n paginatedQuery.canonicalizedUdfPath,\n {\n ...paginatedQuery.args,\n paginationOpts: {\n ...paginationOpts,\n cursor: splitCursor,\n endCursor: continueCursor\n }\n }\n );\n paginatedQuery.pageKeyToQuery.set(splitKey2, secondSubscription);\n paginatedQuery.ongoingSplits.set(pageKey, [splitKey1, splitKey2]);\n }\n /**\n * @internal\n */\n addPageToPaginatedQuery(token, continueCursor, numItems) {\n const paginatedQuery = this.mustGetPaginatedQuery(token);\n const pageKey = paginatedQuery.nextPageKey++;\n const paginationOpts = {\n cursor: continueCursor,\n numItems,\n id: paginatedQuery.id\n };\n const pageArgs = {\n ...paginatedQuery.args,\n paginationOpts\n };\n const subscription = this.client.subscribe(\n paginatedQuery.canonicalizedUdfPath,\n pageArgs\n );\n paginatedQuery.pageKeys.push(pageKey);\n paginatedQuery.pageKeyToQuery.set(pageKey, subscription);\n return subscription;\n }\n removePaginatedQuerySubscriber(token) {\n const paginatedQuery = this.paginatedQuerySet.get(token);\n if (!paginatedQuery) {\n return;\n }\n paginatedQuery.numSubscribers -= 1;\n if (paginatedQuery.numSubscribers > 0) {\n return;\n }\n for (const subscription of paginatedQuery.pageKeyToQuery.values()) {\n subscription.unsubscribe();\n }\n this.paginatedQuerySet.delete(token);\n }\n completePaginatedQuerySplit(paginatedQuery, pageKey, splitKey1, splitKey2) {\n const originalQuery = paginatedQuery.pageKeyToQuery.get(pageKey);\n paginatedQuery.pageKeyToQuery.delete(pageKey);\n const pageIndex = paginatedQuery.pageKeys.indexOf(pageKey);\n paginatedQuery.pageKeys.splice(pageIndex, 1, splitKey1, splitKey2);\n paginatedQuery.ongoingSplits.delete(pageKey);\n originalQuery.unsubscribe();\n }\n /** The query tokens for all active pages, in result order */\n activePageQueryTokens(paginatedQuery) {\n return paginatedQuery.pageKeys.map(\n (pageKey) => paginatedQuery.pageKeyToQuery.get(pageKey).queryToken\n );\n }\n allQueryTokens(paginatedQuery) {\n return Array.from(paginatedQuery.pageKeyToQuery.values()).map(\n (sub) => sub.queryToken\n );\n }\n queryTokenForLastPageOfPaginatedQuery(token) {\n const paginatedQuery = this.mustGetPaginatedQuery(token);\n const lastPageKey = paginatedQuery.pageKeys[paginatedQuery.pageKeys.length - 1];\n if (lastPageKey === void 0) {\n throw new Error(`No pages for paginated query ${token}`);\n }\n return paginatedQuery.pageKeyToQuery.get(lastPageKey).queryToken;\n }\n mustGetPaginatedQuery(token) {\n const paginatedQuery = this.paginatedQuerySet.get(token);\n if (!paginatedQuery) {\n throw new Error(\"paginated query no longer exists for token \" + token);\n }\n return paginatedQuery;\n }\n}\n//# sourceMappingURL=paginated_query_client.js.map\n","\"use strict\";\nimport { useEffect, useState } from \"react\";\nexport function useSubscription({\n // (Synchronously) returns the current value of our subscription.\n getCurrentValue,\n // This function is passed an event handler to attach to the subscription.\n // It should return an unsubscribe function that removes the handler.\n subscribe\n}) {\n const [state, setState] = useState(() => ({\n getCurrentValue,\n subscribe,\n value: getCurrentValue()\n }));\n let valueToReturn = state.value;\n if (state.getCurrentValue !== getCurrentValue || state.subscribe !== subscribe) {\n valueToReturn = getCurrentValue();\n setState({\n getCurrentValue,\n subscribe,\n value: valueToReturn\n });\n }\n useEffect(() => {\n let didUnsubscribe = false;\n const checkForUpdates = () => {\n if (didUnsubscribe) {\n return;\n }\n setState((prevState) => {\n if (prevState.getCurrentValue !== getCurrentValue || prevState.subscribe !== subscribe) {\n return prevState;\n }\n const value = getCurrentValue();\n if (prevState.value === value) {\n return prevState;\n }\n return { ...prevState, value };\n });\n };\n const unsubscribe = subscribe(checkForUpdates);\n checkForUpdates();\n return () => {\n didUnsubscribe = true;\n unsubscribe();\n };\n }, [getCurrentValue, subscribe]);\n return valueToReturn;\n}\n//# sourceMappingURL=use_subscription.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { BaseConvexClient } from \"../browser/index.js\";\nimport React, { useCallback, useContext, useMemo } from \"react\";\nimport { convexToJson } from \"../values/index.js\";\nimport { useQueries } from \"./use_queries.js\";\nimport { useSubscription } from \"./use_subscription.js\";\nimport { parseArgs } from \"../common/index.js\";\nimport {\n getFunctionName,\n makeFunctionReference\n} from \"../server/api.js\";\nimport {\n instantiateDefaultLogger,\n instantiateNoopLogger\n} from \"../browser/logging.js\";\nimport {\n PaginatedQueryClient\n} from \"../browser/sync/paginated_query_client.js\";\nconst DEFAULT_EXTEND_SUBSCRIPTION_FOR = 5e3;\nif (typeof React === \"undefined\") {\n throw new Error(\"Required dependency 'react' not found\");\n}\nexport function createMutation(mutationReference, client, update) {\n function mutation(args) {\n assertNotAccidentalArgument(args);\n return client.mutation(mutationReference, args, {\n optimisticUpdate: update\n });\n }\n mutation.withOptimisticUpdate = function withOptimisticUpdate(optimisticUpdate) {\n if (update !== void 0) {\n throw new Error(\n `Already specified optimistic update for mutation ${getFunctionName(\n mutationReference\n )}`\n );\n }\n return createMutation(mutationReference, client, optimisticUpdate);\n };\n return mutation;\n}\nfunction createAction(actionReference, client) {\n return function(args) {\n return client.action(actionReference, args);\n };\n}\nexport class ConvexReactClient {\n /**\n * @param address - The url of your Convex deployment, often provided\n * by an environment variable. E.g. `https://small-mouse-123.convex.cloud`.\n * @param options - See {@link ConvexReactClientOptions} for a full description.\n */\n constructor(address, options) {\n __publicField(this, \"address\");\n __publicField(this, \"cachedSync\");\n __publicField(this, \"cachedPaginatedQueryClient\");\n __publicField(this, \"listeners\");\n __publicField(this, \"options\");\n // \"closed\" means this client is done, not just that the underlying WS connection is closed.\n __publicField(this, \"closed\", false);\n __publicField(this, \"_logger\");\n __publicField(this, \"adminAuth\");\n __publicField(this, \"fakeUserIdentity\");\n if (address === void 0) {\n throw new Error(\n \"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.\"\n );\n }\n if (typeof address !== \"string\") {\n throw new Error(\n `ConvexReactClient requires a URL like 'https://happy-otter-123.convex.cloud', received something of type ${typeof address} instead.`\n );\n }\n if (!address.includes(\"://\")) {\n throw new Error(\"Provided address was not an absolute URL.\");\n }\n this.address = address;\n this.listeners = /* @__PURE__ */ new Map();\n this._logger = options?.logger === false ? instantiateNoopLogger({ verbose: options?.verbose ?? false }) : options?.logger !== true && options?.logger ? options.logger : instantiateDefaultLogger({ verbose: options?.verbose ?? false });\n this.options = { ...options, logger: this._logger };\n }\n /**\n * Return the address for this client, useful for creating a new client.\n *\n * Not guaranteed to match the address with which this client was constructed:\n * it may be canonicalized.\n */\n get url() {\n return this.address;\n }\n /**\n * Lazily instantiate the `BaseConvexClient` so we don't create the WebSocket\n * when server-side rendering.\n *\n * @internal\n */\n get sync() {\n if (this.closed) {\n throw new Error(\"ConvexReactClient has already been closed.\");\n }\n if (this.cachedSync) {\n return this.cachedSync;\n }\n this.cachedSync = new BaseConvexClient(\n this.address,\n () => {\n },\n // Use the PaginatedQueryClient's transition instead.\n this.options\n );\n if (this.adminAuth) {\n this.cachedSync.setAdminAuth(this.adminAuth, this.fakeUserIdentity);\n }\n this.cachedPaginatedQueryClient = new PaginatedQueryClient(\n this.cachedSync,\n (transition) => this.handleTransition(transition)\n );\n return this.cachedSync;\n }\n /**\n * Lazily instantiate the `PaginatedQueryClient` so we don't create it\n * when server-side rendering.\n *\n * @internal\n */\n get paginatedQueryClient() {\n this.sync;\n if (this.cachedPaginatedQueryClient) {\n return this.cachedPaginatedQueryClient;\n }\n throw new Error(\"Should already be instantiated\");\n }\n /**\n * Set the authentication token to be used for subsequent queries and mutations.\n * `fetchToken` will be called automatically again if a token expires.\n * `fetchToken` should return `null` if the token cannot be retrieved, for example\n * when the user's rights were permanently revoked.\n * @param fetchToken - an async function returning the JWT-encoded OpenID Connect Identity Token\n * @param onChange - a callback that will be called when the authentication status changes\n */\n setAuth(fetchToken, onChange) {\n if (typeof fetchToken === \"string\") {\n throw new Error(\n \"Passing a string to ConvexReactClient.setAuth is no longer supported, please upgrade to passing in an async function to handle reauthentication.\"\n );\n }\n this.sync.setAuth(\n fetchToken,\n onChange ?? (() => {\n })\n );\n }\n /**\n * Clear the current authentication token if set.\n */\n clearAuth() {\n this.sync.clearAuth();\n }\n /**\n * @internal\n */\n setAdminAuth(token, identity) {\n this.adminAuth = token;\n this.fakeUserIdentity = identity;\n if (this.closed) {\n throw new Error(\"ConvexReactClient has already been closed.\");\n }\n if (this.cachedSync) {\n this.sync.setAdminAuth(token, identity);\n }\n }\n /**\n * Construct a new {@link Watch} on a Convex query function.\n *\n * **Most application code should not call this method directly. Instead use\n * the {@link useQuery} hook.**\n *\n * The act of creating a watch does nothing, a Watch is stateless.\n *\n * @param query - A {@link server.FunctionReference} for the public query to run.\n * @param args - An arguments object for the query. If this is omitted,\n * the arguments will be `{}`.\n * @param options - A {@link WatchQueryOptions} options object for this query.\n *\n * @returns The {@link Watch} object.\n */\n watchQuery(query, ...argsAndOptions) {\n const [args, options] = argsAndOptions;\n const name = getFunctionName(query);\n return {\n onUpdate: (callback) => {\n const { queryToken, unsubscribe } = this.sync.subscribe(\n name,\n args,\n options\n );\n const currentListeners = this.listeners.get(queryToken);\n if (currentListeners !== void 0) {\n currentListeners.add(callback);\n } else {\n this.listeners.set(queryToken, /* @__PURE__ */ new Set([callback]));\n }\n return () => {\n if (this.closed) {\n return;\n }\n const currentListeners2 = this.listeners.get(queryToken);\n currentListeners2.delete(callback);\n if (currentListeners2.size === 0) {\n this.listeners.delete(queryToken);\n }\n unsubscribe();\n };\n },\n localQueryResult: () => {\n if (this.cachedSync) {\n return this.cachedSync.localQueryResult(name, args);\n }\n return void 0;\n },\n localQueryLogs: () => {\n if (this.cachedSync) {\n return this.cachedSync.localQueryLogs(name, args);\n }\n return void 0;\n },\n journal: () => {\n if (this.cachedSync) {\n return this.cachedSync.queryJournal(name, args);\n }\n return void 0;\n }\n };\n }\n // Let's try out a queryOptions-style API.\n // This method is similar to the React Query API `queryClient.prefetchQuery()`.\n // In the future an ensureQueryData(): Promise<Data> method could exist.\n /**\n * Indicates likely future interest in a query subscription.\n *\n * The implementation currently immediately subscribes to a query. In the future this method\n * may prioritize some queries over others, fetch the query result without subscribing, or\n * do nothing in slow network connections or high load scenarios.\n *\n * To use this in a React component, call useQuery() and ignore the return value.\n *\n * @param queryOptions - A query (function reference from an api object) and its args, plus\n * an optional extendSubscriptionFor for how long to subscribe to the query.\n */\n prewarmQuery(queryOptions) {\n const extendSubscriptionFor = queryOptions.extendSubscriptionFor ?? DEFAULT_EXTEND_SUBSCRIPTION_FOR;\n const watch = this.watchQuery(queryOptions.query, queryOptions.args || {});\n const unsubscribe = watch.onUpdate(() => {\n });\n setTimeout(unsubscribe, extendSubscriptionFor);\n }\n /**\n * Construct a new {@link PaginatedWatch} on a Convex paginated query function.\n *\n * **Most application code should not call this method directly. Instead use\n * the {@link usePaginatedQuery} hook.**\n *\n * The act of creating a watch does nothing, a Watch is stateless.\n *\n * @param query - A {@link server.FunctionReference} for the public query to run.\n * @param args - An arguments object for the query. If this is omitted,\n * the arguments will be `{}`.\n * @param options - A {@link WatchPaginatedQueryOptions} options object for this query.\n *\n * @returns The {@link PaginatedWatch} object.\n *\n * @internal\n */\n watchPaginatedQuery(query, args, options) {\n const name = getFunctionName(query);\n return {\n onUpdate: (callback) => {\n const { paginatedQueryToken, unsubscribe } = this.paginatedQueryClient.subscribe(name, args || {}, options);\n const currentListeners = this.listeners.get(paginatedQueryToken);\n if (currentListeners !== void 0) {\n currentListeners.add(callback);\n } else {\n this.listeners.set(paginatedQueryToken, /* @__PURE__ */ new Set([callback]));\n }\n return () => {\n if (this.closed) {\n return;\n }\n const currentListeners2 = this.listeners.get(paginatedQueryToken);\n currentListeners2.delete(callback);\n if (currentListeners2.size === 0) {\n this.listeners.delete(paginatedQueryToken);\n }\n unsubscribe();\n };\n },\n localQueryResult: () => {\n return this.paginatedQueryClient.localQueryResult(name, args, options);\n }\n };\n }\n /**\n * Execute a mutation function.\n *\n * @param mutation - A {@link server.FunctionReference} for the public mutation\n * to run.\n * @param args - An arguments object for the mutation. If this is omitted,\n * the arguments will be `{}`.\n * @param options - A {@link MutationOptions} options object for the mutation.\n * @returns A promise of the mutation's result.\n */\n mutation(mutation, ...argsAndOptions) {\n const [args, options] = argsAndOptions;\n const name = getFunctionName(mutation);\n return this.sync.mutation(name, args, options);\n }\n /**\n * Execute an action function.\n *\n * @param action - A {@link server.FunctionReference} for the public action\n * to run.\n * @param args - An arguments object for the action. If this is omitted,\n * the arguments will be `{}`.\n * @returns A promise of the action's result.\n */\n action(action, ...args) {\n const name = getFunctionName(action);\n return this.sync.action(name, ...args);\n }\n /**\n * Fetch a query result once.\n *\n * **Most application code should subscribe to queries instead, using\n * the {@link useQuery} hook.**\n *\n * @param query - A {@link server.FunctionReference} for the public query\n * to run.\n * @param args - An arguments object for the query. If this is omitted,\n * the arguments will be `{}`.\n * @returns A promise of the query's result.\n */\n query(query, ...args) {\n const watch = this.watchQuery(query, ...args);\n const existingResult = watch.localQueryResult();\n if (existingResult !== void 0) {\n return Promise.resolve(existingResult);\n }\n return new Promise((resolve, reject) => {\n const unsubscribe = watch.onUpdate(() => {\n unsubscribe();\n try {\n resolve(watch.localQueryResult());\n } catch (e) {\n reject(e);\n }\n });\n });\n }\n /**\n * Get the current {@link ConnectionState} between the client and the Convex\n * backend.\n *\n * @returns The {@link ConnectionState} with the Convex backend.\n */\n connectionState() {\n return this.sync.connectionState();\n }\n /**\n * Subscribe to the {@link ConnectionState} between the client and the Convex\n * backend, calling a callback each time it changes.\n *\n * Subscribed callbacks will be called when any part of ConnectionState changes.\n * ConnectionState may grow in future versions (e.g. to provide a array of\n * inflight requests) in which case callbacks would be called more frequently.\n * ConnectionState may also *lose* properties in future versions as we figure\n * out what information is most useful. As such this API is considered unstable.\n *\n * @returns An unsubscribe function to stop listening.\n */\n subscribeToConnectionState(cb) {\n return this.sync.subscribeToConnectionState(cb);\n }\n /**\n * Get the logger for this client.\n *\n * @returns The {@link Logger} for this client.\n */\n get logger() {\n return this._logger;\n }\n /**\n * Close any network handles associated with this client and stop all subscriptions.\n *\n * Call this method when you're done with a {@link ConvexReactClient} to\n * dispose of its sockets and resources.\n *\n * @returns A `Promise` fulfilled when the connection has been completely closed.\n */\n async close() {\n this.closed = true;\n this.listeners = /* @__PURE__ */ new Map();\n if (this.cachedPaginatedQueryClient) {\n this.cachedPaginatedQueryClient = void 0;\n }\n if (this.cachedSync) {\n const sync = this.cachedSync;\n this.cachedSync = void 0;\n await sync.close();\n }\n }\n /**\n * Handle transitions from both base client and paginated client.\n * This ensures all transitions are processed synchronously and in order.\n */\n handleTransition(transition) {\n const simple = transition.queries.map((q) => q.token);\n const paginated = transition.paginatedQueries.map((q) => q.token);\n this.transition([...simple, ...paginated]);\n }\n transition(updatedQueries) {\n for (const queryToken of updatedQueries) {\n const callbacks = this.listeners.get(queryToken);\n if (callbacks) {\n for (const callback of callbacks) {\n callback();\n }\n }\n }\n }\n}\nconst ConvexContext = React.createContext(\n void 0\n // in the future this will be a mocked client for testing\n);\nexport function useConvex() {\n return useContext(ConvexContext);\n}\nexport const ConvexProvider = ({ client, children }) => {\n return React.createElement(\n ConvexContext.Provider,\n { value: client },\n children\n );\n};\nexport function useQuery(query, ...args) {\n const skip = args[0] === \"skip\";\n const argsObject = args[0] === \"skip\" ? {} : parseArgs(args[0]);\n const queryReference = typeof query === \"string\" ? makeFunctionReference(query) : query;\n const queryName = getFunctionName(queryReference);\n const queries = useMemo(\n () => skip ? {} : { query: { query: queryReference, args: argsObject } },\n // Stringify args so args that are semantically the same don't trigger a\n // rerender. Saves developers from adding `useMemo` on every args usage.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(convexToJson(argsObject)), queryName, skip]\n );\n const results = useQueries(queries);\n const result = results[\"query\"];\n if (result instanceof Error) {\n throw result;\n }\n return result;\n}\nexport function useMutation(mutation) {\n const mutationReference = typeof mutation === \"string\" ? makeFunctionReference(mutation) : mutation;\n const convex = useContext(ConvexContext);\n if (convex === void 0) {\n throw new Error(\n \"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\"\n );\n }\n return useMemo(\n () => createMutation(mutationReference, convex),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [convex, getFunctionName(mutationReference)]\n );\n}\nexport function useAction(action) {\n const convex = useContext(ConvexContext);\n const actionReference = typeof action === \"string\" ? makeFunctionReference(action) : action;\n if (convex === void 0) {\n throw new Error(\n \"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\"\n );\n }\n return useMemo(\n () => createAction(actionReference, convex),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [convex, getFunctionName(actionReference)]\n );\n}\nexport function useConvexConnectionState() {\n const convex = useContext(ConvexContext);\n if (convex === void 0) {\n throw new Error(\n \"Could not find Convex client! `useConvexConnectionState` 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\"\n );\n }\n const getCurrentValue = useCallback(() => {\n return convex.connectionState();\n }, [convex]);\n const subscribe = useCallback(\n (callback) => {\n return convex.subscribeToConnectionState(() => {\n callback();\n });\n },\n [convex]\n );\n return useSubscription({ getCurrentValue, subscribe });\n}\nfunction assertNotAccidentalArgument(value) {\n if (typeof value === \"object\" && value !== null && \"bubbles\" in value && \"persist\" in value && \"isDefaultPrevented\" in value) {\n throw new Error(\n `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.`\n );\n }\n}\n//# sourceMappingURL=client.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { convexToJson } from \"../values/index.js\";\nimport { getFunctionName } from \"../server/api.js\";\nexport class QueriesObserver {\n constructor(createWatch) {\n __publicField(this, \"createWatch\");\n __publicField(this, \"queries\");\n __publicField(this, \"listeners\");\n this.createWatch = createWatch;\n this.queries = {};\n this.listeners = /* @__PURE__ */ new Set();\n }\n setQueries(newQueries) {\n for (const identifier of Object.keys(newQueries)) {\n const { query, args, paginationOptions } = newQueries[identifier];\n getFunctionName(query);\n if (this.queries[identifier] === void 0) {\n this.addQuery(\n identifier,\n query,\n args,\n paginationOptions ? { paginationOptions } : {}\n );\n } else {\n const existingInfo = this.queries[identifier];\n if (getFunctionName(query) !== getFunctionName(existingInfo.query) || JSON.stringify(convexToJson(args)) !== JSON.stringify(convexToJson(existingInfo.args)) || JSON.stringify(paginationOptions) !== JSON.stringify(existingInfo.paginationOptions)) {\n this.removeQuery(identifier);\n this.addQuery(\n identifier,\n query,\n args,\n paginationOptions ? { paginationOptions } : {}\n );\n }\n }\n }\n for (const identifier of Object.keys(this.queries)) {\n if (newQueries[identifier] === void 0) {\n this.removeQuery(identifier);\n }\n }\n }\n subscribe(listener) {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n getLocalResults(queries) {\n const result = {};\n for (const identifier of Object.keys(queries)) {\n const { query, args } = queries[identifier];\n const paginationOptions = queries[identifier].paginationOptions;\n getFunctionName(query);\n const watch = this.createWatch(\n query,\n args,\n paginationOptions ? { paginationOptions } : {}\n );\n let value;\n try {\n value = watch.localQueryResult();\n } catch (e) {\n if (e instanceof Error) {\n value = e;\n } else {\n throw e;\n }\n }\n result[identifier] = value;\n }\n return result;\n }\n setCreateWatch(createWatch) {\n this.createWatch = createWatch;\n for (const identifier of Object.keys(this.queries)) {\n const { query, args, watch, paginationOptions } = this.queries[identifier];\n const journal = \"journal\" in watch ? watch.journal() : void 0;\n this.removeQuery(identifier);\n this.addQuery(identifier, query, args, {\n ...journal ? { journal } : [],\n ...paginationOptions ? { paginationOptions } : {}\n });\n }\n }\n destroy() {\n for (const identifier of Object.keys(this.queries)) {\n this.removeQuery(identifier);\n }\n this.listeners = /* @__PURE__ */ new Set();\n }\n addQuery(identifier, query, args, {\n paginationOptions,\n journal\n }) {\n if (this.queries[identifier] !== void 0) {\n throw new Error(\n `Tried to add a new query with identifier ${identifier} when it already exists.`\n );\n }\n const watch = this.createWatch(query, args, {\n ...journal ? { journal } : [],\n ...paginationOptions ? { paginationOptions } : {}\n });\n const unsubscribe = watch.onUpdate(() => this.notifyListeners());\n this.queries[identifier] = {\n query,\n args,\n watch,\n unsubscribe,\n ...paginationOptions ? { paginationOptions } : {}\n };\n }\n removeQuery(identifier) {\n const info = this.queries[identifier];\n if (info === void 0) {\n throw new Error(`No query found with identifier ${identifier}.`);\n }\n info.unsubscribe();\n delete this.queries[identifier];\n }\n notifyListeners() {\n for (const listener of this.listeners) {\n listener();\n }\n }\n}\n//# sourceMappingURL=queries_observer.js.map\n","\"use strict\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useConvex } from \"./client.js\";\nimport { QueriesObserver } from \"./queries_observer.js\";\nimport { useSubscription } from \"./use_subscription.js\";\nexport function useQueries(queries) {\n const convex = useConvex();\n if (convex === void 0) {\n throw new Error(\n \"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\"\n );\n }\n const createWatch = useMemo(() => {\n return (query, args, {\n journal,\n paginationOptions\n }) => {\n if (paginationOptions) {\n return convex.watchPaginatedQuery(query, args, paginationOptions);\n } else {\n return convex.watchQuery(query, args, journal ? { journal } : {});\n }\n };\n }, [convex]);\n return useQueriesHelper(queries, createWatch);\n}\nexport function useQueriesHelper(queries, createWatch) {\n const [observer] = useState(() => new QueriesObserver(createWatch));\n if (observer.createWatch !== createWatch) {\n observer.setCreateWatch(createWatch);\n }\n useEffect(() => () => observer.destroy(), [observer]);\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => {\n return observer.getLocalResults(queries);\n },\n subscribe: (callback) => {\n observer.setQueries(queries);\n return observer.subscribe(callback);\n }\n }),\n [observer, queries]\n );\n return useSubscription(subscription);\n}\n//# sourceMappingURL=use_queries.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.o;n.o=void 0;n.f&=-3;if(!(8&n.f)&&a(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0;function e(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function d(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}d.prototype.brand=i;d.prototype.h=function(){return!0};d.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};d.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};d.prototype.subscribe=function(i){var t=this;return m(function(){var n=t.value,o=r;r=void 0;try{i(n)}finally{r=o}},{name:\"sub\"})};d.prototype.valueOf=function(){return this.value};d.prototype.toString=function(){return this.value+\"\"};d.prototype.toJSON=function(){return this.value};d.prototype.peek=function(){var i=r;r=void 0;try{return this.value}finally{r=i}};Object.defineProperty(d.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;u++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function c(i,t){return new d(i,t)}function a(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function l(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function w(i,t){d.call(this,void 0);this.x=i;this.s=void 0;this.g=u-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}w.prototype=new d;w.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===u)return!0;this.g=u;this.f|=1;if(this.i>0&&!a(this)){this.f&=-2;return!0}var i=r;try{l(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;y(this);this.f&=-2;return!0};w.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}d.prototype.S.call(this,i)};w.prototype.U=function(i){if(void 0!==this.t){d.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};w.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(w.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function b(i,t){return new w(i,t)}function _(i){var n=i.u;i.u=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;p(i);throw t}finally{r=o;t()}}}function p(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function g(i){if(r!==this)throw new Error(\"Out-of-order effect\");y(this);r=i;this.f&=-2;if(8&this.f)p(this);t()}function S(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}S.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};S.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);s++;var i=r;r=this;return g.bind(this,i)};S.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};S.prototype.d=function(){this.f|=8;if(!(1&this.f))p(this)};S.prototype.dispose=function(){this.d()};function m(i,t){var n=new S(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function E(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function x(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}function C(i){return function(){var t,n,r=x();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}for(var o in n)if(\"function\"==typeof n[o])n[o]=E(n[o]);n[Symbol.dispose]=E(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{w as Computed,S as Effect,d as Signal,E as action,n as batch,b as computed,C as createModel,m as effect,c as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import{Component as i,options as n,isValidElement as t,Fragment as r}from\"preact\";import{useMemo as o,useRef as f,useEffect as e}from\"preact/hooks\";import{effect as u,Signal as a,computed as c,signal as v,batch as s}from\"@preact/signals-core\";export{Signal,action,batch,computed,createModel,effect,signal,untracked}from\"@preact/signals-core\";var l,h,d,p=\"undefined\"!=typeof window&&!!window.__PREACT_SIGNALS_DEVTOOLS__,m=[],_=[];u(function(){l=this.N})();function g(i,t){n[i]=t.bind(null,n[i]||function(){})}function b(i){if(d){var n=d;d=void 0;n()}d=i&&i.S()}function y(i){var n=this,r=i.data,f=useSignal(r);f.value=r;var e=o(function(){var i=n,r=n.__v;while(r=r.__)if(r.__c){r.__c.__$f|=4;break}var o=c(function(){var i=f.value.value;return 0===i?0:!0===i?\"\":i||\"\"}),e=c(function(){return!Array.isArray(o.value)&&!t(o.value)}),a=u(function(){this.N=F;if(e.value){var n=o.value;if(i.__v&&i.__v.__e&&3===i.__v.__e.nodeType)i.__v.__e.data=n}}),v=n.__$u.d;n.__$u.d=function(){a();v.call(this)};return[e,o]},[]),a=e[0],v=e[1];return a.value?v.peek():v.value}y.displayName=\"ReactiveTextNode\";Object.defineProperties(a.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:y},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}});g(\"__b\",function(i,n){if(\"string\"==typeof n.type){var t,r=n.props;for(var o in r)if(\"children\"!==o){var f=r[o];if(f instanceof a){if(!t)n.__np=t={};t[o]=f;r[o]=f.peek()}}}i(n)});g(\"__r\",function(i,n){i(n);if(n.type!==r){b();var t,o=n.__c;if(o){o.__$f&=-2;if(void 0===(t=o.__$u))o.__$u=t=function(i,n){var t;u(function(){t=this},{name:n});t.c=i;return t}(function(){var i;if(p)null==(i=t.y)||i.call(t);o.__$f|=1;o.setState({})},\"function\"==typeof n.type?n.type.displayName||n.type.name:\"\")}h=o;b(t)}});g(\"__e\",function(i,n,t,r){b();h=void 0;i(n,t,r)});g(\"diffed\",function(i,n){b();h=void 0;var t;if(\"string\"==typeof n.type&&(t=n.__e)){var r=n.__np,o=n.props;if(r){var f=t.U;if(f)for(var e in f){var u=f[e];if(void 0!==u&&!(e in r)){u.d();f[e]=void 0}}else{f={};t.U=f}for(var a in r){var c=f[a],v=r[a];if(void 0===c){c=w(t,a,v,o);f[a]=c}else c.o(v,o)}}}i(n)});function w(i,n,t,r){var o=n in i&&void 0===i.ownerSVGElement,f=v(t);return{o:function(i,n){f.value=i;r=n},d:u(function(){this.N=F;var t=f.value.value;if(r[n]!==t){r[n]=t;if(o)i[n]=t;else if(null!=t&&(!1!==t||\"-\"===n[4]))i.setAttribute(n,t);else i.removeAttribute(n)}})}}g(\"unmount\",function(i,n){if(\"string\"==typeof n.type){var t=n.__e;if(t){var r=t.U;if(r){t.U=void 0;for(var o in r){var f=r[o];if(f)f.d()}}}}else{var e=n.__c;if(e){var u=e.__$u;if(u){e.__$u=void 0;u.d()}}}i(n)});g(\"__h\",function(i,n,t,r){if(r<3||9===r)n.__$f|=2;i(n,t,r)});i.prototype.shouldComponentUpdate=function(i,n){if(this.__R)return!0;var t=this.__$u,r=t&&void 0!==t.s;for(var o in n)return!0;if(this.__f||\"boolean\"==typeof this.u&&!0===this.u){var f=2&this.__$f;if(!(r||f||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(r||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var e in i)if(\"__source\"!==e&&i[e]!==this.props[e])return!0;for(var u in this.props)if(!(u in i))return!0;return!1};function useSignal(i,n){return o(function(){return v(i,n)},[])}function useComputed(i,n){var t=f(i);t.current=i;h.__$f|=4;return o(function(){return c(function(){return t.current()},n)},[])}var k=\"undefined\"==typeof requestAnimationFrame?setTimeout:function(i){var n=function(){clearTimeout(t);cancelAnimationFrame(r);i()},t=setTimeout(n,35),r=requestAnimationFrame(n)},q=function(i){queueMicrotask(function(){queueMicrotask(i)})};function A(){s(function(){var i;while(i=m.shift())l.call(i)})}function T(){if(1===m.push(this))(n.requestAnimationFrame||k)(A)}function x(){s(function(){var i;while(i=_.shift())l.call(i)})}function F(){if(1===_.push(this))(n.requestAnimationFrame||q)(x)}function useSignalEffect(i,n){var t=f(i);t.current=i;e(function(){return u(function(){this.N=T;return t.current()},n)},[])}function M(i){var n=o(function(){return i()},[]);e(function(){return n[Symbol.dispose]},[n]);return n}export{useComputed,M as useModel,useSignal,useSignalEffect};//# sourceMappingURL=signals.module.js.map\n","import { signal } from '@preact/signals'\n\n/**\n * Whether the chat window is currently open.\n *\n * Lives in its own file because it is read and written across multiple layers:\n * - widget-instance.ts open() / close() / toggle() / subscribe()\n * - mount.tsx reset to false on shutdown\n * - WidgetShell.tsx conditionally renders the chat window\n * - FAB.tsx toggle button reads and flips this value\n *\n * Keeping it here prevents any one of those files from becoming the\n * \"source\" that others import from — none of them own it, they all share it.\n */\nexport const isOpen = signal(false)\n","/**\n * Convex URL normalisation helpers.\n *\n * VITE_CONVEX_URL accepts either Convex URL format:\n * https://<name>.convex.cloud — WebSocket / REST API base\n * https://<name>.convex.site — HTTP Actions base\n *\n * These helpers normalise whichever format is provided to the one needed\n * by each consumer, so only a single env var is required.\n *\n * The \\b word-boundary in each regex prevents partial matches if the\n * hostname ever contains the pattern mid-string.\n */\n\n/** Returns the .convex.cloud URL regardless of which format is provided. */\nexport function toConvexCloudUrl(url: string): string {\n return url.replace(/\\.convex\\.site\\b/, '.convex.cloud')\n}\n\n/** Returns the .convex.site URL regardless of which format is provided. */\nexport function toConvexSiteUrl(url: string): string {\n return url.replace(/\\.convex\\.cloud\\b/, '.convex.site')\n}\n","import type { JexityChatOptions } from '../types'\nimport type { WidgetLocale } from '../i18n/index'\n\n/**\n * Fully-resolved widget configuration — produced by merging embed-script\n * options with the Convex remote config (embed options take precedence).\n *\n * All fields with defaults are non-optional so consumers never need ?? chains.\n */\nexport interface ResolvedWidgetConfig {\n // Display\n title: string\n greeting: string\n locale: string | undefined\n // Position / appearance\n position: JexityChatOptions['position']\n colorScheme: JexityChatOptions['colorScheme']\n hideBranding: boolean\n // Floating action button\n triggerIcon: NonNullable<JexityChatOptions['triggerIcon']>\n triggerRadius: NonNullable<JexityChatOptions['triggerRadius']>\n triggerLabel: string\n // Theme overrides (passed through to buildThemeStyle)\n primaryColor: string | undefined\n accentColor: string | undefined\n fontFamily: string | undefined\n fontSize: number | undefined\n borderRadius: string | undefined\n windowWidth: number | undefined\n windowHeight: number | undefined\n}\n\n/**\n * Merges embed-script options with the remote Convex config.\n * Embed-script values always take precedence; remote config fills the gaps.\n *\n * Centralising the merge here means AppShell never needs ?? chains,\n * and any new remote config field has exactly one place to wire it in.\n */\nexport function mergeWidgetConfig(\n options: JexityChatOptions,\n remote: RemoteConfig | null,\n): ResolvedWidgetConfig {\n const title = options.title ?? remote?.title ?? 'Assistant'\n return {\n title,\n greeting: options.greeting ?? remote?.welcomeMessage ?? `Hi! I'm ${title}. How can I help?`,\n locale: options.locale ?? remote?.locale,\n position: options.position ?? remote?.position,\n colorScheme: options.colorScheme ?? remote?.colorScheme,\n hideBranding: options.hideBranding ?? remote?.hideBranding ?? false,\n triggerIcon: options.triggerIcon ?? remote?.triggerIcon ?? 'chat',\n triggerRadius: options.triggerRadius ?? remote?.triggerRadius ?? 'full',\n triggerLabel: options.triggerLabel ?? remote?.triggerLabel ?? 'Chatte mit uns',\n primaryColor: options.primaryColor ?? remote?.primaryColor,\n accentColor: options.accentColor ?? remote?.accentColor,\n fontFamily: options.fontFamily ?? remote?.fontFamily,\n fontSize: options.fontSize ?? remote?.fontSize,\n borderRadius: options.borderRadius ?? remote?.borderRadius,\n windowWidth: options.windowWidth ?? remote?.windowWidth,\n windowHeight: options.windowHeight ?? remote?.windowHeight,\n }\n}\n\n/**\n * Shape of the response from the public GET /widget/config endpoint.\n *\n * Uses Pick<JexityChatOptions, ...> so that field types stay in sync with\n * the embed-script options automatically — no need to duplicate type definitions.\n *\n * Extra fields (primaryColor, title, welcomeMessage) come from the database\n * and have no equivalent in JexityChatOptions, so they're defined separately.\n */\nexport type RemoteConfig = Pick<JexityChatOptions,\n | 'position' | 'colorScheme' | 'hideBranding'\n | 'accentColor' | 'fontFamily' | 'fontSize'\n | 'borderRadius' | 'windowWidth' | 'windowHeight'\n | 'triggerIcon' | 'triggerRadius' | 'triggerLabel'\n> & {\n primaryColor: string // always set in DB\n title: string // mapped from widgetConfigs.name\n welcomeMessage: string // mapped from widgetConfigs.welcomeMessage\n locale?: WidgetLocale\n}\n\n/**\n * Fetches the widget's remote configuration from the Convex HTTP endpoint.\n *\n * @param siteUrl The .convex.site base URL (HTTP Actions domain).\n * @param orgSlug The organisation slug embedded in the script tag.\n * @param signal AbortSignal to cancel the request on component unmount.\n *\n * @returns The parsed config, or null if the org is not found (404) or the\n * server returns any non-OK status.\n */\nexport async function fetchRemoteConfig(\n siteUrl: string,\n orgSlug: string,\n signal: AbortSignal,\n): Promise<RemoteConfig | null> {\n const url = `${siteUrl}/widget/config?orgSlug=${encodeURIComponent(orgSlug)}`\n const response = await fetch(url, { signal })\n\n if (!response.ok) {\n return null\n }\n\n return response.json() as Promise<RemoteConfig>\n}\n","import { useState, useEffect } from 'preact/hooks'\nimport { toConvexSiteUrl } from '../../../lib/convex-url'\nimport { fetchRemoteConfig, type RemoteConfig } from '../../../lib/widget-config'\n\n/**\n * Fetches the widget's remote config from Convex for the given orgSlug.\n *\n * - Returns null on first render, then updates once the fetch resolves.\n * - Clears stale config immediately when orgSlug changes (prevents flashing\n * the previous org's title/colors while the new fetch is in flight).\n * - Aborts the in-flight request if orgSlug changes or the hook unmounts.\n * - Silent fail: any error (network, 404, parse) resolves to null so the\n * widget still renders using embed-script options as a fallback.\n */\nexport function useRemoteConfig(orgSlug: string): RemoteConfig | null {\n const [remoteConfig, setRemoteConfig] = useState<RemoteConfig | null>(null)\n\n useEffect(() => {\n // Clear stale config immediately — the widget should not show the previous\n // org's title/colors while the new fetch is still in flight.\n setRemoteConfig(null)\n\n const convexUrl = import.meta.env.VITE_CONVEX_URL\n const siteUrl = convexUrl ? toConvexSiteUrl(convexUrl) : undefined\n\n // No Convex URL configured or orgSlug missing — skip the fetch entirely\n if (!siteUrl || !orgSlug) { return }\n\n const controller = new AbortController()\n\n async function load(url: string): Promise<void> {\n try {\n const cfg = await fetchRemoteConfig(url, orgSlug, controller.signal)\n if (cfg) { setRemoteConfig(cfg) }\n } catch (err) {\n // AbortError is expected when orgSlug changes or the widget unmounts.\n if (err instanceof Error && err.name === 'AbortError') { return }\n // Any other error (network failure, 404, parse error) is a silent fail.\n // The widget renders with embed-script options as a fallback.\n }\n }\n\n void load(siteUrl)\n\n return () => { controller.abort() }\n }, [orgSlug])\n\n return remoteConfig\n}\n","// Keep in sync with de.ts — both must export the same WidgetStrings shape.\nexport interface WidgetStrings {\n title: string\n statusOnline: string\n inputPlaceholder: string\n sendAriaLabel: string\n openChatAriaLabel: string\n closeChatAriaLabel: string\n errorNetwork: string\n errorQuota: string\n localeLabelDe: string\n localeLabelEn: string\n resumeConversation: string\n startNewConversation: string\n chatWith: string\n haveReferenceNumber: string\n referencePlaceholder: string\n resume: string\n howCanWeHelp: string\n getInstantHelp: string\n submitTicket: string\n replyByEmail: string\n ticketSubmitted: string\n yourReferenceNumber: string\n sentToEmailHint: string\n done: string\n submittingTicket: string\n yourName: string\n yourEmail: string\n submit: string\n back: string\n}\n\nexport const en: WidgetStrings = {\n title: 'Assistant',\n statusOnline: 'Online \\u00b7 Responds in seconds',\n inputPlaceholder: 'Type a message\\u2026',\n sendAriaLabel: 'Send message',\n openChatAriaLabel: 'Open chat',\n closeChatAriaLabel: 'Close chat',\n errorNetwork: 'Network error. Please try again.',\n errorQuota: 'Message limit reached. Please try again later.',\n localeLabelDe: 'DE',\n localeLabelEn: 'EN',\n resumeConversation: 'Resume conversation',\n startNewConversation: 'Start new conversation',\n chatWith: 'Chat with {title}',\n haveReferenceNumber: 'Have a reference number?',\n referencePlaceholder: 'e.g. JEX-A3B7C2',\n resume: 'Resume',\n howCanWeHelp: 'How can we help?',\n getInstantHelp: 'Get instant help',\n submitTicket: 'Submit a ticket',\n replyByEmail: \"We'll reply by email\",\n ticketSubmitted: 'Ticket submitted',\n yourReferenceNumber: 'Your reference number:',\n sentToEmailHint: \"We've sent it to your email. Use this number to follow up.\",\n done: 'Done',\n submittingTicket: 'Submitting your ticket\\u2026',\n yourName: 'Your name',\n yourEmail: 'Your email',\n submit: 'Submit',\n back: 'Go back',\n}\n","import type { WidgetStrings } from './en'\n\nexport const de: WidgetStrings = {\n title: 'Assistent',\n statusOnline: 'Online \\u00b7 Antwortet in Sekunden',\n inputPlaceholder: 'Nachricht eingeben\\u2026',\n sendAriaLabel: 'Nachricht senden',\n openChatAriaLabel: 'Chat \\u00f6ffnen',\n closeChatAriaLabel: 'Chat schlie\\u00dfen',\n errorNetwork: 'Netzwerkfehler. Bitte versuche es erneut.',\n errorQuota: 'Nachrichtenlimit erreicht. Bitte versuche es sp\\u00e4ter erneut.',\n localeLabelDe: 'DE',\n localeLabelEn: 'EN',\n resumeConversation: 'Gespr\\u00e4ch fortsetzen',\n startNewConversation: 'Neues Gespr\\u00e4ch beginnen',\n chatWith: 'Chatte mit {title}',\n haveReferenceNumber: 'Hast du eine Referenznummer?',\n referencePlaceholder: 'z.B. JEX-A3B7C2',\n resume: 'Fortsetzen',\n howCanWeHelp: 'Wie k\\u00f6nnen wir helfen?',\n getInstantHelp: 'Soforthilfe erhalten',\n submitTicket: 'Ticket einreichen',\n replyByEmail: 'Wir antworten per E-Mail',\n ticketSubmitted: 'Ticket eingereicht',\n yourReferenceNumber: 'Deine Referenznummer:',\n sentToEmailHint: 'Wir haben sie an deine E-Mail gesendet. Verwende diese Nummer f\\u00fcr R\\u00fcckfragen.',\n done: 'Fertig',\n submittingTicket: 'Dein Ticket wird \\u00fcbermittelt\\u2026',\n yourName: 'Dein Name',\n yourEmail: 'Deine E-Mail',\n submit: 'Absenden',\n back: 'Zur\\u00fcck',\n}\n","export type WidgetLocale = 'en' | 'de'\n\nexport interface LocaleConfig {\n value: WidgetLocale\n label: string\n flag: string\n}\n\nexport const SUPPORTED_LOCALES: LocaleConfig[] = [\n { value: 'de', label: 'Deutsch', flag: '🇩🇪' },\n { value: 'en', label: 'English', flag: '🇬🇧' },\n]\n\nexport const WIDGET_DEFAULT_LOCALE: WidgetLocale = 'de'\nexport const LOCALE_STORAGE_KEY = 'jex-locale'\n","import { signal } from '@preact/signals'\nimport { en, type WidgetStrings } from './locales/en'\nimport { de } from './locales/de'\n\nexport type { WidgetStrings }\nexport {\n type WidgetLocale,\n SUPPORTED_LOCALES as WIDGET_LOCALES,\n WIDGET_DEFAULT_LOCALE,\n LOCALE_STORAGE_KEY,\n} from './config'\n\n/**\n * Active locale for the widget UI.\n * Initialised to 'de' (default); overridden in WidgetShell on mount via resolveWidgetLocale.\n */\nexport const locale = signal<'en' | 'de'>('de')\n\nconst STRINGS: Record<string, WidgetStrings> = { en, de }\n\n/**\n * Returns the current locale's string dictionary.\n * Reactive — components that call this re-render when locale changes.\n *\n * Usage inside a Preact component:\n * const s = useLocale();\n * return <p>{s.inputPlaceholder}</p>;\n */\nexport function useLocale(): WidgetStrings {\n // Accessing locale.value inside render subscribes this component to changes.\n return STRINGS[locale.value] ?? en\n}\n\n/**\n * Switch the active locale and persist the visitor's choice to localStorage.\n * Call this from the footer toggle's onClick handler.\n */\nexport function setLocale(next: 'en' | 'de'): void {\n locale.value = next\n try {\n localStorage.setItem('jex-locale', next)\n } catch {\n // Storage blocked — still update the in-memory signal\n }\n}\n","import { \n type WidgetLocale, \n SUPPORTED_LOCALES, \n WIDGET_DEFAULT_LOCALE, \n LOCALE_STORAGE_KEY \n} from './config'\n\n/** Normalise a raw locale string (e.g. \"en-US\") to a WidgetLocale, or null. */\nfunction parseLocale(raw: string | null | undefined): WidgetLocale | null {\n if (!raw) { return null }\n const base = (raw.split('-')[0] ?? '').toLowerCase()\n const isValid = SUPPORTED_LOCALES.some(l => l.value === base)\n return isValid ? (base as WidgetLocale) : null\n}\n\n/**\n * Resolve the active locale using the priority chain:\n * 1. configLocale (explicit prop/dashboard override — HIGHEST)\n * 2. localStorage['jex-locale'] (visitor's persistent choice)\n * 3. navigator.language (browser auto-detect)\n * 4. 'de' (hardcoded default)\n * \n * Priority Note:\n * Explicit configuration (configLocale) now outranks localStorage. \n * This ensures that changing the language in the Dashboard or Playground \n * instantly reflects in the preview, even if the user previously selected\n * a different language inside the widget's persistent session.\n */\nexport function resolveWidgetLocale(configLocale?: string): WidgetLocale {\n // 1. Explicit UI Configuration (Dashboard/Playground override)\n const config = parseLocale(configLocale)\n if (config) { return config }\n\n // 2. Visitor's persistent saved choice\n try {\n const saved = parseLocale(localStorage.getItem(LOCALE_STORAGE_KEY))\n if (saved) { return saved }\n } catch {\n // localStorage blocked (e.g. Safari private mode)\n }\n\n // 3. Browser language fallback\n if (typeof navigator !== 'undefined') {\n const browser = parseLocale(navigator.language)\n if (browser) { return browser }\n }\n\n // 4. Global default\n return WIDGET_DEFAULT_LOCALE\n}\n","import { useEffect } from 'preact/hooks'\nimport { locale } from '../../../i18n/index'\nimport { resolveWidgetLocale } from '../../../i18n/resolve-widget-locale'\n\n/**\n * Listens for postMessage config updates sent from the dashboard preview iframe.\n *\n * This is a playground/dashboard-only concern — the `parentOrigin` option is\n * only set when the widget is embedded inside the dashboard preview panel.\n * Production embeds on customer websites never send this message type.\n *\n * Message shape:\n * { type: 'jexity:config', payload: { locale?: string } }\n *\n * Incoming locale strings are passed through `resolveWidgetLocale` so the full\n * priority chain (config → localStorage → browser → default) is respected,\n * and no type assertions are needed.\n */\nexport function usePreviewBridge(parentOrigin: string | undefined): void {\n useEffect(() => {\n function handleMessage(e: MessageEvent): void {\n // Reject messages from unexpected origins (security guard)\n const allowedOrigin = parentOrigin ?? window.location.origin\n if (e.origin !== allowedOrigin) { return }\n if (e.data?.type !== 'jexity:config') { return }\n\n const { locale: newLocale } = e.data.payload as { locale?: string }\n\n if (newLocale) {\n locale.value = resolveWidgetLocale(newLocale)\n }\n }\n\n window.addEventListener('message', handleMessage)\n return () => { window.removeEventListener('message', handleMessage) }\n }, [parentOrigin])\n}\n","import { signal } from '@preact/signals'\n\nconst SESSION_REF_KEY = 'jex-session-ref'\nconst SESSION_ACTIVE_KEY = 'jex-session-active'\n\n/** Short alphanumeric reference visible to the visitor (e.g. \"JEX-A3B7C2\"). */\nexport const sessionRef = signal<string | null>(null)\n\n/** True once the visitor has sent at least one message in any session. */\nexport const hasActiveSession = signal(false)\n\nfunction generateRef(): string {\n return 'JEX-' + Math.random().toString(36).slice(2, 8).toUpperCase()\n}\n\n/**\n * Load session state from sessionStorage on widget boot.\n * sessionStorage is cleared when the browser tab closes — GDPR safe.\n * Call once from WidgetShell on mount.\n */\nexport function initVisitor(): void {\n try {\n const stored = sessionStorage.getItem(SESSION_REF_KEY)\n const active = sessionStorage.getItem(SESSION_ACTIVE_KEY)\n sessionRef.value = stored ?? null\n hasActiveSession.value = stored !== null && active === 'true'\n } catch {\n sessionRef.value = null\n hasActiveSession.value = false\n }\n}\n\n/**\n * Create a fresh session ref and persist it.\n * Called when the visitor starts a new conversation.\n */\nexport function startNewSession(): string {\n const ref = generateRef()\n sessionRef.value = ref\n hasActiveSession.value = false\n try {\n sessionStorage.setItem(SESSION_REF_KEY, ref)\n sessionStorage.removeItem(SESSION_ACTIVE_KEY)\n } catch { /* storage blocked */ }\n return ref\n}\n\n/**\n * Mark the current session as active (first message sent).\n * Called from ChatInput on first send.\n */\nexport function markSessionActive(): void {\n if (!sessionRef.value) { return }\n hasActiveSession.value = true\n try {\n sessionStorage.setItem(SESSION_ACTIVE_KEY, 'true')\n } catch { /* storage blocked */ }\n}\n","import type { JSX } from 'preact'\nimport type { JexityChatOptions } from '../../types'\n\n/** Maps JexityChatOptions theme fields → CSS custom properties on the widget root. */\nexport function buildThemeStyle(options: JexityChatOptions): JSX.CSSProperties | undefined {\n const vars: Record<string, string> = {}\n const { primaryColor, theme } = options\n\n if (primaryColor) {\n vars['--jex-primary'] = primaryColor\n vars['--jex-bg-trigger'] = primaryColor\n vars['--jex-bg-header'] = primaryColor\n vars['--jex-bg-msg-user'] = primaryColor\n vars['--jex-bg-send-btn'] = primaryColor\n }\n \n if (options.accentColor) {\n vars['--jex-accent'] = options.accentColor\n }\n\n if (theme?.bg) {\n const bg = theme.bg\n if (bg.trigger) { vars['--jex-bg-trigger'] = bg.trigger }\n if (bg.header) { vars['--jex-bg-header'] = bg.header }\n if (bg.msgUser) { vars['--jex-bg-msg-user'] = bg.msgUser }\n if (bg.msgBot) { vars['--jex-bg-msg-bot'] = bg.msgBot }\n if (bg.window) { vars['--jex-bg-window'] = bg.window }\n if (bg.sendBtn) { vars['--jex-bg-send-btn'] = bg.sendBtn }\n }\n if (theme?.text) {\n const text = theme.text\n if (text.header) { vars['--jex-text-header'] = text.header }\n if (text.msgUser) { vars['--jex-text-msg-user'] = text.msgUser }\n if (text.msgBot) { vars['--jex-text-msg-bot'] = text.msgBot }\n if (text.main) { vars['--jex-text-main'] = text.main }\n if (text.muted) { vars['--jex-text-muted'] = text.muted }\n }\n if (theme?.border) {\n const border = theme.border\n if (border.window) { vars['--jex-border-window'] = border.window }\n if (border.input) { vars['--jex-border-input'] = border.input }\n }\n\n // Layout & Typography (from Extended Config)\n if (options.fontFamily) { vars['--jex-font-family'] = options.fontFamily }\n if (options.fontSize) { vars['--jex-font-size'] = `${options.fontSize}px` }\n if (options.borderRadius) { vars['--jex-radius'] = options.borderRadius }\n if (options.windowWidth) { vars['--jex-window-width'] = `${options.windowWidth}px` }\n if (options.windowHeight) { vars['--jex-window-height'] = `${options.windowHeight}px` }\n\n return Object.keys(vars).length > 0 ? (vars as JSX.CSSProperties) : undefined\n}\n","import { signal } from '@preact/signals'\n\nexport type ScreenState =\n | { id: 'home' }\n | { id: 'selection' }\n | { id: 'chat' }\n | { id: 'form' }\n | { id: 'confirmation'; ref: string }\n | { id: 'loading'; message?: string }\n | { id: 'error'; message: string }\n\nexport const screenStack = signal<ScreenState[]>([{ id: 'chat' }])\n\n/** Push a new screen onto the stack. */\nexport function navigate(screen: ScreenState): void {\n screenStack.value = [...screenStack.value, screen]\n}\n\n/** Pop the top screen. No-op if already at root. */\nexport function back(): void {\n if (screenStack.value.length > 1) {\n screenStack.value = screenStack.value.slice(0, -1)\n }\n}\n\n/** Swap the top of the stack. Used for loading→result transitions. */\nexport function replace(screen: ScreenState): void {\n screenStack.value = [...screenStack.value.slice(0, -1), screen]\n}\n","export function BotIcon({ size = 24 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 8V4H8\" />\n <rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\" />\n <path d=\"M2 14h2\" />\n <path d=\"M20 14h2\" />\n <path d=\"M15 13v2\" />\n <path d=\"M9 13v2\" />\n </svg>\n )\n}\n","import { screenStack, back } from '../../module/screens/screens.state'\nimport { useLocale } from '../../i18n/index'\nimport { BotIcon } from '../icons/BotIcon'\n\ninterface HeaderProps {\n title: string\n}\n\n/** Chat window header bar — shows bot icon, title, and back button when on a nested screen. */\nexport function Header({ title }: HeaderProps) {\n const t = useLocale()\n const canGoBack = screenStack.value.length > 1\n\n return (\n <header class=\"jex-chat-header\">\n {canGoBack && (\n <button\n class=\"jex-header-back\"\n onClick={back}\n aria-label={t.back || 'Go back'}\n >\n {/* Chevron-left arrow */}\n <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\">\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n )}\n {!canGoBack && <BotIcon size={24} />}\n <div class=\"jex-header-info\">\n <h3>{title}</h3>\n <p>{t.statusOnline}</p>\n </div>\n </header>\n )\n}\n","export function ZapIcon({ size = 14 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <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\" />\n </svg>\n )\n}\n","import { ZapIcon } from '../icons/ZapIcon'\n\n/** \"Powered by Jexity\" branding bar with locale switcher. */\nexport function Footer() {\n return (\n <div class=\"jex-widget-footer\">\n <a\n href=\"https://jexity.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"jex-branding\"\n >\n <ZapIcon size={14} />\n <span>\n Powered by <strong>Jexity</strong>\n </span>\n </a>\n </div>\n )\n}\n","export function MessageIcon({ size = 28 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n )\n}\n","export function CloseIcon({ size = 28 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n )\n}\n","import type { JSX } from 'preact'\n\nexport function SparklesIcon({ size = 24, ...props }: JSX.SVGAttributes<SVGSVGElement> & { size?: number | string }) {\n return (\n <svg \n width={size} \n height={size} \n viewBox=\"0 0 24 24\" \n fill=\"none\" \n stroke=\"currentColor\" \n stroke-width=\"2\" \n stroke-linecap=\"round\" \n stroke-linejoin=\"round\"\n {...props}\n >\n <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\" />\n </svg>\n )\n}\n","import { isOpen } from '../../module/shell/shell.state'\nimport { useLocale } from '../../i18n/index'\nimport { MessageIcon } from '../icons/MessageIcon'\nimport { CloseIcon } from '../icons/CloseIcon'\nimport { BotIcon } from '../icons/BotIcon'\nimport { SparklesIcon } from '../icons/SparklesIcon'\n\ninterface FABProps {\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n iconOption?: 'chat' | 'bot' | 'sparkles'\n label?: string\n}\n\nconst ICON_MAP: Record<NonNullable<FABProps['iconOption']>, import('preact').VNode> = {\n chat: <MessageIcon size={28} />,\n bot: <BotIcon size={28} />,\n sparkles: <SparklesIcon size={28} />,\n}\n\nconst RADIUS_MAP: Record<NonNullable<FABProps['radius']>, string> = {\n none: '0px',\n sm: '0.5rem',\n md: '0.75rem',\n lg: '1.25rem',\n full: '9999px',\n}\n\n/** Floating action button — the circular or pill-shaped trigger. */\nexport function FAB({ radius = 'full', iconOption = 'chat', label = 'Chatte mit uns' }: FABProps) {\n const s = useLocale()\n const hasLabel = label !== ''\n\n return (\n <button\n class={`jex-floating-button ${!isOpen.value && hasLabel ? 'jex-has-label' : ''}`}\n style={{ borderRadius: RADIUS_MAP[radius] ?? '9999px' }}\n onClick={() => { isOpen.value = !isOpen.value }}\n aria-label={isOpen.value ? s.closeChatAriaLabel : s.openChatAriaLabel}\n >\n {isOpen.value ? (\n <CloseIcon size={28} />\n ) : (\n <div class=\"jex-fab-inner\">\n {ICON_MAP[iconOption]}\n {hasLabel && <span class=\"jex-fab-label\">{label}</span>}\n </div>\n )}\n </button>\n )\n}\n","import { useState } from 'preact/hooks'\nimport { navigate } from '../../../module/screens/screens.state'\nimport { sessionRef, startNewSession } from '../../../module/visitor/visitor.state'\nimport { clearChat } from '../../chat/lib/chat'\nimport { useLocale } from '../../../i18n/index'\n\ninterface HomeScreenProps {\n greeting: string\n title: string\n}\n\n/**\n * Home / greeting screen.\n *\n * Session resume (GDPR):\n * - sessionStorage ref exists (same tab) → show \"Resume\" link\n * - No ref (new tab / after close) → show \"Have a reference number?\" manual input\n */\nexport function HomeScreen({ greeting, title }: HomeScreenProps) {\n const t = useLocale()\n const ref = sessionRef.value\n const [showLookup, setShowLookup] = useState(false)\n const [lookupRef, setLookupRef] = useState('')\n\n function handleStartChat() {\n startNewSession()\n clearChat()\n navigate({ id: 'chat' })\n }\n\n function handleResumeSession() {\n navigate({ id: 'chat' })\n }\n\n function handleLookupSubmit(e: Event) {\n e.preventDefault()\n if (lookupRef.trim()) {\n // TODO: Phase 2 — validate ref against Convex and load session\n navigate({ id: 'chat' })\n }\n }\n\n return (\n <div class=\"jex-home\">\n <div class=\"jex-home-greeting\">{greeting}</div>\n\n {ref ? (\n // Same-tab session exists in sessionStorage\n <div class=\"jex-home-actions\">\n <button class=\"jex-home-start-btn\" onClick={handleResumeSession}>\n {t.resumeConversation}\n </button>\n <button class=\"jex-home-new-btn\" onClick={handleStartChat}>\n {t.startNewConversation}\n </button>\n </div>\n ) : (\n // Fresh session or tab was closed\n <div class=\"jex-home-actions\">\n <button class=\"jex-home-start-btn\" onClick={handleStartChat}>\n {t.chatWith.replace('{title}', title)}\n </button>\n {!showLookup && (\n <button\n class=\"jex-home-lookup-link\"\n onClick={() => { setShowLookup(true) }}\n >\n {t.haveReferenceNumber}\n </button>\n )}\n {showLookup && (\n <form class=\"jex-home-lookup\" onSubmit={handleLookupSubmit}>\n <input\n class=\"jex-home-lookup-input\"\n type=\"text\"\n placeholder={t.referencePlaceholder}\n value={lookupRef}\n autoFocus\n onInput={(e) => { setLookupRef(e.currentTarget.value) }}\n />\n <button class=\"jex-home-lookup-submit\" type=\"submit\">{t.resume}</button>\n </form>\n )}\n </div>\n )}\n </div>\n )\n}\n","import { navigate } from '../../../module/screens/screens.state'\nimport { useLocale } from '../../../i18n/index'\n\ninterface SelectionScreenProps {\n title: string\n}\n\n/** Contact method selection — chat vs. submit ticket. */\nexport function SelectionScreen({ title }: SelectionScreenProps) {\n const t = useLocale()\n return (\n <div class=\"jex-selection\">\n <h2 class=\"jex-selection-title\">{t.howCanWeHelp}</h2>\n <div class=\"jex-selection-options\">\n <button\n class=\"jex-selection-option\"\n onClick={() => navigate({ id: 'chat' })}\n >\n <span class=\"jex-selection-icon\">💬</span>\n <span class=\"jex-selection-label\">{t.chatWith.replace('{title}', title)}</span>\n <span class=\"jex-selection-sub\">{t.getInstantHelp}</span>\n </button>\n <button\n class=\"jex-selection-option\"\n onClick={() => navigate({ id: 'form' })}\n >\n <span class=\"jex-selection-icon\">📝</span>\n <span class=\"jex-selection-label\">{t.submitTicket}</span>\n <span class=\"jex-selection-sub\">{t.replyByEmail}</span>\n </button>\n </div>\n </div>\n )\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport { convexToJson } from \"../../values/index.js\";\nimport { version } from \"../../index.js\";\nimport { performAsyncSyscall } from \"../impl/syscall.js\";\nimport {\n getFunctionAddress,\n setReferencePath,\n toReferencePath\n} from \"./paths.js\";\nexport { getFunctionAddress } from \"./paths.js\";\nexport async function createFunctionHandle(functionReference) {\n const address = getFunctionAddress(functionReference);\n return await performAsyncSyscall(\"1.0/createFunctionHandle\", {\n ...address,\n version\n });\n}\nclass InstalledComponent {\n constructor(definition, name) {\n /**\n * @internal\n */\n __publicField(this, \"_definition\");\n /**\n * @internal\n */\n __publicField(this, \"_name\");\n this._definition = definition;\n this._name = name;\n setReferencePath(this, `_reference/childComponent/${name}`);\n }\n get exports() {\n return createExports(this._name, []);\n }\n}\nfunction createExports(name, pathParts) {\n const handler = {\n get(_, prop) {\n if (typeof prop === \"string\") {\n const newParts = [...pathParts, prop];\n return createExports(name, newParts);\n } else if (prop === toReferencePath) {\n let reference = `_reference/childComponent/${name}`;\n for (const part of pathParts) {\n reference += `/${part}`;\n }\n return reference;\n } else {\n return void 0;\n }\n }\n };\n return new Proxy({}, handler);\n}\nfunction use(definition, options) {\n const importedComponentDefinition = definition;\n if (typeof importedComponentDefinition.componentDefinitionPath !== \"string\") {\n throw new Error(\n \"Component definition does not have the required componentDefinitionPath property. This code only works in Convex runtime.\"\n );\n }\n const name = options?.name ?? // added recently\n importedComponentDefinition.defaultName ?? // can be removed once backend is out\n importedComponentDefinition.componentDefinitionPath.split(\"/\").pop();\n if (typeof name !== \"string\") {\n throw new Error(\n `Component name must be a string. Received: ${typeof name}`\n );\n }\n if (name.length === 0) {\n throw new Error(\"Component name cannot be empty.\");\n }\n this._childComponents.push([name, importedComponentDefinition, {}]);\n return new InstalledComponent(definition, name);\n}\nfunction exportAppForAnalysis() {\n const definitionType = { type: \"app\" };\n const childComponents = serializeChildComponents(this._childComponents);\n return {\n definitionType,\n childComponents,\n httpMounts: {},\n exports: serializeExportTree(this._exportTree)\n };\n}\nfunction serializeExportTree(tree) {\n const branch = [];\n for (const [key, child] of Object.entries(tree)) {\n let node;\n if (typeof child === \"string\") {\n node = { type: \"leaf\", leaf: child };\n } else {\n node = serializeExportTree(child);\n }\n branch.push([key, node]);\n }\n return { type: \"branch\", branch };\n}\nfunction serializeChildComponents(childComponents) {\n return childComponents.map(([name, definition, p]) => {\n let args = null;\n if (p !== null) {\n args = [];\n for (const [name2, value] of Object.entries(p)) {\n if (value !== void 0) {\n args.push([\n name2,\n { type: \"value\", value: JSON.stringify(convexToJson(value)) }\n ]);\n }\n }\n }\n const path = definition.componentDefinitionPath;\n if (!path)\n throw new Error(\n \"no .componentPath for component definition \" + JSON.stringify(definition, null, 2)\n );\n return {\n name,\n path,\n args\n };\n });\n}\nfunction exportComponentForAnalysis() {\n const args = Object.entries(\n this._args\n ).map(([name, validator]) => [\n name,\n {\n type: \"value\",\n value: JSON.stringify(validator.json)\n }\n ]);\n const definitionType = {\n type: \"childComponent\",\n name: this._name,\n args\n };\n const childComponents = serializeChildComponents(this._childComponents);\n return {\n name: this._name,\n definitionType,\n childComponents,\n httpMounts: {},\n exports: serializeExportTree(this._exportTree)\n };\n}\nexport function defineComponent(name) {\n const ret = {\n _isRoot: false,\n _name: name,\n _args: {},\n _childComponents: [],\n _exportTree: {},\n _onInitCallbacks: {},\n export: exportComponentForAnalysis,\n use,\n // pretend to conform to ComponentDefinition, which temporarily expects __args\n ...{}\n };\n return ret;\n}\nexport function defineApp() {\n const ret = {\n _isRoot: true,\n _childComponents: [],\n _exportTree: {},\n export: exportAppForAnalysis,\n use\n };\n return ret;\n}\nexport function currentSystemUdfInComponent(componentId) {\n return {\n [toReferencePath]: `_reference/currentSystemUdfInComponent/${componentId}`\n };\n}\nfunction createChildComponents(root, pathParts) {\n const handler = {\n get(_, prop) {\n if (typeof prop === \"string\") {\n const newParts = [...pathParts, prop];\n return createChildComponents(root, newParts);\n } else if (prop === toReferencePath) {\n if (pathParts.length < 1) {\n const found = [root, ...pathParts].join(\".\");\n throw new Error(\n `API path is expected to be of the form \\`${root}.childComponent.functionName\\`. Found: \\`${found}\\``\n );\n }\n return `_reference/childComponent/` + pathParts.join(\"/\");\n } else {\n return void 0;\n }\n }\n };\n return new Proxy({}, handler);\n}\nexport const componentsGeneric = () => createChildComponents(\"components\", []);\n//# sourceMappingURL=index.js.map\n","/* eslint-disable */\n/**\n * Generated `api` utility.\n *\n * THIS CODE IS AUTOMATICALLY GENERATED.\n *\n * To regenerate, run `npx convex dev`.\n * @module\n */\n\nimport { anyApi, componentsGeneric } from \"convex/server\";\n\n/**\n * A utility for referencing Convex functions in your app's API.\n *\n * Usage:\n * ```js\n * const myFunctionReference = api.myModule.myFunction;\n * ```\n */\nexport const api = anyApi;\nexport const internal = anyApi;\nexport const components = componentsGeneric();\n","import { useRef, useCallback } from 'preact/hooks'\nimport { useSignal } from '@preact/signals'\nimport { useMutation } from 'convex/react'\nimport { api } from '@repo/backend/convex/_generated/api'\nimport { sessionRef, startNewSession } from '../../../module/visitor/visitor.state'\nimport type { Id } from '@repo/backend/convex/_generated/dataModel'\n\ninterface SessionResult {\n sessionId: Id<'contactSessions'>\n visitorId: string\n}\n\ninterface ConvexSession {\n sessionId: Id<'contactSessions'> | null\n visitorId: string | null\n isLoading: boolean\n /** Call before the first send — creates/resumes a Convex session lazily. */\n ensureSession: () => Promise<SessionResult | null>\n}\n\n/**\n * Lazy session hook — does NOT create a session on mount.\n * Call `ensureSession()` when the visitor sends their first message.\n *\n * Uses a ref to track the resolved session, avoiding stale closures\n * and preventing duplicate mutations on rapid double-sends.\n */\nexport function useConvexSession(orgSlug: string): ConvexSession {\n const resolvedRef = useRef<SessionResult | null>(null)\n const isLoading = useSignal(false)\n\n const createOrResume = useMutation(api.functions.chat.public.sessions.createOrResume)\n\n const ensureSession = useCallback(async (): Promise<SessionResult | null> => {\n // Already resolved — return immediately (ref avoids stale closure)\n if (resolvedRef.current) {\n return resolvedRef.current\n }\n\n isLoading.value = true\n const vid = sessionRef.value ?? startNewSession()\n\n try {\n const result = await createOrResume({ orgSlug, visitorId: vid })\n const session: SessionResult = { sessionId: result.sessionId, visitorId: vid }\n resolvedRef.current = session\n return session\n } catch (err) {\n console.error('[jexity] Failed to create session:', err)\n return null\n } finally {\n isLoading.value = false\n }\n }, [orgSlug, createOrResume, isLoading])\n\n const resolved = resolvedRef.current\n return {\n sessionId: resolved?.sessionId ?? null,\n visitorId: resolved?.visitorId ?? null,\n isLoading: isLoading.value,\n ensureSession,\n }\n}\n","interface BotMessageProps {\n text: string\n}\n\nexport function BotMessage({ text }: BotMessageProps) {\n return <div class=\"jex-message bot\">{text}</div>\n}\n","interface UserMessageProps {\n text: string\n}\n\nexport function UserMessage({ text }: UserMessageProps) {\n return <div class=\"jex-message user\">{text}</div>\n}\n","export function TypingIndicator() {\n return (\n <div class=\"jex-typing\">\n <span />\n <span />\n <span />\n </div>\n )\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { useQuery } from 'convex/react'\nimport { api } from '@repo/backend/convex/_generated/api'\nimport { BotMessage } from './BotMessage'\nimport { UserMessage } from './UserMessage'\nimport { TypingIndicator } from './TypingIndicator'\nimport type { Id, Doc } from '@repo/backend/convex/_generated/dataModel'\n\ninterface MessageListProps {\n sessionId: Id<'contactSessions'> | null\n visitorId: string | null\n greeting: string\n}\n\n/** Scrollable message area — subscribes to Convex once a session exists. */\nexport function MessageList({ sessionId, visitorId, greeting }: MessageListProps) {\n const bottomRef = useRef<HTMLDivElement>(null)\n\n // Skip the query until we have a session (before first send)\n const conversations = useQuery(\n api.functions.chat.public.conversations.listBySession,\n sessionId && visitorId ? { sessionId, visitorId } : 'skip',\n )\n\n const isLoading = sessionId !== null && conversations === undefined\n\n useEffect(() => {\n bottomRef.current?.scrollIntoView({ behavior: 'smooth' })\n }, [conversations?.length])\n\n return (\n <div class=\"jex-chat-messages\">\n <BotMessage text={greeting} />\n\n {isLoading && <TypingIndicator />}\n\n {conversations?.map((msg: Doc<'conversations'>) =>\n msg.role === 'user'\n ? <UserMessage key={msg._id} text={msg.content} />\n : <BotMessage key={msg._id} text={msg.content} />\n )}\n\n <div ref={bottomRef} />\n </div>\n )\n}\n","export function SendIcon({ size = 18 }: { size?: number }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M22 2 11 13\" />\n <path d=\"M22 2 15 22 11 13 2 9l20-7z\" />\n </svg>\n )\n}\n","import { useSignal } from '@preact/signals'\nimport { useMutation } from 'convex/react'\nimport { api } from '@repo/backend/convex/_generated/api'\nimport { markSessionActive } from '../../../module/visitor/visitor.state'\nimport { useLocale } from '../../../i18n/index'\nimport { SendIcon } from '../../../shared/icons/SendIcon'\nimport type { Id } from '@repo/backend/convex/_generated/dataModel'\n\ninterface ChatInputProps {\n sessionId: Id<'contactSessions'> | null\n visitorId: string | null\n isLoading: boolean\n ensureSession: () => Promise<{ sessionId: Id<'contactSessions'>; visitorId: string } | null>\n}\n\n/** Text input + send button. Creates session lazily on first send. */\nexport function ChatInput({ sessionId, visitorId, isLoading, ensureSession }: ChatInputProps) {\n const s = useLocale()\n const input = useSignal('')\n const send = useMutation(api.functions.chat.public.conversations.send)\n\n async function handleSend() {\n const content = input.value.trim()\n if (!content || isLoading) { return }\n\n // Lazily create session on first send\n const session = sessionId && visitorId\n ? { sessionId, visitorId }\n : await ensureSession()\n\n if (!session) { return }\n\n markSessionActive()\n input.value = ''\n\n send({\n sessionId: session.sessionId,\n visitorId: session.visitorId,\n content,\n }).catch((err) => {\n console.error('[jexity] Failed to send message:', err)\n })\n }\n\n return (\n <div class=\"jex-chat-input\">\n <input\n type=\"text\"\n aria-label={s.inputPlaceholder}\n placeholder={s.inputPlaceholder}\n value={input.value}\n onInput={(e) => { input.value = e.currentTarget.value }}\n onKeyDown={(e) => { if (e.key === 'Enter') { handleSend() } }}\n />\n <button\n class=\"jex-send-btn\"\n onClick={handleSend}\n aria-label={s.sendAriaLabel}\n disabled={isLoading}\n >\n <SendIcon size={18} />\n </button>\n </div>\n )\n}\n","import { useConvexSession } from '../hooks/useConvexSession'\nimport { MessageList } from './MessageList'\nimport { ChatInput } from './ChatInput'\n\ninterface ChatScreenProps {\n greeting: string\n orgSlug: string\n}\n\n/**\n * Chat screen — renders immediately with greeting + input.\n * Session is created lazily on first send (no loading spinner on open).\n */\nexport function ChatScreen({ greeting, orgSlug }: ChatScreenProps) {\n const { sessionId, visitorId, isLoading, ensureSession } = useConvexSession(orgSlug)\n\n return (\n <>\n <MessageList\n sessionId={sessionId}\n visitorId={visitorId}\n greeting={greeting}\n />\n <ChatInput\n sessionId={sessionId}\n visitorId={visitorId}\n isLoading={isLoading}\n ensureSession={ensureSession}\n />\n </>\n )\n}\n","import { useState } from 'preact/hooks'\nimport { replace } from '../../../module/screens/screens.state'\nimport { useLocale } from '../../../i18n/index'\n\n/** Contact / ticket submission form. On submit: replace with loading, then confirmation/error. */\nexport function FormScreen() {\n const t = useLocale()\n const [name, setName] = useState('')\n const [email, setEmail] = useState('')\n const [message, setMessage] = useState('')\n\n async function handleSubmit(e: Event) {\n e.preventDefault()\n replace({ id: 'loading', message: t.submittingTicket })\n\n // TODO: Phase 2 — replace with Convex mutation\n await new Promise<void>(resolve => { setTimeout(resolve, 1200) })\n const ref = 'JEX-' + Math.random().toString(36).slice(2, 8).toUpperCase()\n replace({ id: 'confirmation', ref })\n }\n\n return (\n <div class=\"jex-form-screen\">\n <h2 class=\"jex-form-title\">{t.submitTicket}</h2>\n <form class=\"jex-form\" onSubmit={(e) => { void handleSubmit(e) }}>\n <input\n class=\"jex-form-input\"\n type=\"text\"\n placeholder={t.yourName}\n value={name}\n required\n onInput={(e) => { setName(e.currentTarget.value) }}\n />\n <input\n class=\"jex-form-input\"\n type=\"email\"\n placeholder={t.yourEmail}\n value={email}\n required\n onInput={(e) => { setEmail(e.currentTarget.value) }}\n />\n <textarea\n class=\"jex-form-textarea\"\n placeholder={t.howCanWeHelp}\n value={message}\n required\n onInput={(e) => { setMessage(e.currentTarget.value) }}\n />\n <button class=\"jex-form-submit\" type=\"submit\">{t.submit}</button>\n </form>\n </div>\n )\n}\n","import { isOpen } from '../../../module/shell/shell.state'\nimport { useLocale } from '../../../i18n/index'\n\ninterface ConfirmationScreenProps {\n ticketRef: string\n}\n\n/** Shown after async ticket submission. Displays ref# and closes widget on Done. */\nexport function ConfirmationScreen({ ticketRef }: ConfirmationScreenProps) {\n const t = useLocale()\n return (\n <div class=\"jex-confirmation\">\n <div class=\"jex-confirmation-icon\" aria-hidden=\"true\">✓</div>\n <h2 class=\"jex-confirmation-title\">{t.ticketSubmitted}</h2>\n <p class=\"jex-confirmation-body\">{t.yourReferenceNumber}</p>\n <div class=\"jex-confirmation-ref\">{ticketRef}</div>\n <p class=\"jex-confirmation-hint\">{t.sentToEmailHint}</p>\n <button\n class=\"jex-confirmation-done\"\n onClick={() => { isOpen.value = false }}\n >\n {t.done}\n </button>\n </div>\n )\n}\n","interface LoadingScreenProps {\n message?: string\n}\n\n/** Full-coverage overlay shown during async operations. */\nexport function LoadingScreen({ message }: LoadingScreenProps) {\n return (\n <div class=\"jex-overlay jex-loading\">\n <div class=\"jex-loading-spinner\" aria-hidden=\"true\" />\n {message && <p class=\"jex-loading-message\">{message}</p>}\n </div>\n )\n}\n","interface ErrorScreenProps {\n message: string\n onRetry?: () => void\n onBack?: () => void\n}\n\n/** Full-coverage overlay shown when an async operation fails. */\nexport function ErrorScreen({ message, onRetry, onBack }: ErrorScreenProps) {\n return (\n <div class=\"jex-overlay jex-error\">\n <p class=\"jex-error-message\">{message}</p>\n <div class=\"jex-error-actions\">\n {onRetry && (\n <button class=\"jex-error-retry\" onClick={onRetry}>\n Try again\n </button>\n )}\n {onBack && (\n <button class=\"jex-error-back\" onClick={onBack}>\n Go back\n </button>\n )}\n </div>\n </div>\n )\n}\n","import { screenStack } from './screens.state'\nimport type { ScreenState } from './screens.state'\nimport { back, replace } from './screens.state'\nimport { HomeScreen } from '../../features/home/components/HomeScreen'\nimport { SelectionScreen } from '../../features/selection/components/SelectionScreen'\nimport { ChatScreen } from '../../features/chat/components/ChatScreen'\nimport { FormScreen } from '../../features/ticket/components/FormScreen'\nimport { ConfirmationScreen } from '../../features/ticket/components/ConfirmationScreen'\nimport { LoadingScreen } from '../../shared/ui/LoadingScreen'\nimport { ErrorScreen } from '../../shared/ui/ErrorScreen'\n\ninterface ScreenRouterProps {\n greeting: string\n title: string\n orgSlug: string\n}\n\n/** Renders only the active screen. No animation — add transitions later once routing is stable. */\nexport function ScreenRouter({ greeting, title, orgSlug }: ScreenRouterProps) {\n const stack = screenStack.value\n const currentScreen = stack[stack.length - 1] as ScreenState\n\n const confirmationState = stack.findLast(\n (s): s is Extract<ScreenState, { id: 'confirmation' }> => s.id === 'confirmation'\n )\n\n return (\n <div class=\"jex-screen-container\">\n {currentScreen.id === 'home' && (\n <HomeScreen greeting={greeting} title={title} />\n )}\n {currentScreen.id === 'selection' && (\n <SelectionScreen title={title} />\n )}\n {currentScreen.id === 'form' && (\n <FormScreen />\n )}\n {currentScreen.id === 'confirmation' && confirmationState && (\n <ConfirmationScreen ticketRef={confirmationState.ref} />\n )}\n {currentScreen.id === 'chat' && (\n <ChatScreen greeting={greeting} orgSlug={orgSlug} />\n )}\n {currentScreen.id === 'loading' && (\n <LoadingScreen message={currentScreen.message} />\n )}\n {currentScreen.id === 'error' && (\n <ErrorScreen\n message={currentScreen.message}\n onRetry={() => replace({ id: 'loading' })}\n onBack={back}\n />\n )}\n </div>\n )\n}\n","import { useEffect } from 'preact/hooks'\nimport { isOpen } from './shell.state'\nimport { useRemoteConfig } from './hooks/useRemoteConfig'\nimport { usePreviewBridge } from './hooks/usePreviewBridge'\nimport { initVisitor } from '../visitor/visitor.state'\nimport { locale } from '../../i18n/index'\nimport { resolveWidgetLocale } from '../../i18n/resolve-widget-locale'\nimport { buildThemeStyle } from '../../shared/theme/build-theme'\nimport { Header } from '../../shared/ui/Header'\nimport { Footer } from '../../shared/ui/Footer'\nimport { FAB } from '../../shared/ui/FAB'\nimport { ScreenRouter } from '../screens/ScreenRouter'\nimport { mergeWidgetConfig } from '../../lib/widget-config'\nimport type { JexityChatOptions } from '../../types'\n\ninterface WidgetShellProps {\n options: JexityChatOptions\n}\n\n/** Inner Preact component tree — rendered inside the shadow root container. */\nexport function WidgetShell({ options }: WidgetShellProps) {\n // Fetch widget config from Convex; aborts/resets on orgSlug change or unmount\n const remoteConfig = useRemoteConfig(options.orgSlug)\n\n // Dashboard preview iframe bridge — handles live locale updates from the Studio\n usePreviewBridge(options.parentOrigin)\n\n // One-time bootstrap: load visitor session ref from sessionStorage\n useEffect(() => { initVisitor() }, [])\n\n // Merge embed-script options with Convex remote config (embed takes precedence)\n const resolved = mergeWidgetConfig(options, remoteConfig)\n\n // Sync the resolved locale to the global signal (drives all i18n in the widget)\n useEffect(() => {\n locale.value = resolveWidgetLocale(resolved.locale)\n }, [resolved.locale])\n\n // Layout helpers derived from resolved config\n const posLeft = resolved.position === 'bottom-left'\n const colorSchemeClass = resolved.colorScheme === 'dark' || resolved.colorScheme === 'light'\n ? resolved.colorScheme\n : ''\n\n // Build CSS custom-property map for the widget root element.\n // options is spread first for granular theme.bg/text/border overrides,\n // then resolved fields override the top-level shorthand values.\n const themeStyle = buildThemeStyle({\n ...options,\n primaryColor: resolved.primaryColor,\n accentColor: resolved.accentColor,\n fontFamily: resolved.fontFamily,\n fontSize: resolved.fontSize,\n borderRadius: resolved.borderRadius,\n windowWidth: resolved.windowWidth,\n windowHeight: resolved.windowHeight,\n })\n\n return (\n <div\n class={`jex-widget ${colorSchemeClass}`.trim()}\n style={themeStyle}\n >\n <div class={`jex-container${posLeft ? ' jex-pos-left' : ''}`}>\n {isOpen.value && (\n <div class=\"jex-chat-window\">\n <Header title={resolved.title} />\n <ScreenRouter greeting={resolved.greeting} title={resolved.title} orgSlug={options.orgSlug} />\n {!resolved.hideBranding && <Footer />}\n </div>\n )}\n <FAB\n iconOption={resolved.triggerIcon}\n radius={resolved.triggerRadius}\n label={resolved.triggerLabel}\n />\n </div>\n </div>\n )\n}\n","import widgetCss from './widget.css?inline'\n\n/**\n * Injects the widget's CSS into the given shadow root.\n *\n * We use a <style> element rather than Constructable StyleSheets because:\n * - Works in all browsers (Safari < 16.4 lacks adoptedStyleSheets support)\n * - Vite's ?inline import gives us the processed CSS as a string\n * - No external requests — fully bundled in the JS output\n */\nexport function injectStyles(shadowRoot: ShadowRoot): void {\n const style = document.createElement('style')\n style.textContent = widgetCss\n shadowRoot.appendChild(style)\n}\n","import { render } from 'preact'\nimport { ConvexProvider, ConvexReactClient } from 'convex/react'\nimport { WidgetShell } from './WidgetShell'\nimport { isOpen } from './shell.state'\nimport { injectStyles } from '../../shared/theme/inject-styles'\nimport { toConvexCloudUrl } from '../../lib/convex-url'\nimport type { JexityChatOptions } from '../../types'\n\n// Singleton — one WebSocket connection shared across all mounts\nconst convexUrl = import.meta.env.VITE_CONVEX_URL\nif (!convexUrl) {\n throw new Error('[jexity] VITE_CONVEX_URL is not set — check your .env file')\n}\nconst convexClient = new ConvexReactClient(toConvexCloudUrl(convexUrl))\n\n/**\n * LOW-LEVEL: Renders the widget into a Shadow DOM on the given host element.\n *\n * Why Shadow DOM?\n * The widget is injected into customer websites that have their own CSS.\n * Shadow DOM creates an isolated DOM subtree — styles on the host page\n * cannot leak in, and widget styles cannot leak out.\n *\n * Why injectStyles?\n * Stylesheets do not cross Shadow DOM boundaries automatically.\n * We must explicitly stamp the widget's CSS into the shadow root.\n *\n * Why reuse the existing shadow root?\n * Calling attachShadow() on an element that already has a shadow root\n * throws \"already has a shadow root\". The Studio playground re-mounts\n * on every config change, so we reuse the root instead of re-creating it.\n *\n * Returns a shutdown function that unmounts the Preact tree and resets state.\n * Called by createInstance() — entry points (esm.ts, iife.ts) should not\n * call this directly; use createInstance() instead.\n */\nexport function mountWidget(\n hostEl: HTMLElement,\n options: JexityChatOptions,\n): () => void {\n const shadow = hostEl.shadowRoot ?? hostEl.attachShadow({ mode: 'open' })\n\n // Clear previous render (safe on first mount — loop simply doesn't run)\n while (shadow.firstChild) {\n shadow.removeChild(shadow.firstChild)\n }\n\n // Stamp widget CSS into the shadow root (not visible outside this boundary)\n injectStyles(shadow)\n\n const container = document.createElement('div')\n shadow.appendChild(container)\n\n // Hand off to Preact — everything below this line is React-style component code\n render(\n <ConvexProvider client={convexClient}>\n <WidgetShell options={options} />\n </ConvexProvider>,\n container,\n )\n\n return function shutdown() {\n render(null, container) // unmounts the Preact tree and runs all cleanup effects\n isOpen.value = false\n }\n}\n","import { mountWidget } from './mount'\nimport { isOpen } from './shell.state'\nimport type { JexityChatOptions, JexityChatInstance } from '../../types'\n\n/**\n * HIGH-LEVEL: Creates a JexityChatInstance for the given host element.\n *\n * This is the function entry points (esm.ts, iife.ts) call to get a widget.\n * It wraps mountWidget() with the full public API:\n *\n * instance.open() — opens the chat window\n * instance.close() — closes the chat window\n * instance.toggle() — flips open/closed\n * instance.isOpen — current open state (getter)\n * instance.subscribe(cb) — notified whenever open state changes\n * instance.shutdown() — destroys the widget and cleans up everything\n *\n * How open/close state works:\n * `isOpen` is a Preact signal — a reactive value that any component can\n * subscribe to. When its value changes, only the components that read it\n * re-render (no prop drilling needed). `subscribe()` below taps into the\n * same signal so external callers (e.g. the React wrapper) can react to\n * open/close events without polling.\n *\n * The onRemove callback:\n * Passed by esm.ts to clean up the host <div> from document.body after\n * shutdown. Undefined when the caller manages the container themselves.\n */\nexport function createInstance(\n mountEl: HTMLElement,\n options: JexityChatOptions,\n onRemove?: () => void,\n): JexityChatInstance {\n const shutdownWidget = mountWidget(mountEl, options)\n\n // Collect external open/close listeners so we can notify them via subscribe()\n const listeners = new Set<(open: boolean) => void>()\n\n // Bridge the internal signal → external subscribe() callbacks.\n // disposeSignal() stops the bridge when the instance is shut down.\n const disposeSignal = isOpen.subscribe((value) => {\n for (const cb of listeners) { cb(value) }\n })\n\n const instance: JexityChatInstance = {\n shutdown() {\n disposeSignal() // stop listening to the signal\n listeners.clear() // drop all external subscribers\n shutdownWidget() // unmount Preact tree + reset state\n if (onRemove) { onRemove() } // clean up host element if needed\n },\n open() { isOpen.value = true },\n close() { isOpen.value = false },\n toggle() { isOpen.value = !isOpen.value },\n get isOpen() { return isOpen.value },\n subscribe(cb: (open: boolean) => void) {\n listeners.add(cb)\n return () => { listeners.delete(cb) }\n },\n }\n\n return instance\n}\n","import { createInstance } from '../module/shell/widget-instance'\nimport type { JexityChatOptions, JexityChatInstance } from '../types'\n\nexport type { JexityChatOptions, JexityChatInstance }\n\nlet activeInstance: JexityChatInstance | null = null\n\nexport function JexityChat(options: JexityChatOptions): JexityChatInstance {\n // Singleton: shut down previous instance if one exists\n if (activeInstance) {\n activeInstance.shutdown()\n }\n\n let mountEl: HTMLElement\n\n if (options.container) {\n mountEl =\n typeof options.container === 'string'\n ? document.querySelector<HTMLElement>(options.container)!\n : options.container\n } else {\n mountEl = document.createElement('div')\n mountEl.id = 'jexity-chat-widget'\n document.body.appendChild(mountEl)\n }\n\n const instance = createInstance(mountEl, options, () => {\n if (!options.container) { mountEl.remove() }\n if (activeInstance === instance) { activeInstance = null }\n })\n\n activeInstance = instance\n return instance\n}\n"],"names":["n","l","u","t","i","r","o","e","f","c","s","a","h","p","v","y","w","d","g","_","m","b","k","x","S","C","M","$","O","N","I","P","B","A","L","D","H","T","j","F","E","V","z","q","G","J","K","Q","R","U","W","Z","Y","X","nn","tn","en","rn","un","on","ln","cn","fn","an","hn","dn","mn","pn","yn","_n","bn","Sn","gn","En","Cn","xn","Rn","lookup","revLookup","Arr","code","len","getLens","b64","validLen","placeHoldersLen","_byteLength","_b64","toByteArray","tmp","lens","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","fromByteArray","extraBytes","parts","maxChunkLength","len2","parseArgs","args","isSimpleObject","validateDeploymentUrl","deploymentUrl","value","isObject","prototype","isSimple","LITTLE_ENDIAN","MIN_INT64","MAX_INT64","ZERO","EIGHT","TWOFIFTYSIX","isSpecial","slowBigIntToBase64","hex","bytes","hexByte","Base64.fromByteArray","slowBase64ToBigInt","encoded","integerBytes","Base64.toByteArray","power","byte","modernBigIntToBase64","buffer","modernBase64ToBigInt","bigIntToBase64","base64ToBigInt","MAX_IDENTIFIER_LEN","validateObjectField","charCode","jsonToConvex","value2","entries","key","floatBytes","float","out","MAX_VALUE_FOR_ERROR_LEN","stringifyValueForError","str","_key","rest","truncateAt","codePoint","convexToJsonInternal","originalValue","context","includeTopLevelUndefined","contextText","errorMessageForUnsupportedType","theType","typeName","k1","_v1","k2","_v2","convexToJson","__defProp","__defNormalProp","obj","__publicField","_a","_b","IDENTIFYING_FIELD","ConvexError","data","version","INFO_COLOR","prefix_for_source","source","DefaultLogger","options","func","id","instantiateDefaultLogger","logger","level","instantiateNoopLogger","logForFunction","type","udfPath","message","prefix","match","logFatalError","errorMessage","createHybridErrorStacktrace","result","forwardData","error","canonicalizeUdfPath","pieces","moduleName","functionName","serializePathAndArgs","serializePaginatedPathAndArgs","initialNumItems","LocalSyncState","journal","componentPath","canonicalizedUdfPath","queryToken","existingEntry","queryId","query","baseVersion","newVersion","add","transition","modification","actingAs","auth","pathAndArgs","oldRemoteQueryResults","modifications","localQuery","querySet","authenticate","remove","RequestManager","markConnectionStateDirty","sent","resolve","status","response","requestInfo","udfType","line","onResolve","errorData","ts","completeRequests","requestId","allMessages","oldestInflightRequest","request","toReferencePath","extractReferencePath","reference","isFunctionHandle","getFunctionAddress","functionReference","functionAddress","referencePath","getFunctionName","address","name","makeFunctionReference","createApi","pathParts","handler","prop","newParts","found","path","exportName","anyApi","OptimisticLocalStoreImpl","queryResults","queryArgs","queryResult","queriesWithName","queryReference","OptimisticQueryResults","serverQueryResults","optimisticUpdatesToDrop","updateAndId","oldQueryResults","localStore","changedQueries","oldQuery","update","mutationId","Long","low","high","hi","lo","UZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_32_DBL","other","val","TWO_PWR_16_DBL","RemoteQuerySet","queryPath","u64ToLong","longToU64","raw","parseServerMessage","encodeClientMessage","CLOSE_NORMAL","CLOSE_GOING_AWAY","CLOSE_NO_STATUS","CLOSE_NOT_FOUND","firstTime","monotonicMillis","prettyNow","serverDisconnectErrors","classifyDisconnectError","WebSocketManager","uri","callbacks","webSocketConstructor","debug","state","chunk","expectedLength","fullJson","ws","timeSavedMs","messageLength","serverMessage","event","msg","reason","messageForLog","encodedMessage","backoff","scheduledAt","timeoutId","closeReason","_message","elapsed","baseBackoff","actualBackoff","jitter","transitionTransitTime","prettyTransitionTime","prettyMessageMB","bytesPerSecond","prettyBytesPerSecond","newSessionId","uuidv4","InvalidTokenError","b64DecodeUnicode","_m","base64UrlDecode","jwtDecode","token","pos","part","decoded","MAXIMUM_REFRESH_DELAY","MAX_TOKEN_CONFIRMATION_ATTEMPTS","AuthenticationManager","syncState","config","fetchToken","onChange","decodedToken","iat","exp","tokenValiditySeconds","delay","refetchTokenTimeoutId","fetchArgs","originalConfigVersion","onAuthChange","newAuth","authStateForLog","markNames","mark","sessionId","detail","performanceMarkToJson","mark2","getMarksReport","allMarks","marks","entry","BaseConvexClient","onTransition","curConnectionState","cb","authRefreshTokenLeewaySeconds","origin","protocol","wsProtocol","wsUri","pauseSocket","unsavedChangesWarning","confirmationMessage","reconnectMetadata","querySetModification","authModification","completedRequests","completedMutationInfo","observedTs","remoteQueryResults","queryTokenToValue","changedQueryTokens","optimisticResult","authToken","fakeUserIdentity","argsObject","unsubscribe","modification2","wsConnectionState","mutationPromise","mutationArgs","optimisticUpdate","wrappedUpdate","localQueryStore","localResult","mightBeSent","actionArgs","report","timeOfOldestRequest","endpoint","asPaginationResult","PaginatedQueryClient","client","paginatedQuery","activePages","numItems","allResults","hasUndefined","isDone","pageToken","paginationResult","changedBaseTokens","changed","paginatedQueries","extendedTransition","lastPageToken","lastPageResult","loadMoreTransition","queryTokens","queryTokenSet","paginatedToken","getResult","paginatedQueryToken","ongoingSplits","pageKeyToQuery","pageKeys","pageKey","splitKey1","splitKey2","pageResult","splitCursor","continueCursor","paginationOpts","firstSubscription","secondSubscription","pageArgs","subscription","originalQuery","pageIndex","sub","lastPageKey","useSubscription","getCurrentValue","subscribe","setState","useState","valueToReturn","useEffect","didUnsubscribe","checkForUpdates","prevState","DEFAULT_EXTEND_SUBSCRIPTION_FOR","React","createMutation","mutationReference","mutation","assertNotAccidentalArgument","ConvexReactClient","identity","argsAndOptions","callback","currentListeners","currentListeners2","queryOptions","extendSubscriptionFor","action","watch","existingResult","reject","sync","simple","paginated","updatedQueries","ConvexContext","useConvex","useContext","ConvexProvider","children","useQuery","skip","queryName","queries","useMemo","useQueries","useMutation","convex","QueriesObserver","createWatch","newQueries","identifier","paginationOptions","existingInfo","listener","info","useQueriesHelper","observer","useSignal","isOpen","signal","toConvexCloudUrl","url","mergeWidgetConfig","remote","title","useRemoteConfig","orgSlug","remoteConfig","setRemoteConfig","de","SUPPORTED_LOCALES","WIDGET_DEFAULT_LOCALE","LOCALE_STORAGE_KEY","locale","STRINGS","useLocale","parseLocale","base","resolveWidgetLocale","configLocale","saved","browser","usePreviewBridge","parentOrigin","handleMessage","allowedOrigin","newLocale","SESSION_REF_KEY","SESSION_ACTIVE_KEY","sessionRef","hasActiveSession","generateRef","initVisitor","stored","active","startNewSession","ref","markSessionActive","buildThemeStyle","vars","primaryColor","theme","bg","text","border","screenStack","navigate","screen","back","replace","BotIcon","size","jsx","Header","canGoBack","jsxs","ZapIcon","Footer","MessageIcon","CloseIcon","SparklesIcon","props","ICON_MAP","RADIUS_MAP","FAB","radius","iconOption","label","hasLabel","HomeScreen","greeting","showLookup","setShowLookup","lookupRef","setLookupRef","handleStartChat","handleResumeSession","handleLookupSubmit","SelectionScreen","createChildComponents","root","componentsGeneric","api","useConvexSession","resolvedRef","useRef","isLoading","createOrResume","ensureSession","useCallback","vid","session","err","resolved","BotMessage","UserMessage","TypingIndicator","MessageList","visitorId","bottomRef","conversations","SendIcon","ChatInput","input","send","handleSend","content","ChatScreen","Fragment","FormScreen","setName","email","setEmail","setMessage","handleSubmit","ConfirmationScreen","ticketRef","LoadingScreen","ErrorScreen","onRetry","onBack","ScreenRouter","stack","currentScreen","confirmationState","WidgetShell","posLeft","colorSchemeClass","themeStyle","injectStyles","shadowRoot","style","widgetCss","convexUrl","convexClient","mountWidget","hostEl","shadow","container","render","createInstance","mountEl","onRemove","shutdownWidget","listeners","disposeSignal","activeInstance","JexityChat","instance"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,58]}
|