@corti/embedded-web 0.1.0-alpha.1 → 0.1.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.
Files changed (50) hide show
  1. package/README.md +69 -41
  2. package/dist/CortiEmbedded.d.ts +9 -5
  3. package/dist/CortiEmbedded.js +30 -40
  4. package/dist/CortiEmbedded.js.map +1 -1
  5. package/dist/bundle.js +7 -7
  6. package/dist/index.d.ts +2 -3
  7. package/dist/index.js +3 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/react/CortiEmbeddedReact.d.ts +38 -15
  10. package/dist/react/CortiEmbeddedReact.js +95 -15
  11. package/dist/react/CortiEmbeddedReact.js.map +1 -1
  12. package/dist/tsconfig.tsbuildinfo +1 -1
  13. package/dist/types/api.d.ts +152 -0
  14. package/dist/types/api.js +3 -0
  15. package/dist/types/api.js.map +1 -0
  16. package/dist/types/config.d.ts +26 -0
  17. package/dist/types/config.js +3 -0
  18. package/dist/types/config.js.map +1 -0
  19. package/dist/types/events.d.ts +28 -0
  20. package/dist/types/events.js +2 -0
  21. package/dist/types/events.js.map +1 -0
  22. package/dist/types/generated/interview-details.d.ts +159 -0
  23. package/dist/types/generated/interview-details.js +4 -0
  24. package/dist/types/generated/interview-details.js.map +1 -0
  25. package/dist/types/index.d.ts +6 -0
  26. package/dist/types/index.js +14 -0
  27. package/dist/types/index.js.map +1 -0
  28. package/dist/types/payloads.d.ts +61 -0
  29. package/dist/types/payloads.js +2 -0
  30. package/dist/types/payloads.js.map +1 -0
  31. package/dist/types/protocol.d.ts +111 -0
  32. package/dist/types/protocol.js +3 -0
  33. package/dist/types/protocol.js.map +1 -0
  34. package/dist/types/responses.d.ts +48 -0
  35. package/dist/types/responses.js +3 -0
  36. package/dist/types/responses.js.map +1 -0
  37. package/dist/utils/PostMessageHandler.d.ts +11 -17
  38. package/dist/utils/PostMessageHandler.js +29 -40
  39. package/dist/utils/PostMessageHandler.js.map +1 -1
  40. package/dist/web-bundle.js +4 -4
  41. package/dist/web-index.d.ts +1 -1
  42. package/dist/web-index.js +2 -0
  43. package/dist/web-index.js.map +1 -1
  44. package/package.json +4 -3
  45. package/dist/internal-types.d.ts +0 -231
  46. package/dist/internal-types.js +0 -2
  47. package/dist/internal-types.js.map +0 -1
  48. package/dist/public-types.d.ts +0 -238
  49. package/dist/public-types.js +0 -2
  50. package/dist/public-types.js.map +0 -1
package/dist/bundle.js CHANGED
@@ -1,10 +1,10 @@
1
- var N=globalThis,I=N.ShadowRoot&&(N.ShadyCSS===void 0||N.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,J=Symbol(),he=new WeakMap,C=class{constructor(e,t,s){if(this._$cssResult$=!0,s!==J)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(I&&e===void 0){let s=t!==void 0&&t.length===1;s&&(e=he.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),s&&he.set(t,e))}return e}toString(){return this.cssText}},le=r=>new C(typeof r=="string"?r:r+"",void 0,J),M=(r,...e)=>{let t=r.length===1?r[0]:e.reduce(((s,i,o)=>s+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+r[o+1]),r[0]);return new C(t,r,J)},pe=(r,e)=>{if(I)r.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(let t of e){let s=document.createElement("style"),i=N.litNonce;i!==void 0&&s.setAttribute("nonce",i),s.textContent=t.cssText,r.appendChild(s)}},K=I?r=>r:r=>r instanceof CSSStyleSheet?(e=>{let t="";for(let s of e.cssRules)t+=s.cssText;return le(t)})(r):r;var{is:De,defineProperty:Te,getOwnPropertyDescriptor:Ne,getOwnPropertyNames:Ie,getOwnPropertySymbols:ke,getPrototypeOf:qe}=Object,k=globalThis,ue=k.trustedTypes,Be=ue?ue.emptyScript:"",je=k.reactiveElementPolyfillSupport,x=(r,e)=>r,U={toAttribute(r,e){switch(e){case Boolean:r=r?Be:null;break;case Object:case Array:r=r==null?r:JSON.stringify(r)}return r},fromAttribute(r,e){let t=r;switch(e){case Boolean:t=r!==null;break;case Number:t=r===null?null:Number(r);break;case Object:case Array:try{t=JSON.parse(r)}catch{t=null}}return t}},q=(r,e)=>!De(r,e),me={attribute:!0,type:String,converter:U,reflect:!1,useDefault:!1,hasChanged:q};Symbol.metadata??=Symbol("metadata"),k.litPropertyMetadata??=new WeakMap;var E=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=me){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let s=Symbol(),i=this.getPropertyDescriptor(e,s,t);i!==void 0&&Te(this.prototype,e,i)}}static getPropertyDescriptor(e,t,s){let{get:i,set:o}=Ne(this.prototype,e)??{get(){return this[t]},set(n){this[t]=n}};return{get:i,set(n){let c=i?.call(this);o?.call(this,n),this.requestUpdate(e,c,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??me}static _$Ei(){if(this.hasOwnProperty(x("elementProperties")))return;let e=qe(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(x("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(x("properties"))){let t=this.properties,s=[...Ie(t),...ke(t)];for(let i of s)this.createProperty(i,t[i])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[s,i]of t)this.elementProperties.set(s,i)}this._$Eh=new Map;for(let[t,s]of this.elementProperties){let i=this._$Eu(t,s);i!==void 0&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let s=new Set(e.flat(1/0).reverse());for(let i of s)t.unshift(K(i))}else e!==void 0&&t.push(K(e));return t}static _$Eu(e,t){let s=t.attribute;return s===!1?void 0:typeof s=="string"?s:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let s of t.keys())this.hasOwnProperty(s)&&(e.set(s,this[s]),delete this[s]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return pe(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,s){this._$AK(e,s)}_$ET(e,t){let s=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,s);if(i!==void 0&&s.reflect===!0){let o=(s.converter?.toAttribute!==void 0?s.converter:U).toAttribute(t,s.type);this._$Em=e,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,t){let s=this.constructor,i=s._$Eh.get(e);if(i!==void 0&&this._$Em!==i){let o=s.getPropertyOptions(i),n=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:U;this._$Em=i;let c=n.fromAttribute(t,o.type);this[i]=c??this._$Ej?.get(i)??c,this._$Em=null}}requestUpdate(e,t,s){if(e!==void 0){let i=this.constructor,o=this[e];if(s??=i.getPropertyOptions(e),!((s.hasChanged??q)(o,t)||s.useDefault&&s.reflect&&o===this._$Ej?.get(e)&&!this.hasAttribute(i._$Eu(e,s))))return;this.C(e,t,s)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:s,reflect:i,wrapped:o},n){s&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,n??t??this[e]),o!==!0||n!==void 0)||(this._$AL.has(e)||(this.hasUpdated||s||(t=void 0),this._$AL.set(e,t)),i===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[i,o]of this._$Ep)this[i]=o;this._$Ep=void 0}let s=this.constructor.elementProperties;if(s.size>0)for(let[i,o]of s){let{wrapped:n}=o,c=this[i];n!==!0||this._$AL.has(i)||c===void 0||this.C(i,void 0,o,c)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((s=>s.hostUpdate?.())),this.update(t)):this._$EM()}catch(s){throw e=!1,this._$EM(),s}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(e){}firstUpdated(e){}};E.elementStyles=[],E.shadowRootOptions={mode:"open"},E[x("elementProperties")]=new Map,E[x("finalized")]=new Map,je?.({ReactiveElement:E}),(k.reactiveElementVersions??=[]).push("2.1.1");var te=globalThis,B=te.trustedTypes,fe=B?B.createPolicy("lit-html",{createHTML:r=>r}):void 0,_e="$lit$",v=`lit$${Math.random().toFixed(9).slice(2)}$`,we="?"+v,ze=`<${we}>`,b=document,O=()=>b.createComment(""),P=r=>r===null||typeof r!="object"&&typeof r!="function",se=Array.isArray,Fe=r=>se(r)||typeof r?.[Symbol.iterator]=="function",G=`[
2
- \f\r]`,L=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ge=/-->/g,ye=/>/g,_=RegExp(`>|${G}(?:([^\\s"'>=/]+)(${G}*=${G}*(?:[^
3
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Ee=/'/g,ve=/"/g,be=/^(?:script|style|textarea|title)$/i,re=r=>(e,...t)=>({_$litType$:r,strings:e,values:t}),ie=re(1),rt=re(2),it=re(3),A=Symbol.for("lit-noChange"),u=Symbol.for("lit-nothing"),$e=new WeakMap,w=b.createTreeWalker(b,129);function Ae(r,e){if(!se(r)||!r.hasOwnProperty("raw"))throw Error("invalid template strings array");return fe!==void 0?fe.createHTML(e):e}var We=(r,e)=>{let t=r.length-1,s=[],i,o=e===2?"<svg>":e===3?"<math>":"",n=L;for(let c=0;c<t;c++){let a=r[c],l,h,d=-1,f=0;for(;f<a.length&&(n.lastIndex=f,h=n.exec(a),h!==null);)f=n.lastIndex,n===L?h[1]==="!--"?n=ge:h[1]!==void 0?n=ye:h[2]!==void 0?(be.test(h[2])&&(i=RegExp("</"+h[2],"g")),n=_):h[3]!==void 0&&(n=_):n===_?h[0]===">"?(n=i??L,d=-1):h[1]===void 0?d=-2:(d=n.lastIndex-h[2].length,l=h[1],n=h[3]===void 0?_:h[3]==='"'?ve:Ee):n===ve||n===Ee?n=_:n===ge||n===ye?n=L:(n=_,i=void 0);let p=n===_&&r[c+1].startsWith("/>")?" ":"";o+=n===L?a+ze:d>=0?(s.push(l),a.slice(0,d)+_e+a.slice(d)+v+p):a+v+(d===-2?c:p)}return[Ae(r,o+(r[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),s]},H=class r{constructor({strings:e,_$litType$:t},s){let i;this.parts=[];let o=0,n=0,c=e.length-1,a=this.parts,[l,h]=We(e,t);if(this.el=r.createElement(l,s),w.currentNode=this.el.content,t===2||t===3){let d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(i=w.nextNode())!==null&&a.length<c;){if(i.nodeType===1){if(i.hasAttributes())for(let d of i.getAttributeNames())if(d.endsWith(_e)){let f=h[n++],p=i.getAttribute(d).split(v),m=/([.?@])?(.*)/.exec(f);a.push({type:1,index:o,name:m[2],strings:p,ctor:m[1]==="."?Q:m[1]==="?"?X:m[1]==="@"?Y:R}),i.removeAttribute(d)}else d.startsWith(v)&&(a.push({type:6,index:o}),i.removeAttribute(d));if(be.test(i.tagName)){let d=i.textContent.split(v),f=d.length-1;if(f>0){i.textContent=B?B.emptyScript:"";for(let p=0;p<f;p++)i.append(d[p],O()),w.nextNode(),a.push({type:2,index:++o});i.append(d[f],O())}}}else if(i.nodeType===8)if(i.data===we)a.push({type:2,index:o});else{let d=-1;for(;(d=i.data.indexOf(v,d+1))!==-1;)a.push({type:7,index:o}),d+=v.length-1}o++}}static createElement(e,t){let s=b.createElement("template");return s.innerHTML=e,s}};function S(r,e,t=r,s){if(e===A)return e;let i=s!==void 0?t._$Co?.[s]:t._$Cl,o=P(e)?void 0:e._$litDirective$;return i?.constructor!==o&&(i?._$AO?.(!1),o===void 0?i=void 0:(i=new o(r),i._$AT(r,t,s)),s!==void 0?(t._$Co??=[])[s]=i:t._$Cl=i),i!==void 0&&(e=S(r,i._$AS(r,e.values),i,s)),e}var Z=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:s}=this._$AD,i=(e?.creationScope??b).importNode(t,!0);w.currentNode=i;let o=w.nextNode(),n=0,c=0,a=s[0];for(;a!==void 0;){if(n===a.index){let l;a.type===2?l=new D(o,o.nextSibling,this,e):a.type===1?l=new a.ctor(o,a.name,a.strings,this,e):a.type===6&&(l=new ee(o,this,e)),this._$AV.push(l),a=s[++c]}n!==a?.index&&(o=w.nextNode(),n++)}return w.currentNode=b,i}p(e){let t=0;for(let s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(e,s,t),t+=s.strings.length-2):s._$AI(e[t])),t++}},D=class r{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,s,i){this.type=2,this._$AH=u,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=s,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=S(this,e,t),P(e)?e===u||e==null||e===""?(this._$AH!==u&&this._$AR(),this._$AH=u):e!==this._$AH&&e!==A&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Fe(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==u&&P(this._$AH)?this._$AA.nextSibling.data=e:this.T(b.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:s}=e,i=typeof s=="number"?this._$AC(e):(s.el===void 0&&(s.el=H.createElement(Ae(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===i)this._$AH.p(t);else{let o=new Z(i,this),n=o.u(this.options);o.p(t),this.T(n),this._$AH=o}}_$AC(e){let t=$e.get(e.strings);return t===void 0&&$e.set(e.strings,t=new H(e)),t}k(e){se(this._$AH)||(this._$AH=[],this._$AR());let t=this._$AH,s,i=0;for(let o of e)i===t.length?t.push(s=new r(this.O(O()),this.O(O()),this,this.options)):s=t[i],s._$AI(o),i++;i<t.length&&(this._$AR(s&&s._$AB.nextSibling,i),t.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let s=e.nextSibling;e.remove(),e=s}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},R=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,s,i,o){this.type=1,this._$AH=u,this._$AN=void 0,this.element=e,this.name=t,this._$AM=i,this.options=o,s.length>2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=u}_$AI(e,t=this,s,i){let o=this.strings,n=!1;if(o===void 0)e=S(this,e,t,0),n=!P(e)||e!==this._$AH&&e!==A,n&&(this._$AH=e);else{let c=e,a,l;for(e=o[0],a=0;a<o.length-1;a++)l=S(this,c[s+a],t,a),l===A&&(l=this._$AH[a]),n||=!P(l)||l!==this._$AH[a],l===u?e=u:e!==u&&(e+=(l??"")+o[a+1]),this._$AH[a]=l}n&&!i&&this.j(e)}j(e){e===u?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},Q=class extends R{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===u?void 0:e}},X=class extends R{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==u)}},Y=class extends R{constructor(e,t,s,i,o){super(e,t,s,i,o),this.type=5}_$AI(e,t=this){if((e=S(this,e,t,0)??u)===A)return;let s=this._$AH,i=e===u&&s!==u||e.capture!==s.capture||e.once!==s.once||e.passive!==s.passive,o=e!==u&&(s===u||i);i&&this.element.removeEventListener(this.name,this,s),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},ee=class{constructor(e,t,s){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(e){S(this,e)}};var Ve=te.litHtmlPolyfillSupport;Ve?.(H,D),(te.litHtmlVersions??=[]).push("3.3.1");var Se=(r,e,t)=>{let s=t?.renderBefore??e,i=s._$litPart$;if(i===void 0){let o=t?.renderBefore??null;s._$litPart$=i=new D(e.insertBefore(O(),o),o,void 0,t??{})}return i._$AI(r),i};var oe=globalThis,$=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Se(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return A}};$._$litElement$=!0,$.finalized=!0,oe.litElementHydrateSupport?.({LitElement:$});var Je=oe.litElementPolyfillSupport;Je?.({LitElement:$});(oe.litElementVersions??=[]).push("4.2.1");var Ke={attribute:!0,type:String,converter:U,reflect:!1,hasChanged:q},Ge=(r=Ke,e,t)=>{let{kind:s,metadata:i}=t,o=globalThis.litPropertyMetadata.get(i);if(o===void 0&&globalThis.litPropertyMetadata.set(i,o=new Map),s==="setter"&&((r=Object.create(r)).wrapped=!0),o.set(t.name,r),s==="accessor"){let{name:n}=t;return{set(c){let a=e.get.call(this);e.set.call(this,c),this.requestUpdate(n,a,r)},init(c){return c!==void 0&&this.C(n,void 0,r,c),c}}}if(s==="setter"){let{name:n}=t;return function(c){let a=this[n];e.call(this,c),this.requestUpdate(n,a,r)}}throw Error("Unsupported decorator location: "+s)};function j(r){return(e,t)=>typeof t=="object"?Ge(r,e,t):((s,i,o)=>{let n=i.hasOwnProperty(o);return i.constructor.createProperty(o,s),n?Object.getOwnPropertyDescriptor(i,o):void 0})(r,e,t)}var Re=M`
1
+ var k=globalThis,B=k.ShadowRoot&&(k.ShadyCSS===void 0||k.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Q=Symbol(),me=new WeakMap,O=class{constructor(e,t,s){if(this._$cssResult$=!0,s!==Q)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(B&&e===void 0){let s=t!==void 0&&t.length===1;s&&(e=me.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),s&&me.set(t,e))}return e}toString(){return this.cssText}},ge=r=>new O(typeof r=="string"?r:r+"",void 0,Q),U=(r,...e)=>{let t=r.length===1?r[0]:e.reduce(((s,o,i)=>s+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(o)+r[i+1]),r[0]);return new O(t,r,Q)},ye=(r,e)=>{if(B)r.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(let t of e){let s=document.createElement("style"),o=k.litNonce;o!==void 0&&s.setAttribute("nonce",o),s.textContent=t.cssText,r.appendChild(s)}},X=B?r=>r:r=>r instanceof CSSStyleSheet?(e=>{let t="";for(let s of e.cssRules)t+=s.cssText;return ge(t)})(r):r;var{is:qe,defineProperty:ke,getOwnPropertyDescriptor:Be,getOwnPropertyNames:ze,getOwnPropertySymbols:je,getPrototypeOf:Fe}=Object,z=globalThis,Ee=z.trustedTypes,We=Ee?Ee.emptyScript:"",Ve=z.reactiveElementPolyfillSupport,H=(r,e)=>r,P={toAttribute(r,e){switch(e){case Boolean:r=r?We:null;break;case Object:case Array:r=r==null?r:JSON.stringify(r)}return r},fromAttribute(r,e){let t=r;switch(e){case Boolean:t=r!==null;break;case Number:t=r===null?null:Number(r);break;case Object:case Array:try{t=JSON.parse(r)}catch{t=null}}return t}},j=(r,e)=>!qe(r,e),ve={attribute:!0,type:String,converter:P,reflect:!1,useDefault:!1,hasChanged:j};Symbol.metadata??=Symbol("metadata"),z.litPropertyMetadata??=new WeakMap;var $=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=ve){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let s=Symbol(),o=this.getPropertyDescriptor(e,s,t);o!==void 0&&ke(this.prototype,e,o)}}static getPropertyDescriptor(e,t,s){let{get:o,set:i}=Be(this.prototype,e)??{get(){return this[t]},set(n){this[t]=n}};return{get:o,set(n){let c=o?.call(this);i?.call(this,n),this.requestUpdate(e,c,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??ve}static _$Ei(){if(this.hasOwnProperty(H("elementProperties")))return;let e=Fe(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(H("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(H("properties"))){let t=this.properties,s=[...ze(t),...je(t)];for(let o of s)this.createProperty(o,t[o])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[s,o]of t)this.elementProperties.set(s,o)}this._$Eh=new Map;for(let[t,s]of this.elementProperties){let o=this._$Eu(t,s);o!==void 0&&this._$Eh.set(o,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let s=new Set(e.flat(1/0).reverse());for(let o of s)t.unshift(X(o))}else e!==void 0&&t.push(X(e));return t}static _$Eu(e,t){let s=t.attribute;return s===!1?void 0:typeof s=="string"?s:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let s of t.keys())this.hasOwnProperty(s)&&(e.set(s,this[s]),delete this[s]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return ye(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,s){this._$AK(e,s)}_$ET(e,t){let s=this.constructor.elementProperties.get(e),o=this.constructor._$Eu(e,s);if(o!==void 0&&s.reflect===!0){let i=(s.converter?.toAttribute!==void 0?s.converter:P).toAttribute(t,s.type);this._$Em=e,i==null?this.removeAttribute(o):this.setAttribute(o,i),this._$Em=null}}_$AK(e,t){let s=this.constructor,o=s._$Eh.get(e);if(o!==void 0&&this._$Em!==o){let i=s.getPropertyOptions(o),n=typeof i.converter=="function"?{fromAttribute:i.converter}:i.converter?.fromAttribute!==void 0?i.converter:P;this._$Em=o;let c=n.fromAttribute(t,i.type);this[o]=c??this._$Ej?.get(o)??c,this._$Em=null}}requestUpdate(e,t,s){if(e!==void 0){let o=this.constructor,i=this[e];if(s??=o.getPropertyOptions(e),!((s.hasChanged??j)(i,t)||s.useDefault&&s.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(o._$Eu(e,s))))return;this.C(e,t,s)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:s,reflect:o,wrapped:i},n){s&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,n??t??this[e]),i!==!0||n!==void 0)||(this._$AL.has(e)||(this.hasUpdated||s||(t=void 0),this._$AL.set(e,t)),o===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[o,i]of this._$Ep)this[o]=i;this._$Ep=void 0}let s=this.constructor.elementProperties;if(s.size>0)for(let[o,i]of s){let{wrapped:n}=i,c=this[o];n!==!0||this._$AL.has(o)||c===void 0||this.C(o,void 0,i,c)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((s=>s.hostUpdate?.())),this.update(t)):this._$EM()}catch(s){throw e=!1,this._$EM(),s}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(e){}firstUpdated(e){}};$.elementStyles=[],$.shadowRootOptions={mode:"open"},$[H("elementProperties")]=new Map,$[H("finalized")]=new Map,Ve?.({ReactiveElement:$}),(z.reactiveElementVersions??=[]).push("2.1.1");var ie=globalThis,F=ie.trustedTypes,$e=F?F.createPolicy("lit-html",{createHTML:r=>r}):void 0,Se="$lit$",w=`lit$${Math.random().toFixed(9).slice(2)}$`,Ce="?"+w,Je=`<${Ce}>`,R=document,D=()=>R.createComment(""),I=r=>r===null||typeof r!="object"&&typeof r!="function",ne=Array.isArray,Ke=r=>ne(r)||typeof r?.[Symbol.iterator]=="function",Y=`[
2
+ \f\r]`,T=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,we=/-->/g,_e=/>/g,b=RegExp(`>|${Y}(?:([^\\s"'>=/]+)(${Y}*=${Y}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),be=/'/g,Ae=/"/g,xe=/^(?:script|style|textarea|title)$/i,ae=r=>(e,...t)=>({_$litType$:r,strings:e,values:t}),ce=ae(1),ct=ae(2),dt=ae(3),S=Symbol.for("lit-noChange"),m=Symbol.for("lit-nothing"),Re=new WeakMap,A=R.createTreeWalker(R,129);function Me(r,e){if(!ne(r)||!r.hasOwnProperty("raw"))throw Error("invalid template strings array");return $e!==void 0?$e.createHTML(e):e}var Ze=(r,e)=>{let t=r.length-1,s=[],o,i=e===2?"<svg>":e===3?"<math>":"",n=T;for(let c=0;c<t;c++){let a=r[c],h,d,l=-1,g=0;for(;g<a.length&&(n.lastIndex=g,d=n.exec(a),d!==null);)g=n.lastIndex,n===T?d[1]==="!--"?n=we:d[1]!==void 0?n=_e:d[2]!==void 0?(xe.test(d[2])&&(o=RegExp("</"+d[2],"g")),n=b):d[3]!==void 0&&(n=b):n===b?d[0]===">"?(n=o??T,l=-1):d[1]===void 0?l=-2:(l=n.lastIndex-d[2].length,h=d[1],n=d[3]===void 0?b:d[3]==='"'?Ae:be):n===Ae||n===be?n=b:n===we||n===_e?n=T:(n=b,o=void 0);let p=n===b&&r[c+1].startsWith("/>")?" ":"";i+=n===T?a+Je:l>=0?(s.push(h),a.slice(0,l)+Se+a.slice(l)+w+p):a+w+(l===-2?c:p)}return[Me(r,i+(r[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),s]},N=class r{constructor({strings:e,_$litType$:t},s){let o;this.parts=[];let i=0,n=0,c=e.length-1,a=this.parts,[h,d]=Ze(e,t);if(this.el=r.createElement(h,s),A.currentNode=this.el.content,t===2||t===3){let l=this.el.content.firstChild;l.replaceWith(...l.childNodes)}for(;(o=A.nextNode())!==null&&a.length<c;){if(o.nodeType===1){if(o.hasAttributes())for(let l of o.getAttributeNames())if(l.endsWith(Se)){let g=d[n++],p=o.getAttribute(l).split(w),u=/([.?@])?(.*)/.exec(g);a.push({type:1,index:i,name:u[2],strings:p,ctor:u[1]==="."?te:u[1]==="?"?se:u[1]==="@"?re:M}),o.removeAttribute(l)}else l.startsWith(w)&&(a.push({type:6,index:i}),o.removeAttribute(l));if(xe.test(o.tagName)){let l=o.textContent.split(w),g=l.length-1;if(g>0){o.textContent=F?F.emptyScript:"";for(let p=0;p<g;p++)o.append(l[p],D()),A.nextNode(),a.push({type:2,index:++i});o.append(l[g],D())}}}else if(o.nodeType===8)if(o.data===Ce)a.push({type:2,index:i});else{let l=-1;for(;(l=o.data.indexOf(w,l+1))!==-1;)a.push({type:7,index:i}),l+=w.length-1}i++}}static createElement(e,t){let s=R.createElement("template");return s.innerHTML=e,s}};function x(r,e,t=r,s){if(e===S)return e;let o=s!==void 0?t._$Co?.[s]:t._$Cl,i=I(e)?void 0:e._$litDirective$;return o?.constructor!==i&&(o?._$AO?.(!1),i===void 0?o=void 0:(o=new i(r),o._$AT(r,t,s)),s!==void 0?(t._$Co??=[])[s]=o:t._$Cl=o),o!==void 0&&(e=x(r,o._$AS(r,e.values),o,s)),e}var ee=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:s}=this._$AD,o=(e?.creationScope??R).importNode(t,!0);A.currentNode=o;let i=A.nextNode(),n=0,c=0,a=s[0];for(;a!==void 0;){if(n===a.index){let h;a.type===2?h=new q(i,i.nextSibling,this,e):a.type===1?h=new a.ctor(i,a.name,a.strings,this,e):a.type===6&&(h=new oe(i,this,e)),this._$AV.push(h),a=s[++c]}n!==a?.index&&(i=A.nextNode(),n++)}return A.currentNode=R,o}p(e){let t=0;for(let s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(e,s,t),t+=s.strings.length-2):s._$AI(e[t])),t++}},q=class r{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,s,o){this.type=2,this._$AH=m,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=s,this.options=o,this._$Cv=o?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=x(this,e,t),I(e)?e===m||e==null||e===""?(this._$AH!==m&&this._$AR(),this._$AH=m):e!==this._$AH&&e!==S&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Ke(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==m&&I(this._$AH)?this._$AA.nextSibling.data=e:this.T(R.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:s}=e,o=typeof s=="number"?this._$AC(e):(s.el===void 0&&(s.el=N.createElement(Me(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===o)this._$AH.p(t);else{let i=new ee(o,this),n=i.u(this.options);i.p(t),this.T(n),this._$AH=i}}_$AC(e){let t=Re.get(e.strings);return t===void 0&&Re.set(e.strings,t=new N(e)),t}k(e){ne(this._$AH)||(this._$AH=[],this._$AR());let t=this._$AH,s,o=0;for(let i of e)o===t.length?t.push(s=new r(this.O(D()),this.O(D()),this,this.options)):s=t[o],s._$AI(i),o++;o<t.length&&(this._$AR(s&&s._$AB.nextSibling,o),t.length=o)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let s=e.nextSibling;e.remove(),e=s}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},M=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,s,o,i){this.type=1,this._$AH=m,this._$AN=void 0,this.element=e,this.name=t,this._$AM=o,this.options=i,s.length>2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=m}_$AI(e,t=this,s,o){let i=this.strings,n=!1;if(i===void 0)e=x(this,e,t,0),n=!I(e)||e!==this._$AH&&e!==S,n&&(this._$AH=e);else{let c=e,a,h;for(e=i[0],a=0;a<i.length-1;a++)h=x(this,c[s+a],t,a),h===S&&(h=this._$AH[a]),n||=!I(h)||h!==this._$AH[a],h===m?e=m:e!==m&&(e+=(h??"")+i[a+1]),this._$AH[a]=h}n&&!o&&this.j(e)}j(e){e===m?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},te=class extends M{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===m?void 0:e}},se=class extends M{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==m)}},re=class extends M{constructor(e,t,s,o,i){super(e,t,s,o,i),this.type=5}_$AI(e,t=this){if((e=x(this,e,t,0)??m)===S)return;let s=this._$AH,o=e===m&&s!==m||e.capture!==s.capture||e.once!==s.once||e.passive!==s.passive,i=e!==m&&(s===m||o);o&&this.element.removeEventListener(this.name,this,s),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},oe=class{constructor(e,t,s){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(e){x(this,e)}};var Ge=ie.litHtmlPolyfillSupport;Ge?.(N,q),(ie.litHtmlVersions??=[]).push("3.3.1");var Le=(r,e,t)=>{let s=t?.renderBefore??e,o=s._$litPart$;if(o===void 0){let i=t?.renderBefore??null;s._$litPart$=o=new q(e.insertBefore(D(),i),i,void 0,t??{})}return o._$AI(r),o};var de=globalThis,_=class extends ${constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Le(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return S}};_._$litElement$=!0,_.finalized=!0,de.litElementHydrateSupport?.({LitElement:_});var Qe=de.litElementPolyfillSupport;Qe?.({LitElement:_});(de.litElementVersions??=[]).push("4.2.1");var Xe={attribute:!0,type:String,converter:P,reflect:!1,hasChanged:j},Ye=(r=Xe,e,t)=>{let{kind:s,metadata:o}=t,i=globalThis.litPropertyMetadata.get(o);if(i===void 0&&globalThis.litPropertyMetadata.set(o,i=new Map),s==="setter"&&((r=Object.create(r)).wrapped=!0),i.set(t.name,r),s==="accessor"){let{name:n}=t;return{set(c){let a=e.get.call(this);e.set.call(this,c),this.requestUpdate(n,a,r)},init(c){return c!==void 0&&this.C(n,void 0,r,c),c}}}if(s==="setter"){let{name:n}=t;return function(c){let a=this[n];e.call(this,c),this.requestUpdate(n,a,r)}}throw Error("Unsupported decorator location: "+s)};function W(r){return(e,t)=>typeof t=="object"?Ye(r,e,t):((s,o,i)=>{let n=o.hasOwnProperty(i);return o.constructor.createProperty(i,s),n?Object.getOwnPropertyDescriptor(o,i):void 0})(r,e,t)}var Oe=U`
4
4
  * {
5
5
  box-sizing: border-box;
6
6
  }
7
- `;var Ce=M`
7
+ `;var Ue=U`
8
8
  :host {
9
9
  /* Make the component fill its container completely */
10
10
  display: block;
@@ -35,9 +35,9 @@ var N=globalThis,I=N.ShadowRoot&&(N.ShadyCSS===void 0||N.ShadyCSS.nativeShadow)&
35
35
  margin: 0 !important;
36
36
  padding: 0 !important;
37
37
  }
38
- `;function F(r){let e;try{e=new URL(r)}catch{throw new Error("Invalid baseURL: not a parseable URL")}if(e.protocol!=="https:")throw new Error("Invalid baseURL: must use https");let t=e.host.toLowerCase();if(!/^assistant\.[a-z0-9-]+\.corti\.app$/i.test(t))throw new Error("Invalid baseURL: host must match assistant.xxx.corti.app");if(e.pathname&&e.pathname!=="/"&&e.pathname!=="")throw new Error("Invalid baseURL: must not include a path");if(e.username||e.password)throw new Error("Invalid baseURL: must not include credentials");return e.origin.replace(/\/+$/,"")}function ne(r){return`${r}/embedded`}function Me(r,e){if(!r||r.startsWith("about:"))return!1;try{let t=new URL(r,window.location.href),s=new URL(e);return t.origin!==s.origin?!1:t.pathname.replace(/\/+$/,"")==="/embedded"}catch{return!1}}function Ze(r){try{return JSON.parse(r)}catch{return null}}function W(r){let e=r.match(/\b([1-5]\d{2})\b/);return e?e[1]:void 0}function ae(r){return typeof r=="object"&&r!==null&&("expected"in r||"code"in r||"path"in r||"message"in r)}function ce(r){let{path:e,expected:t,message:s,code:i}=r;if(s)return s;let o=e&&e.length>0?e.join("."):"field";return t?`Invalid ${o}: expected ${t}`:i?`Validation error in ${o} (${i})`:`Validation error in ${o}`}function xe(r){return r.length===0?"Unknown validation error":r.length===1?ce(r[0]):`Multiple validation errors: ${r.map(ce).join("; ")}`}function g(r,e="An error occurred"){if(!r)return{message:e,details:r};if(r instanceof Error){let t=W(r.message);return{message:r.message||e,code:t,details:r}}if(typeof r=="string"){let t=W(r);return{message:r,code:t,details:r}}if(Array.isArray(r)){if(r.every(ae)){let t=r;return{message:xe(t),code:t[0]?.code,details:r}}return{message:`Multiple errors: ${r.length} item(s)`,details:r}}if(typeof r=="object"){let t=r;if(t.message&&typeof t.message=="string"){let s=t.message,{code:i}=t;if(i||(i=W(s)),t.details?.message&&typeof t.details.message=="string"){let o=Ze(t.details.message);Array.isArray(o)&&o.every(ae)&&(s=xe(o))}return{message:s,code:i,details:t.details}}if(ae(t))return{message:ce(t),code:t.code,details:r};if(t.error||t.message||t.detail){let s=t.error||t.message||t.detail,i=typeof s=="string"?s:e,o=t.code||t.status;return!o&&typeof s=="string"&&(o=W(s)),{message:i,code:o,details:r}}}return{message:e,details:r}}var V=class r{constructor(e,t={}){this.pendingRequests=new Map,this.messageListener=null,this.isReady=!1,this.iframe=e,this.callbacks=t,this.setupMessageListener()}setupMessageListener(){this.messageListener=e=>{if(e.source!==this.iframe.contentWindow)return;let t=this.getTrustedOrigin();if(!t||e.origin!==t)return;let{data:s}=e;if(s?.type==="CORTI_EMBEDDED_EVENT"){this.handleEvent(s);return}s.requestId&&this.pendingRequests.has(s.requestId)&&this.handleResponse(s)},window.addEventListener("message",this.messageListener)}handleEvent(e){let t=e.event,{payload:s}=e;switch((t==="ready"||t==="loaded")&&(this.isReady=!0),t){case"ready":case"loaded":this.callbacks.onReady?.();break;case"authChanged":this.callbacks.onAuthChanged?.(s);break;case"interactionCreated":this.callbacks.onInteractionCreated?.(s);break;case"recordingStarted":this.callbacks.onRecordingStarted?.();break;case"recordingStopped":this.callbacks.onRecordingStopped?.();break;case"documentGenerated":this.callbacks.onDocumentGenerated?.(s);break;case"documentUpdated":this.callbacks.onDocumentUpdated?.(s);break;case"navigationChanged":this.callbacks.onNavigationChanged?.(s);break;case"usage":this.callbacks.onUsage?.(s);break;default:console.warn(`Unhandled event type: ${t}`);break}}handleResponse(e){let t=this.pendingRequests.get(e.requestId);if(t){let{resolve:s,reject:i}=t;if(this.pendingRequests.delete(e.requestId),e.success===!1||e.error){let o={message:e.error||"Request failed",code:e.errorCode,details:e.errorDetails};this.callbacks.onError?.(o),i(o)}else s(e)}}destroy(){this.messageListener&&(window.removeEventListener("message",this.messageListener),this.messageListener=null),this.pendingRequests.clear()}updateCallbacks(e){this.callbacks={...this.callbacks,...e}}get ready(){return this.isReady}async waitForReady(e=3e4){return this.isReady?Promise.resolve():new Promise((t,s)=>{let i=setTimeout(()=>{s(new Error("Timeout waiting for iframe to be ready"))},e),o=n=>{n.source===this.iframe.contentWindow&&n.origin===this.getTrustedOrigin()&&n.data?.type==="CORTI_EMBEDDED_EVENT"&&n.data.event==="ready"&&(clearTimeout(i),window.removeEventListener("message",o),t())};window.addEventListener("message",o)})}async postMessage(e,t=1e4){if(!this.iframe.contentWindow)throw new Error("Iframe not ready");await this.waitForReady();let{contentWindow:s}=this.iframe,i=r.generateRequestId();return new Promise((o,n)=>{let c=setTimeout(()=>{this.pendingRequests.delete(i),n(new Error("Request timeout"))},t),a={resolve:d=>{clearTimeout(c),o(d)},reject:d=>{clearTimeout(c),n(d)}};this.pendingRequests.set(i,a);let l={...e,requestId:i},h=this.getTrustedOrigin();if(!h){this.pendingRequests.delete(i),n(new Error("Cannot determine trusted origin for postMessage"));return}s.postMessage(l,h)})}async auth(e){let t=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"auth",payload:e});if(this.isReady=!1,t.payload&&typeof t.success)return t.payload.user;throw new Error(t.error)}async configureSession(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"configureSession",payload:e})}async navigate(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"navigate",payload:e})}async addFacts(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"addFacts",payload:e})}async createInteraction(e){let t=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"createInteraction",payload:e});if(t.payload&&typeof t.success)return t.payload;throw new Error(t.error)}async startRecording(){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"startRecording",payload:{}})}async stopRecording(){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"stopRecording",payload:{}})}async getStatus(){let e=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"getStatus",payload:{}});if(e.payload&&typeof e.success)return e.payload;throw new Error(e.error)}async configure(e){let t=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"configure",payload:e});if(t.payload&&typeof t.success)return t.payload;throw new Error(t.error)}async setCredentials(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"setCredentials",payload:e})}static generateRequestId(){return`req_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getTrustedOrigin(){try{let e=this.iframe.getAttribute("src")||this.iframe.src;return e?new URL(e,window.location.href).origin:null}catch{return null}}};var Ue=function(r,e,t,s){var i=arguments.length,o=i<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,t):s,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(r,e,t,s);else for(var c=r.length-1;c>=0;c--)(n=r[c])&&(o=(i<3?n(o):i>3?n(e,t,o):n(e,t))||o);return i>3&&o&&Object.defineProperty(e,t,o),o},y=class extends ${constructor(){super(...arguments),this.visibility="hidden",this.postMessageHandler=null,this.normalizedBaseURL=null}connectedCallback(){if(super.connectedCallback(),!this.baseURL){this.dispatchErrorEvent({message:"baseURL is required"});return}try{this.normalizedBaseURL=F(this.baseURL)}catch(e){throw this.dispatchErrorEvent({message:e.message||"Invalid baseURL"}),e}}disconnectedCallback(){super.disconnectedCallback(),this.postMessageHandler&&(this.postMessageHandler.destroy(),this.postMessageHandler=null)}async setupPostMessageHandler(){if(this.postMessageHandler)return;let e=this.getIframe();if(e?.contentWindow){let t={onReady:()=>{this.dispatchPublicEvent("ready",void 0)},onAuthChanged:s=>{this.dispatchPublicEvent("auth-changed",{user:s.user})},onInteractionCreated:s=>{this.dispatchPublicEvent("interaction-created",{interaction:s.interaction})},onRecordingStarted:()=>{this.dispatchPublicEvent("recording-started",void 0)},onRecordingStopped:()=>{this.dispatchPublicEvent("recording-stopped",void 0)},onDocumentGenerated:s=>{this.dispatchPublicEvent("document-generated",{document:s.document})},onDocumentUpdated:s=>{this.dispatchPublicEvent("document-updated",{document:s.document})},onNavigationChanged:s=>{this.dispatchPublicEvent("navigation-changed",{path:s.path})},onUsage:s=>{this.dispatchPublicEvent("usage",{creditsConsumed:s.creditsConsumed})},onError:s=>{this.dispatchErrorEvent(s)}};this.postMessageHandler=new V(e,t)}else this.dispatchErrorEvent({message:"No iframe or contentWindow available"})}dispatchPublicEvent(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}dispatchErrorEvent(e){this.dispatchPublicEvent("error",e)}isRealIframeLoad(e){let t=e.getAttribute("src")||"";return this.normalizedBaseURL?Me(t,this.normalizedBaseURL):!1}async handleIframeLoad(e){let t=e.target;if(t&&this.isRealIframeLoad(t))try{await this.setupPostMessageHandler()}catch(s){this.dispatchErrorEvent({message:`Failed to setup PostMessageHandler on iframe load: ${s}`})}}getIframe(){return this.shadowRoot?.querySelector("iframe")||null}updated(e){if(super.updated(e),e.has("baseURL")){try{this.normalizedBaseURL=F(this.baseURL)}catch(s){this.postMessageHandler&&(this.postMessageHandler.destroy(),this.postMessageHandler=null);let i=this.getIframe();i&&i.setAttribute("src","about:blank"),this.dispatchErrorEvent({message:s.message||"Invalid baseURL"});return}this.postMessageHandler&&(this.postMessageHandler.destroy(),this.postMessageHandler=null);let t=this.getIframe();if(t){let s=this.normalizedBaseURL?ne(this.normalizedBaseURL):"";t.getAttribute("src")!==s&&(t.setAttribute("src",s),t.setAttribute("allow",`microphone ${s}; camera ${s}; device-capture ${s}; display-capture ${s}`))}}}async auth(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={access_token:e.access_token,token_type:e.token_type,expires_at:e.expires_at,expires_in:e.expires_in,refresh_expires_in:e.refresh_expires_in,refresh_token:e.refresh_token,id_token:e.id_token,"not-before-policy":e["not-before-policy"],session_state:e.session_state,scope:e.scope,profile:e.profile,mode:e.mode};return await this.postMessageHandler.auth(t)}catch(t){let s=g(t,"Authentication failed");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async createInteraction(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t=await this.postMessageHandler.createInteraction(e);return{id:t.id,createdAt:t.createdAt}}catch(t){let s=g(t,"Failed to create interaction");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async configureSession(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={defaultLanguage:e.defaultLanguage,defaultOutputLanguage:e.defaultOutputLanguage,defaultTemplateKey:e.defaultTemplateKey,defaultMode:e.defaultMode};await this.postMessageHandler.configureSession(t)}catch(t){let s=g(t,"Failed to configure session");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async addFacts(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={facts:e};await this.postMessageHandler.addFacts(t)}catch(t){let s=g(t,"Failed to add facts");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async navigate(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={path:e};await this.postMessageHandler.navigate(t)}catch(t){let s=g(t,"Failed to navigate");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async startRecording(){if(!this.postMessageHandler)throw new Error("Component not ready");try{await this.postMessageHandler.startRecording()}catch(e){let t=g(e,"Failed to start recording");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}async stopRecording(){if(!this.postMessageHandler)throw new Error("Component not ready");try{await this.postMessageHandler.stopRecording()}catch(e){let t=g(e,"Failed to stop recording");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}async getStatus(){if(!this.postMessageHandler)return{ready:!1,auth:{authenticated:!1,user:void 0},currentUrl:void 0,interaction:void 0};try{return await this.postMessageHandler.getStatus()}catch(e){let t=g(e,"Failed to get status");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}async configure(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{return await this.postMessageHandler.configure(e)}catch(t){let s=g(t,"Failed to configure component");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async setCredentials(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{if(!e.password)throw new Error("Password is required");await this.postMessageHandler.setCredentials(e)}catch(t){let s=g(t,"Failed to set credentials");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}show(){this.visibility="visible"}hide(){this.visibility="hidden"}getDebugStatus(){let e=this.getIframe();return{ready:e?.contentDocument?.readyState==="complete",iframeExists:!!e,iframeSrc:e?.src,iframeContentWindow:!!e?.contentWindow,iframeContentDocument:!!e?.contentDocument,iframeReadyState:e?.contentDocument?.readyState,postMessageHandlerExists:!!this.postMessageHandler,postMessageHandlerReady:this.postMessageHandler?.ready||!1,baseURL:this.baseURL}}render(){return this.baseURL?ie`
38
+ `;function J(r){let e;try{e=new URL(r)}catch{throw new Error("Invalid baseURL: not a parseable URL")}if(e.protocol!=="https:")throw new Error("Invalid baseURL: must use https");let t=e.host.toLowerCase();if(!/^assistant\.[a-z0-9-]+\.corti\.app$/i.test(t))throw new Error("Invalid baseURL: host must match assistant.xxx.corti.app");if(e.pathname&&e.pathname!=="/"&&e.pathname!=="")throw new Error("Invalid baseURL: must not include a path");if(e.username||e.password)throw new Error("Invalid baseURL: must not include credentials");return e.origin.replace(/\/+$/,"")}function le(r){return`${r}/embedded`}function He(r,e){if(!r||r.startsWith("about:"))return!1;try{let t=new URL(r,window.location.href),s=new URL(e);return t.origin!==s.origin?!1:t.pathname.replace(/\/+$/,"")==="/embedded"}catch{return!1}}function et(r){try{return JSON.parse(r)}catch{return null}}function K(r){let e=r.match(/\b([1-5]\d{2})\b/);return e?e[1]:void 0}function he(r){return typeof r=="object"&&r!==null&&("expected"in r||"code"in r||"path"in r||"message"in r)}function pe(r){let{path:e,expected:t,message:s,code:o}=r;if(s)return s;let i=e&&e.length>0?e.join("."):"field";return t?`Invalid ${i}: expected ${t}`:o?`Validation error in ${i} (${o})`:`Validation error in ${i}`}function Pe(r){return r.length===0?"Unknown validation error":r.length===1?pe(r[0]):`Multiple validation errors: ${r.map(pe).join("; ")}`}function y(r,e="An error occurred"){if(!r)return{message:e,details:r};if(r instanceof Error){let t=K(r.message);return{message:r.message||e,code:t,details:r}}if(typeof r=="string"){let t=K(r);return{message:r,code:t,details:r}}if(Array.isArray(r)){if(r.every(he)){let t=r;return{message:Pe(t),code:t[0]?.code,details:r}}return{message:`Multiple errors: ${r.length} item(s)`,details:r}}if(typeof r=="object"){let t=r;if(t.message&&typeof t.message=="string"){let s=t.message,{code:o}=t;if(o||(o=K(s)),t.details?.message&&typeof t.details.message=="string"){let i=et(t.details.message);Array.isArray(i)&&i.every(he)&&(s=Pe(i))}return{message:s,code:o,details:t.details}}if(he(t))return{message:pe(t),code:t.code,details:r};if(t.error||t.message||t.detail){let s=t.error||t.message||t.detail,o=typeof s=="string"?s:e,i=t.code||t.status;return!i&&typeof s=="string"&&(i=K(s)),{message:o,code:i,details:r}}}return{message:e,details:r}}var Z=class r{constructor(e,t={}){this.pendingRequests=new Map,this.messageListener=null,this.isReady=!1,this.iframe=e,this.callbacks=t,this.setupMessageListener()}setupMessageListener(){this.messageListener=e=>{if(e.source!==this.iframe.contentWindow)return;let t=this.getTrustedOrigin();if(!t||e.origin!==t)return;let{data:s}=e;if(s?.type==="CORTI_EMBEDDED_EVENT"){this.handleEvent(s);return}s.requestId&&this.pendingRequests.has(s.requestId)&&this.handleResponse(s)},window.addEventListener("message",this.messageListener)}handleEvent(e){let t=e.event,{payload:s}=e;(t==="ready"||t==="loaded"||t==="embedded.ready")&&(this.isReady=!0),this.callbacks.onEvent?.({name:t,payload:s})}handleResponse(e){let t=this.pendingRequests.get(e.requestId);if(t){let{resolve:s,reject:o}=t;if(this.pendingRequests.delete(e.requestId),e.success===!1||e.error){let i={message:e.error||"Request failed",code:e.errorCode,details:e.errorDetails};this.callbacks.onError?.(i),o(i)}else s(e)}}destroy(){this.messageListener&&(window.removeEventListener("message",this.messageListener),this.messageListener=null),this.pendingRequests.clear()}updateCallbacks(e){this.callbacks={...this.callbacks,...e}}get ready(){return this.isReady}async waitForReady(e=3e4){return this.isReady?Promise.resolve():new Promise((t,s)=>{let o=setTimeout(()=>{s(new Error("Timeout waiting for iframe to be ready"))},e),i=n=>{n.source===this.iframe.contentWindow&&n.origin===this.getTrustedOrigin()&&n.data?.type==="CORTI_EMBEDDED_EVENT"&&(n.data.event==="ready"||n.data.event==="loaded"||n.data.event==="embedded.ready")&&(clearTimeout(o),window.removeEventListener("message",i),t())};window.addEventListener("message",i)})}async postMessage(e,t=1e4){if(!this.iframe.contentWindow)throw new Error("Iframe not ready");await this.waitForReady();let{contentWindow:s}=this.iframe,o=r.generateRequestId();return new Promise((i,n)=>{let c=setTimeout(()=>{this.pendingRequests.delete(o),n(new Error("Request timeout"))},t),a={resolve:l=>{clearTimeout(c),i(l)},reject:l=>{clearTimeout(c),n(l)}};this.pendingRequests.set(o,a);let h={...e,requestId:o},d=this.getTrustedOrigin();if(!d){this.pendingRequests.delete(o),n(new Error("Cannot determine trusted origin for postMessage"));return}s.postMessage(h,d)})}async auth(e){let t=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"auth",payload:e});if(this.isReady=!1,t.payload&&t.success)return t.payload.user;throw new Error(t.error)}async configureSession(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"configureSession",payload:e})}async navigate(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"navigate",payload:e})}async addFacts(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"addFacts",payload:e})}async createInteraction(e){let t=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"createInteraction",payload:e});if(t.payload&&t.success)return t.payload;throw new Error(t.error)}async startRecording(){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"startRecording",payload:{}})}async stopRecording(){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"stopRecording",payload:{}})}async getStatus(){let e=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"getStatus",payload:{}});if(e.payload&&e.success)return e.payload;throw new Error(e.error)}async configure(e){let t=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"configure",payload:e});if(t.payload&&t.success)return t.payload;throw new Error(t.error)}async setCredentials(e){await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"setCredentials",payload:e})}async getTemplates(){let e=await this.postMessage({type:"CORTI_EMBEDDED",version:"v1",action:"getTemplates"});if(e.payload&&e.success)return e.payload;throw new Error(e.error)}static generateRequestId(){return`req_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getTrustedOrigin(){try{let e=this.iframe.getAttribute("src")||this.iframe.src;return e?new URL(e,window.location.href).origin:null}catch{return null}}};var Te=function(r,e,t,s){var o=arguments.length,i=o<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,t):s,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,s);else for(var c=r.length-1;c>=0;c--)(n=r[c])&&(i=(o<3?n(i):o>3?n(e,t,i):n(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},E=class extends _{constructor(){super(...arguments),this.visibility="hidden",this.postMessageHandler=null,this.normalizedBaseURL=null}connectedCallback(){if(super.connectedCallback(),!this.baseURL){this.dispatchErrorEvent({message:"baseURL is required"});return}try{this.normalizedBaseURL=J(this.baseURL)}catch(e){throw this.dispatchErrorEvent({message:e.message||"Invalid baseURL"}),e}}disconnectedCallback(){super.disconnectedCallback(),this.postMessageHandler&&(this.postMessageHandler.destroy(),this.postMessageHandler=null)}async setupPostMessageHandler(){if(this.postMessageHandler)return;let e=this.getIframe();if(e?.contentWindow){let t={onEvent:s=>{this.dispatchEmbeddedEvent(s.name,s.payload)},onError:s=>{this.dispatchErrorEvent(s)}};this.postMessageHandler=new Z(e,t)}else this.dispatchErrorEvent({message:"No iframe or contentWindow available"})}dispatchPublicEvent(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}dispatchEmbeddedEvent(e,t){this.dispatchPublicEvent(e,t),this.dispatchPublicEvent("embedded-event",{name:e,payload:t})}dispatchErrorEvent(e){this.dispatchPublicEvent("error",e)}isRealIframeLoad(e){let t=e.getAttribute("src")||"";return this.normalizedBaseURL?He(t,this.normalizedBaseURL):!1}async handleIframeLoad(e){let t=e.target;if(t&&this.isRealIframeLoad(t))try{await this.setupPostMessageHandler()}catch(s){this.dispatchErrorEvent({message:`Failed to setup PostMessageHandler on iframe load: ${s}`})}}getIframe(){return this.shadowRoot?.querySelector("iframe")||null}updated(e){if(super.updated(e),e.has("baseURL")){try{this.normalizedBaseURL=J(this.baseURL)}catch(s){this.postMessageHandler&&(this.postMessageHandler.destroy(),this.postMessageHandler=null);let o=this.getIframe();o&&o.setAttribute("src","about:blank"),this.dispatchErrorEvent({message:s.message||"Invalid baseURL"});return}this.postMessageHandler&&(this.postMessageHandler.destroy(),this.postMessageHandler=null);let t=this.getIframe();if(t){let s=this.normalizedBaseURL?le(this.normalizedBaseURL):"";t.getAttribute("src")!==s&&(t.setAttribute("src",s),t.setAttribute("allow",`microphone ${s}; camera ${s}; device-capture ${s}; display-capture ${s}`))}}}async auth(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={access_token:e.access_token,token_type:e.token_type,expires_at:e.expires_at,expires_in:e.expires_in,refresh_expires_in:e.refresh_expires_in,refresh_token:e.refresh_token,id_token:e.id_token,"not-before-policy":e["not-before-policy"],session_state:e.session_state,scope:e.scope,profile:e.profile,mode:e.mode};return await this.postMessageHandler.auth(t)}catch(t){let s=y(t,"Authentication failed");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async createInteraction(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t=await this.postMessageHandler.createInteraction(e);return{id:t.id,createdAt:t.createdAt}}catch(t){let s=y(t,"Failed to create interaction");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async configureSession(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={defaultLanguage:e.defaultLanguage,defaultOutputLanguage:e.defaultOutputLanguage,defaultTemplateKey:e.defaultTemplateKey,defaultMode:e.defaultMode};await this.postMessageHandler.configureSession(t)}catch(t){let s=y(t,"Failed to configure session");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async addFacts(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={facts:e};await this.postMessageHandler.addFacts(t)}catch(t){let s=y(t,"Failed to add facts");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async navigate(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{let t={path:e};await this.postMessageHandler.navigate(t)}catch(t){let s=y(t,"Failed to navigate");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async startRecording(){if(!this.postMessageHandler)throw new Error("Component not ready");try{await this.postMessageHandler.startRecording()}catch(e){let t=y(e,"Failed to start recording");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}async stopRecording(){if(!this.postMessageHandler)throw new Error("Component not ready");try{await this.postMessageHandler.stopRecording()}catch(e){let t=y(e,"Failed to stop recording");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}async getStatus(){if(!this.postMessageHandler)return{auth:{isAuthenticated:!1,user:void 0},currentUrl:"",interaction:null};try{return await this.postMessageHandler.getStatus()}catch(e){let t=y(e,"Failed to get status");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}async configure(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{return await this.postMessageHandler.configure(e)}catch(t){let s=y(t,"Failed to configure component");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}async setCredentials(e){if(!this.postMessageHandler)throw new Error("Component not ready");try{if(!e.password)throw new Error("Password is required");await this.postMessageHandler.setCredentials(e)}catch(t){let s=y(t,"Failed to set credentials");throw this.dispatchErrorEvent(s),new Error(JSON.stringify(s))}}show(){this.visibility="visible"}hide(){this.visibility="hidden"}async getTemplates(){if(!this.postMessageHandler)throw new Error("Component not ready");try{return await this.postMessageHandler.getTemplates()}catch(e){let t=y(e,"Failed to get templates");throw this.dispatchErrorEvent(t),new Error(JSON.stringify(t))}}getDebugStatus(){let e=this.getIframe();return{ready:e?.contentDocument?.readyState==="complete",iframeExists:!!e,iframeSrc:e?.src,iframeContentWindow:!!e?.contentWindow,iframeContentDocument:!!e?.contentDocument,iframeReadyState:e?.contentDocument?.readyState,postMessageHandlerExists:!!this.postMessageHandler,postMessageHandlerReady:this.postMessageHandler?.ready||!1,baseURL:this.baseURL}}render(){return this.baseURL?ce`
39
39
  <iframe
40
- src=${ne(F(this.baseURL))}
40
+ src=${le(J(this.baseURL))}
41
41
  title="Corti Embedded UI"
42
42
  sandbox=${"allow-forms allow-modals allow-scripts allow-same-origin"}
43
43
  allow="microphone *; camera *; device-capture *; display-capture *"
@@ -45,7 +45,7 @@ var N=globalThis,I=N.ShadowRoot&&(N.ShadyCSS===void 0||N.ShadyCSS.nativeShadow)&
45
45
  @unload=${()=>this.postMessageHandler?.destroy()}
46
46
  style=${this.visibility==="hidden"?"display: none;":"display: block;"}
47
47
  ></iframe>
48
- `:ie`<div>baseURL is required</div>`}};y.styles=[Re,Ce];Ue([j({type:String,reflect:!0})],y.prototype,"visibility",void 0);Ue([j({type:String,reflect:!0})],y.prototype,"baseURL",void 0);customElements.get("corti-embedded")||customElements.define("corti-embedded",y);var Qe=new Set(["children","localName","ref","style","className"]),Le=new WeakMap,Oe=(r,e,t,s,i)=>{let o=i?.[e];o===void 0?(r[e]=t,t==null&&e in HTMLElement.prototype&&r.removeAttribute(e)):t!==s&&((n,c,a)=>{let l=Le.get(n);l===void 0&&Le.set(n,l=new Map);let h=l.get(c);a!==void 0?h===void 0?(l.set(c,h={handleEvent:a}),n.addEventListener(c,h)):h.handleEvent=a:h!==void 0&&(l.delete(c),n.removeEventListener(c,h))})(r,o,t)},de=({react:r,tagName:e,elementClass:t,events:s,displayName:i})=>{let o=new Set(Object.keys(s??{})),n=r.forwardRef(((c,a)=>{let l=r.useRef(new Map),h=r.useRef(null),d={},f={};for(let[p,m]of Object.entries(c))Qe.has(p)?d[p==="className"?"class":p]=m:o.has(p)||p in t.prototype?f[p]=m:d[p]=m;return r.useLayoutEffect((()=>{if(h.current===null)return;let p=new Map;for(let m in f)Oe(h.current,m,c[m],l.current.get(m),s),l.current.delete(m),p.set(m,c[m]);for(let[m,He]of l.current)Oe(h.current,m,void 0,He,s);l.current=p})),r.useLayoutEffect((()=>{h.current?.removeAttribute("defer-hydration")}),[]),d.suppressHydrationWarning=!0,r.createElement(e,{...d,ref:r.useCallback((p=>{h.current=p,typeof a=="function"?a(p):a!==null&&(a.current=p)}),[a])})}));return n.displayName=i??t.name,n};import*as T from"react";var Xe=de({tagName:"corti-embedded",elementClass:y,react:T,events:{onReady:"ready",onAuthChanged:"auth-changed",onInteractionCreated:"interaction-created",onRecordingStarted:"recording-started",onRecordingStopped:"recording-stopped",onDocumentGenerated:"document-generated",onDocumentUpdated:"document-updated",onNavigationChanged:"navigation-changed",onError:"error",onUsage:"usage"}}),Pe=T.forwardRef((r,e)=>T.createElement(Xe,{ref:e,...r}));Pe.displayName="CortiEmbeddedReact";export{y as CortiEmbedded,Pe as CortiEmbeddedReact};
48
+ `:ce`<div>baseURL is required</div>`}};E.styles=[Oe,Ue];Te([W({type:String,reflect:!0})],E.prototype,"visibility",void 0);Te([W({type:String,reflect:!0})],E.prototype,"baseURL",void 0);customElements.get("corti-embedded")||customElements.define("corti-embedded",E);var tt=new Set(["children","localName","ref","style","className"]),De=new WeakMap,Ie=(r,e,t,s,o)=>{let i=o?.[e];i===void 0?(r[e]=t,t==null&&e in HTMLElement.prototype&&r.removeAttribute(e)):t!==s&&((n,c,a)=>{let h=De.get(n);h===void 0&&De.set(n,h=new Map);let d=h.get(c);a!==void 0?d===void 0?(h.set(c,d={handleEvent:a}),n.addEventListener(c,d)):d.handleEvent=a:d!==void 0&&(h.delete(c),n.removeEventListener(c,d))})(r,i,t)},ue=({react:r,tagName:e,elementClass:t,events:s,displayName:o})=>{let i=new Set(Object.keys(s??{})),n=r.forwardRef(((c,a)=>{let h=r.useRef(new Map),d=r.useRef(null),l={},g={};for(let[p,u]of Object.entries(c))tt.has(p)?l[p==="className"?"class":p]=u:i.has(p)||p in t.prototype?g[p]=u:l[p]=u;return r.useLayoutEffect((()=>{if(d.current===null)return;let p=new Map;for(let u in g)Ie(d.current,u,c[u],h.current.get(u),s),h.current.delete(u),p.set(u,c[u]);for(let[u,C]of h.current)Ie(d.current,u,void 0,C,s);h.current=p})),r.useLayoutEffect((()=>{d.current?.removeAttribute("defer-hydration")}),[]),l.suppressHydrationWarning=!0,r.createElement(e,{...l,ref:r.useCallback((p=>{d.current=p,typeof a=="function"?a(p):a!==null&&(a.current=p)}),[a])})}));return n.displayName=o??t.name,n};import*as f from"react";var st=ue({tagName:"corti-embedded",elementClass:E,react:f,events:{onEvent:"embedded-event",onReady:"ready",onError:"error"}});function As(r,e={}){let{enabled:t=!0,onError:s,shouldRefreshOnEvent:o=v=>{let L=v.name.toLowerCase();return!(L.includes("getstatus")||L.includes("statusreturned"))}}=e,[i,n]=f.useState(null),[c,a]=f.useState(!1),[h,d]=f.useState(null),[l,g]=f.useState(null),p=f.useRef(s),u=f.useRef(o),C=f.useRef(!1);f.useEffect(()=>{p.current=s},[s]),f.useEffect(()=>{u.current=o},[o]);let G=f.useCallback(async()=>{if(!(!t||!r.current||C.current)){C.current=!0,a(!0);try{let v=await r.current.getStatus();n(v),d(null)}catch(v){d(v),p.current?.(v)}finally{a(!1),C.current=!1}}},[t,r]);return f.useEffect(()=>{if(!t||!r.current)return;let v=r.current,L=Ne=>{let{detail:fe}=Ne;g(fe),u.current(fe)&&(C.current||G())};return v.addEventListener("embedded-event",L),()=>v.removeEventListener("embedded-event",L)},[t,r,G]),{status:i,isLoading:c,error:h,lastEvent:l,refresh:G}}function rt(r){let e=r.current;if(!e)throw new Error("No active corti-embedded instance found for this ref. Mount <CortiEmbeddedReact ref={...} /> first.");return e}function Rs(r){let e=f.useCallback(()=>rt(r),[r]);return f.useMemo(()=>({auth:(...t)=>e().auth(...t),createInteraction:(...t)=>e().createInteraction(...t),configureSession:(...t)=>e().configureSession(...t),addFacts:(...t)=>e().addFacts(...t),navigate:(...t)=>e().navigate(...t),startRecording:(...t)=>e().startRecording(...t),stopRecording:(...t)=>e().stopRecording(...t),getStatus:(...t)=>e().getStatus(...t),configure:(...t)=>e().configure(...t),getTemplates:(...t)=>e().getTemplates(...t),setCredentials:(...t)=>e().setCredentials(...t),show:(...t)=>e().show(...t),hide:(...t)=>e().hide(...t)}),[e])}st.displayName="CortiEmbeddedReact";export{E as CortiEmbedded,st as CortiEmbeddedReact,Rs as useCortiEmbeddedApi,As as useCortiEmbeddedStatus};
49
49
  /*! Bundled license information:
50
50
 
51
51
  @lit/reactive-element/css-tag.js:
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import './corti-embedded.js';
2
2
  export { CortiEmbedded } from './CortiEmbedded.js';
3
- export { CortiEmbeddedReact } from './react/index.js';
4
- export type { CortiEmbeddedReactProps, CortiEmbeddedReactRef, } from './react/index.js';
5
- export type { AuthCredentials, ComponentStatus, ConfigureAppPayload, ConfigureAppResponsePayload, CortiEmbeddedAPI, EmbeddedEventData, EventListener, Fact, InteractionDetails, SessionConfig, User, } from './public-types.js';
3
+ export * from './react/index.js';
4
+ export * from './types/index.js';
6
5
  export type { PostMessageHandlerCallbacks } from './utils/PostMessageHandler.js';
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import './corti-embedded.js';
2
2
  export { CortiEmbedded } from './CortiEmbedded.js';
3
3
  // Export React components
4
- export { CortiEmbeddedReact } from './react/index.js';
4
+ export * from './react/index.js';
5
+ // Export clean public types only
6
+ export * from './types/index.js';
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,0BAA0B;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["import './corti-embedded.js';\n\nexport { CortiEmbedded } from './CortiEmbedded.js';\n\n// Export React components\nexport { CortiEmbeddedReact } from './react/index.js';\nexport type {\n CortiEmbeddedReactProps,\n CortiEmbeddedReactRef,\n} from './react/index.js';\n\n// Export clean public types only\nexport type {\n AuthCredentials,\n ComponentStatus,\n ConfigureAppPayload,\n ConfigureAppResponsePayload,\n CortiEmbeddedAPI,\n EmbeddedEventData,\n EventListener,\n Fact,\n InteractionDetails,\n SessionConfig,\n User,\n} from './public-types.js';\n\n// Export PostMessageHandler types for advanced usage\nexport type { PostMessageHandlerCallbacks } from './utils/PostMessageHandler.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,0BAA0B;AAC1B,cAAc,kBAAkB,CAAC;AAEjC,iCAAiC;AACjC,cAAc,kBAAkB,CAAC","sourcesContent":["import './corti-embedded.js';\n\nexport { CortiEmbedded } from './CortiEmbedded.js';\n\n// Export React components\nexport * from './react/index.js';\n\n// Export clean public types only\nexport * from './types/index.js';\n\n// Export PostMessageHandler types for advanced usage\nexport type { PostMessageHandlerCallbacks } from './utils/PostMessageHandler.js';\n"]}
@@ -1,25 +1,48 @@
1
1
  import * as React from 'react';
2
2
  import { CortiEmbedded } from '../CortiEmbedded.js';
3
- import type { CortiEmbeddedAPI, EmbeddedEventData } from '../public-types.js';
3
+ import type { CortiEmbeddedAPI } from '../types';
4
+ export interface CortiEmbeddedEventDetail {
5
+ name: string;
6
+ payload: unknown;
7
+ }
4
8
  export interface CortiEmbeddedReactProps {
5
9
  baseURL: string;
6
10
  visibility?: 'visible' | 'hidden';
7
- onReady?: (event: CustomEvent<EmbeddedEventData['ready']>) => void;
8
- /** LIMITED ACCESS - not implemented */
9
- onAuthChanged?: (event: CustomEvent<EmbeddedEventData['auth-changed']>) => void;
10
- /** LIMITED ACCESS - not implemented */
11
- onInteractionCreated?: (event: CustomEvent<EmbeddedEventData['interaction-created']>) => void;
12
- onRecordingStarted?: (event: CustomEvent<EmbeddedEventData['recording-started']>) => void;
13
- onRecordingStopped?: (event: CustomEvent<EmbeddedEventData['recording-stopped']>) => void;
14
- onDocumentGenerated?: (event: CustomEvent<EmbeddedEventData['document-generated']>) => void;
15
- onDocumentUpdated?: (event: CustomEvent<EmbeddedEventData['document-updated']>) => void;
16
- /** LIMITED ACCESS - not implemented */
17
- onNavigationChanged?: (event: CustomEvent<EmbeddedEventData['navigation-changed']>) => void;
18
- onError?: (event: CustomEvent<EmbeddedEventData['error']>) => void;
19
- onUsage?: (event: CustomEvent<EmbeddedEventData['usage']>) => void;
11
+ onEvent?: (event: CustomEvent<CortiEmbeddedEventDetail>) => void;
12
+ onReady?: (event: CustomEvent<unknown>) => void;
13
+ onError?: (event: CustomEvent<unknown>) => void;
20
14
  className?: string;
21
15
  style?: React.CSSProperties;
22
16
  }
23
17
  export type CortiEmbeddedReactRef = CortiEmbedded & CortiEmbeddedAPI;
24
- export * from '../public-types.js';
18
+ export * from '../types/index.js';
25
19
  export declare const CortiEmbeddedReact: React.ForwardRefExoticComponent<CortiEmbeddedReactProps & React.RefAttributes<CortiEmbeddedReactRef>>;
20
+ export interface UseCortiEmbeddedStatusOptions {
21
+ enabled?: boolean;
22
+ onError?: (error: unknown) => void;
23
+ shouldRefreshOnEvent?: (event: CortiEmbeddedEventDetail) => boolean;
24
+ }
25
+ export interface UseCortiEmbeddedStatusResult {
26
+ status: Awaited<ReturnType<CortiEmbeddedReactRef['getStatus']>> | null;
27
+ isLoading: boolean;
28
+ error: unknown;
29
+ lastEvent: CortiEmbeddedEventDetail | null;
30
+ refresh: () => Promise<void>;
31
+ }
32
+ export declare function useCortiEmbeddedStatus(ref: React.RefObject<CortiEmbeddedReactRef | null>, options?: UseCortiEmbeddedStatusOptions): UseCortiEmbeddedStatusResult;
33
+ export interface UseCortiEmbeddedApiResult {
34
+ auth: (...args: Parameters<CortiEmbeddedReactRef['auth']>) => ReturnType<CortiEmbeddedReactRef['auth']>;
35
+ createInteraction: (...args: Parameters<CortiEmbeddedReactRef['createInteraction']>) => ReturnType<CortiEmbeddedReactRef['createInteraction']>;
36
+ configureSession: (...args: Parameters<CortiEmbeddedReactRef['configureSession']>) => ReturnType<CortiEmbeddedReactRef['configureSession']>;
37
+ addFacts: (...args: Parameters<CortiEmbeddedReactRef['addFacts']>) => ReturnType<CortiEmbeddedReactRef['addFacts']>;
38
+ navigate: (...args: Parameters<CortiEmbeddedReactRef['navigate']>) => ReturnType<CortiEmbeddedReactRef['navigate']>;
39
+ startRecording: (...args: Parameters<CortiEmbeddedReactRef['startRecording']>) => ReturnType<CortiEmbeddedReactRef['startRecording']>;
40
+ stopRecording: (...args: Parameters<CortiEmbeddedReactRef['stopRecording']>) => ReturnType<CortiEmbeddedReactRef['stopRecording']>;
41
+ getStatus: (...args: Parameters<CortiEmbeddedReactRef['getStatus']>) => ReturnType<CortiEmbeddedReactRef['getStatus']>;
42
+ configure: (...args: Parameters<CortiEmbeddedReactRef['configure']>) => ReturnType<CortiEmbeddedReactRef['configure']>;
43
+ getTemplates: (...args: Parameters<CortiEmbeddedReactRef['getTemplates']>) => ReturnType<CortiEmbeddedReactRef['getTemplates']>;
44
+ setCredentials: (...args: Parameters<CortiEmbeddedReactRef['setCredentials']>) => ReturnType<CortiEmbeddedReactRef['setCredentials']>;
45
+ show: (...args: Parameters<CortiEmbeddedReactRef['show']>) => ReturnType<CortiEmbeddedReactRef['show']>;
46
+ hide: (...args: Parameters<CortiEmbeddedReactRef['hide']>) => ReturnType<CortiEmbeddedReactRef['hide']>;
47
+ }
48
+ export declare function useCortiEmbeddedApi(ref: React.RefObject<CortiEmbeddedReactRef | null>): UseCortiEmbeddedApiResult;
@@ -1,28 +1,108 @@
1
1
  import { createComponent } from '@lit/react';
2
2
  import * as React from 'react';
3
3
  import { CortiEmbedded } from '../CortiEmbedded.js';
4
- const BaseCortiEmbeddedElement = createComponent({
4
+ // Export public types
5
+ export * from '../types/index.js';
6
+ // Create the component directly without additional forwardRef wrapping
7
+ export const CortiEmbeddedReact = createComponent({
5
8
  tagName: 'corti-embedded',
6
9
  elementClass: CortiEmbedded,
7
10
  react: React,
8
11
  events: {
12
+ onEvent: 'embedded-event',
9
13
  onReady: 'ready',
10
- onAuthChanged: 'auth-changed',
11
- onInteractionCreated: 'interaction-created',
12
- onRecordingStarted: 'recording-started',
13
- onRecordingStopped: 'recording-stopped',
14
- onDocumentGenerated: 'document-generated',
15
- onDocumentUpdated: 'document-updated',
16
- onNavigationChanged: 'navigation-changed',
17
14
  onError: 'error',
18
- onUsage: 'usage',
19
15
  },
20
16
  });
21
- // Export public types
22
- export * from '../public-types.js';
23
- export const CortiEmbeddedReact = React.forwardRef((props, ref) => React.createElement(BaseCortiEmbeddedElement, {
24
- ref,
25
- ...props,
26
- }));
17
+ export function useCortiEmbeddedStatus(ref, options = {}) {
18
+ const { enabled = true, onError, shouldRefreshOnEvent = event => {
19
+ const normalized = event.name.toLowerCase();
20
+ if (normalized.includes('getstatus'))
21
+ return false;
22
+ if (normalized.includes('statusreturned'))
23
+ return false;
24
+ return true;
25
+ }, } = options;
26
+ const [status, setStatus] = React.useState(null);
27
+ const [isLoading, setIsLoading] = React.useState(false);
28
+ const [error, setError] = React.useState(null);
29
+ const [lastEvent, setLastEvent] = React.useState(null);
30
+ const onErrorRef = React.useRef(onError);
31
+ const shouldRefreshOnEventRef = React.useRef(shouldRefreshOnEvent);
32
+ const isRefreshingRef = React.useRef(false);
33
+ React.useEffect(() => {
34
+ onErrorRef.current = onError;
35
+ }, [onError]);
36
+ React.useEffect(() => {
37
+ shouldRefreshOnEventRef.current = shouldRefreshOnEvent;
38
+ }, [shouldRefreshOnEvent]);
39
+ const refresh = React.useCallback(async () => {
40
+ if (!enabled || !ref.current || isRefreshingRef.current)
41
+ return;
42
+ isRefreshingRef.current = true;
43
+ setIsLoading(true);
44
+ try {
45
+ const nextStatus = await ref.current.getStatus();
46
+ setStatus(nextStatus);
47
+ setError(null);
48
+ }
49
+ catch (refreshError) {
50
+ setError(refreshError);
51
+ onErrorRef.current?.(refreshError);
52
+ }
53
+ finally {
54
+ setIsLoading(false);
55
+ isRefreshingRef.current = false;
56
+ }
57
+ }, [enabled, ref]);
58
+ React.useEffect(() => {
59
+ if (!enabled || !ref.current)
60
+ return undefined;
61
+ const target = ref.current;
62
+ const handleEvent = (event) => {
63
+ const { detail } = event;
64
+ setLastEvent(detail);
65
+ if (!shouldRefreshOnEventRef.current(detail))
66
+ return;
67
+ if (isRefreshingRef.current)
68
+ return;
69
+ refresh();
70
+ };
71
+ target.addEventListener('embedded-event', handleEvent);
72
+ return () => target.removeEventListener('embedded-event', handleEvent);
73
+ }, [enabled, ref, refresh]);
74
+ return {
75
+ status,
76
+ isLoading,
77
+ error,
78
+ lastEvent,
79
+ refresh,
80
+ };
81
+ }
82
+ function getCortiEmbeddedInstanceFromRefOrThrow(ref) {
83
+ const instance = ref.current;
84
+ if (!instance) {
85
+ throw new Error('No active corti-embedded instance found for this ref. Mount <CortiEmbeddedReact ref={...} /> first.');
86
+ }
87
+ return instance;
88
+ }
89
+ export function useCortiEmbeddedApi(ref) {
90
+ const getInstance = React.useCallback(() => getCortiEmbeddedInstanceFromRefOrThrow(ref), [ref]);
91
+ return React.useMemo(() => ({
92
+ auth: (...args) => getInstance().auth(...args),
93
+ createInteraction: (...args) => getInstance().createInteraction(...args),
94
+ configureSession: (...args) => getInstance().configureSession(...args),
95
+ addFacts: (...args) => getInstance().addFacts(...args),
96
+ navigate: (...args) => getInstance().navigate(...args),
97
+ startRecording: (...args) => getInstance().startRecording(...args),
98
+ stopRecording: (...args) => getInstance().stopRecording(...args),
99
+ getStatus: (...args) => getInstance().getStatus(...args),
100
+ configure: (...args) => getInstance().configure(...args),
101
+ getTemplates: (...args) => getInstance().getTemplates(...args),
102
+ setCredentials: (...args) => getInstance().setCredentials(...args),
103
+ show: (...args) => getInstance().show(...args),
104
+ hide: (...args) => getInstance().hide(...args),
105
+ }), [getInstance]);
106
+ }
27
107
  CortiEmbeddedReact.displayName = 'CortiEmbeddedReact';
28
108
  //# sourceMappingURL=CortiEmbeddedReact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CortiEmbeddedReact.js","sourceRoot":"","sources":["../../src/react/CortiEmbeddedReact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,wBAAwB,GAAG,eAAe,CAAC;IAC/C,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,aAAa;IAC3B,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE;QACN,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,cAAc;QAC7B,oBAAoB,EAAE,qBAAqB;QAC3C,kBAAkB,EAAE,mBAAmB;QACvC,kBAAkB,EAAE,mBAAmB;QACvC,mBAAmB,EAAE,oBAAoB;QACzC,iBAAiB,EAAE,kBAAkB;QACrC,mBAAmB,EAAE,oBAAoB;QACzC,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAC;AA0CH,sBAAsB;AACtB,cAAc,oBAAoB,CAAC;AAEnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAGhD,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CACf,KAAK,CAAC,aAAa,CAAC,wBAA+B,EAAE;IACnD,GAAG;IACH,GAAG,KAAK;CACT,CAAC,CACH,CAAC;AAEF,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAC","sourcesContent":["import { createComponent } from '@lit/react';\nimport * as React from 'react';\nimport { CortiEmbedded } from '../CortiEmbedded.js';\nimport type { CortiEmbeddedAPI, EmbeddedEventData } from '../public-types.js';\n\nconst BaseCortiEmbeddedElement = createComponent({\n tagName: 'corti-embedded',\n elementClass: CortiEmbedded,\n react: React,\n events: {\n onReady: 'ready',\n onAuthChanged: 'auth-changed',\n onInteractionCreated: 'interaction-created',\n onRecordingStarted: 'recording-started',\n onRecordingStopped: 'recording-stopped',\n onDocumentGenerated: 'document-generated',\n onDocumentUpdated: 'document-updated',\n onNavigationChanged: 'navigation-changed',\n onError: 'error',\n onUsage: 'usage',\n },\n});\n\n// Props interface\nexport interface CortiEmbeddedReactProps {\n baseURL: string;\n visibility?: 'visible' | 'hidden';\n\n // Event handlers\n onReady?: (event: CustomEvent<EmbeddedEventData['ready']>) => void;\n /** LIMITED ACCESS - not implemented */\n onAuthChanged?: (\n event: CustomEvent<EmbeddedEventData['auth-changed']>,\n ) => void;\n /** LIMITED ACCESS - not implemented */\n onInteractionCreated?: (\n event: CustomEvent<EmbeddedEventData['interaction-created']>,\n ) => void;\n onRecordingStarted?: (\n event: CustomEvent<EmbeddedEventData['recording-started']>,\n ) => void;\n onRecordingStopped?: (\n event: CustomEvent<EmbeddedEventData['recording-stopped']>,\n ) => void;\n onDocumentGenerated?: (\n event: CustomEvent<EmbeddedEventData['document-generated']>,\n ) => void;\n onDocumentUpdated?: (\n event: CustomEvent<EmbeddedEventData['document-updated']>,\n ) => void;\n /** LIMITED ACCESS - not implemented */\n onNavigationChanged?: (\n event: CustomEvent<EmbeddedEventData['navigation-changed']>,\n ) => void;\n onError?: (event: CustomEvent<EmbeddedEventData['error']>) => void;\n onUsage?: (event: CustomEvent<EmbeddedEventData['usage']>) => void;\n\n // Additional props\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport type CortiEmbeddedReactRef = CortiEmbedded & CortiEmbeddedAPI;\n// Export public types\nexport * from '../public-types.js';\n\nexport const CortiEmbeddedReact = React.forwardRef<\n CortiEmbeddedReactRef,\n CortiEmbeddedReactProps\n>((props, ref) =>\n React.createElement(BaseCortiEmbeddedElement as any, {\n ref,\n ...props,\n }),\n);\n\nCortiEmbeddedReact.displayName = 'CortiEmbeddedReact';\n"]}
1
+ {"version":3,"file":"CortiEmbeddedReact.js","sourceRoot":"","sources":["../../src/react/CortiEmbeddedReact.ts"],"names":[],"mappings":"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","sourcesContent":["import { createComponent } from '@lit/react';\nimport * as React from 'react';\nimport { CortiEmbedded } from '../CortiEmbedded.js';\nimport type { CortiEmbeddedAPI } from '../types';\n\nexport interface CortiEmbeddedEventDetail {\n name: string;\n payload: unknown;\n}\n\n// Props interface\nexport interface CortiEmbeddedReactProps {\n baseURL: string;\n visibility?: 'visible' | 'hidden';\n\n // Event handlers\n onEvent?: (event: CustomEvent<CortiEmbeddedEventDetail>) => void;\n onReady?: (event: CustomEvent<unknown>) => void;\n onError?: (event: CustomEvent<unknown>) => void;\n\n // Additional props\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport type CortiEmbeddedReactRef = CortiEmbedded & CortiEmbeddedAPI;\n\n// Export public types\nexport * from '../types/index.js';\n\n// Create the component directly without additional forwardRef wrapping\nexport const CortiEmbeddedReact = createComponent({\n tagName: 'corti-embedded',\n elementClass: CortiEmbedded,\n react: React,\n events: {\n onEvent: 'embedded-event',\n onReady: 'ready',\n onError: 'error',\n },\n}) as React.ForwardRefExoticComponent<\n CortiEmbeddedReactProps & React.RefAttributes<CortiEmbeddedReactRef>\n>;\n\nexport interface UseCortiEmbeddedStatusOptions {\n enabled?: boolean;\n onError?: (error: unknown) => void;\n shouldRefreshOnEvent?: (event: CortiEmbeddedEventDetail) => boolean;\n}\n\nexport interface UseCortiEmbeddedStatusResult {\n status: Awaited<ReturnType<CortiEmbeddedReactRef['getStatus']>> | null;\n isLoading: boolean;\n error: unknown;\n lastEvent: CortiEmbeddedEventDetail | null;\n refresh: () => Promise<void>;\n}\n\nexport function useCortiEmbeddedStatus(\n ref: React.RefObject<CortiEmbeddedReactRef | null>,\n options: UseCortiEmbeddedStatusOptions = {},\n): UseCortiEmbeddedStatusResult {\n const {\n enabled = true,\n onError,\n shouldRefreshOnEvent = event => {\n const normalized = event.name.toLowerCase();\n if (normalized.includes('getstatus')) return false;\n if (normalized.includes('statusreturned')) return false;\n return true;\n },\n } = options;\n const [status, setStatus] =\n React.useState<UseCortiEmbeddedStatusResult['status']>(null);\n const [isLoading, setIsLoading] = React.useState(false);\n const [error, setError] = React.useState<unknown>(null);\n const [lastEvent, setLastEvent] =\n React.useState<UseCortiEmbeddedStatusResult['lastEvent']>(null);\n const onErrorRef = React.useRef(onError);\n const shouldRefreshOnEventRef = React.useRef(shouldRefreshOnEvent);\n const isRefreshingRef = React.useRef(false);\n\n React.useEffect(() => {\n onErrorRef.current = onError;\n }, [onError]);\n\n React.useEffect(() => {\n shouldRefreshOnEventRef.current = shouldRefreshOnEvent;\n }, [shouldRefreshOnEvent]);\n\n const refresh = React.useCallback(async () => {\n if (!enabled || !ref.current || isRefreshingRef.current) return;\n isRefreshingRef.current = true;\n setIsLoading(true);\n try {\n const nextStatus = await ref.current.getStatus();\n setStatus(nextStatus);\n setError(null);\n } catch (refreshError) {\n setError(refreshError);\n onErrorRef.current?.(refreshError);\n } finally {\n setIsLoading(false);\n isRefreshingRef.current = false;\n }\n }, [enabled, ref]);\n\n React.useEffect(() => {\n if (!enabled || !ref.current) return undefined;\n\n const target = ref.current;\n const handleEvent = (event: Event) => {\n const { detail } = event as CustomEvent<CortiEmbeddedEventDetail>;\n setLastEvent(detail);\n if (!shouldRefreshOnEventRef.current(detail)) return;\n if (isRefreshingRef.current) return;\n refresh();\n };\n\n target.addEventListener('embedded-event', handleEvent);\n return () => target.removeEventListener('embedded-event', handleEvent);\n }, [enabled, ref, refresh]);\n\n return {\n status,\n isLoading,\n error,\n lastEvent,\n refresh,\n };\n}\n\nexport interface UseCortiEmbeddedApiResult {\n auth: (\n ...args: Parameters<CortiEmbeddedReactRef['auth']>\n ) => ReturnType<CortiEmbeddedReactRef['auth']>;\n createInteraction: (\n ...args: Parameters<CortiEmbeddedReactRef['createInteraction']>\n ) => ReturnType<CortiEmbeddedReactRef['createInteraction']>;\n configureSession: (\n ...args: Parameters<CortiEmbeddedReactRef['configureSession']>\n ) => ReturnType<CortiEmbeddedReactRef['configureSession']>;\n addFacts: (\n ...args: Parameters<CortiEmbeddedReactRef['addFacts']>\n ) => ReturnType<CortiEmbeddedReactRef['addFacts']>;\n navigate: (\n ...args: Parameters<CortiEmbeddedReactRef['navigate']>\n ) => ReturnType<CortiEmbeddedReactRef['navigate']>;\n startRecording: (\n ...args: Parameters<CortiEmbeddedReactRef['startRecording']>\n ) => ReturnType<CortiEmbeddedReactRef['startRecording']>;\n stopRecording: (\n ...args: Parameters<CortiEmbeddedReactRef['stopRecording']>\n ) => ReturnType<CortiEmbeddedReactRef['stopRecording']>;\n getStatus: (\n ...args: Parameters<CortiEmbeddedReactRef['getStatus']>\n ) => ReturnType<CortiEmbeddedReactRef['getStatus']>;\n configure: (\n ...args: Parameters<CortiEmbeddedReactRef['configure']>\n ) => ReturnType<CortiEmbeddedReactRef['configure']>;\n getTemplates: (\n ...args: Parameters<CortiEmbeddedReactRef['getTemplates']>\n ) => ReturnType<CortiEmbeddedReactRef['getTemplates']>;\n setCredentials: (\n ...args: Parameters<CortiEmbeddedReactRef['setCredentials']>\n ) => ReturnType<CortiEmbeddedReactRef['setCredentials']>;\n show: (\n ...args: Parameters<CortiEmbeddedReactRef['show']>\n ) => ReturnType<CortiEmbeddedReactRef['show']>;\n hide: (\n ...args: Parameters<CortiEmbeddedReactRef['hide']>\n ) => ReturnType<CortiEmbeddedReactRef['hide']>;\n}\n\nfunction getCortiEmbeddedInstanceFromRefOrThrow(\n ref: React.RefObject<CortiEmbeddedReactRef | null>,\n): CortiEmbeddedReactRef {\n const instance = ref.current;\n if (!instance) {\n throw new Error(\n 'No active corti-embedded instance found for this ref. Mount <CortiEmbeddedReact ref={...} /> first.',\n );\n }\n return instance;\n}\n\nexport function useCortiEmbeddedApi(\n ref: React.RefObject<CortiEmbeddedReactRef | null>,\n): UseCortiEmbeddedApiResult {\n const getInstance = React.useCallback(\n () => getCortiEmbeddedInstanceFromRefOrThrow(ref),\n [ref],\n );\n\n return React.useMemo(\n () => ({\n auth: (...args) => getInstance().auth(...args),\n createInteraction: (...args) => getInstance().createInteraction(...args),\n configureSession: (...args) => getInstance().configureSession(...args),\n addFacts: (...args) => getInstance().addFacts(...args),\n navigate: (...args) => getInstance().navigate(...args),\n startRecording: (...args) => getInstance().startRecording(...args),\n stopRecording: (...args) => getInstance().stopRecording(...args),\n getStatus: (...args) => getInstance().getStatus(...args),\n configure: (...args) => getInstance().configure(...args),\n getTemplates: (...args) => getInstance().getTemplates(...args),\n setCredentials: (...args) => getInstance().setCredentials(...args),\n show: (...args) => getInstance().show(...args),\n hide: (...args) => getInstance().hide(...args),\n }),\n [getInstance],\n );\n}\n\nCortiEmbeddedReact.displayName = 'CortiEmbeddedReact';\n"]}