@aiden-voice/widget 0.7.2 → 0.8.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/README.md +103 -11
- package/dist/components/Composer.d.ts +3 -1
- package/dist/components/Launcher.d.ts +3 -1
- package/dist/components/MessageFeedback.d.ts +3 -1
- package/dist/components/MessageList.d.ts +3 -1
- package/dist/config.d.ts +3 -0
- package/dist/controller.d.ts +14 -0
- package/dist/i18n/index.d.ts +26 -0
- package/dist/i18n/locales/ar.d.ts +2 -0
- package/dist/i18n/locales/de.d.ts +2 -0
- package/dist/i18n/locales/es.d.ts +2 -0
- package/dist/i18n/locales/fr.d.ts +2 -0
- package/dist/i18n/locales/hi.d.ts +2 -0
- package/dist/i18n/locales/it.d.ts +2 -0
- package/dist/i18n/locales/ja.d.ts +2 -0
- package/dist/i18n/locales/pt.d.ts +2 -0
- package/dist/i18n/locales/ru.d.ts +2 -0
- package/dist/i18n/locales/zh.d.ts +2 -0
- package/dist/i18n/messages.d.ts +30 -0
- package/dist/index.d.ts +2 -0
- package/dist/sessionToken.d.ts +2 -0
- package/dist/types.d.ts +22 -0
- package/dist/version.d.ts +1 -1
- package/dist/viewport.d.ts +5 -0
- package/dist/widget.iife.js +7 -7
- package/dist/widget.js +1117 -572
- package/package.json +1 -1
package/dist/widget.iife.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var whooAidenWidget=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){if(e!=null&&e!==``){if(typeof e==`string`)try{let t=new URL(e);if(t.protocol===`https:`||t.protocol===`data:`&&t.pathname.toLowerCase().startsWith(`image/`))return e}catch{}console.warn(`whoo-aiden-widget: ignoring \`${t}\` -- only https: and data:image/ URLs are allowed.`)}}var n=[`primary`,`onPrimary`,`primaryText`,`ink`,`link`,`text`,`panel`,`border`,`headerHover`,`assistantBubble`,`muted`,`typingDots`,`errorBackground`,`errorText`,`inputBorder`,`focusRing`],r={primary:`#4f46e5`,onPrimary:`#ffffff`,primaryText:`#4f46e5`,ink:`#111111`,link:`#0000ee`,text:`#111111`,panel:`#ffffff`,border:`#e5e5e5`,headerHover:`#f3f4f6`,assistantBubble:`#f0f0f0`,muted:`#4b5563`,typingDots:`#6b7280`,errorBackground:`#fee2e2`,errorText:`#991b1b`,inputBorder:`#6b7280`,focusRing:`#111827`},i={primary:`--whoo-widget-color`,onPrimary:`--whoo-widget-text-on-color`,primaryText:`--whoo-widget-color-text`,ink:`--whoo-widget-ink`,link:`--whoo-widget-link-color`,text:`--whoo-widget-text`,panel:`--whoo-widget-panel`,border:`--whoo-widget-border`,headerHover:`--whoo-widget-header-hover`,assistantBubble:`--whoo-widget-assistant-bubble`,muted:`--whoo-widget-muted`,typingDots:`--whoo-widget-typing-dots`,errorBackground:`--whoo-widget-error-bg`,errorText:`--whoo-widget-error-text`,inputBorder:`--whoo-widget-input-border`,focusRing:`--whoo-widget-focus-ring`},a=2147483e3,o=2147483647;function s(e){return e===void 0?a:Number.isInteger(e)&&Math.abs(e)<=o?e:(console.warn(`whoo-aiden-widget: ignoring zIndex ${String(e)} (expected an integer between -${o} and ${o}); using ${a}.`),a)}var c=`Aiden`;function l(e){return typeof e==`string`?e.trim():``}function u(e){if((typeof e.publishableKey==`string`&&e.publishableKey.length>0)==(typeof e.sessionToken==`string`&&e.sessionToken.length>0))throw Error("whoo-aiden-widget: init() requires exactly one of `publishableKey` or `sessionToken`, not both or neither.")}function d(e){console.warn(`whoo-aiden-widget: ${e}`)}var f=20;function p(e){let t=new WeakSet,n=new Set;return r=>{if(typeof r==`object`&&r||typeof r==`function`){if(t.has(r))return;t.add(r)}else{if(n.has(r))return;n.size>=f&&n.delete(n.values().next().value),n.add(r)}d(e)}}var m=p("ignoring `theme` -- expected an object."),h=p("ignoring `layout` -- expected an object.");function g(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var _=e=>e==null||e===``;function v(e,t,n){let r=e[t];return r==null?null:g(r)?r:(d(`ignoring \`${n}\` -- expected an object.`),null)}function y(e,t,n){for(let r of Object.keys(e))t.includes(r)||d(`ignoring unknown option \`${n}.${r}\`.`)}function b(e,t,n){if(!_(e)){if(typeof e==`string`&&t.includes(e))return e;d(`ignoring \`${n}\` -- expected one of ${t.join(`, `)}.`)}}var x=200,S=/url\(|[@;{}\\]/i;function C(e){if(!_(e)){if(typeof e==`string`){let t=e.trim();if(t&&t.length<=x&&!S.test(t))return t}d(`ignoring \`theme.fonts.family\` -- expected a font-family stack of at most ${x} characters, without url(), @, ;, {, } or \\.`)}}var ee=[`chat`,`message`,`sparkle`],w=[`chevron-down`,`close`],T=new WeakMap;function E(e){let r={colors:{},fontFamily:void 0,launcher:{}};if(e==null)return r;if(!g(e))return m(e),r;let i=T.get(e);if(i)return i;y(e,[`colors`,`fonts`,`launcher`],`theme`);let a=v(e,`colors`,`theme.colors`);if(a){y(a,n,`theme.colors`);for(let e of n){let t=a[e];_(t)||(typeof t==`string`?r.colors[e]=t:d(`ignoring \`theme.colors.${e}\` -- expected a CSS color string.`))}}let o=v(e,`fonts`,`theme.fonts`);o&&(y(o,[`family`],`theme.fonts`),r.fontFamily=C(o.family));let s=v(e,`launcher`,`theme.launcher`);if(s){y(s,[`icon`,`iconUrl`,`openIcon`,`openIconUrl`],`theme.launcher`);let e=b(s.icon,ee,`theme.launcher.icon`),n=t(s.iconUrl,`theme.launcher.iconUrl`),i=b(s.openIcon,w,`theme.launcher.openIcon`),a=t(s.openIconUrl,`theme.launcher.openIconUrl`);e&&(r.launcher.icon=e),n&&(r.launcher.iconUrl=n),i&&(r.launcher.openIcon=i),a&&(r.launcher.openIconUrl=a)}return T.set(e,r),r}var D={offsetX:20,offsetY:20,launcherSize:56,panelWidth:360,panelHeight:480};function O(e,t,n){return e==null?n:typeof e==`number`&&Number.isFinite(e)&&e>=0?e:(d(`ignoring \`${t}\` -- expected a non-negative number of pixels; using ${n}.`),n)}function k(e,t,n,r){let i=Math.min(r,Math.max(n,e));return i!==e&&d(`\`${t}\` ${e} is out of range (${r===1/0?`at least ${n}`:`${n}-${r}`}); using ${i}.`),i}var te=new WeakMap;function ne(e){let t={...D};if(e==null)return t;if(!g(e))return h(e),t;let n=te.get(e);if(n)return n;y(e,[`offset`,`launcherSize`,`panel`],`layout`);let r=v(e,`offset`,`layout.offset`);r&&(y(r,[`x`,`y`],`layout.offset`),t.offsetX=O(r.x,`layout.offset.x`,D.offsetX),t.offsetY=O(r.y,`layout.offset.y`,D.offsetY)),t.launcherSize=k(O(e.launcherSize,`layout.launcherSize`,D.launcherSize),`layout.launcherSize`,24,120);let i=v(e,`panel`,`layout.panel`);return i&&(y(i,[`width`,`height`],`layout.panel`),t.panelWidth=k(O(i.width,`layout.panel.width`,D.panelWidth),`layout.panel.width`,280,1/0),t.panelHeight=k(O(i.height,`layout.panel.height`,D.panelHeight),`layout.panel.height`,320,1/0)),te.set(e,t),t}var A,re,j,ie,ae,oe,se,M,ce,le,ue,de,N={},P=[],fe=/^m(i|n|o|s|text|space)$/,pe=Array.isArray,me=P.slice,F=Object.assign;function he(e){e&&e.parentNode&&e.remove()}function ge(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i||++re,__i:-1,__u:0};return!i&&A.vnode&&A.vnode(a),a}function I(e){return e.children}function _e(e,t){this.props=e,this.context=t,this.__g=0}function L(e,t){if(t==null)return e.__?L(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])&&n.__e)return n.__e;return typeof e.type!=`function`||e.props.__P?null:L(e)}function ve(e){if((e=e.__)&&e.__c&&!e.props.__P)return e.__e=null,e.__k.some(function(t){return t&&(e.__e=t.__e)}),ve(e)}function ye(e){(8&e.__g||!(e.__g|=8)||!j.push(e)||ae++)&&ie==A.debounceRendering||((ie=A.debounceRendering)||queueMicrotask)(be)}function be(){var e,t,n,r,i,a,o,s,c;try{for(t=1;j.length;)j.length>t&&j.sort(oe),e=j.shift(),t=j.length,8&e.__g&&(r=void 0,i=void 0,a=(i=(n=e).__v).__e,o=[],s=[],(c=n.__P)&&((r=F({constructor:void 0},i)).__v=i.__v+1,A.vnode&&A.vnode(r),Oe(c,r,i,n.__n,c.namespaceURI,32&i.__u?[a]:null,o,a||L(i),32&i.__u,s),r.__v=i.__v,r.__.__k[r.__i]=r,Ae(o,r,s),i.__=i.__e=null,r.__e!=a&&ve(r)))}finally{j.length=ae=0}}function xe(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,_=r.__k||P,v=t.length;for(c=Se(n,t,_,c,v),d=0;d<v;d++)(p=n.__k[d])!=null&&(f=~p.__i&&_[p.__i]||N,p.__i=d,g=Oe(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&(f.ref!=p.ref||8&f.__u)&&(f.ref!=p.ref&&f.ref&&Me(f.ref,null,p),u.push(p.ref,p.__c||m,p)),h||=m,4&p.__u?(c=Ce(p,c,e,!f.__v),f.__e&&(f.__e=null)):typeof p.type==`function`&&g!==void 0?c=g:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=h,c}function Se(e,t,n,r,i){var a,o,s,c,l,u,d,f,p,m,h=n.length,g=h,_=0,v=!1,y=e.__k=Array(i);for(a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o!=`object`||o.constructor==String?o=y[a]=ge(null,o):pe(o)?o=y[a]=ge(I,{children:o}):o.constructor===void 0&&o.__b?o=y[a]=ge(o.type,o.props,o.key,o.ref,o.__v):y[a]=o,c=a+_,o.__=e,o.__b=e.__b+1,s=null,~(l=o.__i=we(o,n,c,g))&&(g--,(s=n[l])&&(s.__u|=2)),s&&s.__v?(o.__u|=2,l==c-1?_--:l==c+1?_++:l!=c&&(l>c?_--:_++,v=!0)):(~l||(i>h?_--:i<h&&_++),typeof o.type!=`function`&&(o.__u|=4))):y[a]=null;if(v){for(u=[],d=[],a=0;a<i;a++)if((o=y[a])&&2&o.__u){for(f=0,p=u.length;f<p;)u[m=f+p>>1]<o.__i?f=m+1:p=m;u[f]=o.__i,d[a]=f+1}for(_=u.length;a--;)d[a]&&(d[a]==_?_--:y[a].__u|=4)}if(g)for(a=0;a<h;a++)!(s=n[a])||2&s.__u||(s.__e==r&&(r=L(s)),Ne(s,s));return r}function Ce(e,t,n,r){var i,a;if(typeof e.type==`function`){if(e.props.__P)return t;if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&(i[a].__=e,t=Ce(i[a],t,n,!1));return t}for(t&&!t.parentNode&&(t=L(e))&&!t.parentNode&&(t=null),e.__e!=t&&(!r&&n.moveBefore&&e.__e.parentNode?n.moveBefore(e.__e,t):n.insertBefore(e.__e,t||null)),t=e.__e;(t&&=t.nextSibling)&&t.nodeType==8;);return t}function we(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function Te(e,t,n){n??=``,t[0]==`-`?e.setProperty(t,n):e[t]=n}function Ee(e,t,n,r,i){var a;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||Te(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||Te(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(ce,`$1`)),(t=t.slice(2))[0]<`a`&&(t=t.toLowerCase()),(e.__e||={})[t+a]=n,n?r?n[M]=r[M]:(n[M]=le,e.addEventListener(t,a?de:ue,a)):e.removeEventListener(t,a?de:ue,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function De(e){return function(t){if(this.__e){var n=this.__e[t.type+e];if(t[se]==null)t[se]=le++;else if(t[se]<n[M])return;return n(A.event?A.event(t):t)}}}function Oe(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_,v,y,b,x,S,C,ee,w,T,E,D,O,k=t.type;if(t.constructor!==void 0)return null;if(128&n.__u&&(c=32&n.__u,u=n.__c.__z)){if(t.__u|=c,d=a=[],u.nodeType==8)for(f=1,p=u.nextSibling;p;p=p.nextSibling){if(p.nodeType==8){if(p.data.startsWith(`$s`))f++;else if(p.data.startsWith(`/$s`)&&!--f)break}a.push(p)}else a.push(u);s=a[0]}(u=A.__b)&&u(t);n:if(typeof k==`function`){m=o.length;try{if(y=t.props,b=(u=k.prototype)&&u.render,x=(u=k.contextType)&&r[u.__c],S=u?x?x.props.value:u.__:r,n.__c?2&(h=t.__c=n.__c).__g&&(h.__g|=1):(b?t.__c=h=new k(y,S):(t.__c=h=new _e(y,S),h.constructor=k,h.render=Pe),x&&x.sub(h),h.state||(h.state={}),h.__n=r,h.__g|=8,h.__h=[],h.__k=[]),b&&(h.__s||(h.__s=h.state),k.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=F({},h.__s)),F(h.__s,k.getDerivedStateFromProps(y,h.__s)))),g=h.props,_=h.state,h.__v=t,n.__c){if(b&&!k.getDerivedStateFromProps&&y!==g&&h.componentWillReceiveProps&&h.componentWillReceiveProps(y,S),t.__v==n.__v&&!(8&h.__g)||!(4&h.__g)&&h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(y,h.__s,S)){t.__v!=n.__v&&(h.props=y,h.state=h.__s,h.__g&=-9),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),P.push.apply(h.__h,h.__k),h.__k=[],h.__h.length&&o.push(h),s=L(n);break n}h.componentWillUpdate&&h.componentWillUpdate(y,h.__s,S),b&&h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(g,_,v)})}else b&&!k.getDerivedStateFromProps&&h.componentWillMount&&h.componentWillMount(),b&&h.componentDidMount&&h.__h.push(h.componentDidMount);if(h.context=S,h.props=y,h.__P=e,h.__g&=-5,C=A.__r,ee=0,b)h.state=h.__s,h.__g&=-9,C&&C(t),u=h.render(h.props,h.state,h.context),P.push.apply(h.__h,h.__k),h.__k=[];else do h.__g&=-9,C&&C(t),u=h.render(h.props,h.state,h.context),h.state=h.__s;while(8&h.__g&&++ee<25);h.state=h.__s,h.getChildContext&&(r=F({},r,h.getChildContext())),b&&n.__c&&h.getSnapshotBeforeUpdate&&(v=h.getSnapshotBeforeUpdate(g,_)),w=u&&u.type===I&&u.key==null?u.props.children:u,y.__P&&(u=s,i=(e=y.__P).namespaceURI,c=a=null,n.props&&n.props.__P!=e&&(n.__k.some(function(e){e&&Ne(e,e)}),n.__k=null),s=n.__k?L(n,0):null),s=xe(e,pe(w)?w:[w],t,n,r,i,a,o,s,c,l),y.__P&&(t.__e=null,s=u),t.__u&=-161,128&n.__u&&(h.__z=null),d&&d.some(he),h.__h.length&&o.push(h),1&h.__g&&(h.__g&=-4)}catch(e){if(o.length=m,t.__v=null,c||a){if(e.then){if(T=0,t.__u|=c?160:128,a){for(D=0;D<a.length;D++)if(O=a[D]){if(O.nodeType==8){if(a[D]=null,O.data.startsWith(`$s`))T++||(E=O);else if(O.data.startsWith(`/$s`)&&!--T){s=O;break}}else T&&(a[D]=null)}}if(!E){for(;s&&s.nodeType==8&&s.nextSibling;)s=s.nextSibling;a&&(a[a.indexOf(s)]=null),E=s}t.__c.__z||(t.__c.__z=E),t.__e=s}else a&&a.some(he)}else t.__e=n.__e;t.__k||=n.__k||[],e.then||ke(t),A.__e(e,t,n)}}else s=t.__e=je(n.__e,t,n,r,i,a,o,c,l,e);return(u=A.diffed)&&u(t),128&t.__u?void 0:s}function ke(e){e&&(e.__c&&(e.__c.__g|=4),e.__k&&e.__k.some(ke))}function Ae(e,t,n){for(var r=0;r<n.length;)Me(n[r++],n[r++],n[r++]);A.__c&&A.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){A.__e(e,t.__v)}})}function je(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_,v,y=n.props||N,b=t.props,x=t.type;if(x==`svg`?i=`http://www.w3.org/2000/svg`:x==`math`?i=`http://www.w3.org/1998/Math/MathML`:i||=`http://www.w3.org/1999/xhtml`,a){for(u=0;u<a.length;u++)if((m=a[u])&&(x?m.localName==x:m.nodeType==3)){e=m,a[u]=null;break}}if(!e){if(_=l.ownerDocument||document,!x)return _.createTextNode(b);e=_.createElementNS(i,x,b.is&&b),s&&=(A.__m&&A.__m(t,a),!1),a=null}if(x){if(l=x==`template`?e.content:e,a=x==`textarea`&&b.defaultValue!=null?null:a&&me.call(l.childNodes),!s&&a)for(y={},u=0;u<e.attributes.length;u++)y[(m=e.attributes[u]).name]=m.value;for(u in y)m=y[u],u==`dangerouslySetInnerHTML`?f=m:u==`children`||u in b||u==`value`&&`defaultValue`in b||u==`checked`&&`defaultChecked`in b||Ee(e,u,null,m,i);for(u in v=1&n.__u,b)m=b[u],u==`children`?p=m:u==`dangerouslySetInnerHTML`?d=m:u==`value`?h=m:u==`checked`?g=m:s&&typeof m!=`function`||!(y[u]!==m||v&&m!=null)||Ee(e,u,m,y[u],i);d?(s||f&&(d.__html==f.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[]):(f&&(e.textContent=``),(x==`foreignObject`||i==`http://www.w3.org/1998/Math/MathML`&&fe.test(x))&&(i=`http://www.w3.org/1999/xhtml`),xe(l,pe(p)?p:[p],t,n,r,i,a,o,a?a[0]:n.__k&&L(n,0),s,c),a&&a.some(he)),s&&x!=`textarea`||(u=`value`,x==`progress`&&h==null?e.removeAttribute(u):h==null||h===e[u]&&(x!=`progress`||h)||Ee(e,u,h,y[u],i),u=`checked`,g!=null&&g!=e[u]&&Ee(e,u,g,y[u],i))}else y===b||s&&e.data==b||(e.data=b);return e}function Me(e,t,n){try{typeof e==`function`?(typeof e.__u==`function`&&e.__u(),(typeof e.__u!=`function`||t)&&(e.__u=e(t))):e.current=t}catch(e){A.__e(e,n)}}function Ne(e,t,n){var r,i;if(A.unmount&&A.unmount(e),!(r=e.ref)||r.current&&r.current!=e.__e||Me(r,null,t),r=e.__c){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){A.__e(e,t)}r.__P=r.__n=null}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&Ne(r[i],t,typeof e.type!=`function`||n&&!e.props.__P);(r=e.__e)&&(n||he(r),r.__e&&(r.__e=null)),e.__e=e.__c=e.__=null}function Pe(e,t,n){return this.constructor(e,n)}function Fe(e,t){var n,r,i,a;A.__&&A.__(e,t),t.nodeType==9&&(t=t.documentElement),r=(n=e&&32&e.__u)?null:t.__k,t.__k=ge(I,{children:[e]}),i=[],a=[],Oe(t,t.__k,r||N,N,t.namespaceURI,r?null:t.firstChild?me.call(t.childNodes):null,i,r?r.__e:t.firstChild,n,a),Ae(i,t.__k,a),t.__k.props.children=null}A={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!(1&i.__g)){i.__g|=4;try{if((a=i.constructor)&&a.getDerivedStateFromError&&(i.setState(a.getDerivedStateFromError(e)),o=8&i.__g),i.componentDidCatch&&(i.componentDidCatch(e,r||{}),o=8&i.__g),o)return void(i.__g|=2)}catch(t){e=t,o=0}}throw ae=0,e}},re=0,_e.prototype.setState=function(e,t){var n=this.__s;n&&n!=this.state||(n=this.__s=F({},this.state)),typeof e==`function`&&(e=e(F({},n),this.props)),e&&(F(n,e),this.__v&&(t&&this.__k.push(t),ye(this)))},_e.prototype.forceUpdate=function(e){this.__v&&(this.__g|=4,e&&this.__h.push(e),ye(this))},_e.prototype.render=I,j=[],ae=0,oe=function(e,t){return e.__v.__b-t.__v.__b},se=Symbol(),M=Symbol(),ce=/(PointerCapture)$|Capture$/i,le=0,ue=De(!1),de=De(!0);var R,z,Ie,Le,Re=Object.is,B=0,ze=[],Be=[],V=A,Ve=V.__b,He=V.__r,Ue=V.diffed,We=V.__c,Ge=V.unmount,Ke=V.__;function qe(e,t){V.__h&&V.__h(z,e,B||t),B=0;var n=z.__H||(z.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function H(e){return B=1,Je(nt,e)}function Je(e,t,n){var r=qe(R++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):nt(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);Re(t,n)||(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=z,!z.__f)){z.__f=!0;var i=z.shouldComponentUpdate;z.shouldComponentUpdate=function(e,t,n){var r=this.__H;if(!r)return!0;var a=!1,o=this.props!=e;if(r.__.some(function(e){e.__N&&(a=!0,Re(e.__[0],e.__N[0])||(o=!0))}),i){var s=i.call(this,e,t,n);return a?s||o:s}return!a||o}}return r.__}function U(e,t){var n=qe(R++,3);!V.__s&&tt(n.__H,t)&&(n.__P=!0,n.__=e,n.u=t,z.__H.__h.push(n))}function W(e){return B=5,Ye(function(){return{current:e}},[])}function Ye(e,t){var n=qe(R++,7);return tt(n.__H,t)&&(n.__=e(),n.__H=t),n.__}function Xe(){var e;do{for(;e=Be.shift();)try{G(e)}catch(t){V.__e(t,{__:(e=e.__P)&&e.__v})}for(;e=ze.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(G),t.__h.some(et),t.__h=[]}catch(n){t.__h=[],V.__e(n,e.__v)}}}while(Be.length)}V.__b=function(e){z=null,Ve&&Ve(e)},V.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ke&&Ke(e,t)},V.__r=function(e){He&&He(e),R=0;var t=(z=e.__c).__H;t&&(Ie==z?z.__h=[]:(t.__h.some(G),t.__h.some(et),R=0),t.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})),Ie=z},V.diffed=function(e){Ue&&Ue(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&$e(ze.push(t)),t.__H.__.some(function(e){e.u&&(e.__H=e.u)})),Ie=z=null},V.__c=function(e,t){t.some(function(e){try{e.__h.some(G),e.__h=e.__h.filter(function(e){return!e.__||et(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],V.__e(n,e.__v)}}),We&&We(e,t)},V.unmount=function(e){Ge&&Ge(e);var t,n,r=e.__c;r&&r.__H&&(r.__H.__.some(function(r){try{if(r.__P&&r.__c){if(n===void 0){for(n=e.__;n&&(!n.__c||!n.__c.__P);)n=n.__;n&&=n.__c}r.__P=n,$e(Be.push(r))}else G(r)}catch(e){t=e}}),r.__H=void 0,t&&V.__e(t,r.__v))};var Ze=typeof requestAnimationFrame==`function`;function Qe(e){var t,n=function(){clearTimeout(r),Ze&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Ze&&(t=requestAnimationFrame(n))}function $e(e){e!=1&&Le==V.requestAnimationFrame||((Le=V.requestAnimationFrame)||Qe)(Xe)}function G(e){var t=z,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),z=t}function et(e){var t=z;e.__c=e.__(),z=t}function tt(e,t){return!e||e.length!=t.length||t.some(function(t,n){return!Re(t,e[n])})}function nt(e,t){return typeof t==`function`?t(e):t}var rt=0;Array.isArray;function K(e,t,n,r,i,a){t||={};var o,s,c=t;if(`ref`in c&&typeof e!=`function`)for(s in c={},t)s==`ref`?o=t[s]:c[s]=t[s];var l={type:e,props:c,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--rt,__i:-1,__u:0};return(i||a)&&(l.__source=i,l.__self=a),A.vnode&&A.vnode(l),l}function q({name:e,size:t,children:n}){return K(`svg`,{"data-icon":e,"aria-hidden":`true`,focusable:`false`,width:t,height:t,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,children:n})}function it({size:e=26}){return K(q,{name:`chat`,size:e,children:[K(`path`,{d:`M4 5.5A2.5 2.5 0 0 1 6.5 3h11A2.5 2.5 0 0 1 20 5.5v8a2.5 2.5 0 0 1-2.5 2.5H10l-4.5 4v-4h0A1.5 1.5 0 0 1 4 14.5z`}),K(`path`,{d:`M8.5 9.5h.01M12 9.5h.01M15.5 9.5h.01`,"stroke-width":`2.5`})]})}function at({size:e=26}){return K(q,{name:`message`,size:e,children:K(`path`,{d:`M21 11.5a8.5 8.5 0 0 1-12.4 7.5L3 20.5l1.6-5.1A8.5 8.5 0 1 1 21 11.5z`})})}function ot({size:e=26}){return K(q,{name:`sparkle`,size:e,children:[K(`path`,{d:`M11 3l1.9 5.1L18 10l-5.1 1.9L11 17l-1.9-5.1L4 10l5.1-1.9z`}),K(`path`,{d:`M19 15l.7 1.8 1.8.7-1.8.7L19 20l-.7-1.8-1.8-.7 1.8-.7z`})]})}function st({size:e=26}){return K(q,{name:`chevron-down`,size:e,children:K(`path`,{d:`M6 9l6 6 6-6`})})}function ct({size:e=18}){return K(q,{name:`close`,size:e,children:K(`path`,{d:`M6 6l12 12M18 6L6 18`})})}var lt=`M7 11v9M7 11l3.5-7.2A1.8 1.8 0 0 1 14 4.6V9h4.6a2 2 0 0 1 2 2.3l-1.2 7A2 2 0 0 1 17.4 20H7M7 11H4.5A1.5 1.5 0 0 0 3 12.5v6A1.5 1.5 0 0 0 4.5 20H7`;function ut({size:e=16}){return K(q,{name:`thumb-up`,size:e,children:K(`path`,{d:lt})})}function dt({size:e=16}){return K(q,{name:`thumb-down`,size:e,children:K(`path`,{d:lt,transform:`matrix(1 0 0 -1 0 24)`})})}var ft={chat:it,message:at,sparkle:ot},pt={"chevron-down":st,close:ct};function mt({isOpen:e,onClick:t,iconUrl:n,icon:r=`chat`,openIconUrl:i,openIcon:a=`chevron-down`,buttonRef:o}){let[s,c]=H(`loading`),[l,u]=H(`loading`),d=n!==void 0&&s!==`failed`,f=i!==void 0&&l!==`failed`,p=d&&!e&&s===`loaded`,m=f&&e&&l===`loaded`,h=ft[r]??it,g=pt[a]??st;return K(`button`,{type:`button`,class:`whoo-widget-launcher`,onClick:t,"aria-label":e?`Close chat`:`Open chat`,ref:o,children:[e?m?null:K(g,{}):p?null:K(h,{}),d?K(`img`,{class:`whoo-widget-launcher-icon-image`,src:n,alt:``,referrerpolicy:`no-referrer`,hidden:!p,onLoad:()=>c(`loaded`),onError:()=>c(`failed`)}):null,f?K(`img`,{class:`whoo-widget-launcher-icon-image`,src:i,alt:``,referrerpolicy:`no-referrer`,hidden:!m,onLoad:()=>u(`loaded`),onError:()=>u(`failed`)}):null]})}function ht({value:e,onChange:t,onSend:n,disabled:r,inputRef:i}){return K(`div`,{class:`whoo-widget-composer`,children:[K(`label`,{class:`whoo-widget-sr-only`,for:`whoo-widget-composer-input`,children:`Message`}),K(`input`,{id:`whoo-widget-composer-input`,class:`whoo-widget-composer-input`,value:e,readOnly:r,"aria-disabled":r,ref:i,onInput:e=>t(e.target.value),onKeyDown:e=>{e.key===`Enter`&&n()}}),K(`button`,{type:`button`,class:`whoo-widget-composer-send`,"aria-disabled":r,onClick:()=>{r||n()},children:`Send`})]})}function gt({message:e}){return K(`div`,{class:`whoo-widget-error-banner`,role:`alert`,children:e})}var _t=/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/y,vt=/\*\*([^*\s](?:[^*]*[^*\s])?)\*\*/y,yt=/(?<![A-Za-z0-9_])_([^_\s](?:[^_]*[^_\s])?)_(?![A-Za-z0-9_])/y,bt=/\*([^*\s](?:[^*]*[^*\s])?)\*/y,xt=/[ \t]*[*+-][ \t]+/y,St=/https?:\/\/\S+/y,Ct=/[.,;:!?)\]}>]+$/;function wt(e){let t=[],n=0,r=0,i=n=>{n>r&&t.push({type:`text`,value:e.slice(r,n),start:r,end:n})};for(;n<e.length;){if((n===0||e[n-1]===`
|
|
2
|
-
`)&&(
|
|
1
|
+
var whooAidenWidget=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t={openChat:`Open chat`,closeChat:`Close chat`,chatWith:`Chat with {name}`,newConversation:`New conversation`,conversation:`Conversation`,you:`You`,message:`Message`,send:`Send`,lookingItUp:`Looking that up for you…`,goodResponse:`Good response`,badResponse:`Bad response`,additionalFeedback:`Additional feedback`,feedbackPlaceholder:`What was wrong? (optional)`,feedbackCategory:`Feedback category`,selectReason:`Select a reason (optional)`,categoryFactual:`Factual error`,categoryIncomplete:`Incomplete`,categoryTone:`Off tone`,categoryOther:`Other`,submit:`Submit`,cancel:`Cancel`,feedbackThanks:`Thanks for the feedback`,feedbackFailed:`Couldn't send feedback`,conversationCleared:`Conversation cleared`,genericError:`Something went wrong, please try again.`,sessionExpired:`This chat session has expired. Reload the page to continue.`},n=Object.keys(t);function r(e,t){if(e!=null&&e!==``){if(typeof e==`string`)try{let t=new URL(e);if(t.protocol===`https:`||t.protocol===`data:`&&t.pathname.toLowerCase().startsWith(`image/`))return e}catch{}console.warn(`whoo-aiden-widget: ignoring \`${t}\` -- only https: and data:image/ URLs are allowed.`)}}var i=[`primary`,`onPrimary`,`primaryText`,`ink`,`link`,`text`,`panel`,`border`,`headerHover`,`assistantBubble`,`muted`,`typingDots`,`errorBackground`,`errorText`,`inputBorder`,`focusRing`],a={primary:`#4f46e5`,onPrimary:`#ffffff`,primaryText:`#4f46e5`,ink:`#111111`,link:`#0000ee`,text:`#111111`,panel:`#ffffff`,border:`#e5e5e5`,headerHover:`#f3f4f6`,assistantBubble:`#f0f0f0`,muted:`#4b5563`,typingDots:`#6b7280`,errorBackground:`#fee2e2`,errorText:`#991b1b`,inputBorder:`#6b7280`,focusRing:`#111827`},o={primary:`--whoo-widget-color`,onPrimary:`--whoo-widget-text-on-color`,primaryText:`--whoo-widget-color-text`,ink:`--whoo-widget-ink`,link:`--whoo-widget-link-color`,text:`--whoo-widget-text`,panel:`--whoo-widget-panel`,border:`--whoo-widget-border`,headerHover:`--whoo-widget-header-hover`,assistantBubble:`--whoo-widget-assistant-bubble`,muted:`--whoo-widget-muted`,typingDots:`--whoo-widget-typing-dots`,errorBackground:`--whoo-widget-error-bg`,errorText:`--whoo-widget-error-text`,inputBorder:`--whoo-widget-input-border`,focusRing:`--whoo-widget-focus-ring`},s=2147483e3,c=2147483647;function l(e){return e===void 0?s:Number.isInteger(e)&&Math.abs(e)<=c?e:(console.warn(`whoo-aiden-widget: ignoring zIndex ${String(e)} (expected an integer between -${c} and ${c}); using ${s}.`),s)}var u=`Aiden`;function d(e){return typeof e==`string`?e.trim():``}function f(e){if((typeof e.publishableKey==`string`&&e.publishableKey.length>0)==(typeof e.sessionToken==`string`&&e.sessionToken.length>0))throw Error("whoo-aiden-widget: init() requires exactly one of `publishableKey` or `sessionToken`, not both or neither.")}function p(e){console.warn(`whoo-aiden-widget: ${e}`)}function m(e){let{getSessionToken:t}=e;if(t!==void 0){if(typeof t!=`function`){p("ignoring `getSessionToken` -- expected a function that returns a session token.");return}if(!e.sessionToken){p("ignoring `getSessionToken` -- it is only used with `sessionToken`; with `publishableKey` the widget renews its session by itself.");return}return t}}var h=20;function g(e){let t=new WeakSet,n=new Set;return r=>{if(typeof r==`object`&&r||typeof r==`function`){if(t.has(r))return;t.add(r)}else{if(n.has(r))return;n.size>=h&&n.delete(n.values().next().value),n.add(r)}p(e)}}var _=g("ignoring `theme` -- expected an object."),v=g("ignoring `layout` -- expected an object."),y=g("ignoring `messages` -- expected an object.");function b(e){if(e==null)return{};if(!x(e))return y(e),{};let t={};for(let r of Object.keys(e)){if(!n.includes(r)){p(`ignoring unknown option \`messages.${r}\`.`);continue}let i=e[r];if(typeof i!=`string`||i.trim()===``){p(`ignoring \`messages.${r}\` -- expected a non-blank string.`);continue}r===`chatWith`&&!i.includes(`{name}`)&&p("`messages.chatWith` has no {name}, so the agent name is not shown in the title. For a fixed title, use the `title` option."),t[r]=i}for(let t in e)Object.hasOwn(e,t)||p(`ignoring inherited option \`messages.${t}\` -- only the object's own keys are used.`);return t}function x(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var S=e=>e==null||e===``;function C(e,t,n){let r=e[t];return r==null?null:x(r)?r:(p(`ignoring \`${n}\` -- expected an object.`),null)}function w(e,t,n){for(let r of Object.keys(e))t.includes(r)||p(`ignoring unknown option \`${n}.${r}\`.`)}function T(e,t,n){if(!S(e)){if(typeof e==`string`&&t.includes(e))return e;p(`ignoring \`${n}\` -- expected one of ${t.join(`, `)}.`)}}var E=200,D=/url\(|[@;{}\\]/i;function O(e){if(!S(e)){if(typeof e==`string`){let t=e.trim();if(t&&t.length<=E&&!D.test(t))return t}p(`ignoring \`theme.fonts.family\` -- expected a font-family stack of at most ${E} characters, without url(), @, ;, {, } or \\.`)}}var k=[`chat`,`message`,`sparkle`],A=[`chevron-down`,`close`],ee=new WeakMap;function te(e){let t={colors:{},fontFamily:void 0,launcher:{}};if(e==null)return t;if(!x(e))return _(e),t;let n=ee.get(e);if(n)return n;w(e,[`colors`,`fonts`,`launcher`],`theme`);let a=C(e,`colors`,`theme.colors`);if(a){w(a,i,`theme.colors`);for(let e of i){let n=a[e];S(n)||(typeof n==`string`?t.colors[e]=n:p(`ignoring \`theme.colors.${e}\` -- expected a CSS color string.`))}}let o=C(e,`fonts`,`theme.fonts`);o&&(w(o,[`family`],`theme.fonts`),t.fontFamily=O(o.family));let s=C(e,`launcher`,`theme.launcher`);if(s){w(s,[`icon`,`iconUrl`,`openIcon`,`openIconUrl`],`theme.launcher`);let e=T(s.icon,k,`theme.launcher.icon`),n=r(s.iconUrl,`theme.launcher.iconUrl`),i=T(s.openIcon,A,`theme.launcher.openIcon`),a=r(s.openIconUrl,`theme.launcher.openIconUrl`);e&&(t.launcher.icon=e),n&&(t.launcher.iconUrl=n),i&&(t.launcher.openIcon=i),a&&(t.launcher.openIconUrl=a)}return ee.set(e,t),t}var j={offsetX:20,offsetY:20,launcherSize:56,panelWidth:360,panelHeight:480};function M(e,t,n){return e==null?n:typeof e==`number`&&Number.isFinite(e)&&e>=0?e:(p(`ignoring \`${t}\` -- expected a non-negative number of pixels; using ${n}.`),n)}function ne(e,t,n,r){let i=Math.min(r,Math.max(n,e));return i!==e&&p(`\`${t}\` ${e} is out of range (${r===1/0?`at least ${n}`:`${n}-${r}`}); using ${i}.`),i}var re=new WeakMap;function ie(e){let t={...j};if(e==null)return t;if(!x(e))return v(e),t;let n=re.get(e);if(n)return n;w(e,[`offset`,`launcherSize`,`panel`],`layout`);let r=C(e,`offset`,`layout.offset`);r&&(w(r,[`x`,`y`],`layout.offset`),t.offsetX=M(r.x,`layout.offset.x`,j.offsetX),t.offsetY=M(r.y,`layout.offset.y`,j.offsetY)),t.launcherSize=ne(M(e.launcherSize,`layout.launcherSize`,j.launcherSize),`layout.launcherSize`,24,120);let i=C(e,`panel`,`layout.panel`);return i&&(w(i,[`width`,`height`],`layout.panel`),t.panelWidth=ne(M(i.width,`layout.panel.width`,j.panelWidth),`layout.panel.width`,280,1/0),t.panelHeight=ne(M(i.height,`layout.panel.height`,j.panelHeight),`layout.panel.height`,320,1/0)),re.set(e,t),t}var N,ae,P,oe,se,ce,le,F,ue,de,fe,pe,I={},me=[],he=/^m(i|n|o|s|text|space)$/,ge=Array.isArray,_e=me.slice,L=Object.assign;function ve(e){e&&e.parentNode&&e.remove()}function ye(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i||++ae,__i:-1,__u:0};return!i&&N.vnode&&N.vnode(a),a}function R(e){return e.children}function be(e,t){this.props=e,this.context=t,this.__g=0}function z(e,t){if(t==null)return e.__?z(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])&&n.__e)return n.__e;return typeof e.type!=`function`||e.props.__P?null:z(e)}function xe(e){if((e=e.__)&&e.__c&&!e.props.__P)return e.__e=null,e.__k.some(function(t){return t&&(e.__e=t.__e)}),xe(e)}function Se(e){(8&e.__g||!(e.__g|=8)||!P.push(e)||se++)&&oe==N.debounceRendering||((oe=N.debounceRendering)||queueMicrotask)(Ce)}function Ce(){var e,t,n,r,i,a,o,s,c;try{for(t=1;P.length;)P.length>t&&P.sort(ce),e=P.shift(),t=P.length,8&e.__g&&(r=void 0,i=void 0,a=(i=(n=e).__v).__e,o=[],s=[],(c=n.__P)&&((r=L({constructor:void 0},i)).__v=i.__v+1,N.vnode&&N.vnode(r),je(c,r,i,n.__n,c.namespaceURI,32&i.__u?[a]:null,o,a||z(i),32&i.__u,s),r.__v=i.__v,r.__.__k[r.__i]=r,Ne(o,r,s),i.__=i.__e=null,r.__e!=a&&xe(r)))}finally{P.length=se=0}}function we(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,_=r.__k||me,v=t.length;for(c=Te(n,t,_,c,v),d=0;d<v;d++)(p=n.__k[d])!=null&&(f=~p.__i&&_[p.__i]||I,p.__i=d,g=je(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&(f.ref!=p.ref||8&f.__u)&&(f.ref!=p.ref&&f.ref&&Fe(f.ref,null,p),u.push(p.ref,p.__c||m,p)),h||=m,4&p.__u?(c=Ee(p,c,e,!f.__v),f.__e&&(f.__e=null)):typeof p.type==`function`&&g!==void 0?c=g:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=h,c}function Te(e,t,n,r,i){var a,o,s,c,l,u,d,f,p,m,h=n.length,g=h,_=0,v=!1,y=e.__k=Array(i);for(a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o!=`object`||o.constructor==String?o=y[a]=ye(null,o):ge(o)?o=y[a]=ye(R,{children:o}):o.constructor===void 0&&o.__b?o=y[a]=ye(o.type,o.props,o.key,o.ref,o.__v):y[a]=o,c=a+_,o.__=e,o.__b=e.__b+1,s=null,~(l=o.__i=De(o,n,c,g))&&(g--,(s=n[l])&&(s.__u|=2)),s&&s.__v?(o.__u|=2,l==c-1?_--:l==c+1?_++:l!=c&&(l>c?_--:_++,v=!0)):(~l||(i>h?_--:i<h&&_++),typeof o.type!=`function`&&(o.__u|=4))):y[a]=null;if(v){for(u=[],d=[],a=0;a<i;a++)if((o=y[a])&&2&o.__u){for(f=0,p=u.length;f<p;)u[m=f+p>>1]<o.__i?f=m+1:p=m;u[f]=o.__i,d[a]=f+1}for(_=u.length;a--;)d[a]&&(d[a]==_?_--:y[a].__u|=4)}if(g)for(a=0;a<h;a++)!(s=n[a])||2&s.__u||(s.__e==r&&(r=z(s)),Ie(s,s));return r}function Ee(e,t,n,r){var i,a;if(typeof e.type==`function`){if(e.props.__P)return t;if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&(i[a].__=e,t=Ee(i[a],t,n,!1));return t}for(t&&!t.parentNode&&(t=z(e))&&!t.parentNode&&(t=null),e.__e!=t&&(!r&&n.moveBefore&&e.__e.parentNode?n.moveBefore(e.__e,t):n.insertBefore(e.__e,t||null)),t=e.__e;(t&&=t.nextSibling)&&t.nodeType==8;);return t}function De(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function Oe(e,t,n){n??=``,t[0]==`-`?e.setProperty(t,n):e[t]=n}function ke(e,t,n,r,i){var a;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||Oe(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||Oe(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(ue,`$1`)),(t=t.slice(2))[0]<`a`&&(t=t.toLowerCase()),(e.__e||={})[t+a]=n,n?r?n[F]=r[F]:(n[F]=de,e.addEventListener(t,a?pe:fe,a)):e.removeEventListener(t,a?pe:fe,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function Ae(e){return function(t){if(this.__e){var n=this.__e[t.type+e];if(t[le]==null)t[le]=de++;else if(t[le]<n[F])return;return n(N.event?N.event(t):t)}}}function je(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k,A=t.type;if(t.constructor!==void 0)return null;if(128&n.__u&&(c=32&n.__u,u=n.__c.__z)){if(t.__u|=c,d=a=[],u.nodeType==8)for(f=1,p=u.nextSibling;p;p=p.nextSibling){if(p.nodeType==8){if(p.data.startsWith(`$s`))f++;else if(p.data.startsWith(`/$s`)&&!--f)break}a.push(p)}else a.push(u);s=a[0]}(u=N.__b)&&u(t);n:if(typeof A==`function`){m=o.length;try{if(y=t.props,b=(u=A.prototype)&&u.render,x=(u=A.contextType)&&r[u.__c],S=u?x?x.props.value:u.__:r,n.__c?2&(h=t.__c=n.__c).__g&&(h.__g|=1):(b?t.__c=h=new A(y,S):(t.__c=h=new be(y,S),h.constructor=A,h.render=Le),x&&x.sub(h),h.state||(h.state={}),h.__n=r,h.__g|=8,h.__h=[],h.__k=[]),b&&(h.__s||(h.__s=h.state),A.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=L({},h.__s)),L(h.__s,A.getDerivedStateFromProps(y,h.__s)))),g=h.props,_=h.state,h.__v=t,n.__c){if(b&&!A.getDerivedStateFromProps&&y!==g&&h.componentWillReceiveProps&&h.componentWillReceiveProps(y,S),t.__v==n.__v&&!(8&h.__g)||!(4&h.__g)&&h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(y,h.__s,S)){t.__v!=n.__v&&(h.props=y,h.state=h.__s,h.__g&=-9),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),me.push.apply(h.__h,h.__k),h.__k=[],h.__h.length&&o.push(h),s=z(n);break n}h.componentWillUpdate&&h.componentWillUpdate(y,h.__s,S),b&&h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(g,_,v)})}else b&&!A.getDerivedStateFromProps&&h.componentWillMount&&h.componentWillMount(),b&&h.componentDidMount&&h.__h.push(h.componentDidMount);if(h.context=S,h.props=y,h.__P=e,h.__g&=-5,C=N.__r,w=0,b)h.state=h.__s,h.__g&=-9,C&&C(t),u=h.render(h.props,h.state,h.context),me.push.apply(h.__h,h.__k),h.__k=[];else do h.__g&=-9,C&&C(t),u=h.render(h.props,h.state,h.context),h.state=h.__s;while(8&h.__g&&++w<25);h.state=h.__s,h.getChildContext&&(r=L({},r,h.getChildContext())),b&&n.__c&&h.getSnapshotBeforeUpdate&&(v=h.getSnapshotBeforeUpdate(g,_)),T=u&&u.type===R&&u.key==null?u.props.children:u,y.__P&&(u=s,i=(e=y.__P).namespaceURI,c=a=null,n.props&&n.props.__P!=e&&(n.__k.some(function(e){e&&Ie(e,e)}),n.__k=null),s=n.__k?z(n,0):null),s=we(e,ge(T)?T:[T],t,n,r,i,a,o,s,c,l),y.__P&&(t.__e=null,s=u),t.__u&=-161,128&n.__u&&(h.__z=null),d&&d.some(ve),h.__h.length&&o.push(h),1&h.__g&&(h.__g&=-4)}catch(e){if(o.length=m,t.__v=null,c||a){if(e.then){if(E=0,t.__u|=c?160:128,a){for(O=0;O<a.length;O++)if(k=a[O]){if(k.nodeType==8){if(a[O]=null,k.data.startsWith(`$s`))E++||(D=k);else if(k.data.startsWith(`/$s`)&&!--E){s=k;break}}else E&&(a[O]=null)}}if(!D){for(;s&&s.nodeType==8&&s.nextSibling;)s=s.nextSibling;a&&(a[a.indexOf(s)]=null),D=s}t.__c.__z||(t.__c.__z=D),t.__e=s}else a&&a.some(ve)}else t.__e=n.__e;t.__k||=n.__k||[],e.then||Me(t),N.__e(e,t,n)}}else s=t.__e=Pe(n.__e,t,n,r,i,a,o,c,l,e);return(u=N.diffed)&&u(t),128&t.__u?void 0:s}function Me(e){e&&(e.__c&&(e.__c.__g|=4),e.__k&&e.__k.some(Me))}function Ne(e,t,n){for(var r=0;r<n.length;)Fe(n[r++],n[r++],n[r++]);N.__c&&N.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){N.__e(e,t.__v)}})}function Pe(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_,v,y=n.props||I,b=t.props,x=t.type;if(x==`svg`?i=`http://www.w3.org/2000/svg`:x==`math`?i=`http://www.w3.org/1998/Math/MathML`:i||=`http://www.w3.org/1999/xhtml`,a){for(u=0;u<a.length;u++)if((m=a[u])&&(x?m.localName==x:m.nodeType==3)){e=m,a[u]=null;break}}if(!e){if(_=l.ownerDocument||document,!x)return _.createTextNode(b);e=_.createElementNS(i,x,b.is&&b),s&&=(N.__m&&N.__m(t,a),!1),a=null}if(x){if(l=x==`template`?e.content:e,a=x==`textarea`&&b.defaultValue!=null?null:a&&_e.call(l.childNodes),!s&&a)for(y={},u=0;u<e.attributes.length;u++)y[(m=e.attributes[u]).name]=m.value;for(u in y)m=y[u],u==`dangerouslySetInnerHTML`?f=m:u==`children`||u in b||u==`value`&&`defaultValue`in b||u==`checked`&&`defaultChecked`in b||ke(e,u,null,m,i);for(u in v=1&n.__u,b)m=b[u],u==`children`?p=m:u==`dangerouslySetInnerHTML`?d=m:u==`value`?h=m:u==`checked`?g=m:s&&typeof m!=`function`||!(y[u]!==m||v&&m!=null)||ke(e,u,m,y[u],i);d?(s||f&&(d.__html==f.__html||d.__html==e.innerHTML)||(e.innerHTML=d.__html),t.__k=[]):(f&&(e.textContent=``),(x==`foreignObject`||i==`http://www.w3.org/1998/Math/MathML`&&he.test(x))&&(i=`http://www.w3.org/1999/xhtml`),we(l,ge(p)?p:[p],t,n,r,i,a,o,a?a[0]:n.__k&&z(n,0),s,c),a&&a.some(ve)),s&&x!=`textarea`||(u=`value`,x==`progress`&&h==null?e.removeAttribute(u):h==null||h===e[u]&&(x!=`progress`||h)||ke(e,u,h,y[u],i),u=`checked`,g!=null&&g!=e[u]&&ke(e,u,g,y[u],i))}else y===b||s&&e.data==b||(e.data=b);return e}function Fe(e,t,n){try{typeof e==`function`?(typeof e.__u==`function`&&e.__u(),(typeof e.__u!=`function`||t)&&(e.__u=e(t))):e.current=t}catch(e){N.__e(e,n)}}function Ie(e,t,n){var r,i;if(N.unmount&&N.unmount(e),!(r=e.ref)||r.current&&r.current!=e.__e||Fe(r,null,t),r=e.__c){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){N.__e(e,t)}r.__P=r.__n=null}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&Ie(r[i],t,typeof e.type!=`function`||n&&!e.props.__P);(r=e.__e)&&(n||ve(r),r.__e&&(r.__e=null)),e.__e=e.__c=e.__=null}function Le(e,t,n){return this.constructor(e,n)}function Re(e,t){var n,r,i,a;N.__&&N.__(e,t),t.nodeType==9&&(t=t.documentElement),r=(n=e&&32&e.__u)?null:t.__k,t.__k=ye(R,{children:[e]}),i=[],a=[],je(t,t.__k,r||I,I,t.namespaceURI,r?null:t.firstChild?_e.call(t.childNodes):null,i,r?r.__e:t.firstChild,n,a),Ne(i,t.__k,a),t.__k.props.children=null}N={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!(1&i.__g)){i.__g|=4;try{if((a=i.constructor)&&a.getDerivedStateFromError&&(i.setState(a.getDerivedStateFromError(e)),o=8&i.__g),i.componentDidCatch&&(i.componentDidCatch(e,r||{}),o=8&i.__g),o)return void(i.__g|=2)}catch(t){e=t,o=0}}throw se=0,e}},ae=0,be.prototype.setState=function(e,t){var n=this.__s;n&&n!=this.state||(n=this.__s=L({},this.state)),typeof e==`function`&&(e=e(L({},n),this.props)),e&&(L(n,e),this.__v&&(t&&this.__k.push(t),Se(this)))},be.prototype.forceUpdate=function(e){this.__v&&(this.__g|=4,e&&this.__h.push(e),Se(this))},be.prototype.render=R,P=[],se=0,ce=function(e,t){return e.__v.__b-t.__v.__b},le=Symbol(),F=Symbol(),ue=/(PointerCapture)$|Capture$/i,de=0,fe=Ae(!1),pe=Ae(!0);var B,V,ze,Be,Ve=Object.is,He=0,Ue=[],We=[],H=N,Ge=H.__b,Ke=H.__r,qe=H.diffed,Je=H.__c,Ye=H.unmount,Xe=H.__;function Ze(e,t){H.__h&&H.__h(V,e,He||t),He=0;var n=V.__H||(V.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Qe(e){return He=1,$e(lt,e)}function $e(e,t,n){var r=Ze(B++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):lt(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);Ve(t,n)||(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=V,!V.__f)){V.__f=!0;var i=V.shouldComponentUpdate;V.shouldComponentUpdate=function(e,t,n){var r=this.__H;if(!r)return!0;var a=!1,o=this.props!=e;if(r.__.some(function(e){e.__N&&(a=!0,Ve(e.__[0],e.__N[0])||(o=!0))}),i){var s=i.call(this,e,t,n);return a?s||o:s}return!a||o}}return r.__}function et(e,t){var n=Ze(B++,3);!H.__s&&ct(n.__H,t)&&(n.__P=!0,n.__=e,n.u=t,V.__H.__h.push(n))}function tt(e,t){var n=Ze(B++,4);!H.__s&&ct(n.__H,t)&&(n.__P=!1,n.__=e,n.u=t,V.__h.push(n))}function U(e){return He=5,nt(function(){return{current:e}},[])}function nt(e,t){var n=Ze(B++,7);return ct(n.__H,t)&&(n.__=e(),n.__H=t),n.__}function rt(){var e;do{for(;e=We.shift();)try{W(e)}catch(t){H.__e(t,{__:(e=e.__P)&&e.__v})}for(;e=Ue.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(W),t.__h.some(st),t.__h=[]}catch(n){t.__h=[],H.__e(n,e.__v)}}}while(We.length)}H.__b=function(e){V=null,Ge&&Ge(e)},H.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Xe&&Xe(e,t)},H.__r=function(e){Ke&&Ke(e),B=0;var t=(V=e.__c).__H;t&&(ze==V?V.__h=[]:(t.__h.some(W),t.__h.some(st),B=0),t.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})),ze=V},H.diffed=function(e){qe&&qe(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&ot(Ue.push(t)),t.__H.__.some(function(e){e.u&&(e.__H=e.u)})),ze=V=null},H.__c=function(e,t){t.some(function(e){try{e.__h.some(W),e.__h=e.__h.filter(function(e){return!e.__||st(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],H.__e(n,e.__v)}}),Je&&Je(e,t)},H.unmount=function(e){Ye&&Ye(e);var t,n,r=e.__c;r&&r.__H&&(r.__H.__.some(function(r){try{if(r.__P&&r.__c){if(n===void 0){for(n=e.__;n&&(!n.__c||!n.__c.__P);)n=n.__;n&&=n.__c}r.__P=n,ot(We.push(r))}else W(r)}catch(e){t=e}}),r.__H=void 0,t&&H.__e(t,r.__v))};var it=typeof requestAnimationFrame==`function`;function at(e){var t,n=function(){clearTimeout(r),it&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);it&&(t=requestAnimationFrame(n))}function ot(e){e!=1&&Be==H.requestAnimationFrame||((Be=H.requestAnimationFrame)||at)(rt)}function W(e){var t=V,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),V=t}function st(e){var t=V;e.__c=e.__(),V=t}function ct(e,t){return!e||e.length!=t.length||t.some(function(t,n){return!Ve(t,e[n])})}function lt(e,t){return typeof t==`function`?t(e):t}var ut=0;Array.isArray;function G(e,t,n,r,i,a){t||={};var o,s,c=t;if(`ref`in c&&typeof e!=`function`)for(s in c={},t)s==`ref`?o=t[s]:c[s]=t[s];var l={type:e,props:c,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ut,__i:-1,__u:0};return(i||a)&&(l.__source=i,l.__self=a),N.vnode&&N.vnode(l),l}function K({name:e,size:t,children:n}){return G(`svg`,{"data-icon":e,"aria-hidden":`true`,focusable:`false`,width:t,height:t,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,children:n})}function dt({size:e=26}){return G(K,{name:`chat`,size:e,children:[G(`path`,{d:`M4 5.5A2.5 2.5 0 0 1 6.5 3h11A2.5 2.5 0 0 1 20 5.5v8a2.5 2.5 0 0 1-2.5 2.5H10l-4.5 4v-4h0A1.5 1.5 0 0 1 4 14.5z`}),G(`path`,{d:`M8.5 9.5h.01M12 9.5h.01M15.5 9.5h.01`,"stroke-width":`2.5`})]})}function ft({size:e=26}){return G(K,{name:`message`,size:e,children:G(`path`,{d:`M21 11.5a8.5 8.5 0 0 1-12.4 7.5L3 20.5l1.6-5.1A8.5 8.5 0 1 1 21 11.5z`})})}function pt({size:e=26}){return G(K,{name:`sparkle`,size:e,children:[G(`path`,{d:`M11 3l1.9 5.1L18 10l-5.1 1.9L11 17l-1.9-5.1L4 10l5.1-1.9z`}),G(`path`,{d:`M19 15l.7 1.8 1.8.7-1.8.7L19 20l-.7-1.8-1.8-.7 1.8-.7z`})]})}function mt({size:e=26}){return G(K,{name:`chevron-down`,size:e,children:G(`path`,{d:`M6 9l6 6 6-6`})})}function ht({size:e=18}){return G(K,{name:`close`,size:e,children:G(`path`,{d:`M6 6l12 12M18 6L6 18`})})}var gt=`M7 11v9M7 11l3.5-7.2A1.8 1.8 0 0 1 14 4.6V9h4.6a2 2 0 0 1 2 2.3l-1.2 7A2 2 0 0 1 17.4 20H7M7 11H4.5A1.5 1.5 0 0 0 3 12.5v6A1.5 1.5 0 0 0 4.5 20H7`;function _t({size:e=16}){return G(K,{name:`thumb-up`,size:e,children:G(`path`,{d:gt})})}function vt({size:e=16}){return G(K,{name:`thumb-down`,size:e,children:G(`path`,{d:gt,transform:`matrix(1 0 0 -1 0 24)`})})}var yt={chat:dt,message:ft,sparkle:pt},bt={"chevron-down":mt,close:ht};function xt({isOpen:e,onClick:n,iconUrl:r,icon:i=`chat`,openIconUrl:a,openIcon:o=`chevron-down`,buttonRef:s,text:c=t}){let[l,u]=Qe(`loading`),[d,f]=Qe(`loading`),p=r!==void 0&&l!==`failed`,m=a!==void 0&&d!==`failed`,h=p&&!e&&l===`loaded`,g=m&&e&&d===`loaded`,_=yt[i]??dt,v=bt[o]??mt;return G(`button`,{type:`button`,class:`whoo-widget-launcher`,onClick:n,"aria-label":e?c.closeChat:c.openChat,ref:s,children:[e?g?null:G(v,{}):h?null:G(_,{}),p?G(`img`,{class:`whoo-widget-launcher-icon-image`,src:r,alt:``,referrerpolicy:`no-referrer`,hidden:!h,onLoad:()=>u(`loaded`),onError:()=>u(`failed`)}):null,m?G(`img`,{class:`whoo-widget-launcher-icon-image`,src:a,alt:``,referrerpolicy:`no-referrer`,hidden:!g,onLoad:()=>f(`loaded`),onError:()=>f(`failed`)}):null]})}var St={en:t,fr:{openChat:`Ouvrir le chat`,closeChat:`Fermer le chat`,chatWith:`Discuter avec {name}`,newConversation:`Nouvelle conversation`,conversation:`Conversation`,you:`Vous`,message:`Message`,send:`Envoyer`,lookingItUp:`Je recherche l’information pour vous…`,goodResponse:`Réponse utile`,badResponse:`Réponse peu utile`,additionalFeedback:`Commentaire supplémentaire`,feedbackPlaceholder:`Qu’est-ce qui n’allait pas ? (facultatif)`,feedbackCategory:`Catégorie du commentaire`,selectReason:`Choisissez un motif (facultatif)`,categoryFactual:`Erreur factuelle`,categoryIncomplete:`Réponse incomplète`,categoryTone:`Ton inapproprié`,categoryOther:`Autre`,submit:`Envoyer le commentaire`,cancel:`Annuler`,feedbackThanks:`Merci pour votre commentaire`,feedbackFailed:`Impossible d’envoyer votre commentaire`,conversationCleared:`Conversation effacée`,genericError:`Une erreur s’est produite. Veuillez réessayer.`,sessionExpired:`Cette session de chat a expiré. Rechargez la page pour continuer.`},es:{openChat:`Abrir chat`,closeChat:`Cerrar chat`,chatWith:`Chat con {name}`,newConversation:`Nueva conversación`,conversation:`Conversación`,you:`Usted`,message:`Mensaje`,send:`Enviar`,lookingItUp:`Estoy buscando esa información…`,goodResponse:`Buena respuesta`,badResponse:`Mala respuesta`,additionalFeedback:`Comentarios adicionales`,feedbackPlaceholder:`¿Qué estuvo mal? (opcional)`,feedbackCategory:`Tipo de problema`,selectReason:`Seleccione un motivo (opcional)`,categoryFactual:`Información incorrecta`,categoryIncomplete:`Respuesta incompleta`,categoryTone:`Tono inadecuado`,categoryOther:`Otro`,submit:`Enviar comentarios`,cancel:`Cancelar`,feedbackThanks:`Gracias por sus comentarios`,feedbackFailed:`No se pudieron enviar sus comentarios`,conversationCleared:`Se inició una nueva conversación`,genericError:`Algo salió mal. Inténtelo de nuevo.`,sessionExpired:`Esta sesión de chat expiró. Vuelva a cargar la página para continuar.`},pt:{openChat:`Abrir chat`,closeChat:`Fechar chat`,chatWith:`Conversa com {name}`,newConversation:`Nova conversa`,conversation:`Conversa`,you:`Você`,message:`Mensagem`,send:`Enviar`,lookingItUp:`Estou buscando essa informação…`,goodResponse:`Boa resposta`,badResponse:`Resposta ruim`,additionalFeedback:`Comentários adicionais`,feedbackPlaceholder:`O que estava errado? (opcional)`,feedbackCategory:`Categoria do feedback`,selectReason:`Selecione um motivo (opcional)`,categoryFactual:`Informação incorreta`,categoryIncomplete:`Resposta incompleta`,categoryTone:`Tom inadequado`,categoryOther:`Outro`,submit:`Enviar feedback`,cancel:`Cancelar`,feedbackThanks:`Agradecemos seu feedback`,feedbackFailed:`Não foi possível enviar o feedback`,conversationCleared:`Nova conversa iniciada`,genericError:`Algo deu errado. Tente novamente.`,sessionExpired:`Esta sessão de chat expirou. Recarregue a página para continuar.`},de:{openChat:`Chat öffnen`,closeChat:`Chat schließen`,chatWith:`Chat mit {name}`,newConversation:`Neue Unterhaltung`,conversation:`Unterhaltung`,you:`Sie`,message:`Nachricht`,send:`Senden`,lookingItUp:`Ich suche die Informationen für Sie heraus…`,goodResponse:`Gute Antwort`,badResponse:`Schlechte Antwort`,additionalFeedback:`Zusätzliches Feedback`,feedbackPlaceholder:`Was war falsch? (optional)`,feedbackCategory:`Feedback-Kategorie`,selectReason:`Grund auswählen (optional)`,categoryFactual:`Faktenfehler`,categoryIncomplete:`Unvollständig`,categoryTone:`Unpassender Ton`,categoryOther:`Sonstiges`,submit:`Absenden`,cancel:`Abbrechen`,feedbackThanks:`Danke für Ihr Feedback`,feedbackFailed:`Feedback konnte nicht gesendet werden`,conversationCleared:`Neue Unterhaltung gestartet`,genericError:`Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.`,sessionExpired:`Diese Chat-Sitzung ist abgelaufen. Laden Sie die Seite neu, um fortzufahren.`},it:{openChat:`Apri la chat`,closeChat:`Chiudi la chat`,chatWith:`Chat con {name}`,newConversation:`Nuova conversazione`,conversation:`Conversazione`,you:`Tu`,message:`Messaggio`,send:`Invia`,lookingItUp:`Sto cercando le informazioni richieste…`,goodResponse:`Risposta utile`,badResponse:`Risposta non utile`,additionalFeedback:`Commenti aggiuntivi`,feedbackPlaceholder:`Che cosa non andava? (facoltativo)`,feedbackCategory:`Categoria del feedback`,selectReason:`Seleziona un motivo (facoltativo)`,categoryFactual:`Informazione errata`,categoryIncomplete:`Risposta incompleta`,categoryTone:`Tono non adeguato`,categoryOther:`Altro`,submit:`Invia feedback`,cancel:`Annulla`,feedbackThanks:`Grazie per il feedback`,feedbackFailed:`Impossibile inviare il feedback`,conversationCleared:`Nuova conversazione avviata`,genericError:`Si è verificato un errore. Riprovi.`,sessionExpired:`Questa sessione di chat è scaduta. Ricarichi la pagina per continuare.`},ja:{openChat:`チャットを開く`,closeChat:`チャットを閉じる`,chatWith:`{name}とチャット`,newConversation:`新しい会話`,conversation:`会話`,you:`あなた`,message:`メッセージ`,send:`送信`,lookingItUp:`確認しています…`,goodResponse:`良い回答`,badResponse:`良くない回答`,additionalFeedback:`追加のフィードバック`,feedbackPlaceholder:`何が問題でしたか?(任意)`,feedbackCategory:`フィードバックの種類`,selectReason:`理由を選択(任意)`,categoryFactual:`事実の誤り`,categoryIncomplete:`回答が不十分`,categoryTone:`不適切な口調`,categoryOther:`その他`,submit:`フィードバックを送信`,cancel:`キャンセル`,feedbackThanks:`フィードバックありがとうございます`,feedbackFailed:`フィードバックを送信できませんでした`,conversationCleared:`会話を消去しました`,genericError:`エラーが発生しました。もう一度お試しください。`,sessionExpired:`このチャットセッションの有効期限が切れました。続けるにはページを再読み込みしてください。`},zh:{openChat:`打开聊天`,closeChat:`关闭聊天`,chatWith:`与{name}聊天`,newConversation:`新对话`,conversation:`对话`,you:`您`,message:`消息`,send:`发送`,lookingItUp:`正在为您查找……`,goodResponse:`回答很好`,badResponse:`回答不好`,additionalFeedback:`补充反馈`,feedbackPlaceholder:`哪里有问题?(可选)`,feedbackCategory:`反馈类别`,selectReason:`选择原因(可选)`,categoryFactual:`事实错误`,categoryIncomplete:`回答不完整`,categoryTone:`语气不当`,categoryOther:`其他`,submit:`提交`,cancel:`取消`,feedbackThanks:`感谢您的反馈`,feedbackFailed:`反馈提交失败`,conversationCleared:`对话已清除`,genericError:`出了点问题,请重试。`,sessionExpired:`此聊天会话已过期。请刷新页面后继续。`},ru:{openChat:`Открыть чат`,closeChat:`Закрыть чат`,chatWith:`Чат с ассистентом {name}`,newConversation:`Новый диалог`,conversation:`Диалог`,you:`Вы`,message:`Сообщение`,send:`Отправить`,lookingItUp:`Ищу информацию…`,goodResponse:`Хороший ответ`,badResponse:`Плохой ответ`,additionalFeedback:`Дополнительный комментарий`,feedbackPlaceholder:`Что было не так? (необязательно)`,feedbackCategory:`Категория отзыва`,selectReason:`Выберите причину (необязательно)`,categoryFactual:`Фактическая ошибка`,categoryIncomplete:`Неполный ответ`,categoryTone:`Неподходящий тон`,categoryOther:`Другое`,submit:`Отправить отзыв`,cancel:`Отмена`,feedbackThanks:`Спасибо за отзыв`,feedbackFailed:`Не удалось отправить отзыв`,conversationCleared:`Диалог очищен`,genericError:`Что-то пошло не так. Попробуйте ещё раз.`,sessionExpired:`Срок действия сеанса чата истёк. Перезагрузите страницу, чтобы продолжить.`},hi:{openChat:`चैट खोलें`,closeChat:`चैट बंद करें`,chatWith:`{name} से चैट करें`,newConversation:`नई बातचीत`,conversation:`बातचीत`,you:`आप`,message:`संदेश`,send:`भेजें`,lookingItUp:`आपके लिए जानकारी खोजी जा रही है…`,goodResponse:`अच्छा जवाब`,badResponse:`ख़राब जवाब`,additionalFeedback:`अतिरिक्त फ़ीडबैक`,feedbackPlaceholder:`क्या ग़लत था? (वैकल्पिक)`,feedbackCategory:`फ़ीडबैक की श्रेणी`,selectReason:`कारण चुनें (वैकल्पिक)`,categoryFactual:`तथ्यात्मक त्रुटि`,categoryIncomplete:`अधूरा जवाब`,categoryTone:`अनुचित लहजा`,categoryOther:`अन्य`,submit:`सबमिट करें`,cancel:`रद्द करें`,feedbackThanks:`आपके फ़ीडबैक के लिए धन्यवाद`,feedbackFailed:`फ़ीडबैक नहीं भेजा जा सका`,conversationCleared:`बातचीत मिटा दी गई`,genericError:`कुछ ग़लत हो गया। कृपया फिर से कोशिश करें।`,sessionExpired:`यह चैट सत्र समाप्त हो गया है। जारी रखने के लिए पेज को फिर से लोड करें।`},ar:{openChat:`فتح الدردشة`,closeChat:`إغلاق الدردشة`,chatWith:`الدردشة مع {name}`,newConversation:`محادثة جديدة`,conversation:`المحادثة`,you:`أنت`,message:`الرسالة`,send:`إرسال`,lookingItUp:`جارٍ البحث عن المعلومات…`,goodResponse:`إجابة جيدة`,badResponse:`إجابة سيئة`,additionalFeedback:`ملاحظات إضافية`,feedbackPlaceholder:`ما المشكلة؟ (اختياري)`,feedbackCategory:`فئة الملاحظات`,selectReason:`اختر سببًا (اختياري)`,categoryFactual:`معلومات غير صحيحة`,categoryIncomplete:`إجابة غير مكتملة`,categoryTone:`أسلوب غير مناسب`,categoryOther:`أخرى`,submit:`إرسال الملاحظات`,cancel:`إلغاء`,feedbackThanks:`شكرًا على ملاحظاتك`,feedbackFailed:`تعذّر إرسال الملاحظات`,conversationCleared:`تم مسح المحادثة`,genericError:`حدث خطأ ما. يُرجى المحاولة مرة أخرى.`,sessionExpired:`انتهت صلاحية جلسة الدردشة هذه. يُرجى إعادة تحميل الصفحة للمتابعة.`}},Ct=Object.freeze(Object.keys(St)),wt={pt:`pt-BR`,es:`es-419`,zh:`zh-Hans`},Tt=new Set([`ar`]),Et=/^[a-z]{2,8}([-_][a-z0-9]{1,8})*$/i,Dt=/^zh[-_](hant|tw|hk|mo)(?=$|[-_])/i;function Ot(e){return St[e]}function kt(e){let t=e.trim();if(!Et.test(t)||Dt.test(t))return null;let n=t.split(/[-_]/)[0].toLowerCase();return Object.hasOwn(St,n)?n:null}function At(e,t){let n=null;return e!=null&&e!==``&&(n=typeof e==`string`?kt(e):null,n||console.warn(`whoo-aiden-widget: ignoring \`language\` ${jt(e)} -- expected one of ${Ct.join(`, `)} (or a regional tag like pt-BR). Using the page's language instead.`)),n??=typeof t==`string`?kt(t):null,n??=`en`,{language:n,tag:wt[n]??n,dir:Tt.has(n)?`rtl`:`ltr`}}function jt(e){return typeof e==`string`?JSON.stringify(e):`(a ${typeof e})`}function Mt(e,t){return e.split(`{name}`).join(t.name)}var Nt=`(max-width: 400px), (max-height: 420px)`,Pt=`data-fit-visible`,Ft=40;function It(e){let t=typeof window<`u`?window.visualViewport:null;if(!t)return()=>{};let n=()=>{e.removeAttribute(Pt),e.style.removeProperty(`--whoo-widget-visible-top`),e.style.removeProperty(`--whoo-widget-visible-height`)},r=()=>{let r=document.documentElement.clientHeight,i=Math.abs(t.scale-1)>.01,a=r-t.height;if(i||r===0||a<Ft){n();return}e.setAttribute(Pt,``),e.style.setProperty(`--whoo-widget-visible-top`,`${Math.max(0,t.offsetTop)}px`),e.style.setProperty(`--whoo-widget-visible-height`,`${t.height}px`)};return r(),t.addEventListener(`resize`,r),t.addEventListener(`scroll`,r),()=>{t.removeEventListener(`resize`,r),t.removeEventListener(`scroll`,r),n()}}function Lt(e,t){return typeof e.addEventListener==`function`?(e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)):typeof e.addListener==`function`?(e.addListener(t),()=>e.removeListener(t)):()=>{}}var Rt=0,zt=``;function Bt(){Rt++===0&&(zt=document.documentElement.style.overflow,document.documentElement.style.overflow=`hidden`)}function Vt(){--Rt===0&&(document.documentElement.style.overflow=zt)}function Ht(){if(typeof window>`u`||typeof window.matchMedia!=`function`)return()=>{};let e=window.matchMedia(Nt),t=!1,n=()=>{e.matches&&!t?(t=!0,Bt()):!e.matches&&t&&(t=!1,Vt())};n();let r=Lt(e,n);return()=>{r(),t&&(t=!1,Vt())}}function Ut(e){if(typeof window>`u`||typeof window.matchMedia!=`function`||typeof e.showModal!=`function`)return()=>{};let t=window.matchMedia(Nt),n=!1,r=()=>{if(t.matches===n||!e.isConnected)return;n=t.matches;let r=e.getRootNode().activeElement;e.close(),n?e.showModal():e.show(),r&&e.contains(r)&&r.focus({preventScroll:!0})};return r(),Lt(t,r)}function Wt({value:e,onChange:n,onSend:r,disabled:i,inputRef:a,text:o=t}){return G(`div`,{class:`whoo-widget-composer`,children:[G(`label`,{class:`whoo-widget-sr-only`,for:`whoo-widget-composer-input`,children:o.message}),G(`input`,{id:`whoo-widget-composer-input`,class:`whoo-widget-composer-input`,value:e,readOnly:i,"aria-disabled":i,ref:a,onInput:e=>n(e.target.value),onKeyDown:e=>{e.key===`Enter`&&r()}}),G(`button`,{type:`button`,class:`whoo-widget-composer-send`,"aria-disabled":i,onClick:()=>{i||r()},children:o.send})]})}function Gt({message:e}){return G(`div`,{class:`whoo-widget-error-banner`,role:`alert`,children:e})}var Kt=/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/y,qt=/\*\*([^*\s](?:[^*]*[^*\s])?)\*\*/y,Jt=/(?<![A-Za-z0-9_])_([^_\s](?:[^_]*[^_\s])?)_(?![A-Za-z0-9_])/y,Yt=/\*([^*\s](?:[^*]*[^*\s])?)\*/y,Xt=/[ \t]*[*+-][ \t]+/y,Zt=/https?:\/\/\S+/y,Qt=/[.,;:!?)\]}>]+$/;function $t(e){let t=[],n=0,r=0,i=n=>{n>r&&t.push({type:`text`,value:e.slice(r,n),start:r,end:n})};for(;n<e.length;){if((n===0||e[n-1]===`
|
|
2
|
+
`)&&(Xt.lastIndex=n,Xt.exec(e))){i(n),t.push({type:`text`,value:`• `,start:n,end:Xt.lastIndex}),n=Xt.lastIndex,r=n;continue}if(e[n]===`!`&&n+1<e.length&&e[n+1]===`[`){let t=/!\[([^\]]*)\]\(([^)]*)\)/y;t.lastIndex=n;let r=t.exec(e);if(r){n+=r[0].length;continue}}if(e[n-1]!==`!`){Kt.lastIndex=n;let a=Kt.exec(e);if(a){i(n),t.push({type:`link`,text:a[1],url:a[2],start:n,end:Kt.lastIndex}),n=Kt.lastIndex,r=n;continue}}qt.lastIndex=n;let a=qt.exec(e);if(a){i(n),t.push({type:`bold`,value:a[1],start:n,end:qt.lastIndex}),n=qt.lastIndex,r=n;continue}Jt.lastIndex=n;let o=Jt.exec(e);if(o){i(n),t.push({type:`italic`,value:o[1],start:n,end:Jt.lastIndex}),n=Jt.lastIndex,r=n;continue}Yt.lastIndex=n;let s=Yt.exec(e);if(s){i(n),t.push({type:`italic`,value:s[1],start:n,end:Yt.lastIndex}),n=Yt.lastIndex,r=n;continue}Zt.lastIndex=n;let c=Zt.exec(e);if(c){let e=c[0].match(Qt),a=e?c[0].slice(0,c[0].length-e[0].length):c[0];if(a.length>0){i(n),t.push({type:`link`,text:a,url:a,start:n,end:n+a.length}),n+=a.length,r=n;continue}}n+=1}return i(e.length),t}var en=/^[ \t]*[*+-][ \t]+(.*)$/;function tn(e){let t=[],n=[],r=[],i=()=>{n.length>0&&t.push({type:`text`,text:n.join(`
|
|
3
3
|
`)}),n=[]},a=()=>{r.length>0&&t.push({type:`list`,items:r}),r=[]};for(let t of e.split(`
|
|
4
|
-
`)){let e=t.match(
|
|
5
|
-
`),n=
|
|
4
|
+
`)){let e=t.match(en);e?(i(),r.push(e[1])):(a(),n.push(t))}return i(),a(),t.some(e=>e.type===`list`)?t.flatMap((e,n)=>{if(e.type===`list`)return[e];let{text:r}=e;return t[n-1]?.type===`list`&&(r=r.replace(/^(?:[ \t]*\n)+/,``)),t[n+1]?.type===`list`&&(r=r.replace(/(?:\n[ \t]*)+$/,``)),r.trim()===``?[]:[{type:`text`,text:r}]}):null}function q(e){return $t(e).map((e,t)=>{switch(e.type){case`bold`:return G(`strong`,{children:q(e.value)},t);case`italic`:return G(`em`,{children:q(e.value)},t);case`link`:return G(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:[e.text,G(`span`,{class:`whoo-widget-sr-only`,children:` (opens in new tab)`})]},t);default:return e.value}})}function nn(e){let t=e.replace(/\r\n?/g,`
|
|
5
|
+
`),n=tn(t);return n?n.map((e,t)=>e.type===`list`?G(`ul`,{class:`whoo-widget-list`,children:e.items.map((e,t)=>G(`li`,{children:q(e)},t))},t):G(`span`,{children:q(e.text)},t)):q(t)}function rn(e){return[{value:``,label:e.selectReason},{value:`factual`,label:e.categoryFactual},{value:`incomplete`,label:e.categoryIncomplete},{value:`tone`,label:e.categoryTone},{value:`other`,label:e.categoryOther}]}function an({state:e,containerRef:n,onThumbsUp:r,onThumbsDown:i,onDraftChange:a,onSubmitDetailed:o,onCancel:s,text:c=t}){let l=e.correction??``,u=e.category??``,d=U(e.status),f=U(null),p=U(null);if(tt(()=>{let t=d.current;if(d.current=e.status,t===e.status)return;if(e.status===`expanded`){f.current?.focus();return}if(t===`expanded`&&e.status===`idle`){p.current?.focus();return}let r=n?.current;if(!r)return;let i=r.getRootNode();r.contains(i.activeElement)||r.focus()},[e.status,n]),e.status===`expanded`)return G(`div`,{class:`whoo-widget-feedback-form`,children:[G(`label`,{children:[G(`span`,{class:`whoo-widget-sr-only`,children:c.additionalFeedback}),G(`textarea`,{ref:f,class:`whoo-widget-feedback-textarea`,value:l,onInput:e=>a(e.target.value,u),placeholder:c.feedbackPlaceholder})]}),G(`select`,{class:`whoo-widget-feedback-select`,"aria-label":c.feedbackCategory,value:u,onChange:e=>a(l,e.target.value),children:rn(c).map(e=>G(`option`,{value:e.value,children:e.label},e.value))}),G(`div`,{class:`whoo-widget-feedback-form-buttons`,children:[G(`button`,{type:`button`,class:`whoo-widget-feedback-submit`,onClick:()=>o(l,u),children:c.submit}),G(`button`,{type:`button`,class:`whoo-widget-feedback-cancel`,onClick:s,children:c.cancel})]})]});let m=e.status===`submitting`,h=e.status===`submitted`;return G(`div`,{class:`whoo-widget-feedback`,children:[h?null:G(`div`,{class:`whoo-widget-feedback-buttons`,children:[G(`button`,{type:`button`,"aria-label":c.goodResponse,disabled:m,onClick:r,children:G(_t,{})}),G(`button`,{ref:p,type:`button`,"aria-label":c.badResponse,disabled:m,onClick:i,children:G(vt,{})})]}),G(`div`,{role:`status`,class:h?`whoo-widget-feedback-submitted`:e.status===`error`?`whoo-widget-feedback-error`:void 0,children:h?c.feedbackThanks:e.status===`error`?c.feedbackFailed:null})]})}function on({isSlowResponse:e,text:t}){return G(`div`,{class:`whoo-widget-pending`,role:`status`,children:[G(`span`,{class:`whoo-widget-typing`,"aria-hidden":`true`,children:[G(`span`,{}),G(`span`,{}),G(`span`,{})]}),e?G(`span`,{class:`whoo-widget-pending-text`,children:t.lookingItUp}):null]})}function sn({url:e,alt:t}){let[n,r]=Qe(!1);return n?null:G(`img`,{class:`whoo-widget-empty-state-image`,src:e,alt:t,referrerpolicy:`no-referrer`,onError:()=>r(!0)})}function cn({message:e,speaker:t,feedbackState:n,showFeedback:r,pending:i,isSlowResponse:a,onThumbsUp:o,onThumbsDown:s,onDraftChange:c,onSubmitDetailed:l,onCancelFeedback:u,text:d}){let f=U(null),p=e.id;return G(`div`,{ref:f,tabIndex:-1,class:`whoo-widget-message whoo-widget-message--${e.role}`,children:[G(`span`,{class:`whoo-widget-sr-only`,children:[t,`: `]}),i?G(on,{isSlowResponse:a,text:d}):G(`div`,{class:`whoo-widget-message-text`,dir:`auto`,children:nn(e.content)}),r&&e.role===`assistant`&&p?G(an,{state:n,containerRef:f,onThumbsUp:()=>o(p),onThumbsDown:()=>s(p),onDraftChange:(e,t)=>c(p,e,t),onSubmitDetailed:(e,t)=>l(p,e,t),onCancel:()=>u(p),text:d}):null]})}function ln({messages:e,messageFeedback:n,announcement:r,emptyStateImage:i,agentName:a=u,showFeedback:o=!1,isStreaming:s=!1,isSlowResponse:c=!1,onThumbsUp:l,onThumbsDown:d,onDraftChange:f=()=>{},onSubmitDetailed:p,onCancelFeedback:m,text:h=t}){let g=U(null);return et(()=>{let e=g.current;e&&(e.scrollTop=e.scrollHeight)},[e,c]),G(R,{children:[G(`section`,{class:`whoo-widget-message-list`,ref:g,"aria-label":h.conversation,tabIndex:0,children:[i?G(sn,{...i}):null,e.map((t,r)=>G(cn,{message:t,speaker:t.role===`user`?h.you:a,showFeedback:o,feedbackState:t.id?n[t.id]??{status:`idle`}:{status:`idle`},pending:s&&r===e.length-1&&t.role===`assistant`&&t.content===``,isSlowResponse:c,onThumbsUp:l,onThumbsDown:d,onDraftChange:f,onSubmitDetailed:p,onCancelFeedback:m,text:h},t.id??r))]}),G(`div`,{class:`whoo-widget-sr-only`,"aria-live":`polite`,"aria-atomic":`true`,children:r??``})]})}var un=`button:not(:disabled), [href], input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])`;function dn(e){return Array.from(e.querySelectorAll(un)).filter(e=>{let t=getComputedStyle(e);return t.display!==`none`&&t.visibility!==`hidden`})}function fn({state:e,controller:t,greeting:n}){let r=U(null),i=U(null);tt(()=>{i.current?.focus()},[]),tt(()=>{let e=r.current,t=e?It(e):()=>{},n=e?Ut(e):()=>{},i=Ht();return()=>{t(),n(),i()}},[]);let a=e=>{if(e.key===`Escape`){e.preventDefault(),t.close();return}if(e.key!==`Tab`)return;let n=r.current;if(!n)return;let i=dn(n);if(i.length===0)return;let a=i[0],o=i[i.length-1],s=n.getRootNode().activeElement;if(!n.contains(s)){e.preventDefault(),a.focus();return}e.shiftKey&&s===a?(e.preventDefault(),o.focus()):!e.shiftKey&&s===o&&(e.preventDefault(),a.focus())},o=()=>{let n=e.draft.trim();n&&!e.isStreaming&&(t.setDraft(``),t.sendMessage(n))},s=d(t.config.name)||e.agentName||`Aiden`,c=d(t.config.title)||Mt(t.text.chatWith,{name:s}),l=e.messages.length===0&&n?[{role:`assistant`,content:n,id:null}]:e.messages,u=t.emptyStateImageUrl,f=e.messages.length===0&&u?{url:u,alt:t.emptyStateImageAlt}:void 0;return G(`dialog`,{open:!0,class:`whoo-widget-panel`,"aria-modal":`true`,"aria-label":c,ref:r,onKeyDown:a,onCancel:e=>{e.preventDefault(),t.close()},children:[G(`div`,{class:`whoo-widget-header`,children:[G(`h2`,{class:`whoo-widget-header-title`,children:c}),G(`div`,{class:`whoo-widget-header-actions`,children:[e.messages.length>0&&G(`button`,{type:`button`,class:`whoo-widget-header-reset`,onClick:()=>{t.resetConversation(),i.current?.focus()},children:t.text.newConversation}),G(`button`,{type:`button`,class:`whoo-widget-header-close`,"aria-label":t.text.closeChat,onClick:()=>t.close(),children:G(ht,{})})]})]}),G(ln,{messages:l,messageFeedback:e.messageFeedback,announcement:e.announcement,emptyStateImage:f,agentName:s,showFeedback:t.showFeedback,isStreaming:e.isStreaming,isSlowResponse:e.isSlowResponse,onThumbsUp:e=>t.submitFeedback(e,`up`),onThumbsDown:e=>t.expandFeedback(e),onDraftChange:(e,n,r)=>t.setFeedbackDraft(e,n,r),onSubmitDetailed:(e,n,r)=>t.submitFeedback(e,`down`,n||void 0,r||void 0),onCancelFeedback:e=>t.cancelFeedback(e),text:t.text}),e.runtimeError&&G(Gt,{message:e.runtimeError}),G(Wt,{value:e.draft,onChange:e=>t.setDraft(e),onSend:o,disabled:e.isStreaming,inputRef:i,text:t.text})]})}function pn({controller:e}){let[t,n]=Qe(e.getState()),r=U(null),i=U(t.isOpen);return et(()=>(n(e.getState()),e.subscribe(n)),[e]),et(()=>{i.current&&!t.isOpen&&r.current?.focus(),i.current=t.isOpen},[t.isOpen]),t.initError||t.isInitializing?null:G(R,{children:[G(xt,{isOpen:t.isOpen,onClick:()=>t.isOpen?e.close():e.open(),iconUrl:e.launcher.iconUrl,icon:e.launcher.icon,openIconUrl:e.launcher.openIconUrl,openIcon:e.launcher.openIcon,buttonRef:r,text:e.text}),t.isOpen&&G(fn,{state:t,controller:e,greeting:e.config.greeting})]})}var mn=class extends Error{status;constructor(e,t){super(e),this.name=`WidgetApiError`,this.status=t}};function hn(e){if(typeof e!=`string`)return null;let t=e.trim();return t===``?null:t}async function gn(e,t){let n=await fetch(`${e}/api/v1/widget/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({publishable_key:t})});if(!n.ok)throw new mn(`Failed to create widget session (${n.status})`,n.status);let r=await n.json();return{token:r.token,..._n(r)}}function _n(e){return{primaryColor:hn(e.primary_color),name:hn(e.name),accentColor:hn(e.accent_color),inkColor:hn(e.ink_color)}}async function vn(e,t){let n=await fetch(`${e}/api/v1/widget/branding`,{headers:{Authorization:`Bearer ${t}`}});if(!n.ok)throw new mn(`Failed to load widget branding (${n.status})`,n.status);return _n(await n.json())}async function yn(e,t,n){let r=await fetch(`${e}/api/v1/widget/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${t}`},body:JSON.stringify({message_id:n.messageId,rating:n.rating,correction:n.correction??null,category:n.category??null})});if(!r.ok)throw new mn(`Feedback submission failed (${r.status})`,r.status)}async function*bn(e,t,n,r,i){let a=await fetch(`${e}/api/v1/widget/chat`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${t}`},body:JSON.stringify({conversation_id:n,message:r}),signal:i});if(!a.ok||!a.body)throw new mn(`Chat request failed (${a.status})`,a.status);let o=a.body.getReader(),s=new TextDecoder,c=``;for(;;){let{done:e,value:t}=await o.read();if(e)break;c+=s.decode(t,{stream:!0});let n=c.indexOf(`
|
|
6
6
|
|
|
7
7
|
`);for(;n!==-1;){let e=c.slice(0,n);c=c.slice(n+2);let t=e.split(`
|
|
8
|
-
`).find(e=>e.startsWith(`data: `));t&&(yield
|
|
8
|
+
`).find(e=>e.startsWith(`data: `));t&&(yield xn(JSON.parse(t.slice(6)))),n=c.indexOf(`
|
|
9
9
|
|
|
10
|
-
`)}}}function
|
|
11
|
-
`)).map(e=>{switch(e.type){case`bold`:case`italic`:return Kt(e.value);case`link`:return e.text;default:return e.value}}).join(``)}var qt=40,Jt=120;function Yt(e){let t=[];for(let n of wt(e))if(n.type===`text`){let e=n.value.split(/(\s+)/),r=n.start;for(let n of e)r+=n.length,n.trim().length>0&&t.push(r)}else t.push(n.end);return t}function Xt(e){let t=null;return e?.addEventListener(`abort`,()=>{t?.()},{once:!0}),function(e){return new Promise(n=>{let r=setTimeout(()=>{t=null,n()},e);t=()=>{clearTimeout(r),t=null,n()}})}}async function Zt(e,t,n){let r=n?.wordIntervalMs??qt,i=n?.tokenIntervalMs??Jt,a=n?.signal,o=wt(e),s=new Set(o.filter(e=>e.type!==`text`).map(e=>e.end)),c=Xt(a),l=``;for(let n of Yt(e))if(a?.aborted||(l=e.slice(0,n),t(l),await c(s.has(n)?i:r),a?.aborted))return;l!==e&&t(e)}function Qt(e,t=Date.now()){let n=e.split(`.`);if(n.length!==3||n.some(e=>e===``))return!1;let r=n[1];try{let e=r.replace(/-/g,`+`).replace(/_/g,`/`),n=JSON.parse(atob(e.padEnd(Math.ceil(e.length/4)*4,`=`)))?.exp;return typeof n==`number`&&Number.isFinite(n)&&n*1e3<=t}catch{return!1}}function $t(e){return`whoo-aiden-widget:conversation:${e}`}function en(e){try{return window.sessionStorage.getItem($t(e))}catch{return null}}function tn(e,t){try{window.sessionStorage.setItem($t(e),t)}catch{}}function nn(e){try{window.sessionStorage.removeItem($t(e))}catch{}}var rn=/^(inherit|initial|unset|revert|revert-layer)$|\bcurrentcolor\b|\b(var|env|attr|light-dark)\(/i;function an(e){if(rn.test(e.trim()))return null;let t=document.createElement(`div`);if(t.style.color=e,t.style.color===``)return null;let n=document.createElement(`div`);n.attachShadow({mode:`open`}).appendChild(t),document.body.appendChild(n);let r=getComputedStyle(t).color;n.remove();let i=r.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?/);if(!i)return null;let a=i[4]===void 0?1:Number(i[4]);return{rgb:[Number(i[1]),Number(i[2]),Number(i[3])].map(e=>Math.round(e*a+255*(1-a))),translucent:a<1}}function Y(e){return an(e)?.rgb??null}function X([e,t,n]){let r=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*r(e)+.7152*r(t)+.0722*r(n)}function on(e,t){let n=Math.max(e,t),r=Math.min(e,t);return(n+.05)/(r+.05)}function sn(e){let t=Y(e);if(!t)return console.warn(`[whoo-aiden-widget] Could not parse color "${e}" for contrast calculation; defaulting to white text.`),`#ffffff`;let n=X(t);return on(n,X([0,0,0]))>=on(n,X([255,255,255]))?`#000000`:`#ffffff`}function cn(e,t){let n=Y(e),r=Y(t);return!n||!r?NaN:on(X(n),X(r))}var ln=r.primary,un=r.panel,dn=r.assistantBubble,fn=r.headerHover,pn=4.5;function mn([e,t,n]){return`#${[e,t,n].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function hn(e,t=un){let n=Y(e),r=Y(t);if(!n||!r)return ln;let i=X(r),a=e=>on(X(e),i)>=pn;if(a(n))return mn(n);for(let e=.99;e>0;e-=.01){let t=n.map(t=>Math.round(t*e));if(a(t))return mn(t)}return`#000000`}var gn=r.ink,_n=r.link;function Z(e){if(typeof e!=`string`||!e)return null;let t=an(e);return t?mn(t.rgb):null}function vn(e){if(typeof e!=`string`||!e)return null;let t=an(e);return t?t.translucent?e.trim():mn(t.rgb):null}var yn=[{role:`onPrimary`,against:[`primary`],required:4.5},{role:`primaryText`,against:[`panel`,`headerHover`],required:4.5},{role:`ink`,against:[`assistantBubble`,`panel`],required:4.5},{role:`link`,against:[`assistantBubble`],required:4.5},{role:`muted`,against:[`assistantBubble`],required:4.5},{role:`text`,against:[`panel`,`assistantBubble`],required:4.5},{role:`errorText`,against:[`errorBackground`],required:4.5},{role:`typingDots`,against:[`assistantBubble`],required:3},{role:`inputBorder`,against:[`panel`],required:3},{role:`focusRing`,against:[`panel`],required:3}];function bn({color:e,inkColor:t,accentColor:i,overrides:a}){let o=typeof a==`object`&&a&&!Array.isArray(a)?a:{},s=e=>vn(o[e]),c=Z(e),l=s(`primary`),u=l??c??ln,d=s(`primaryText`),f=d??hn(u,fn),p=s(`onPrimary`)??sn(u),m=Z(t),h=s(`ink`)??(m?hn(m,dn):gn),g=Z(i),_=s(`link`)??(g?hn(g,dn):_n),v=e=>s(e)??r[e],y={primary:u,onPrimary:p,primaryText:f,ink:h,link:_,text:v(`text`),panel:v(`panel`),border:v(`border`),headerHover:v(`headerHover`),assistantBubble:v(`assistantBubble`),muted:v(`muted`),typingDots:v(`typingDots`),errorBackground:v(`errorBackground`),errorText:v(`errorText`),inputBorder:v(`inputBorder`),focusRing:v(`focusRing`)},b=Object.fromEntries(n.map(e=>[e,s(e)!==null])),x=[];for(let{role:e,against:t,required:n}of yn)for(let r of t){if(!b[e]&&!b[r])continue;let t=cn(y[e],y[r]);Number.isFinite(t)&&t<n&&x.push({role:e,against:r,value:y[e],ratio:t,required:n,overridden:b[e]})}return{primary:u,textOnPrimary:p,primaryAsText:f,ink:h,link:_,adjusted:{primary:l===null&&d===null&&c!==null&&f!==u,ink:!b.ink&&m!==null&&h!==m,link:!b.link&&g!==null&&_!==g},roles:y,overridden:b,contrastWarnings:x}}function Q(e){return typeof e==`string`?`"${e}"`:`a ${typeof e} value`}function xn(e,t,n=ln){let r=t;Z(t)===null&&(console.warn(`[whoo-aiden-widget] Could not use ${Q(t)} as the theme color; falling back to ${Q(n)}.`),r=n);let i=bn({color:r});e.style.setProperty(`--whoo-widget-color`,i.primary),e.style.setProperty(`--whoo-widget-text-on-color`,i.textOnPrimary),e.style.setProperty(`--whoo-widget-color-text`,i.primaryAsText)}function Sn(e,{inkColor:t,accentColor:n}){let r=bn({inkColor:t,accentColor:n});e.style.setProperty(`--whoo-widget-ink`,r.ink),e.style.setProperty(`--whoo-widget-link-color`,r.link)}function Cn(e,t){let r=bn({overrides:t});for(let t of n){let n=r.overridden.primary&&(t===`onPrimary`||t===`primaryText`);(r.overridden[t]||n)&&e.style.setProperty(i[t],r.roles[t])}}function wn(e,t){e&&Z(e)===null&&console.warn(`[whoo-aiden-widget] Could not use ${Q(e)} as the ${t}; using the default.`)}function Tn(e,t,r){for(let e of n){let n=t[e];n&&Z(n)===null&&console.warn(`[whoo-aiden-widget] Could not use ${Q(n)} as theme.colors.${e}; using the calculated color.`)}let i=t.primary;typeof i==`string`&&an(i)?.translucent&&console.warn(`[whoo-aiden-widget] theme.colors.primary ${Q(i)} is translucent. The launcher shows your page through it, so its icon may be unreadable over dark content; pass a solid color.`),En({color:e.color,inkColor:e.inkColor,accentColor:e.accentColor,overrides:t},r)}function En(e,t){for(let n of bn(e).contrastWarnings){let{role:e,against:r,value:i,ratio:a,required:o,overridden:s}=n,c=`${e}|${r}|${i}`;t.has(c)||(t.add(c),console.warn(s?`[whoo-aiden-widget] theme.colors.${e} (${i}) has ${a.toFixed(2)}:1 contrast against the ${r} color; ${o}:1 is recommended. Using it as given.`:`[whoo-aiden-widget] the ${e} color (${i}) has ${a.toFixed(2)}:1 contrast against your theme.colors.${r}; ${o}:1 is recommended. Override theme.colors.${e} too.`))}}function Dn(e,t,n=new Set){xn(e,t.color??ln),wn(t.inkColor,`ink color`),wn(t.accentColor,`accent color`),Sn(e,{inkColor:t.inkColor,accentColor:t.accentColor});let r=E(t.theme);Tn(t,r.colors,n),Cn(e,r.colors),r.fontFamily&&(e.style.setProperty(`--whoo-widget-font`,r.fontFamily),e.setAttribute(`data-whoo-custom-font`,``))}var On=8e3,kn=3e3;function An(e,t){return new Promise(n=>{let r=setTimeout(n,t);e.then(()=>{clearTimeout(r),n()})})}var jn=class{config;state;listeners=new Set;sessionToken=null;conversationId=null;storageIdentifier;activeRequestController=null;slowResponseTimer=null;prefersReducedMotion;launcher;launcherIconUrl;emptyStateImageUrl;emptyStateImageAlt;showFeedback;constructor(e){this.config=e;let n=E(e.theme).launcher,r=n.iconUrl??t(e.launcherIconUrl,`launcherIconUrl`);this.launcher={...n,...r?{iconUrl:r}:{}},this.launcherIconUrl=r,this.emptyStateImageUrl=t(e.emptyStateImageUrl,`emptyStateImageUrl`),this.emptyStateImageAlt=typeof e.emptyStateImageAlt==`string`?e.emptyStateImageAlt.trim():``,this.showFeedback=e.showFeedback===!0,this.storageIdentifier=e.publishableKey??`session-token-mode`,this.prefersReducedMotion=typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,this.state={isOpen:!1,messages:[],isStreaming:!1,initError:null,isInitializing:!1,runtimeError:null,messageFeedback:{},primaryColor:null,agentName:null,accentColor:null,inkColor:null,announcement:null,isSlowResponse:!1,draft:``}}getState(){return this.state}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}clearSlowResponse(){this.slowResponseTimer!==null&&(clearTimeout(this.slowResponseTimer),this.slowResponseTimer=null),this.state.isSlowResponse&&this.setState({isSlowResponse:!1})}setState(e){this.state={...this.state,...e};for(let e of this.listeners)e(this.state)}async init(){this.setState({isInitializing:!0});try{await this.start()}finally{this.setState({isInitializing:!1})}}async start(){let e=this.config.apiBaseUrl??`https://api.aidenvoice.com`;try{if(this.config.sessionToken){if(Qt(this.config.sessionToken))throw Error(`The sessionToken has expired.`);this.sessionToken=this.config.sessionToken}else if(this.config.publishableKey){let{token:t,primaryColor:n,name:r,accentColor:i,inkColor:a}=await Bt(e,this.config.publishableKey);this.sessionToken=t,this.setState({primaryColor:n,agentName:r,accentColor:i,inkColor:a})}else throw Error(`WidgetConfig must include exactly one of publishableKey or sessionToken`)}catch(e){console.error(`[whoo-aiden-widget] initialization failed:`,e),this.setState({initError:e instanceof Error?e.message:String(e)});return}this.conversationId=en(this.storageIdentifier),this.config.sessionToken&&await An(this.loadBranding(e,this.config.sessionToken),kn)}async loadBranding(e,t){try{let n=this.config;if(Z(n.color)&&Z(n.inkColor)&&Z(n.accentColor)&&l(n.name))return;let{primaryColor:r,name:i,accentColor:a,inkColor:o}=await Ht(e,t);this.setState({primaryColor:r,agentName:i,accentColor:a,inkColor:o})}catch(e){let t=e?.status;(t===401||t===403)&&(console.error(`[whoo-aiden-widget] initialization failed:`,e),this.setState({initError:e instanceof Error?e.message:String(e)}))}}open(){this.setState({isOpen:!0})}resetConversation(){this.activeRequestController?.abort(),this.activeRequestController=null,this.clearSlowResponse(),this.conversationId=null,nn(this.storageIdentifier),this.setState({messages:[],messageFeedback:{},runtimeError:null,isStreaming:!1,announcement:`Conversation cleared`})}setDraft(e){this.setState({draft:e})}close(){this.activeRequestController?.abort(),this.activeRequestController=null,this.clearSlowResponse(),this.setState({isOpen:!1})}async sendMessage(e){if(!this.sessionToken)return;let t=this.config.apiBaseUrl??`https://api.aidenvoice.com`,n={role:`user`,content:e,id:null},r={role:`assistant`,content:``,id:null};this.setState({messages:[...this.state.messages,n,r],isStreaming:!0,runtimeError:null,announcement:null});let i=r,a=e=>{let t=i;i={...i,...e},this.setState({messages:this.state.messages.map(e=>e===t?i:e)})},o=e=>a({content:e});this.activeRequestController=new AbortController;let{signal:s}=this.activeRequestController;this.slowResponseTimer=setTimeout(()=>{this.slowResponseTimer=null,this.setState({isSlowResponse:!0})},On);let c=()=>{this.setState({runtimeError:`Something went wrong, please try again.`,...this.state.draft===``?{draft:e}:{}})},l=``;try{for await(let n of Wt(t,this.sessionToken,this.conversationId,e,s))if(n.type===`conversation_id`)this.conversationId=n.conversationId,tn(this.storageIdentifier,n.conversationId);else if(n.type===`delta`)this.clearSlowResponse(),n.verbatim&&!this.prefersReducedMotion?(await Zt(n.delta,e=>o(e),{signal:s}),l=n.delta):n.verbatim?(l=n.delta,o(l)):(l+=n.delta,o(l));else if(n.type===`done`)n.conversationId&&(this.conversationId=n.conversationId,tn(this.storageIdentifier,n.conversationId)),n.messageId&&a({id:n.messageId}),this.setState({announcement:Kt(l)});else if(n.type===`error`){console.error(`[whoo-aiden-widget] chat error:`,n.error),c(),this.activeRequestController?.abort();break}}catch(e){e?.name===`AbortError`||(console.error(`[whoo-aiden-widget] chat request failed:`,e),c())}finally{this.activeRequestController=null,this.clearSlowResponse();let e=i.id===null&&i.content.trim()===``?this.state.messages.filter(e=>e!==i):this.state.messages;this.setState({isStreaming:!1,...e.length===this.state.messages.length?{}:{messages:e}})}}expandFeedback(e){let{correction:t,category:n}=this.state.messageFeedback[e]??{};this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`expanded`,correction:t,category:n}}})}setFeedbackDraft(e,t,n){this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{...this.state.messageFeedback[e],correction:t,category:n}}})}cancelFeedback(e){this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`idle`}}})}async submitFeedback(e,t,n,r){if(!this.sessionToken)return;let i=this.config.apiBaseUrl??`https://api.aidenvoice.com`;this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`submitting`,rating:t}}});try{await Ut(i,this.sessionToken,{messageId:e,rating:t,correction:n,category:r}),this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`submitted`,rating:t}}})}catch(i){console.error(`[whoo-aiden-widget] feedback submission failed:`,i),this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`error`,rating:t,correction:n,category:r}}})}}},$=20,Mn=12,Nn=300,Pn=352;function Fn(e,t){let{offsetX:n,offsetY:r,launcherSize:i,panelWidth:a,panelHeight:o}=ne(t.layout),s=e=>typeof t.layout?.offset?.[e]==`number`;if(typeof window<`u`&&window.innerWidth>0&&window.innerHeight>0){let e=Math.max($,window.innerWidth-Nn),t=Math.max($,window.innerHeight-i-Pn);s(`x`)&&(n>e||n>window.innerWidth-i)&&console.warn(`whoo-aiden-widget: \`layout.offset.x\` ${n} leaves no room for the launcher and panel in this viewport; it is held back.`),s(`y`)&&(r>t||r>window.innerHeight-i)&&console.warn(`whoo-aiden-widget: \`layout.offset.y\` ${r} leaves no room for the launcher and panel in this viewport; it is held back.`)}let c=`min(${n}px, max(${$}px, calc(100vw - ${Nn}px)), calc(100vw - ${i}px))`,l=`min(${r}px, max(${$}px, calc(100vh - ${i+Pn}px)), calc(100vh - ${i}px))`,u=`calc(${l} + ${i}px + ${Mn}px)`,d=t.position===`bottom-left`,f=(t,n)=>e.style.setProperty(t,n);f(`--whoo-widget-inset-left`,d?c:`auto`),f(`--whoo-widget-inset-right`,d?`auto`:c),f(`--whoo-widget-inset-bottom`,l),f(`--whoo-widget-launcher-size`,`${i}px`),f(`--whoo-widget-panel-bottom`,u),f(`--whoo-widget-panel-width`,`${a}px`),f(`--whoo-widget-panel-height`,`${o}px`),f(`--whoo-widget-panel-max-width`,`calc(100vw - ${c} - ${$}px)`),f(`--whoo-widget-panel-max-height`,`calc(100vh - ${u} - ${$}px)`)}var In=`:host,.whoo-widget-root{all:initial;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.whoo-widget-launcher{bottom:var(--whoo-widget-inset-bottom,20px);left:var(--whoo-widget-inset-left,auto);right:var(--whoo-widget-inset-right,20px);width:var(--whoo-widget-launcher-size,56px);height:var(--whoo-widget-launcher-size,56px);background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:24px;display:flex;position:fixed;box-shadow:0 2px 8px #0003}.whoo-widget-launcher:focus-visible{box-shadow:0 2px 8px #0003,0 0 0 4px #fff}.whoo-widget-launcher svg{width:calc(var(--whoo-widget-launcher-size,56px) * 13 / 28);height:calc(var(--whoo-widget-launcher-size,56px) * 13 / 28);display:block}.whoo-widget-launcher-icon-image{width:calc(var(--whoo-widget-launcher-size,56px) * 4 / 7);height:calc(var(--whoo-widget-launcher-size,56px) * 4 / 7);object-fit:cover;border-radius:50%}.whoo-widget-launcher-icon-image[hidden]{display:none}.whoo-widget-panel{bottom:var(--whoo-widget-panel-bottom,88px);left:var(--whoo-widget-inset-left,auto);right:var(--whoo-widget-inset-right,20px);width:var(--whoo-widget-panel-width,360px);height:var(--whoo-widget-panel-height,480px);max-width:var(--whoo-widget-panel-max-width,calc(100vw - 40px));max-height:var(--whoo-widget-panel-max-height,calc(100vh - 108px));background:var(--whoo-widget-panel,#fff);font-family:var(--whoo-widget-font,-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);border-radius:12px;flex-direction:column;display:flex;position:fixed;overflow:hidden;box-shadow:0 4px 16px #0003}@media (width<=400px),(height<=420px){.whoo-widget-panel{width:auto;max-width:none;height:auto;max-height:none;inset:8px}}.whoo-widget-header{border-bottom:1px solid var(--whoo-widget-border,#e5e5e5);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;max-height:50%;padding:8px 8px 8px 16px;display:flex;overflow-y:auto}.whoo-widget-header-title{color:var(--whoo-widget-ink,#111);overflow-wrap:anywhere;flex:auto;min-width:0;margin:0;font-size:15px;font-weight:600}.whoo-widget-header-actions{background:var(--whoo-widget-panel,#fff);flex-shrink:0;align-items:center;gap:4px;margin-left:auto;display:flex;position:sticky;bottom:0}.whoo-widget-header-close,.whoo-widget-header-reset{color:var(--whoo-widget-color-text,#4f46e5);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;min-width:24px;min-height:24px;padding:4px 8px;font-size:13px;display:inline-flex}.whoo-widget-header-close{width:32px;height:32px;padding:0}.whoo-widget-header-close:hover,.whoo-widget-header-reset:hover{background:var(--whoo-widget-header-hover,#f3f4f6)}.whoo-widget-message-list{flex:1;min-height:0;padding:12px;overflow-y:auto}.whoo-widget-message-list:focus-visible{outline:2px solid var(--whoo-widget-focus-ring,#111827);outline-offset:-2px;box-shadow:inset 0 0 0 4px var(--whoo-widget-panel,#fff)}.whoo-widget-empty-state-image{object-fit:contain;max-width:min(160px,100%);height:auto;max-height:160px;margin:8px auto 16px;display:block}@media (width<=400px),(height<=420px){.whoo-widget-empty-state-image{max-height:64px;margin:0 auto 8px}}.whoo-widget-message{overflow-wrap:anywhere;white-space:pre-line;border-radius:8px;max-width:80%;margin-bottom:8px;padding:8px 12px}.whoo-widget-list{margin:4px 0;padding-left:20px}.whoo-widget-message--user{background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);margin-left:auto}.whoo-widget-message--user a{color:inherit}.whoo-widget-message--assistant{background:var(--whoo-widget-assistant-bubble,#f0f0f0);color:var(--whoo-widget-ink,#111)}.whoo-widget-message--assistant a{color:var(--whoo-widget-link-color,#00e)}.whoo-widget-pending{flex-wrap:wrap;align-items:center;gap:8px;min-height:1.2em;display:flex}.whoo-widget-typing{align-items:center;gap:4px;display:inline-flex}.whoo-widget-typing span{background:var(--whoo-widget-typing-dots,#6b7280);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite whoo-widget-typing-bounce}.whoo-widget-typing span:nth-child(2){animation-delay:.2s}.whoo-widget-typing span:nth-child(3){animation-delay:.4s}@keyframes whoo-widget-typing-bounce{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.whoo-widget-typing span{animation:none}}.whoo-widget-error-banner{background:var(--whoo-widget-error-bg,#fee2e2);color:var(--whoo-widget-error-text,#991b1b);padding:8px 12px;font-size:13px}.whoo-widget-composer{border-top:1px solid var(--whoo-widget-border,#e5e5e5);gap:8px;padding:12px;display:flex}.whoo-widget-composer-input{border:1px solid var(--whoo-widget-input-border,#6b7280);border-radius:6px;flex:1;padding:8px}.whoo-widget-composer-send{background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);cursor:pointer;border:none;border-radius:6px;padding:8px 16px}.whoo-widget-composer-send[aria-disabled=true],.whoo-widget-composer-input[aria-disabled=true]{opacity:.6;cursor:not-allowed}.whoo-widget-feedback{align-items:center;gap:6px;margin-top:4px;display:flex}.whoo-widget-feedback-buttons{gap:6px;display:flex}.whoo-widget-feedback-buttons button{cursor:pointer;color:var(--whoo-widget-muted,#4b5563);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;min-width:24px;min-height:24px;padding:4px;display:inline-flex}.whoo-widget-feedback-buttons button:hover:not(:disabled){color:var(--whoo-widget-text,#111);background:#0000000f}.whoo-widget-feedback-buttons button:disabled{opacity:.3;cursor:not-allowed}.whoo-widget-feedback-form{flex-direction:column;gap:6px;margin-top:6px;display:flex}.whoo-widget-feedback-textarea{box-sizing:border-box;border:1px solid var(--whoo-widget-input-border,#6b7280);resize:vertical;border-radius:6px;width:100%;padding:6px;font-size:12px}.whoo-widget-feedback-select{border:1px solid var(--whoo-widget-input-border,#6b7280);border-radius:6px;min-height:24px;padding:4px;font-size:12px}.whoo-widget-feedback-form-buttons{gap:6px;display:flex}.whoo-widget-feedback-submit{background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:13px}.whoo-widget-feedback-cancel{border:1px solid var(--whoo-widget-input-border,#6b7280);background:var(--whoo-widget-panel,#fff);color:var(--whoo-widget-text,#111);cursor:pointer;border-radius:6px;padding:8px 16px;font-size:13px}.whoo-widget-feedback-submitted{color:var(--whoo-widget-muted,#4b5563);margin-top:4px;font-size:12px}.whoo-widget-feedback-error{color:var(--whoo-widget-error-text,#991b1b);font-size:12px}.whoo-widget-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[data-whoo-custom-font] button,[data-whoo-custom-font] input,[data-whoo-custom-font] textarea,[data-whoo-custom-font] select{font-family:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--whoo-widget-focus-ring,#111827);outline-offset:2px;box-shadow:0 0 0 4px var(--whoo-widget-panel,#fff)}@media (forced-colors:active){.whoo-widget-launcher,.whoo-widget-header-close,.whoo-widget-header-reset,.whoo-widget-composer-send,.whoo-widget-feedback-submit,.whoo-widget-feedback-buttons button{border:1px solid buttontext}.whoo-widget-panel{box-sizing:border-box;border:1px solid canvastext}}`;function Ln(e){let t=document.createElement(`div`);t.id=`whoo-aiden-widget-host`,t.style.position=`relative`,t.style.zIndex=String(s(e.zIndex));let n=t.attachShadow({mode:`open`}),r=document.createElement(`style`);r.textContent=In,n.appendChild(r);let i=document.createElement(`div`);n.appendChild(i);let a=new Set;Dn(i,e,a),Fn(i,e);let o=new jn(e),c=Z(e.color)!==null,l=null,u=``,d=E(e.theme).colors,f=Object.keys(d).length>0,p={color:e.color,inkColor:e.inkColor,accentColor:e.accentColor};return o.subscribe(t=>{let n=!1;!c&&t.primaryColor&&t.primaryColor!==l&&(l=t.primaryColor,xn(i,t.primaryColor,e.color),Z(t.primaryColor)&&(p={...p,color:t.primaryColor}),n=!0);let r=`${t.inkColor}|${t.accentColor}`;if((t.inkColor||t.accentColor)&&r!==u){u=r;let a=Z(e.inkColor)?e.inkColor:t.inkColor,o=Z(e.accentColor)?e.accentColor:t.accentColor;Sn(i,{inkColor:a,accentColor:o}),p={...p,inkColor:a,accentColor:o},n=!0}n&&(Cn(i,d),f&&En({...p,overrides:d},a))}),o.init(),Fe(K(Lt,{controller:o}),i),document.body.appendChild(t),{unmount(){Fe(null,i),t.remove()}}}function Rn(e){return u(e),Ln(e)}return e.init=Rn,e})({});
|
|
10
|
+
`)}}}function xn(e){return typeof e.error==`string`?{type:`error`,error:e.error,conversationId:e.conversation_id}:e.done===!0?{type:`done`,conversationId:e.conversation_id,messageId:e.message_id??null}:typeof e.delta==`string`?e.verbatim===!0?{type:`delta`,delta:e.delta,verbatim:!0}:{type:`delta`,delta:e.delta}:{type:`conversation_id`,conversationId:e.conversation_id}}function Sn(e){return $t(e.replace(/\r\n?/g,`
|
|
11
|
+
`)).map(e=>{switch(e.type){case`bold`:case`italic`:return Sn(e.value);case`link`:return e.text;default:return e.value}}).join(``)}var Cn=40,wn=120;function Tn(e){let t=[];for(let n of $t(e))if(n.type===`text`){let e=n.value.split(/(\s+)/),r=n.start;for(let n of e)r+=n.length,n.trim().length>0&&t.push(r)}else t.push(n.end);return t}function En(e){let t=null;return e?.addEventListener(`abort`,()=>{t?.()},{once:!0}),function(e){return new Promise(n=>{let r=setTimeout(()=>{t=null,n()},e);t=()=>{clearTimeout(r),t=null,n()}})}}async function Dn(e,t,n){let r=n?.wordIntervalMs??Cn,i=n?.tokenIntervalMs??wn,a=n?.signal,o=$t(e),s=new Set(o.filter(e=>e.type!==`text`).map(e=>e.end)),c=En(a),l=``;for(let n of Tn(e))if(a?.aborted||(l=e.slice(0,n),t(l),await c(s.has(n)?i:r),a?.aborted))return;l!==e&&t(e)}function On(e){let t=e.split(`.`);if(t.length!==3||t.some(e=>e===``))return null;let n=t[1];try{let e=n.replace(/-/g,`+`).replace(/_/g,`/`),t=JSON.parse(atob(e.padEnd(Math.ceil(e.length/4)*4,`=`))),r=e=>typeof e==`number`&&Number.isFinite(e)?e:null,{exp:i,iat:a}=t??{};return{exp:r(i),iat:r(a)}}catch{return null}}function kn(e){let t=On(e)?.exp;return typeof t==`number`?t*1e3:null}function An(e,t=Date.now()){let n=kn(e);return n!==null&&n<=t}function jn(e,t=Date.now()){let n=On(e);return n?.exp==null?null:n.iat!=null&&n.exp>n.iat?t+(n.exp-n.iat)*1e3:n.exp*1e3}function Mn(e){return`whoo-aiden-widget:conversation:${e}`}function Nn(e){try{return window.sessionStorage.getItem(Mn(e))}catch{return null}}function Pn(e,t){try{window.sessionStorage.setItem(Mn(e),t)}catch{}}function Fn(e){try{window.sessionStorage.removeItem(Mn(e))}catch{}}var In=/^(inherit|initial|unset|revert|revert-layer)$|\bcurrentcolor\b|\b(var|env|attr|light-dark)\(/i;function Ln(e){if(In.test(e.trim()))return null;let t=document.createElement(`div`);if(t.style.color=e,t.style.color===``)return null;let n=document.createElement(`div`);n.attachShadow({mode:`open`}).appendChild(t),document.body.appendChild(n);let r=getComputedStyle(t).color;n.remove();let i=r.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?/);if(!i)return null;let a=i[4]===void 0?1:Number(i[4]);return{rgb:[Number(i[1]),Number(i[2]),Number(i[3])].map(e=>Math.round(e*a+255*(1-a))),translucent:a<1}}function J(e){return Ln(e)?.rgb??null}function Y([e,t,n]){let r=e=>{let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*r(e)+.7152*r(t)+.0722*r(n)}function Rn(e,t){let n=Math.max(e,t),r=Math.min(e,t);return(n+.05)/(r+.05)}function zn(e){let t=J(e);if(!t)return console.warn(`[whoo-aiden-widget] Could not parse color "${e}" for contrast calculation; defaulting to white text.`),`#ffffff`;let n=Y(t);return Rn(n,Y([0,0,0]))>=Rn(n,Y([255,255,255]))?`#000000`:`#ffffff`}function Bn(e,t){let n=J(e),r=J(t);return!n||!r?NaN:Rn(Y(n),Y(r))}var Vn=a.primary,Hn=a.panel,Un=a.assistantBubble,Wn=a.headerHover,Gn=4.5;function Kn([e,t,n]){return`#${[e,t,n].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function qn(e,t=Hn){let n=J(e),r=J(t);if(!n||!r)return Vn;let i=Y(r),a=e=>Rn(Y(e),i)>=Gn;if(a(n))return Kn(n);for(let e=.99;e>0;e-=.01){let t=n.map(t=>Math.round(t*e));if(a(t))return Kn(t)}return`#000000`}var Jn=a.ink,Yn=a.link;function X(e){if(typeof e!=`string`||!e)return null;let t=Ln(e);return t?Kn(t.rgb):null}function Xn(e){if(typeof e!=`string`||!e)return null;let t=Ln(e);return t?t.translucent?e.trim():Kn(t.rgb):null}var Zn=[{role:`onPrimary`,against:[`primary`],required:4.5},{role:`primaryText`,against:[`panel`,`headerHover`],required:4.5},{role:`ink`,against:[`assistantBubble`,`panel`],required:4.5},{role:`link`,against:[`assistantBubble`],required:4.5},{role:`muted`,against:[`assistantBubble`],required:4.5},{role:`text`,against:[`panel`,`assistantBubble`],required:4.5},{role:`errorText`,against:[`errorBackground`],required:4.5},{role:`typingDots`,against:[`assistantBubble`],required:3},{role:`inputBorder`,against:[`panel`],required:3},{role:`focusRing`,against:[`panel`],required:3}];function Qn({color:e,inkColor:t,accentColor:n,overrides:r}){let o=typeof r==`object`&&r&&!Array.isArray(r)?r:{},s=e=>Xn(o[e]),c=X(e),l=s(`primary`),u=l??c??Vn,d=s(`primaryText`),f=d??qn(u,Wn),p=s(`onPrimary`)??zn(u),m=X(t),h=s(`ink`)??(m?qn(m,Un):Jn),g=X(n),_=s(`link`)??(g?qn(g,Un):Yn),v=e=>s(e)??a[e],y={primary:u,onPrimary:p,primaryText:f,ink:h,link:_,text:v(`text`),panel:v(`panel`),border:v(`border`),headerHover:v(`headerHover`),assistantBubble:v(`assistantBubble`),muted:v(`muted`),typingDots:v(`typingDots`),errorBackground:v(`errorBackground`),errorText:v(`errorText`),inputBorder:v(`inputBorder`),focusRing:v(`focusRing`)},b=Object.fromEntries(i.map(e=>[e,s(e)!==null])),x=[];for(let{role:e,against:t,required:n}of Zn)for(let r of t){if(!b[e]&&!b[r])continue;let t=Bn(y[e],y[r]);Number.isFinite(t)&&t<n&&x.push({role:e,against:r,value:y[e],ratio:t,required:n,overridden:b[e]})}return{primary:u,textOnPrimary:p,primaryAsText:f,ink:h,link:_,adjusted:{primary:l===null&&d===null&&c!==null&&f!==u,ink:!b.ink&&m!==null&&h!==m,link:!b.link&&g!==null&&_!==g},roles:y,overridden:b,contrastWarnings:x}}function Z(e){return typeof e==`string`?`"${e}"`:`a ${typeof e} value`}function $n(e,t,n=Vn){let r=t;X(t)===null&&(console.warn(`[whoo-aiden-widget] Could not use ${Z(t)} as the theme color; falling back to ${Z(n)}.`),r=n);let i=Qn({color:r});e.style.setProperty(`--whoo-widget-color`,i.primary),e.style.setProperty(`--whoo-widget-text-on-color`,i.textOnPrimary),e.style.setProperty(`--whoo-widget-color-text`,i.primaryAsText)}function er(e,{inkColor:t,accentColor:n}){let r=Qn({inkColor:t,accentColor:n});e.style.setProperty(`--whoo-widget-ink`,r.ink),e.style.setProperty(`--whoo-widget-link-color`,r.link)}function tr(e,t){let n=Qn({overrides:t});for(let t of i){let r=n.overridden.primary&&(t===`onPrimary`||t===`primaryText`);(n.overridden[t]||r)&&e.style.setProperty(o[t],n.roles[t])}}function nr(e,t){e&&X(e)===null&&console.warn(`[whoo-aiden-widget] Could not use ${Z(e)} as the ${t}; using the default.`)}function rr(e,t,n){for(let e of i){let n=t[e];n&&X(n)===null&&console.warn(`[whoo-aiden-widget] Could not use ${Z(n)} as theme.colors.${e}; using the calculated color.`)}let r=t.primary;typeof r==`string`&&Ln(r)?.translucent&&console.warn(`[whoo-aiden-widget] theme.colors.primary ${Z(r)} is translucent. The launcher shows your page through it, so its icon may be unreadable over dark content; pass a solid color.`),ir({color:e.color,inkColor:e.inkColor,accentColor:e.accentColor,overrides:t},n)}function ir(e,t){for(let n of Qn(e).contrastWarnings){let{role:e,against:r,value:i,ratio:a,required:o,overridden:s}=n,c=`${e}|${r}|${i}`;t.has(c)||(t.add(c),console.warn(s?`[whoo-aiden-widget] theme.colors.${e} (${i}) has ${a.toFixed(2)}:1 contrast against the ${r} color; ${o}:1 is recommended. Using it as given.`:`[whoo-aiden-widget] the ${e} color (${i}) has ${a.toFixed(2)}:1 contrast against your theme.colors.${r}; ${o}:1 is recommended. Override theme.colors.${e} too.`))}}function ar(e,t,n=new Set){$n(e,t.color??Vn),nr(t.inkColor,`ink color`),nr(t.accentColor,`accent color`),er(e,{inkColor:t.inkColor,accentColor:t.accentColor});let r=te(t.theme);rr(t,r.colors,n),tr(e,r.colors),r.fontFamily&&e.style.setProperty(`--whoo-widget-font`,r.fontFamily)}var or=8e3,sr=3e3,Q=class extends Error{name=`SessionExpiredError`;constructor(e){super(e instanceof Error?e.message:`The session has expired.`)}};function cr(e){return e?.status===401}function lr(e,t){return new Promise(n=>{let r=setTimeout(n,t);e.then(()=>{clearTimeout(r),n()})})}var ur=class{config;state;listeners=new Set;sessionToken=null;sessionTokenExpiresAt=null;tokenRenewal=null;getSessionToken;conversationId=null;storageIdentifier;activeRequestController=null;slowResponseTimer=null;prefersReducedMotion;launcher;launcherIconUrl;emptyStateImageUrl;emptyStateImageAlt;showFeedback;text;language;languageTag;dir;constructor(e){this.config=e;let t=te(e.theme).launcher,n=t.iconUrl??r(e.launcherIconUrl,`launcherIconUrl`);this.launcher={...t,...n?{iconUrl:n}:{}},this.launcherIconUrl=n,this.emptyStateImageUrl=r(e.emptyStateImageUrl,`emptyStateImageUrl`),this.emptyStateImageAlt=typeof e.emptyStateImageAlt==`string`?e.emptyStateImageAlt.trim():``,this.showFeedback=e.showFeedback===!0,this.storageIdentifier=e.publishableKey??`session-token-mode`,this.getSessionToken=m(e);let{language:i,tag:a,dir:o}=At(e.language,typeof document>`u`?void 0:document.documentElement.lang);this.language=i,this.languageTag=a,this.dir=o,this.text={...Ot(i),...b(e.messages)},this.prefersReducedMotion=typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,this.state={isOpen:!1,messages:[],isStreaming:!1,initError:null,isInitializing:!1,runtimeError:null,messageFeedback:{},primaryColor:null,agentName:null,accentColor:null,inkColor:null,announcement:null,isSlowResponse:!1,draft:``}}getState(){return this.state}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}clearSlowResponse(){this.slowResponseTimer!==null&&(clearTimeout(this.slowResponseTimer),this.slowResponseTimer=null),this.state.isSlowResponse&&this.setState({isSlowResponse:!1})}setState(e){this.state={...this.state,...e};for(let e of this.listeners)e(this.state)}async init(){this.setState({isInitializing:!0});try{await this.start()}finally{this.setState({isInitializing:!1})}}async start(){let e=this.config.apiBaseUrl??`https://api.aidenvoice.com`;try{if(this.config.sessionToken){if(An(this.config.sessionToken)){if(!await this.renewToken())throw Error(`The sessionToken has expired.`)}else this.sessionToken=this.config.sessionToken,this.sessionTokenExpiresAt=kn(this.config.sessionToken)}else if(this.config.publishableKey){let{token:t,primaryColor:n,name:r,accentColor:i,inkColor:a}=await gn(e,this.config.publishableKey);this.sessionToken=t,this.sessionTokenExpiresAt=jn(t),this.setState({primaryColor:n,agentName:r,accentColor:i,inkColor:a})}else throw Error(`WidgetConfig must include exactly one of publishableKey or sessionToken`)}catch(e){console.error(`[whoo-aiden-widget] initialization failed:`,e),this.setState({initError:e instanceof Error?e.message:String(e)});return}this.conversationId=Nn(this.storageIdentifier),this.config.sessionToken&&await lr(this.loadBranding(e),sr)}async loadBranding(e){try{let t=this.config;if(X(t.color)&&X(t.inkColor)&&X(t.accentColor)&&d(t.name))return;let{primaryColor:n,name:r,accentColor:i,inkColor:a}=await this.withSession(t=>vn(e,t));this.setState({primaryColor:n,agentName:r,accentColor:i,inkColor:a})}catch(e){let t=e?.status;(e instanceof Q||t===401||t===403)&&(console.error(`[whoo-aiden-widget] initialization failed:`,e),this.setState({initError:e instanceof Error?e.message:String(e)}))}}open(){this.setState({isOpen:!0})}resetConversation(){this.activeRequestController?.abort(),this.activeRequestController=null,this.clearSlowResponse(),this.conversationId=null,Fn(this.storageIdentifier),this.setState({messages:[],messageFeedback:{},runtimeError:null,isStreaming:!1,announcement:this.text.conversationCleared})}setDraft(e){this.setState({draft:e})}close(){this.activeRequestController?.abort(),this.activeRequestController=null,this.clearSlowResponse(),this.setState({isOpen:!1})}async sendMessage(e){if(!this.sessionToken)return;let t=this.config.apiBaseUrl??`https://api.aidenvoice.com`,n={role:`user`,content:e,id:null},r={role:`assistant`,content:``,id:null};this.setState({messages:[...this.state.messages,n,r],isStreaming:!0,runtimeError:null,announcement:null});let i=r,a=e=>{let t=i;i={...i,...e},this.setState({messages:this.state.messages.map(e=>e===t?i:e)})},o=e=>a({content:e});this.activeRequestController=new AbortController;let{signal:s}=this.activeRequestController;this.slowResponseTimer=setTimeout(()=>{this.slowResponseTimer=null,this.setState({isSlowResponse:!0})},or);let c=(t=this.text.genericError)=>{this.setState({runtimeError:t,...this.state.draft===``?{draft:e}:{}})},l=``;try{let{stream:n,first:r}=await this.withSession(async n=>{let r=bn(t,n,this.conversationId,e,s);return{stream:r,first:await r.next()}});for(let e=r;!e.done;e=await n.next()){let t=e.value;if(t.type===`conversation_id`)this.conversationId=t.conversationId,Pn(this.storageIdentifier,t.conversationId);else if(t.type===`delta`)this.clearSlowResponse(),t.verbatim&&!this.prefersReducedMotion?(await Dn(t.delta,e=>o(e),{signal:s}),l=t.delta):t.verbatim?(l=t.delta,o(l)):(l+=t.delta,o(l));else if(t.type===`done`)t.conversationId&&(this.conversationId=t.conversationId,Pn(this.storageIdentifier,t.conversationId)),t.messageId&&a({id:t.messageId}),this.setState({announcement:Sn(l)});else if(t.type===`error`){console.error(`[whoo-aiden-widget] chat error:`,t.error),c(),this.activeRequestController?.abort();break}}}catch(e){e?.name===`AbortError`||(e instanceof Q?(console.error(`[whoo-aiden-widget] chat request failed: the session has expired.`,e),c(this.text.sessionExpired)):(console.error(`[whoo-aiden-widget] chat request failed:`,e),c()))}finally{this.activeRequestController=null,this.clearSlowResponse();let e=i.id===null&&i.content.trim()===``?this.state.messages.filter(e=>e!==i):this.state.messages;this.setState({isStreaming:!1,...e.length===this.state.messages.length?{}:{messages:e}})}}expandFeedback(e){let{correction:t,category:n}=this.state.messageFeedback[e]??{};this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`expanded`,correction:t,category:n}}})}setFeedbackDraft(e,t,n){this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{...this.state.messageFeedback[e],correction:t,category:n}}})}cancelFeedback(e){this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`idle`}}})}async submitFeedback(e,t,n,r){if(!this.sessionToken)return;let i=this.config.apiBaseUrl??`https://api.aidenvoice.com`;this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`submitting`,rating:t}}});try{await this.withSession(a=>yn(i,a,{messageId:e,rating:t,correction:n,category:r})),this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`submitted`,rating:t}}})}catch(i){console.error(`[whoo-aiden-widget] feedback submission failed:`,i),this.setState({messageFeedback:{...this.state.messageFeedback,[e]:{status:`error`,rating:t,correction:n,category:r}}})}}async currentToken(){let e=this.sessionToken,t=this.sessionTokenExpiresAt;return e&&(t===null||t-Date.now()>6e4)?e:this.renewToken()}renewToken(){return this.tokenRenewal??=this.fetchNewToken().finally(()=>{this.tokenRenewal=null}),this.tokenRenewal}async fetchNewToken(){let e=this.config.apiBaseUrl??`https://api.aidenvoice.com`;try{let t;if(this.config.publishableKey)t=(await gn(e,this.config.publishableKey)).token;else if(this.getSessionToken)t=await this.getSessionToken();else return null;let n=typeof t==`string`?jn(t):null;return typeof t!=`string`||t===``||n!==null&&n<=Date.now()?(console.error(`[whoo-aiden-widget] could not renew the session: no usable token was returned.`),null):(this.sessionToken=t,this.sessionTokenExpiresAt=n,t)}catch(e){return console.error(`[whoo-aiden-widget] could not renew the session:`,e),null}}async withSession(e){let t=await this.currentToken();if(!t)throw new Q;try{return await e(t)}catch(n){if(!cr(n))throw n;let r=this.sessionToken&&this.sessionToken!==t?this.sessionToken:await this.renewToken();if(!r)throw new Q(n);try{return await e(r)}catch(e){throw cr(e)?new Q(e):e}}}},$=20,dr=12,fr=300,pr=352;function mr(){try{return typeof CSS<`u`&&CSS.supports?.(`height`,`100dvh`)?`dvh`:`vh`}catch{return`vh`}}function hr(e,t){let{offsetX:n,offsetY:r,launcherSize:i,panelWidth:a,panelHeight:o}=ie(t.layout),s=e=>typeof t.layout?.offset?.[e]==`number`;if(typeof window<`u`&&window.innerWidth>0&&window.innerHeight>0){let e=Math.max($,window.innerWidth-fr),t=Math.max($,window.innerHeight-i-pr);s(`x`)&&(n>e||n>window.innerWidth-i)&&console.warn(`whoo-aiden-widget: \`layout.offset.x\` ${n} leaves no room for the launcher and panel in this viewport; it is held back.`),s(`y`)&&(r>t||r>window.innerHeight-i)&&console.warn(`whoo-aiden-widget: \`layout.offset.y\` ${r} leaves no room for the launcher and panel in this viewport; it is held back.`)}let c=`100${mr()}`,l=`min(${n}px, max(${$}px, calc(100vw - ${fr}px)), calc(100vw - ${i}px))`,u=`min(${r}px, max(${$}px, calc(${c} - ${i+pr}px)), calc(${c} - ${i}px))`,d=`calc(${u} + ${i}px + ${dr}px)`,f=t.position===`bottom-left`,p=(t,n)=>e.style.setProperty(t,n);p(`--whoo-widget-inset-left`,f?l:`auto`),p(`--whoo-widget-inset-right`,f?`auto`:l),p(`--whoo-widget-inset-bottom`,u),p(`--whoo-widget-launcher-size`,`${i}px`),p(`--whoo-widget-panel-bottom`,d),p(`--whoo-widget-panel-width`,`${a}px`),p(`--whoo-widget-panel-height`,`${o}px`),p(`--whoo-widget-panel-max-width`,`calc(100vw - ${l} - ${$}px)`),p(`--whoo-widget-panel-max-height`,`calc(${c} - ${d} - ${$}px)`)}var gr=`:host,.whoo-widget-root{all:initial;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.whoo-widget-launcher{bottom:var(--whoo-widget-inset-bottom,20px);left:var(--whoo-widget-inset-left,auto);right:var(--whoo-widget-inset-right,20px);width:var(--whoo-widget-launcher-size,56px);height:var(--whoo-widget-launcher-size,56px);background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:24px;display:flex;position:fixed;box-shadow:0 2px 8px #0003}.whoo-widget-launcher:focus-visible{box-shadow:0 2px 8px #0003,0 0 0 4px #fff}.whoo-widget-launcher svg{width:calc(var(--whoo-widget-launcher-size,56px) * 13 / 28);height:calc(var(--whoo-widget-launcher-size,56px) * 13 / 28);display:block}.whoo-widget-launcher-icon-image{width:calc(var(--whoo-widget-launcher-size,56px) * 4 / 7);height:calc(var(--whoo-widget-launcher-size,56px) * 4 / 7);object-fit:cover;border-radius:50%}.whoo-widget-launcher-icon-image[hidden]{display:none}.whoo-widget-panel{bottom:var(--whoo-widget-panel-bottom,88px);left:var(--whoo-widget-inset-left,auto);right:var(--whoo-widget-inset-right,20px);width:var(--whoo-widget-panel-width,360px);height:var(--whoo-widget-panel-height,480px);max-width:var(--whoo-widget-panel-max-width,calc(100vw - 40px));max-height:var(--whoo-widget-panel-max-height,calc(100vh - 108px));background:var(--whoo-widget-panel,#fff);font-family:var(--whoo-widget-font,-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);color:inherit;border:none;border-radius:12px;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;overflow:hidden;box-shadow:0 4px 16px #0003}button,input,textarea,select{font-family:inherit}.whoo-widget-panel::backdrop{background:0 0}@media (width<=400px),(height<=420px){.whoo-widget-panel{width:auto;max-width:none;height:auto;max-height:none;inset:8px}}.whoo-widget-panel[data-fit-visible]{top:calc(var(--whoo-widget-visible-top,0px) + max(8px, var(--whoo-widget-visible-height,100%) - 8px - var(--whoo-widget-panel-height,480px)));height:min(var(--whoo-widget-panel-height,480px), calc(var(--whoo-widget-visible-height,100%) - 16px));max-height:none;bottom:auto}@media (width<=400px),(height<=420px){.whoo-widget-panel[data-fit-visible]{top:calc(var(--whoo-widget-visible-top,0px) + 8px);height:calc(var(--whoo-widget-visible-height,100%) - 16px)}}.whoo-widget-header{border-bottom:1px solid var(--whoo-widget-border,#e5e5e5);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;max-height:50%;padding-block:8px;padding-inline:16px 8px;display:flex;overflow-y:auto}.whoo-widget-header-title{color:var(--whoo-widget-ink,#111);overflow-wrap:anywhere;flex:auto;min-width:0;margin:0;font-size:15px;font-weight:600}.whoo-widget-header-actions{background:var(--whoo-widget-panel,#fff);flex-shrink:0;align-items:center;gap:4px;margin-inline-start:auto;display:flex;position:sticky;bottom:0}.whoo-widget-header-close,.whoo-widget-header-reset{color:var(--whoo-widget-color-text,#4f46e5);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;min-width:24px;min-height:24px;padding:4px 8px;font-size:13px;display:inline-flex}.whoo-widget-header-close{width:32px;height:32px;padding:0}.whoo-widget-header-close:hover,.whoo-widget-header-reset:hover{background:var(--whoo-widget-header-hover,#f3f4f6)}.whoo-widget-message-list{overscroll-behavior:contain;flex:1;min-height:0;padding:12px;overflow-y:auto}.whoo-widget-message-list:focus-visible{outline:2px solid var(--whoo-widget-focus-ring,#111827);outline-offset:-2px;box-shadow:inset 0 0 0 4px var(--whoo-widget-panel,#fff)}.whoo-widget-empty-state-image{object-fit:contain;max-width:min(160px,100%);height:auto;max-height:160px;margin:8px auto 16px;display:block}@media (width<=400px),(height<=420px){.whoo-widget-empty-state-image{max-height:64px;margin:0 auto 8px}}.whoo-widget-message{overflow-wrap:anywhere;white-space:pre-line;border-radius:8px;max-width:80%;margin-bottom:8px;padding:8px 12px}.whoo-widget-list{margin:4px 0;padding-inline-start:20px}.whoo-widget-message--user{background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);margin-inline-start:auto}.whoo-widget-message--user a{color:inherit}.whoo-widget-message--assistant{background:var(--whoo-widget-assistant-bubble,#f0f0f0);color:var(--whoo-widget-ink,#111)}.whoo-widget-message--assistant a{color:var(--whoo-widget-link-color,#00e)}.whoo-widget-pending{flex-wrap:wrap;align-items:center;gap:8px;min-height:1.2em;display:flex}.whoo-widget-typing{align-items:center;gap:4px;display:inline-flex}.whoo-widget-typing span{background:var(--whoo-widget-typing-dots,#6b7280);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite whoo-widget-typing-bounce}.whoo-widget-typing span:nth-child(2){animation-delay:.2s}.whoo-widget-typing span:nth-child(3){animation-delay:.4s}@keyframes whoo-widget-typing-bounce{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.whoo-widget-typing span{animation:none}}.whoo-widget-error-banner{background:var(--whoo-widget-error-bg,#fee2e2);color:var(--whoo-widget-error-text,#991b1b);padding:8px 12px;font-size:13px}.whoo-widget-composer{border-top:1px solid var(--whoo-widget-border,#e5e5e5);gap:8px;padding:12px;display:flex}.whoo-widget-composer-input{border:1px solid var(--whoo-widget-input-border,#6b7280);unicode-bidi:plaintext;border-radius:6px;flex:1;min-width:0;padding:8px;font-size:16px}.whoo-widget-composer-send{background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);cursor:pointer;border:none;border-radius:6px;padding:8px 16px}.whoo-widget-composer-send[aria-disabled=true],.whoo-widget-composer-input[aria-disabled=true]{opacity:.6;cursor:not-allowed}.whoo-widget-feedback{align-items:center;gap:6px;margin-top:4px;display:flex}.whoo-widget-feedback-buttons{gap:6px;display:flex}.whoo-widget-feedback-buttons button{cursor:pointer;color:var(--whoo-widget-muted,#4b5563);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;min-width:24px;min-height:24px;padding:4px;display:inline-flex}.whoo-widget-feedback-buttons button:hover:not(:disabled){color:var(--whoo-widget-text,#111);background:#0000000f}.whoo-widget-feedback-buttons button:disabled{opacity:.3;cursor:not-allowed}.whoo-widget-feedback-form{flex-direction:column;gap:6px;margin-top:6px;display:flex}.whoo-widget-feedback-textarea{box-sizing:border-box;border:1px solid var(--whoo-widget-input-border,#6b7280);resize:vertical;unicode-bidi:plaintext;border-radius:6px;width:100%;padding:6px;font-size:16px}.whoo-widget-feedback-select{border:1px solid var(--whoo-widget-input-border,#6b7280);border-radius:6px;height:2em;min-height:24px;padding:4px;font-size:16px}.whoo-widget-feedback-form-buttons{gap:6px;display:flex}.whoo-widget-feedback-submit{background:var(--whoo-widget-color,#4f46e5);color:var(--whoo-widget-text-on-color,#fff);cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:13px}.whoo-widget-feedback-cancel{border:1px solid var(--whoo-widget-input-border,#6b7280);background:var(--whoo-widget-panel,#fff);color:var(--whoo-widget-text,#111);cursor:pointer;border-radius:6px;padding:8px 16px;font-size:13px}.whoo-widget-feedback-submitted{color:var(--whoo-widget-muted,#4b5563);margin-top:4px;font-size:12px}.whoo-widget-feedback-error{color:var(--whoo-widget-error-text,#991b1b);font-size:12px}.whoo-widget-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--whoo-widget-focus-ring,#111827);outline-offset:2px;box-shadow:0 0 0 4px var(--whoo-widget-panel,#fff)}@media (forced-colors:active){.whoo-widget-launcher,.whoo-widget-header-close,.whoo-widget-header-reset,.whoo-widget-composer-send,.whoo-widget-feedback-submit,.whoo-widget-feedback-buttons button{border:1px solid buttontext}.whoo-widget-panel{box-sizing:border-box;border:1px solid canvastext}}`;function _r(e){let t=document.createElement(`div`);t.id=`whoo-aiden-widget-host`,t.style.position=`relative`,t.style.zIndex=String(l(e.zIndex));let n=t.attachShadow({mode:`open`}),r=document.createElement(`style`);r.textContent=gr,n.appendChild(r);let i=document.createElement(`div`);n.appendChild(i);let a=new Set;ar(i,e,a),hr(i,e);let o=new ur(e);i.setAttribute(`lang`,o.languageTag),i.setAttribute(`dir`,o.dir);let s=X(e.color)!==null,c=null,u=``,d=te(e.theme).colors,f=Object.keys(d).length>0,p={color:e.color,inkColor:e.inkColor,accentColor:e.accentColor};return o.subscribe(t=>{let n=!1;!s&&t.primaryColor&&t.primaryColor!==c&&(c=t.primaryColor,$n(i,t.primaryColor,e.color),X(t.primaryColor)&&(p={...p,color:t.primaryColor}),n=!0);let r=`${t.inkColor}|${t.accentColor}`;if((t.inkColor||t.accentColor)&&r!==u){u=r;let a=X(e.inkColor)?e.inkColor:t.inkColor,o=X(e.accentColor)?e.accentColor:t.accentColor;er(i,{inkColor:a,accentColor:o}),p={...p,inkColor:a,accentColor:o},n=!0}n&&(tr(i,d),f&&ir({...p,overrides:d},a))}),o.init(),Re(G(pn,{controller:o}),i),document.body.appendChild(t),{unmount(){Re(null,i),t.remove()}}}function vr(e){return f(e),_r(e)}return e.init=vr,e})({});
|