@aikaara/chat-sdk 1.4.5 → 1.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AikaaraLinkButton-Bu-_kC4m.mjs → AikaaraLinkButton-BRR8kKL8.mjs} +1 -1
- package/dist/{AikaaraLinkButton-8noYZU6k.cjs → AikaaraLinkButton-DoINI2KX.cjs} +1 -1
- package/dist/{AikaaraPaymentLink-Bdhq7MOy.cjs → AikaaraPaymentLink-C-GhGZ4c.cjs} +1 -1
- package/dist/{AikaaraPaymentLink-Bt-ZcRQQ.mjs → AikaaraPaymentLink-C82ApGKH.mjs} +14 -14
- package/dist/{MountTenant-b6kTA3yk.mjs → MountTenant-DOYMoJu4.mjs} +3 -3
- package/dist/{MountTenant-DeboVbWw.cjs → MountTenant-LbcBXsS9.cjs} +3 -3
- package/dist/cdn/aikaara-chat.iife.js +2 -2
- package/dist/headless.cjs +1 -1
- package/dist/headless.mjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/ui.cjs +1 -1
- package/dist/ui.mjs +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./MountTenant-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./MountTenant-LbcBXsS9.cjs");class l extends HTMLElement{shadow;payload=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}setPayload(e){this.payload=e,this.render()}render(){const e=this.payload;this.shadow.innerHTML=`
|
|
2
2
|
<style>
|
|
3
3
|
:host { display: block; margin-top: 8px; }
|
|
4
4
|
button {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y="https://checkout.razorpay.com/v1/checkout.js";let
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y="https://checkout.razorpay.com/v1/checkout.js";let u=null;function f(){return window}class h extends HTMLElement{shadow;payloadData=[];message="";paidIdx={};constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}setPayload(r,t){this.payloadData=Array.isArray(r)?r:[],this.message=t??"",this.render()}render(){const r=this.payloadData.filter(e=>!!e&&typeof e=="object"&&e.type==="link"&&typeof e.url=="string"),t=r.map((e,a)=>{const i=e.name||"Open link",o=!!this.paidIdx[a];return`<button class="link${o?" paid":""}" data-i="${a}" type="button"${o?" disabled":""}><span class="lbl">${k(o?"Paid":i)}</span>`+(o?'<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5 L7 12 L13 5"/></svg>':'<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 11 L11 5 M6 5 H11 V10"/></svg>')+"</button>"}).join("");this.shadow.innerHTML="<style>:host { display:block; margin:6px 0; font-family:inherit; }.bubble { padding:12px 16px; border-radius:14px; background:var(--aikaara-bot-bubble-bg, #d8e5f5); color:var(--aikaara-bot-bubble-text, #1a2845); font-size:14px; line-height:1.55; margin-bottom:10px; }.links { display:flex; flex-direction:column; gap:8px; }.link { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 22px; border:1.5px solid var(--aikaara-primary, #1849a9); background:var(--aikaara-primary, #1849a9); color:var(--aikaara-primary-contrast, #fff); border-radius:24px; font-size:14px; font-weight:600; cursor:pointer; font-family:inherit; text-decoration:none; transition: filter 120ms; width:150px; align-self:flex-start; }.link:hover:not(:disabled) { filter: brightness(0.94); }.link.paid, .link:disabled { background:#e7f5ec; color:#0e7c3a; border-color:#0e7c3a; cursor:default; }.icon { width:13px; height:13px; }</style>"+(this.message?`<div class="bubble">${this.message}</div>`:"")+`<div class="links">${t}</div>`,this.shadow.querySelectorAll(".link").forEach(e=>{e.addEventListener("click",()=>{if(e.disabled)return;const a=Number(e.dataset.i||0),i=r[a];i&&this.handleClick(a,i)})})}handleClick(r,t){const e=b(t),a=f().__aikaara_descriptor__?.razorpay;if(!e||!a?.keyId){_(t.url,t.name||"Pay"),this.dispatchEvent(new CustomEvent("template-action",{detail:{text:t.name||"link-click",attributes:{action:{type:"link",url:t.url,orderId:e||t.orderId,openedIn:"modal"}}},bubbles:!0,composed:!0}));return}w(a.preferredBanksUrl,e,a.preferredBanksMethod,a.preferredBanksHeaders).catch(i=>(console.warn("[payment_link] preferred-banks fetch failed; continuing with default UI",i),[])).then(i=>g().then(()=>this.openRazorpay(r,e,a,i))).catch(i=>{console.error("[payment_link] Razorpay launch failed",i)})}openRazorpay(r,t,e,a){const i=f(),o=i.__aikaara_runtime__?.identity??{},c={key:e.keyId,order_id:t,name:e.name||i.__aikaara_descriptor__?.title||"Payment",prefill:{},handler:()=>{this.paidIdx[r]=!0,this.render()},modal:{ondismiss:()=>{}}};typeof o.mobile=="string"?c.prefill.contact=o.mobile:typeof o.phone=="string"&&(c.prefill.contact=o.phone),typeof o.email=="string"&&(c.prefill.email=o.email),typeof o.name=="string"?c.prefill.name=o.name:typeof o.userName=="string"&&(c.prefill.name=o.userName),Array.isArray(a)&&a.length&&(c.config={display:{blocks:{utib:{name:"Pay Using Preferred Netbanking",instruments:[{method:"netbanking",banks:a}]}},sequence:["block.utib","netbanking","card","upi"],preferences:{show_default_blocks:!0}}});const d=i.Razorpay;if(typeof d!="function")throw new Error("Razorpay Checkout script not available");const s=new d(c);s.on("payment.failed",l=>{console.warn("[payment_link] payment.failed",l?.error)}),s.open()}}function k(n){return String(n??"").replace(/[&<>]/g,r=>r==="&"?"&":r==="<"?"<":">")}function b(n){if(typeof n.orderId=="string"&&n.orderId)return n.orderId;try{const r=new URL(n.url,window.location.origin),t=r.searchParams.get("orderId")||r.searchParams.get("order_id");if(t)return t;if(r.hash&&r.hash.length>1){const e=new URLSearchParams(r.hash.replace(/^#/,"")),a=e.get("orderId")||e.get("order_id");if(a)return a}}catch{}return null}function g(){return typeof f().Razorpay=="function"?Promise.resolve():u||(u=new Promise((n,r)=>{const t=document.querySelector('script[data-aikaara-razorpay="1"]');if(t){t.addEventListener("load",()=>n()),t.addEventListener("error",()=>r(new Error("checkout.js failed to load")));return}const e=document.createElement("script");e.src=y,e.async=!0,e.dataset.aikaaraRazorpay="1",e.onload=()=>n(),e.onerror=()=>{u=null,r(new Error("checkout.js failed to load"))},document.head.appendChild(e)}),u)}function w(n,r,t,e){if(!n)return Promise.resolve([]);const a=String(t||"GET").toUpperCase()==="POST"?"POST":"GET",i=n.includes("{orderId}")?n.replace("{orderId}",encodeURIComponent(r)):n+(n.includes("?")?"&":"?")+"orderId="+encodeURIComponent(r),o=f().__aikaara_runtime__??{};return(typeof o.getSessionToken=="function"?o.getSessionToken():typeof o.getChatJwt=="function"?o.getChatJwt():Promise.resolve(null)).then(d=>{const s={Accept:"application/json",...e??{}};d&&(s.Authorization=`Bearer ${d}`);const l={method:a,headers:s,credentials:"omit"};return a==="POST"&&(s["Content-Type"]="application/json",l.body=JSON.stringify({orderId:r})),fetch(i,l)}).then(d=>{if(!d.ok)throw new Error(`preferred-banks ${d.status}`);return d.json()}).then(d=>{const s=d,l=s?.data&&typeof s.data=="object"&&!Array.isArray(s.data)?s.data:null;return(Array.isArray(d)?d:Array.isArray(s?.banks)?s.banks:Array.isArray(s?.data)?s.data:Array.isArray(l?.preferredPaymentBank)?l.preferredPaymentBank:Array.isArray(l?.banks)?l.banks:[]).map(p=>{if(typeof p=="string")return p;if(p&&typeof p=="object"){const m=p;return m.code||m.bankCode||m.bank_code||null}return null}).filter(p=>!!p)})}function _(n,r){if(!n)return;let t=document.querySelector("aikaara-link-modal");t||(t=document.createElement("aikaara-link-modal"),document.body.appendChild(t)),typeof t.show=="function"?t.show(n,r):window.open(n,"_blank","noopener,noreferrer")}function x(){typeof customElements>"u"||customElements.get("aikaara-template-payment-link")||customElements.define("aikaara-template-payment-link",h)}exports.AikaaraPaymentLink=h;exports.registerAikaaraPaymentLink=x;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const h = "https://checkout.razorpay.com/v1/checkout.js";
|
|
2
|
-
let
|
|
3
|
-
function
|
|
2
|
+
let u = null;
|
|
3
|
+
function f() {
|
|
4
4
|
return window;
|
|
5
5
|
}
|
|
6
6
|
class y extends HTMLElement {
|
|
@@ -32,9 +32,9 @@ class y extends HTMLElement {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
handleClick(r, t) {
|
|
35
|
-
const e = b(t), a =
|
|
35
|
+
const e = b(t), a = f().__aikaara_descriptor__?.razorpay;
|
|
36
36
|
if (!e || !a?.keyId) {
|
|
37
|
-
|
|
37
|
+
x(t.url, t.name || "Pay"), this.dispatchEvent(
|
|
38
38
|
new CustomEvent("template-action", {
|
|
39
39
|
detail: {
|
|
40
40
|
text: t.name || "link-click",
|
|
@@ -53,7 +53,7 @@ class y extends HTMLElement {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
openRazorpay(r, t, e, a) {
|
|
56
|
-
const i =
|
|
56
|
+
const i = f(), o = i.__aikaara_runtime__?.identity ?? {}, c = {
|
|
57
57
|
key: e.keyId,
|
|
58
58
|
order_id: t,
|
|
59
59
|
name: e.name || i.__aikaara_descriptor__?.title || "Payment",
|
|
@@ -71,12 +71,12 @@ class y extends HTMLElement {
|
|
|
71
71
|
typeof o.mobile == "string" ? c.prefill.contact = o.mobile : typeof o.phone == "string" && (c.prefill.contact = o.phone), typeof o.email == "string" && (c.prefill.email = o.email), typeof o.name == "string" ? c.prefill.name = o.name : typeof o.userName == "string" && (c.prefill.name = o.userName), Array.isArray(a) && a.length && (c.config = {
|
|
72
72
|
display: {
|
|
73
73
|
blocks: {
|
|
74
|
-
|
|
75
|
-
name: "Preferred Netbanking",
|
|
76
|
-
instruments: a
|
|
74
|
+
utib: {
|
|
75
|
+
name: "Pay Using Preferred Netbanking",
|
|
76
|
+
instruments: [{ method: "netbanking", banks: a }]
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
|
-
sequence: ["block.
|
|
79
|
+
sequence: ["block.utib", "netbanking", "card", "upi"],
|
|
80
80
|
preferences: { show_default_blocks: !0 }
|
|
81
81
|
}
|
|
82
82
|
});
|
|
@@ -106,7 +106,7 @@ function b(n) {
|
|
|
106
106
|
return null;
|
|
107
107
|
}
|
|
108
108
|
function g() {
|
|
109
|
-
return typeof
|
|
109
|
+
return typeof f().Razorpay == "function" ? Promise.resolve() : u || (u = new Promise((n, r) => {
|
|
110
110
|
const t = document.querySelector('script[data-aikaara-razorpay="1"]');
|
|
111
111
|
if (t) {
|
|
112
112
|
t.addEventListener("load", () => n()), t.addEventListener("error", () => r(new Error("checkout.js failed to load")));
|
|
@@ -114,13 +114,13 @@ function g() {
|
|
|
114
114
|
}
|
|
115
115
|
const e = document.createElement("script");
|
|
116
116
|
e.src = h, e.async = !0, e.dataset.aikaaraRazorpay = "1", e.onload = () => n(), e.onerror = () => {
|
|
117
|
-
|
|
117
|
+
u = null, r(new Error("checkout.js failed to load"));
|
|
118
118
|
}, document.head.appendChild(e);
|
|
119
|
-
}),
|
|
119
|
+
}), u);
|
|
120
120
|
}
|
|
121
121
|
function w(n, r, t, e) {
|
|
122
122
|
if (!n) return Promise.resolve([]);
|
|
123
|
-
const a = String(t || "GET").toUpperCase() === "POST" ? "POST" : "GET", i = n.includes("{orderId}") ? n.replace("{orderId}", encodeURIComponent(r)) : n + (n.includes("?") ? "&" : "?") + "orderId=" + encodeURIComponent(r), o =
|
|
123
|
+
const a = String(t || "GET").toUpperCase() === "POST" ? "POST" : "GET", i = n.includes("{orderId}") ? n.replace("{orderId}", encodeURIComponent(r)) : n + (n.includes("?") ? "&" : "?") + "orderId=" + encodeURIComponent(r), o = f().__aikaara_runtime__ ?? {};
|
|
124
124
|
return (typeof o.getSessionToken == "function" ? o.getSessionToken() : typeof o.getChatJwt == "function" ? o.getChatJwt() : Promise.resolve(null)).then((d) => {
|
|
125
125
|
const s = { Accept: "application/json", ...e ?? {} };
|
|
126
126
|
d && (s.Authorization = `Bearer ${d}`);
|
|
@@ -141,7 +141,7 @@ function w(n, r, t, e) {
|
|
|
141
141
|
}).filter((p) => !!p);
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
function
|
|
144
|
+
function x(n, r) {
|
|
145
145
|
if (!n) return;
|
|
146
146
|
let t = document.querySelector("aikaara-link-modal");
|
|
147
147
|
t || (t = document.createElement("aikaara-link-modal"), document.body.appendChild(t)), typeof t.show == "function" ? t.show(n, r) : window.open(n, "_blank", "noopener,noreferrer");
|
|
@@ -13580,7 +13580,7 @@ class ld extends HTMLElement {
|
|
|
13580
13580
|
gap: 4px;
|
|
13581
13581
|
padding: 10px 14px;
|
|
13582
13582
|
align-self: flex-start;
|
|
13583
|
-
background:
|
|
13583
|
+
background: transparent;
|
|
13584
13584
|
border-radius: var(--aikaara-radius, 12px);
|
|
13585
13585
|
border-bottom-left-radius: 4px;
|
|
13586
13586
|
}
|
|
@@ -14361,7 +14361,7 @@ function yd(a, e = 5e3) {
|
|
|
14361
14361
|
});
|
|
14362
14362
|
}
|
|
14363
14363
|
const vd = {
|
|
14364
|
-
"aikaara-template-payment-link": () => import("./AikaaraPaymentLink-
|
|
14364
|
+
"aikaara-template-payment-link": () => import("./AikaaraPaymentLink-C82ApGKH.mjs").then(({ registerAikaaraPaymentLink: a }) => a())
|
|
14365
14365
|
};
|
|
14366
14366
|
function wd(a) {
|
|
14367
14367
|
const e = `template:${a}`, t = window.__aikaara_descriptor__?.components?.[e];
|
|
@@ -14550,7 +14550,7 @@ class _d extends HTMLElement {
|
|
|
14550
14550
|
*/
|
|
14551
14551
|
mountLinkButton(e) {
|
|
14552
14552
|
const t = this.renderGen;
|
|
14553
|
-
import("./AikaaraLinkButton-
|
|
14553
|
+
import("./AikaaraLinkButton-BRR8kKL8.mjs").then(({ registerAikaaraLinkButton: r, AikaaraLinkButton: o }) => {
|
|
14554
14554
|
if (t !== this.renderGen) return;
|
|
14555
14555
|
r();
|
|
14556
14556
|
const n = document.createElement("aikaara-link-button");
|
|
@@ -455,7 +455,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
455
455
|
gap: 4px;
|
|
456
456
|
padding: 10px 14px;
|
|
457
457
|
align-self: flex-start;
|
|
458
|
-
background:
|
|
458
|
+
background: transparent;
|
|
459
459
|
border-radius: var(--aikaara-radius, 12px);
|
|
460
460
|
border-bottom-left-radius: 4px;
|
|
461
461
|
}
|
|
@@ -743,7 +743,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
743
743
|
<span class="message"></span>
|
|
744
744
|
<button class="dismiss">Dismiss</button>
|
|
745
745
|
</div>
|
|
746
|
-
`,this.container=this.shadow.querySelector(".banner"),this.shadow.querySelector(".dismiss")?.addEventListener("click",()=>this.hide())}show(e,t){const r=this.container.querySelector(".message");r&&(r.textContent=e),this.container.classList.add("visible"),this.dismissTimer&&clearTimeout(this.dismissTimer),t&&(this.dismissTimer=setTimeout(()=>this.hide(),t))}hide(){this.container.classList.remove("visible"),this.dismissTimer&&(clearTimeout(this.dismissTimer),this.dismissTimer=null)}}const Jr=new Map;function Ql(a){const e=Jr.get(a);if(e)return e;const t=new Promise((r,o)=>{const n=document.querySelector(`script[data-aikaara-src="${CSS.escape(a)}"]`);if(n){n.dataset.aikaaraReady==="1"?r():(n.addEventListener("load",()=>r(),{once:!0}),n.addEventListener("error",()=>o(new Error(`Failed to load ${a}`)),{once:!0}));return}const i=document.createElement("script");i.src=a,i.async=!0,i.crossOrigin="anonymous",i.dataset.aikaaraSrc=a,i.addEventListener("load",()=>{i.dataset.aikaaraReady="1",r()},{once:!0}),i.addEventListener("error",()=>{Jr.delete(a),o(new Error(`Failed to load ${a}`))},{once:!0}),document.head.appendChild(i)});return Jr.set(a,t),t}function Nd(a,e=5e3){return new Promise((t,r)=>{const o=setTimeout(()=>r(new Error(`Custom element <${a}> not registered within ${e}ms`)),e);customElements.whenDefined(a).then(()=>{clearTimeout(o),t()})})}const Ud={"aikaara-template-payment-link":()=>Promise.resolve().then(()=>require("./AikaaraPaymentLink-
|
|
746
|
+
`,this.container=this.shadow.querySelector(".banner"),this.shadow.querySelector(".dismiss")?.addEventListener("click",()=>this.hide())}show(e,t){const r=this.container.querySelector(".message");r&&(r.textContent=e),this.container.classList.add("visible"),this.dismissTimer&&clearTimeout(this.dismissTimer),t&&(this.dismissTimer=setTimeout(()=>this.hide(),t))}hide(){this.container.classList.remove("visible"),this.dismissTimer&&(clearTimeout(this.dismissTimer),this.dismissTimer=null)}}const Jr=new Map;function Ql(a){const e=Jr.get(a);if(e)return e;const t=new Promise((r,o)=>{const n=document.querySelector(`script[data-aikaara-src="${CSS.escape(a)}"]`);if(n){n.dataset.aikaaraReady==="1"?r():(n.addEventListener("load",()=>r(),{once:!0}),n.addEventListener("error",()=>o(new Error(`Failed to load ${a}`)),{once:!0}));return}const i=document.createElement("script");i.src=a,i.async=!0,i.crossOrigin="anonymous",i.dataset.aikaaraSrc=a,i.addEventListener("load",()=>{i.dataset.aikaaraReady="1",r()},{once:!0}),i.addEventListener("error",()=>{Jr.delete(a),o(new Error(`Failed to load ${a}`))},{once:!0}),document.head.appendChild(i)});return Jr.set(a,t),t}function Nd(a,e=5e3){return new Promise((t,r)=>{const o=setTimeout(()=>r(new Error(`Custom element <${a}> not registered within ${e}ms`)),e);customElements.whenDefined(a).then(()=>{clearTimeout(o),t()})})}const Ud={"aikaara-template-payment-link":()=>Promise.resolve().then(()=>require("./AikaaraPaymentLink-C-GhGZ4c.cjs")).then(({registerAikaaraPaymentLink:a})=>a())};function Bd(a){const e=`template:${a}`,t=window.__aikaara_descriptor__?.components?.[e];return t&&t.kind==="iife-element"?{render:t.tag,scriptUrl:t.scriptUrl,props:t.props}:window.__aikaara_descriptor__?.templates?.[a]}class Jl extends HTMLElement{shadow;payloadData=null;innerMessage="";renderGen=0;_consumedValues=null;static get observedAttributes(){return["content-type","template-id","message-id"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.addEventListener("template-action",e=>{const t=e.detail,r=this.getAttribute("message-id");if(r&&t?.attributes?.action){const o=$d(t.attributes.action);if(Object.keys(o).length>0)try{localStorage.setItem(`aikaara_form:${r}`,JSON.stringify(o))}catch{}}this.dataset.consumed="true",this._applyConsumedToChildren()})}attributeChangedCallback(){this.render()}setPayload(e,t){this.payloadData=e,t!==void 0&&(this.innerMessage=t),this.render()}setConsumedValues(e){this._consumedValues=e,this._applyConsumedToChildren()}_applyConsumedToChildren(){let e=this._consumedValues;if(!e){const r=this.getAttribute("message-id");if(r)try{const o=localStorage.getItem(`aikaara_form:${r}`);o&&(e=JSON.parse(o))}catch{}}if(e){const r=e;this.querySelectorAll("aikaara-option-list").forEach(o=>{const n=o,i=n.getName?.();i&&r[i]?.length&&n.setPreSelected?.(r[i])})}this.querySelectorAll("aikaara-submit-action, aikaara-modal-action, aikaara-link-button").forEach(r=>{r.style.display="none"});const t=new Set(["aikaara-option-list","aikaara-submit-action","aikaara-modal-action","aikaara-link-button"]);this.querySelectorAll("*").forEach(r=>{if(t.has(r.tagName.toLowerCase()))return;e&&r.setConsumedValues?.(e),r.dataset.consumed="true"})}render(){const e=this.getAttribute("content-type")??"",t=this.getAttribute("template-id")??"";for(this.renderGen+=1,this.shadow.innerHTML=`
|
|
747
747
|
<style>
|
|
748
748
|
:host { display: block; }
|
|
749
749
|
::slotted(*) { display: block; }
|
|
@@ -757,7 +757,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
757
757
|
}
|
|
758
758
|
</style>
|
|
759
759
|
<slot></slot>
|
|
760
|
-
`;this.firstChild;)this.removeChild(this.firstChild);if(!e)return;const r=t?Bd(t):void 0,o=r?.render??(t?`aikaara-template-${t}`:`aikaara-template-${e}`),n=Ud[o];if(n&&!customElements.get(o)?n().then(()=>this.render()).catch(i=>console.warn(`[aikaara-template-renderer] native template ${o} failed to load`,i)):r?.scriptUrl&&!customElements.get(o)&&Ql(r.scriptUrl).then(()=>Nd(o)).then(()=>this.render()).catch(i=>console.warn(`[aikaara-template-renderer] failed to lazy-load ${r.scriptUrl}`,i)),customElements.get(o)){const i=document.createElement(o);if(r?.props){for(const[s,l]of Object.entries(r.props))if(typeof i[s]=="function")try{i[s](l)}catch(c){console.warn(`[aikaara-template-renderer] props.${s} threw on <${o}>`,c)}}i.setPayload?.(this.payloadData,this.innerMessage),this.appendChild(i),this.dataset.consumed==="true"&&(this._consumedValues&&Object.keys(this._consumedValues).length>0&&i.setConsumedValues?.(this._consumedValues),i.dataset.consumed="true");return}if(Array.isArray(this.payloadData)){const i=this.payloadData;if(i.length>0&&i.every(l=>l&&typeof l=="object"&&!Array.isArray(l)&&!("type"in l)&&!("data"in l)&&typeof l.message=="string")){const l=document.createElement("aikaara-option-list");l.setPayload({name:"quick-reply",type:"button",options:i.map(c=>{const u=typeof c.title=="string"?c.title:"",h=c.message;return{label:u||h,value:h}})}),this.appendChild(l);return}for(const l of i)this.mountField(l)}else if(this.payloadData&&typeof this.payloadData=="object"){const i=this.payloadData;typeof i.message=="string"&&(i.okLabel||i.action||i.ok)&&this.mountModal(i)}this.dataset.consumed==="true"&&this._applyConsumedToChildren()}mountField(e){if(!e||typeof e!="object")return;const t=e.type??e.data?.type;if(t==="link"){this.mountLinkButton(e);return}const r=e.data;if(r){if(t==="checkbox"||t==="radio"||t==="button"){const o=document.createElement("aikaara-option-list");o.setPayload({name:r.name??"",title:r.title,options:r.options??[],type:t}),this.appendChild(o);return}if(t==="submit"){const o=document.createElement("aikaara-submit-action"),n=this.getAttribute("message-id")??void 0;o.setPayload({name:r.name??"Submit",action:r.action??{message:r.name??"Submit"},messageId:n}),this.appendChild(o);return}t==="modal"&&this.mountModal({message:r.message??"",okLabel:r.okLabel,cancelLabel:r.cancelLabel,action:r.action})}}mountLinkButton(e){const t=this.renderGen;Promise.resolve().then(()=>require("./AikaaraLinkButton-
|
|
760
|
+
`;this.firstChild;)this.removeChild(this.firstChild);if(!e)return;const r=t?Bd(t):void 0,o=r?.render??(t?`aikaara-template-${t}`:`aikaara-template-${e}`),n=Ud[o];if(n&&!customElements.get(o)?n().then(()=>this.render()).catch(i=>console.warn(`[aikaara-template-renderer] native template ${o} failed to load`,i)):r?.scriptUrl&&!customElements.get(o)&&Ql(r.scriptUrl).then(()=>Nd(o)).then(()=>this.render()).catch(i=>console.warn(`[aikaara-template-renderer] failed to lazy-load ${r.scriptUrl}`,i)),customElements.get(o)){const i=document.createElement(o);if(r?.props){for(const[s,l]of Object.entries(r.props))if(typeof i[s]=="function")try{i[s](l)}catch(c){console.warn(`[aikaara-template-renderer] props.${s} threw on <${o}>`,c)}}i.setPayload?.(this.payloadData,this.innerMessage),this.appendChild(i),this.dataset.consumed==="true"&&(this._consumedValues&&Object.keys(this._consumedValues).length>0&&i.setConsumedValues?.(this._consumedValues),i.dataset.consumed="true");return}if(Array.isArray(this.payloadData)){const i=this.payloadData;if(i.length>0&&i.every(l=>l&&typeof l=="object"&&!Array.isArray(l)&&!("type"in l)&&!("data"in l)&&typeof l.message=="string")){const l=document.createElement("aikaara-option-list");l.setPayload({name:"quick-reply",type:"button",options:i.map(c=>{const u=typeof c.title=="string"?c.title:"",h=c.message;return{label:u||h,value:h}})}),this.appendChild(l);return}for(const l of i)this.mountField(l)}else if(this.payloadData&&typeof this.payloadData=="object"){const i=this.payloadData;typeof i.message=="string"&&(i.okLabel||i.action||i.ok)&&this.mountModal(i)}this.dataset.consumed==="true"&&this._applyConsumedToChildren()}mountField(e){if(!e||typeof e!="object")return;const t=e.type??e.data?.type;if(t==="link"){this.mountLinkButton(e);return}const r=e.data;if(r){if(t==="checkbox"||t==="radio"||t==="button"){const o=document.createElement("aikaara-option-list");o.setPayload({name:r.name??"",title:r.title,options:r.options??[],type:t}),this.appendChild(o);return}if(t==="submit"){const o=document.createElement("aikaara-submit-action"),n=this.getAttribute("message-id")??void 0;o.setPayload({name:r.name??"Submit",action:r.action??{message:r.name??"Submit"},messageId:n}),this.appendChild(o);return}t==="modal"&&this.mountModal({message:r.message??"",okLabel:r.okLabel,cancelLabel:r.cancelLabel,action:r.action})}}mountLinkButton(e){const t=this.renderGen;Promise.resolve().then(()=>require("./AikaaraLinkButton-DoINI2KX.cjs")).then(({registerAikaaraLinkButton:r,AikaaraLinkButton:o})=>{if(t!==this.renderGen)return;r();const n=document.createElement("aikaara-link-button");n.setPayload({name:e.name??"Open",url:e.url??"",openLinkInNewTab:e.openLinkInNewTab,orderId:e.orderId,extra:Fd(e),messageId:this.getAttribute("message-id")??void 0}),this.appendChild(n)})}mountModal(e){const t=document.createElement("aikaara-modal-action");t.setPayload(e),this.appendChild(t)}}const Dd=new Set(["type","url","name","openLinkInNewTab","orderId"]);function Fd(a){const e={};for(const[t,r]of Object.entries(a))Dd.has(t)||(e[t]=r);return e}function $d(a){const e=new Set(["message_id","formAction","requestType","serviceType"]),t={};for(const[r,o]of Object.entries(a))e.has(r)||(Array.isArray(o)&&o.every(n=>typeof n=="string")?t[r]=o:typeof o=="string"&&(t[r]=[o]));return t}class Xl extends HTMLElement{shadow;static get observedAttributes(){return["text","subtext"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}render(){const e=this.getAttribute("text")??this.textContent??"",t=this.getAttribute("subtext")??"";this.shadow.innerHTML=`
|
|
761
761
|
<style>
|
|
762
762
|
:host {
|
|
763
763
|
display: flex;
|
|
@@ -455,7 +455,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
455
455
|
gap: 4px;
|
|
456
456
|
padding: 10px 14px;
|
|
457
457
|
align-self: flex-start;
|
|
458
|
-
background:
|
|
458
|
+
background: transparent;
|
|
459
459
|
border-radius: var(--aikaara-radius, 12px);
|
|
460
460
|
border-bottom-left-radius: 4px;
|
|
461
461
|
}
|
|
@@ -1468,7 +1468,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
1468
1468
|
}
|
|
1469
1469
|
.save-btn:hover { filter: brightness(1.07); }
|
|
1470
1470
|
.save-btn:active { filter: brightness(0.95); }
|
|
1471
|
-
`}}function Pt(a){return a.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Qe(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function wo(){const a=[["aikaara-chat-widget",Al],["aikaara-chat-bubble",Il],["aikaara-chat-header",Tl],["aikaara-message-list",Ol],["aikaara-message-bubble",Rl],["aikaara-chat-input",jl],["aikaara-typing-indicator",Nl],["aikaara-streaming-message",Ul],["aikaara-error-banner",Bl],["aikaara-template-renderer",xd],["aikaara-system-pill",Id],["aikaara-option-list",Td],["aikaara-submit-action",Cd],["aikaara-modal-action",Od],["aikaara-chat",Md],["aikaara-link-modal",Rd],["aikaara-compare-plans",Nd],["aikaara-smart-edit-modal",Ud],["aikaara-schema-form",Fd]];for(const[e,t]of a)customElements.get(e)||customElements.define(e,t)}wo();function Wr(a,e,t=""){if(!e)return t;const r=e.split(".");let o=a;for(const n of r)if(o&&typeof o=="object"&&n in o)o=o[n];else return t;return typeof o=="string"?o:t}function Wl(a){try{const e=a.split(".")[1];if(!e)return 0;const t=JSON.parse(atob(e.replace(/-/g,"+").replace(/_/g,"/")));return typeof t.exp=="number"?t.exp*1e3:0}catch{return 0}}async function qt(a){return typeof a=="function"?await a():a}class zl{constructor(e,t){this.descriptor=e,this.sessionToken=t}cache=null;inflight=null;reset(){this.cache=null,this.inflight=null}prime(e,t={}){if(!e)return;const r=Wl(e)||Date.now()+3600*1e3;this.cache={token:e,requestId:t.requestId??this.cache?.requestId??"",fullName:t.fullName??this.cache?.fullName??"",userId:t.userId??this.cache?.userId??"",expiresAt:r}}async get(){const e=this.descriptor.expiryBufferMs??6e4,t=Date.now();return this.cache&&this.cache.expiresAt>t+e?this.cache:this.inflight?this.inflight:(this.inflight=this.fetchOnce().finally(()=>{this.inflight=null}),this.inflight)}async fetchOnce(){const e=await qt(this.sessionToken),t=this.descriptor.authHeader??"Authorization",r=this.descriptor.authHeaderTemplate??"Bearer {token}",o={accept:"application/json",...this.descriptor.headers??{},[t]:r.replace("{token}",e)},n=this.descriptor.method??"POST",i={method:n,headers:o};n==="POST"&&(o["content-type"]="application/json",i.body=JSON.stringify(this.descriptor.body??{}));const s=await fetch(this.descriptor.endpoint,i);if(!s.ok){const w=await s.text().catch(()=>"");throw new Error(`Session auth failed: ${s.status} ${w.slice(0,200)}`)}const l=await s.json().catch(()=>({})),c=Wr(l,this.descriptor.tokenPath??"data.token"),u=this.descriptor.tokenStripPrefix,h=u?c.replace(new RegExp(`^${u}`,"i"),"").trim():c;if(!h)throw new Error("Session auth response missing token");const p=Wr(l,this.descriptor.requestIdPath??"data.requestId"),g=this.cache?.requestId||p||"",f=Wr(l,this.descriptor.fullNamePath??"data.fullName"),b=Wr(l,this.descriptor.userPath??"data.userId"),y=Wl(h)||Date.now()+3600*1e3;return this.cache={token:h,requestId:g,fullName:f,userId:b,expiresAt:y},this.cache}}async function Vl(a){const e={};for(const t of a.spec){const r=await $d(t,a.providers);if(r!==void 0&&r!=="")e[t.name]=r;else{if(t.required)throw new Error(`[aikaara-chat-sdk] SSO credential "${t.name}" is required but ${t.source}`+(t.key?`[${t.key}]`:"")+" returned no value");t.default!==void 0&&(e[t.name]=t.default)}}return e}async function $d(a,e){const t=a.key??a.name;switch(a.source){case"cookie":return qd(t);case"localStorage":return zr(()=>window.localStorage.getItem(t)??void 0);case"sessionStorage":return zr(()=>window.sessionStorage.getItem(t)??void 0);case"url_param":return zr(()=>new URL(window.location.href).searchParams.get(t)??void 0);case"header_meta":return zr(()=>document.querySelector(`meta[name="${Hd(t)}"]`)?.content??void 0);case"callback":{const r=e?.[a.name];if(!r)return;const o=await r();return typeof o=="string"?o:void 0}default:return}}function qd(a){if(typeof document>"u")return;const e=encodeURIComponent(a),t=document.cookie?document.cookie.split("; "):[];for(const r of t){const o=r.indexOf("=");if(o===-1)continue;const n=r.slice(0,o);if(n===a||n===e)try{return decodeURIComponent(r.slice(o+1))}catch{return r.slice(o+1)}}}function zr(a){try{return a()}catch{return}}function Hd(a){return a.replace(/["\\]/g,"\\$&")}const Wd=1800;class Gl{constructor(e){this.opts=e,this.cache=this.loadCache()}cache=null;inflight=null;reset(){this.cache=null,this.inflight=null,this.clearCache()}async get(e=!1){if(!e){const t=this.cache;if(t&&(!t.expiresAt||t.expiresAt>Date.now()))return t}return this.inflight?this.inflight:(this.inflight=this.exchange().finally(()=>{this.inflight=null}),this.inflight)}async exchange(){if(!this.opts.descriptor.collect||this.opts.descriptor.collect.length===0)throw new Error("[aikaara-chat-sdk] SsoExchangeAdapter.exchange() requires descriptor.sso.collect; v2 partner-token flow should be handled by TokenDiscoveryReader instead.");const e=await Vl({spec:this.opts.descriptor.collect,providers:this.opts.providers}),t=JSON.stringify({credentials:e}),r={accept:"application/json","content-type":"application/json",...this.opts.descriptor.headers??{}};this.opts.descriptor.apiKey&&(r["X-Api-Key"]=this.opts.descriptor.apiKey);const o=this.opts.descriptor.exchangeEndpoint||this.opts.exchangeUrl;if(!o)throw new Error("[aikaara-chat-sdk] SSO exchange URL not resolved — set descriptor.sso.exchangeEndpoint or pass `exchangeUrl` (mountFromSlug derives it from configBase + slug).");const n=await fetch(o,{method:"POST",headers:r,body:t});if(!n.ok){const h=await n.text().catch(()=>"");throw new Error(`SSO exchange failed: ${n.status} ${h.slice(0,240)}`)}const s=(await n.json().catch(()=>({}))).user??{},l=String(s.ext_uid??s.extUid??""),c=String(s.token??s.user_token??s.userToken??"");if(!l)throw new Error("SSO exchange response missing user.ext_uid");if(!c)throw new Error("SSO exchange response missing user.token");const u={id:s.id,extUid:l,userToken:c,email:typeof s.email=="string"?s.email:void 0,displayName:typeof s.display_name=="string"?s.display_name:typeof s.displayName=="string"?s.displayName:void 0,properties:s.properties&&typeof s.properties=="object"?s.properties:void 0,expiresAt:this.computeExpiry()};return this.cache=u,this.persistCache(u),u}computeExpiry(){const e=this.opts.descriptor.cacheTtlSec??Wd;if(!(!this.opts.descriptor.cacheKey||e<=0))return Date.now()+e*1e3}loadCache(){const e=this.opts.descriptor.cacheKey;if(!e)return null;try{const t=window.localStorage.getItem(e);if(!t)return null;const r=JSON.parse(t);return r.expiresAt&&r.expiresAt<Date.now()?(window.localStorage.removeItem(e),null):r}catch{return null}}persistCache(e){const t=this.opts.descriptor.cacheKey;if(t)try{window.localStorage.setItem(t,JSON.stringify(e))}catch{}}clearCache(){const e=this.opts.descriptor.cacheKey;if(e)try{window.localStorage.removeItem(e)}catch{}}}const zd=3e4,Vd=2e3,Gd=100;async function Kl(a){const{descriptor:e}=a,t=e.tokenSourceConfig??{};switch(e.tokenSource){case"init":{if(!a.initToken)throw new Ke("init","No init token supplied to Aikaara.init({token})");return{token:a.initToken,source:"init"}}case"query":{const r=typeof t.key=="string"&&t.key?t.key:"token",o=Kd(r);if(!o)throw new Ke("query",`?${r}= not present`);return{token:o,source:"query"}}case"hash":{const r=typeof t.key=="string"&&t.key?t.key:"token",o=Yd(r);if(!o)throw new Ke("hash",`#${r}= not present`);return{token:o,source:"hash"}}case"postmsg":{const r=typeof t.type=="string"?t.type:"",o=typeof t.key=="string"&&t.key?t.key:"token",n=ef(typeof t.origins=="string"?t.origins:""),i=typeof t.timeoutMs=="number"&&t.timeoutMs>0?t.timeoutMs:zd;return{token:await Zd({type:r,key:o,origins:n,timeoutMs:i}),source:"postmsg"}}case"cookie":{const r=typeof t.name=="string"&&t.name?t.name:"";if(!r)throw new Ke("cookie","cookie.name not configured");const o=Qd(r);if(!o)throw new Ke("cookie",`cookie "${r}" not set`);return{token:o,source:"cookie"}}case"storage":{const r=t.store==="session"?"session":"local",o=typeof t.key=="string"&&t.key?t.key:"",n=typeof t.path=="string"?t.path:"";if(!o)throw new Ke("storage","storage.key not configured");const i=Jd(r,o,n);if(!i)throw new Ke("storage",`${r}Storage["${o}"] not set`);return{token:i,source:"storage"}}case"global":{const r=typeof t.path=="string"?t.path:"";if(!r)throw new Ke("global","global.path not configured");const o=typeof t.timeoutMs=="number"&&t.timeoutMs>0?t.timeoutMs:Vd,n=typeof t.intervalMs=="number"&&t.intervalMs>0?t.intervalMs:Gd,i=await Xd(r,o,n);if(!i)throw new Ke("global",`window.${r} not present`);return{token:i,source:"global"}}default:{const r=e.tokenSource;throw new Ke("unknown",`Unknown tokenSource ${JSON.stringify(r)}`)}}}class Yl{constructor(e){this.opts=e}cached=null;get descriptor(){return this.opts.descriptor}async get(){if(this.cached)return this.cached;const e=await Kl(this.opts);return this.cached=e,e}async refresh(){return this.opts.descriptor.tokenSource==="init"?this.cached?this.cached:this.get():(this.cached=null,this.get())}}class Ke extends Error{constructor(e,t){super(`[aikaara-chat-sdk] token-discovery (${e}): ${t}`),this.source=e,this.name="TokenDiscoveryError"}}function Kd(a){if(!(typeof window>"u"))try{const e=window.location.search.slice(1);for(const t of e.split("&")){const r=t.indexOf("=");if(r!==-1&&decodeURIComponent(t.slice(0,r))===a)return decodeURIComponent(t.slice(r+1))}return}catch{return}}function Yd(a){if(!(typeof window>"u"))try{const e=window.location.hash.replace(/^#/,"");return new URLSearchParams(e).get(a)??void 0}catch{return}}function Qd(a){if(typeof document>"u")return;const e=encodeURIComponent(a),t=document.cookie?document.cookie.split("; "):[];for(const r of t){const o=r.indexOf("=");if(o===-1)continue;const n=r.slice(0,o);if(n===a||n===e)try{return decodeURIComponent(r.slice(o+1))}catch{return r.slice(o+1)}}}function Jd(a,e,t){if(!(typeof window>"u"))try{const o=(a==="session"?window.sessionStorage:window.localStorage).getItem(e);if(o==null)return;if(!t)return o;let n;try{n=JSON.parse(o)}catch{return o}const i=Ql(n,t);return typeof i=="string"?i:void 0}catch{return}}async function Xd(a,e,t){if(typeof window>"u")return;const r=Date.now()+e;for(;Date.now()<r;){const o=Ql(window,a);if(typeof o=="string"&&o.length>0)return o;if(typeof o=="function")try{const n=o();if(typeof n=="string"&&n.length>0)return n}catch{}await new Promise(n=>setTimeout(n,t))}}function Zd(a){return new Promise((e,t)=>{if(typeof window>"u"){t(new Ke("postmsg","no window"));return}const r=()=>{window.removeEventListener("message",n),clearTimeout(o)},o=setTimeout(()=>{r(),t(new Ke("postmsg",`timeout after ${a.timeoutMs}ms`))},a.timeoutMs),n=i=>{if(a.origins.length>0&&!a.origins.includes(i.origin))return;const s=i.data;if(!s||typeof s!="object")return;const l=s;if(a.type&&l.type!==a.type)return;const c=l[a.key];typeof c=="string"&&c.length>0&&(r(),e(c))};window.addEventListener("message",n)})}function ef(a){return a?a.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean):[]}function Ql(a,e){if(!e)return a;const t=e.split(".").filter(Boolean);let r=a;for(const o of t)if(r&&typeof r=="object"&&o in r)r=r[o];else return;return r}function tf(){const a=typeof crypto<"u"?crypto:null;if(a?.randomUUID)return a.randomUUID();if(a?.getRandomValues){const e=new Uint8Array(16);a.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=[...e].map(r=>r.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}const rf="aikaara_chat:requestId";function _o(a,e,t){const r=`${rf}:${a}:${e}`;return t?`${r}:${t}`:r}function Jl(a,e,t){try{return localStorage.getItem(_o(a,e,t))}catch{return null}}function nf(a,e,t,r){try{localStorage.setItem(_o(a,e,r),t)}catch{}}function of(a,e,t){try{localStorage.removeItem(_o(a,e,t))}catch{}}async function ko(a,e,t="before-chat"){const r=a.filter(u=>(u.trigger??"before-chat")===t);console.log("[aikaara-chat-sdk] preflight running",r.length,"steps",`(trigger=${t})`);const o={userId:e.userId,projectId:e.projectId,slug:e.slug};if(e.identity)for(const[u,h]of Object.entries(e.identity))typeof h=="string"&&(o[u]=h);typeof e.serviceType=="string"&&(o.serviceType=e.serviceType),typeof e.userType=="string"&&(o.userType=e.userType);const n=u=>u.replace(/\{(\w+)\}/g,(h,p)=>p in o?o[p]:""),i=u=>{if(typeof u=="string")return n(u);if(Array.isArray(u))return u.map(i);if(u&&typeof u=="object"){const h={};for(const[p,g]of Object.entries(u))h[p]=i(g);return h}return u},s=await qt(e.sessionToken),l={},c=[800,1500,3e3,5e3,8e3];for(let u=0;u<r.length;u++){const h=r[u],p=n(h.url),g=h.method??(h.body?"POST":"GET"),f={accept:"application/json",...h.headers??{}};if((h.authHeader??"session")==="session"){const x=h.authHeaderTemplate??"Bearer {token}";f.authorization=x.replace("{token}",s)}const b={method:g,headers:f};h.body&&(f["content-type"]="application/json",b.body=JSON.stringify(i(h.body)));let y=0,w="",m=0,_=null;for(;;)try{const x=await fetch(p,b);if(x.ok){_=x;break}if(y=x.status,w=await x.text().catch(()=>""),m<c.length&&af(y,w)){const E=c[m++];console.warn(`[aikaara-chat-sdk] preflight #${u} ${g} ${p} → ${y} (transient). Retry #${m} in ${E}ms.`),await new Promise(S=>setTimeout(S,E));continue}const v=`Preflight #${u} ${g} ${p} → ${y} ${w.slice(0,200)}`;if(h.soft){console.warn("[aikaara-chat-sdk]",v);break}throw new Error(v)}catch(x){if(m<c.length){const v=c[m++];console.warn(`[aikaara-chat-sdk] preflight #${u} threw, retry #${m} in ${v}ms`,x),await new Promise(E=>setTimeout(E,v));continue}if(h.soft){console.warn(`[aikaara-chat-sdk] preflight #${u} soft-failed:`,x);break}throw x}if(_&&h.capture&&h.capture.as)try{const x=await _.clone().text();let v=x;try{v=JSON.parse(x)}catch{}if(h.capture.path)for(const E of h.capture.path.split("."))if(v&&typeof v=="object"&&E in v)v=v[E];else{v=void 0;break}if(typeof v=="string"&&v.length>0){let E=v;h.capture.stripPrefix&&E.startsWith(h.capture.stripPrefix)&&(E=E.slice(h.capture.stripPrefix.length)),l[h.capture.as]=E,o[h.capture.as]=E,console.log(`[aikaara-chat-sdk] preflight #${u} captured ${h.capture.as} (${E.slice(0,24)}…)`)}}catch(x){console.warn(`[aikaara-chat-sdk] preflight #${u} capture failed`,x)}}return{captured:l}}async function sf(a){const e=a.steps??[];return e.some(r=>r.trigger==="on-method-select")?(await ko(e,{sessionToken:a.sessionToken,userId:a.userId,projectId:a.projectId??"",slug:a.slug??"",identity:a.identity,serviceType:a.serviceType,userType:a.userType},"on-method-select")).captured:{}}function af(a,e){if(a===503||a===504||a===502)return!0;if(a===401||a===403)return e.trim().length===0;if(a===500){const t=e.toLowerCase();return t.includes("customernew")||t.includes("is null")||t.includes("not yet ready")}return!1}async function Xl(a,e){const t=await fetch(a,{method:"GET",headers:{accept:"application/json",...e??{}}});if(!t.ok){const o=await t.text().catch(()=>"");throw new Error(`Widget config fetch failed: ${t.status} ${t.statusText} ${o.slice(0,200)}`)}const r=await t.json();if(r&&typeof r=="object"){if("config"in r)return r.config;if("data"in r)return r.data}return r}function Zl(a,e){return a.replace("{projectId}",e).replace("{uuid}",tf().replace(/-/g,""))}function ec(a){const e=a._preload;if(!Array.isArray(e)||e.length===0)return;const t=Array.from(new Set(e.map(r=>r&&typeof r=="object"?r.scriptUrl:null).filter(r=>typeof r=="string"&&r.length>0)));t.length!==0&&Promise.allSettled(t.map(r=>Dl(r)))}async function tc(a){const e={...a.config??(a.configUrl?await Xl(a.configUrl,a.configHeaders):{}),...a.overrides??{}};ec(e);const t=e.transport??"tiledesk",r=e.tiledesk;if((t==="tiledesk"||t==="dual")&&!r)throw new Error("mount: descriptor.tiledesk is required for tiledesk/dual transport");const o=r?.projectId??"",n=a.identity.userId,i=a.conversationScope||void 0,s=a.forceNewConversation?null:Jl(n,o,i),l=r?.requestIdTemplate??"support-group-{projectId}-{uuid}",c=a.conversationId??s??Zl(l,o);(a.conversationId||!s||a.forceNewConversation)&&o&&nf(n,o,c,i);const u=await a.tokenProvider(),h=a.tokenProvider,p=a.historyTokenProvider??h,g=r?{mqttEndpoint:r.mqttEndpoint,jwtToken:u,userId:n,userName:a.identity.userName,projectId:r.projectId,appId:r.appId,mqttUsername:r.mqttUsername,protocolId:r.protocolId,protocolVersion:r.protocolVersion,keepAliveSec:r.keepAliveSec,connectTimeoutMs:r.connectTimeoutMs,maxReconnectAttempts:r.maxReconnectAttempts,reconnectMaxDelayMs:r.reconnectMaxDelayMs,wildcardSubscribe:r.wildcardSubscribe,enablePresence:r.enablePresence,autoInitiateOnEmpty:r.autoInitiateOnEmpty,chatInitiatedAttributes:r.chatInitiatedAttributes,messageDefaults:{...r.messageDefaults,...a.identity.departmentId?{departmentId:a.identity.departmentId}:r.messageDefaults?.departmentId?{departmentId:r.messageDefaults.departmentId}:{}},fileTemplate:r.fileTemplate,topicTemplates:r.topicTemplates,debug:r.debug,senderFullname:a.identity.senderFullname??a.identity.userName,tokenProvider:h}:void 0,f=a.uploadAdapter??(e.uploadEndpoint?fo({endpoint:e.uploadEndpoint,fieldName:e.uploadFieldName,extraFields:e.uploadExtraFields}):void 0),b=a.historyAdapter??(e.historyApiBase?wl({apiBase:e.historyApiBase,pageSize:e.historyPageSize??200,pathTemplate:e.historyPathTemplate,extraHeaders:e.historyHeaders,getToken:p}):void 0),y={transport:t,baseUrl:"",userToken:a.userToken??n,conversationId:c,display:e.display??"embed",position:e.position,primaryColor:e.theme?.primary??e.primaryColor,title:e.title,subtitle:e.subtitle,avatarUrl:e.avatarUrl,width:e.width,height:e.height,borderRadius:e.theme?.radius??e.borderRadius,fontFamily:e.theme?.font??e.fontFamily,themeTokens:e.theme,linkHandlers:e.linkHandlers,getLinkBearer:a.getLinkBearer,welcomeMessage:e.welcomeMessage,placeholder:e.placeholder,showTimestamps:e.showTimestamps,persistConversation:e.persistConversation,showHeader:e.showHeader,hideSystemMessages:e.hideSystemMessages,timestampFormat:e.timestampFormat,input:e.input,templateLayout:e.templateLayout,chatActions:e.chatActions,tiledesk:g,tiledeskIdentity:{userId:n,userName:a.identity.userName,departmentId:a.identity.departmentId,senderFullname:a.identity.senderFullname??a.identity.userName},templateActionAttributes:e.templateActionAttributes,uploadAdapter:f,historyAdapter:b,onError:a.onError,onMessage:a.onMessage},w=document.createElement("aikaara-chat-widget");return w.configure(y),y.title&&w.setAttribute("title",y.title),y.primaryColor&&w.setAttribute("primary-color",y.primaryColor),y.display&&w.setAttribute("display",y.display),y.display==="embed"&&(w.style.cssText="display:flex;flex-direction:column;width:100%;height:100%;min-height:0;--aikaara-close-btn-display:none;"),a.container.appendChild(w),{widget:w,requestId:c,config:y,destroy(){w.remove()}}}function lf(a){if(typeof a!="string")return a;const e=document.querySelector(a);if(!e)throw new Error(`mountFromSlug: container "${a}" not found`);return e}async function rc(a){const e=(a.configBase??"https://api.aikaara.com").replace(/\/$/,""),t=`${e}/api/v1/widget_configs/${encodeURIComponent(a.slug)}`;let r=null;try{r=await Xl(t,a.configHeaders)}catch(I){if(!a.fallbackConfig)throw I;console.warn(`[aikaara-chat-sdk] Widget config fetch failed for slug "${a.slug}" — using fallbackConfig.`,I)}const o={...a.fallbackConfig??{},...r??{},...a.overrides??{}};if(ec(o),o.templates&&Object.keys(o.templates).length>0){o.components={...o.components??{}};for(const[I,P]of Object.entries(o.templates)){const O=`template:${I}`;o.components[O]||!P?.scriptUrl||!P?.render||(o.components[O]={kind:"iife-element",scriptUrl:P.scriptUrl,tag:P.render,...P.props?{props:P.props}:{}})}}const n=window;if(n.__aikaara_descriptor__={...n.__aikaara_descriptor__??{},templates:o.templates,components:o.components,razorpay:o.razorpay,title:o.title,cloud:o.cloud??n.__aikaara_descriptor__?.cloud,upload:o.upload??n.__aikaara_descriptor__?.upload,themeSource:o.themeSource??n.__aikaara_descriptor__?.themeSource,api:o.api,auth:o.auth},!o.auth)throw new Error(`mountFromSlug: widget_configs/${a.slug} descriptor must include "auth" block`);let i=null,s=a.user.id,l=a.user.name,c="",u=a.user.token,h=null;const p=await qt(a.user.token).catch(()=>""),g=typeof p=="string"&&p.length>0;if(!g&&o.sso?.tokenSource){h=new Yl({descriptor:{provider:o.sso.provider,flow:o.sso.flow,skipLogin:o.sso.skipLogin,autoRefresh:o.sso.autoRefresh,tokenSource:o.sso.tokenSource,tokenSourceConfig:o.sso.tokenSourceConfig,fallback:o.sso.fallback,map:o.sso.map},initToken:a.user.partnerToken});const I=await h.get();u=async()=>(await h.get()).token,a.user.identity&&!a.user.identity.partnerToken&&(a.user.identity.partnerToken=I.token)}else if(!g&&o.sso&&o.sso.collect&&o.sso.collect.length>0){const I=`${e}/api/v1/projects/by-slug/${encodeURIComponent(a.slug)}/sso_exchange`;i=await new Gl({descriptor:o.sso,providers:a.user.credentialProviders,exchangeUrl:I}).get(),s=i.extUid||s,l=l??i.displayName,c=i.userToken}let f="",b="";if(o.preflight&&o.preflight.length){const I=await ko(o.preflight,{sessionToken:u,userId:s,projectId:o.tiledesk?.projectId??"",slug:a.slug,identity:a.user.identity});if(I.captured.sessionToken){f=I.captured.sessionToken;const P=f;u=()=>P}I.captured.userId&&(s=I.captured.userId),I.captured.requestId&&(b=I.captured.requestId)}const y=new zl(o.auth,u);if(f){const I=o.tiledesk?.projectId??"",P=I?Jl(s,I):null,O=o.tiledesk?.requestIdTemplate??"support-group-{projectId}-{uuid}",N=P??(I?Zl(O,I):"");y.prime(f,{requestId:N,fullName:l})}const w=await y.get();s=s||w.userId;const m=w.fullName||l||s;window.__aikaara_runtime__={getChatJwt:async()=>(await y.get()).token,getSessionToken:()=>qt(a.user.token),identity:a.user.identity,slug:a.slug,configBase:e};const _=h&&o.sso?.autoRefresh?async()=>{try{return await h.refresh(),y.reset(),(await y.get()).token}catch(I){return console.warn("[aikaara-chat-sdk] partner auto-refresh failed",I),null}}:null,x=o.upload,v=async()=>`Bearer ${x&&"tokenSource"in x&&x.tokenSource==="chat"?(await y.get()).token:await qt(a.user.token)}`,E=a.hooks?.upload??(x&&x.mode==="presigned-3step"?vl({...x,authHeader:v}):x&&x.mode==="direct"?fo({endpoint:x.endpoint,fieldName:x.fieldName,extraFields:x.extraFields,headers:async()=>({authorization:await v()})}):void 0),S=await tc({container:lf(a.container),config:o,userToken:c||void 0,identity:{userId:s,userName:m,departmentId:a.user.departmentId,senderFullname:m},tokenProvider:async()=>(await y.get()).token,historyTokenProvider:async()=>(await y.get()).token,uploadAdapter:E,historyAdapter:a.hooks?.history,conversationId:w.requestId||b||void 0,conversationScope:a.conversationScope,onError:a.hooks?.onError,onMessage:a.hooks?.onMessage,getLinkBearer:async I=>I==="none"?null:I==="chat"?(await y.get()).token:qt(a.user.token)});return Object.assign(S,{fullName:m,requestId:w.requestId,descriptor:o,async refreshAuth(){y.reset(),await y.get()},async refreshPartnerAuth(){return _?_():null},async runMethodSelectPreflight(I){const P=o.preflight;return!P||!P.length?{}:P.some(N=>N.trigger==="on-method-select")?(await ko(P,{sessionToken:u,userId:s,projectId:o.tiledesk?.projectId??"",slug:a.slug,identity:{...a.user.identity??{},...I?.identity??{}},serviceType:I?.serviceType,userType:I?.userType},"on-method-select")).captured:{}}})}function cf(a){wo();const e=document.createElement("aikaara-chat-widget"),t={baseUrl:"base-url",userToken:"user-token",apiKey:"api-key",title:"title",subtitle:"subtitle",theme:"theme",primaryColor:"primary-color",position:"position",width:"width",height:"height",placeholder:"placeholder",welcomeMessage:"welcome-message",avatarUrl:"avatar-url"};for(const[r,o]of Object.entries(t)){const n=a[r];n!=null&&e.setAttribute(o,String(n))}return e.configure(a),document.body.appendChild(e),e}function uf(){const a=document.querySelector("aikaara-chat-widget");a&&a.remove()}const hf="https://checkout.razorpay.com/v1/checkout.js";let Zt=null;function Vr(){return window}class nc extends HTMLElement{shadow;payloadData=[];message="";paidIdx={};constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}setPayload(e,t){this.payloadData=Array.isArray(e)?e:[],this.message=t??"",this.render()}render(){const e=this.payloadData.filter(r=>!!r&&typeof r=="object"&&r.type==="link"&&typeof r.url=="string"),t=e.map((r,o)=>{const n=r.name||"Open link",i=!!this.paidIdx[o];return`<button class="link${i?" paid":""}" data-i="${o}" type="button"${i?" disabled":""}><span class="lbl">${df(i?"Paid":n)}</span>`+(i?'<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5 L7 12 L13 5"/></svg>':'<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 11 L11 5 M6 5 H11 V10"/></svg>')+"</button>"}).join("");this.shadow.innerHTML="<style>:host { display:block; margin:6px 0; font-family:inherit; }.bubble { padding:12px 16px; border-radius:14px; background:var(--aikaara-bot-bubble-bg, #d8e5f5); color:var(--aikaara-bot-bubble-text, #1a2845); font-size:14px; line-height:1.55; margin-bottom:10px; }.links { display:flex; flex-direction:column; gap:8px; }.link { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 22px; border:1.5px solid var(--aikaara-primary, #1849a9); background:var(--aikaara-primary, #1849a9); color:var(--aikaara-primary-contrast, #fff); border-radius:24px; font-size:14px; font-weight:600; cursor:pointer; font-family:inherit; text-decoration:none; transition: filter 120ms; width:150px; align-self:flex-start; }.link:hover:not(:disabled) { filter: brightness(0.94); }.link.paid, .link:disabled { background:#e7f5ec; color:#0e7c3a; border-color:#0e7c3a; cursor:default; }.icon { width:13px; height:13px; }</style>"+(this.message?`<div class="bubble">${this.message}</div>`:"")+`<div class="links">${t}</div>`,this.shadow.querySelectorAll(".link").forEach(r=>{r.addEventListener("click",()=>{if(r.disabled)return;const o=Number(r.dataset.i||0),n=e[o];n&&this.handleClick(o,n)})})}handleClick(e,t){const r=ff(t),o=Vr().__aikaara_descriptor__?.razorpay;if(!r||!o?.keyId){gf(t.url,t.name||"Pay"),this.dispatchEvent(new CustomEvent("template-action",{detail:{text:t.name||"link-click",attributes:{action:{type:"link",url:t.url,orderId:r||t.orderId,openedIn:"modal"}}},bubbles:!0,composed:!0}));return}mf(o.preferredBanksUrl,r,o.preferredBanksMethod,o.preferredBanksHeaders).catch(n=>(console.warn("[payment_link] preferred-banks fetch failed; continuing with default UI",n),[])).then(n=>pf().then(()=>this.openRazorpay(e,r,o,n))).catch(n=>{console.error("[payment_link] Razorpay launch failed",n)})}openRazorpay(e,t,r,o){const n=Vr(),i=n.__aikaara_runtime__?.identity??{},s={key:r.keyId,order_id:t,name:r.name||n.__aikaara_descriptor__?.title||"Payment",prefill:{},handler:()=>{this.paidIdx[e]=!0,this.render()},modal:{ondismiss:()=>{}}};typeof i.mobile=="string"?s.prefill.contact=i.mobile:typeof i.phone=="string"&&(s.prefill.contact=i.phone),typeof i.email=="string"&&(s.prefill.email=i.email),typeof i.name=="string"?s.prefill.name=i.name:typeof i.userName=="string"&&(s.prefill.name=i.userName),Array.isArray(o)&&o.length&&(s.config={display:{blocks:{preferred_banks:{name:"Preferred Netbanking",instruments:o}},sequence:["block.preferred_banks","netbanking","card","upi"],preferences:{show_default_blocks:!0}}});const l=n.Razorpay;if(typeof l!="function")throw new Error("Razorpay Checkout script not available");const c=new l(s);c.on("payment.failed",u=>{console.warn("[payment_link] payment.failed",u?.error)}),c.open()}}function df(a){return String(a??"").replace(/[&<>]/g,e=>e==="&"?"&":e==="<"?"<":">")}function ff(a){if(typeof a.orderId=="string"&&a.orderId)return a.orderId;try{const e=new URL(a.url,window.location.origin),t=e.searchParams.get("orderId")||e.searchParams.get("order_id");if(t)return t;if(e.hash&&e.hash.length>1){const r=new URLSearchParams(e.hash.replace(/^#/,"")),o=r.get("orderId")||r.get("order_id");if(o)return o}}catch{}return null}function pf(){return typeof Vr().Razorpay=="function"?Promise.resolve():Zt||(Zt=new Promise((a,e)=>{const t=document.querySelector('script[data-aikaara-razorpay="1"]');if(t){t.addEventListener("load",()=>a()),t.addEventListener("error",()=>e(new Error("checkout.js failed to load")));return}const r=document.createElement("script");r.src=hf,r.async=!0,r.dataset.aikaaraRazorpay="1",r.onload=()=>a(),r.onerror=()=>{Zt=null,e(new Error("checkout.js failed to load"))},document.head.appendChild(r)}),Zt)}function mf(a,e,t,r){if(!a)return Promise.resolve([]);const o=String(t||"GET").toUpperCase()==="POST"?"POST":"GET",n=a.includes("{orderId}")?a.replace("{orderId}",encodeURIComponent(e)):a+(a.includes("?")?"&":"?")+"orderId="+encodeURIComponent(e),i=Vr().__aikaara_runtime__??{};return(typeof i.getSessionToken=="function"?i.getSessionToken():typeof i.getChatJwt=="function"?i.getChatJwt():Promise.resolve(null)).then(l=>{const c={Accept:"application/json",...r??{}};l&&(c.Authorization=`Bearer ${l}`);const u={method:o,headers:c,credentials:"omit"};return o==="POST"&&(c["Content-Type"]="application/json",u.body=JSON.stringify({orderId:e})),fetch(n,u)}).then(l=>{if(!l.ok)throw new Error(`preferred-banks ${l.status}`);return l.json()}).then(l=>{const c=l,u=c?.data&&typeof c.data=="object"&&!Array.isArray(c.data)?c.data:null;return(Array.isArray(l)?l:Array.isArray(c?.banks)?c.banks:Array.isArray(c?.data)?c.data:Array.isArray(u?.preferredPaymentBank)?u.preferredPaymentBank:Array.isArray(u?.banks)?u.banks:[]).map(p=>{if(typeof p=="string")return p;if(p&&typeof p=="object"){const g=p;return g.code||g.bankCode||g.bank_code||null}return null}).filter(p=>!!p)})}function gf(a,e){if(!a)return;let t=document.querySelector("aikaara-link-modal");t||(t=document.createElement("aikaara-link-modal"),document.body.appendChild(t)),typeof t.show=="function"?t.show(a,e):window.open(a,"_blank","noopener,noreferrer")}function bf(){typeof customElements>"u"||customElements.get("aikaara-template-payment-link")||customElements.define("aikaara-template-payment-link",nc)}const yf=Object.freeze(Object.defineProperty({__proto__:null,AikaaraPaymentLink:nc,registerAikaaraPaymentLink:bf},Symbol.toStringTag,{value:"Module"}));class ic extends HTMLElement{shadow;payload=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}setPayload(e){this.payload=e,this.render()}render(){const e=this.payload;this.shadow.innerHTML=`
|
|
1471
|
+
`}}function Pt(a){return a.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Qe(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function wo(){const a=[["aikaara-chat-widget",Al],["aikaara-chat-bubble",Il],["aikaara-chat-header",Tl],["aikaara-message-list",Ol],["aikaara-message-bubble",Rl],["aikaara-chat-input",jl],["aikaara-typing-indicator",Nl],["aikaara-streaming-message",Ul],["aikaara-error-banner",Bl],["aikaara-template-renderer",xd],["aikaara-system-pill",Id],["aikaara-option-list",Td],["aikaara-submit-action",Cd],["aikaara-modal-action",Od],["aikaara-chat",Md],["aikaara-link-modal",Rd],["aikaara-compare-plans",Nd],["aikaara-smart-edit-modal",Ud],["aikaara-schema-form",Fd]];for(const[e,t]of a)customElements.get(e)||customElements.define(e,t)}wo();function Wr(a,e,t=""){if(!e)return t;const r=e.split(".");let o=a;for(const n of r)if(o&&typeof o=="object"&&n in o)o=o[n];else return t;return typeof o=="string"?o:t}function Wl(a){try{const e=a.split(".")[1];if(!e)return 0;const t=JSON.parse(atob(e.replace(/-/g,"+").replace(/_/g,"/")));return typeof t.exp=="number"?t.exp*1e3:0}catch{return 0}}async function qt(a){return typeof a=="function"?await a():a}class zl{constructor(e,t){this.descriptor=e,this.sessionToken=t}cache=null;inflight=null;reset(){this.cache=null,this.inflight=null}prime(e,t={}){if(!e)return;const r=Wl(e)||Date.now()+3600*1e3;this.cache={token:e,requestId:t.requestId??this.cache?.requestId??"",fullName:t.fullName??this.cache?.fullName??"",userId:t.userId??this.cache?.userId??"",expiresAt:r}}async get(){const e=this.descriptor.expiryBufferMs??6e4,t=Date.now();return this.cache&&this.cache.expiresAt>t+e?this.cache:this.inflight?this.inflight:(this.inflight=this.fetchOnce().finally(()=>{this.inflight=null}),this.inflight)}async fetchOnce(){const e=await qt(this.sessionToken),t=this.descriptor.authHeader??"Authorization",r=this.descriptor.authHeaderTemplate??"Bearer {token}",o={accept:"application/json",...this.descriptor.headers??{},[t]:r.replace("{token}",e)},n=this.descriptor.method??"POST",i={method:n,headers:o};n==="POST"&&(o["content-type"]="application/json",i.body=JSON.stringify(this.descriptor.body??{}));const s=await fetch(this.descriptor.endpoint,i);if(!s.ok){const w=await s.text().catch(()=>"");throw new Error(`Session auth failed: ${s.status} ${w.slice(0,200)}`)}const l=await s.json().catch(()=>({})),c=Wr(l,this.descriptor.tokenPath??"data.token"),u=this.descriptor.tokenStripPrefix,h=u?c.replace(new RegExp(`^${u}`,"i"),"").trim():c;if(!h)throw new Error("Session auth response missing token");const p=Wr(l,this.descriptor.requestIdPath??"data.requestId"),g=this.cache?.requestId||p||"",f=Wr(l,this.descriptor.fullNamePath??"data.fullName"),b=Wr(l,this.descriptor.userPath??"data.userId"),y=Wl(h)||Date.now()+3600*1e3;return this.cache={token:h,requestId:g,fullName:f,userId:b,expiresAt:y},this.cache}}async function Vl(a){const e={};for(const t of a.spec){const r=await $d(t,a.providers);if(r!==void 0&&r!=="")e[t.name]=r;else{if(t.required)throw new Error(`[aikaara-chat-sdk] SSO credential "${t.name}" is required but ${t.source}`+(t.key?`[${t.key}]`:"")+" returned no value");t.default!==void 0&&(e[t.name]=t.default)}}return e}async function $d(a,e){const t=a.key??a.name;switch(a.source){case"cookie":return qd(t);case"localStorage":return zr(()=>window.localStorage.getItem(t)??void 0);case"sessionStorage":return zr(()=>window.sessionStorage.getItem(t)??void 0);case"url_param":return zr(()=>new URL(window.location.href).searchParams.get(t)??void 0);case"header_meta":return zr(()=>document.querySelector(`meta[name="${Hd(t)}"]`)?.content??void 0);case"callback":{const r=e?.[a.name];if(!r)return;const o=await r();return typeof o=="string"?o:void 0}default:return}}function qd(a){if(typeof document>"u")return;const e=encodeURIComponent(a),t=document.cookie?document.cookie.split("; "):[];for(const r of t){const o=r.indexOf("=");if(o===-1)continue;const n=r.slice(0,o);if(n===a||n===e)try{return decodeURIComponent(r.slice(o+1))}catch{return r.slice(o+1)}}}function zr(a){try{return a()}catch{return}}function Hd(a){return a.replace(/["\\]/g,"\\$&")}const Wd=1800;class Gl{constructor(e){this.opts=e,this.cache=this.loadCache()}cache=null;inflight=null;reset(){this.cache=null,this.inflight=null,this.clearCache()}async get(e=!1){if(!e){const t=this.cache;if(t&&(!t.expiresAt||t.expiresAt>Date.now()))return t}return this.inflight?this.inflight:(this.inflight=this.exchange().finally(()=>{this.inflight=null}),this.inflight)}async exchange(){if(!this.opts.descriptor.collect||this.opts.descriptor.collect.length===0)throw new Error("[aikaara-chat-sdk] SsoExchangeAdapter.exchange() requires descriptor.sso.collect; v2 partner-token flow should be handled by TokenDiscoveryReader instead.");const e=await Vl({spec:this.opts.descriptor.collect,providers:this.opts.providers}),t=JSON.stringify({credentials:e}),r={accept:"application/json","content-type":"application/json",...this.opts.descriptor.headers??{}};this.opts.descriptor.apiKey&&(r["X-Api-Key"]=this.opts.descriptor.apiKey);const o=this.opts.descriptor.exchangeEndpoint||this.opts.exchangeUrl;if(!o)throw new Error("[aikaara-chat-sdk] SSO exchange URL not resolved — set descriptor.sso.exchangeEndpoint or pass `exchangeUrl` (mountFromSlug derives it from configBase + slug).");const n=await fetch(o,{method:"POST",headers:r,body:t});if(!n.ok){const h=await n.text().catch(()=>"");throw new Error(`SSO exchange failed: ${n.status} ${h.slice(0,240)}`)}const s=(await n.json().catch(()=>({}))).user??{},l=String(s.ext_uid??s.extUid??""),c=String(s.token??s.user_token??s.userToken??"");if(!l)throw new Error("SSO exchange response missing user.ext_uid");if(!c)throw new Error("SSO exchange response missing user.token");const u={id:s.id,extUid:l,userToken:c,email:typeof s.email=="string"?s.email:void 0,displayName:typeof s.display_name=="string"?s.display_name:typeof s.displayName=="string"?s.displayName:void 0,properties:s.properties&&typeof s.properties=="object"?s.properties:void 0,expiresAt:this.computeExpiry()};return this.cache=u,this.persistCache(u),u}computeExpiry(){const e=this.opts.descriptor.cacheTtlSec??Wd;if(!(!this.opts.descriptor.cacheKey||e<=0))return Date.now()+e*1e3}loadCache(){const e=this.opts.descriptor.cacheKey;if(!e)return null;try{const t=window.localStorage.getItem(e);if(!t)return null;const r=JSON.parse(t);return r.expiresAt&&r.expiresAt<Date.now()?(window.localStorage.removeItem(e),null):r}catch{return null}}persistCache(e){const t=this.opts.descriptor.cacheKey;if(t)try{window.localStorage.setItem(t,JSON.stringify(e))}catch{}}clearCache(){const e=this.opts.descriptor.cacheKey;if(e)try{window.localStorage.removeItem(e)}catch{}}}const zd=3e4,Vd=2e3,Gd=100;async function Kl(a){const{descriptor:e}=a,t=e.tokenSourceConfig??{};switch(e.tokenSource){case"init":{if(!a.initToken)throw new Ke("init","No init token supplied to Aikaara.init({token})");return{token:a.initToken,source:"init"}}case"query":{const r=typeof t.key=="string"&&t.key?t.key:"token",o=Kd(r);if(!o)throw new Ke("query",`?${r}= not present`);return{token:o,source:"query"}}case"hash":{const r=typeof t.key=="string"&&t.key?t.key:"token",o=Yd(r);if(!o)throw new Ke("hash",`#${r}= not present`);return{token:o,source:"hash"}}case"postmsg":{const r=typeof t.type=="string"?t.type:"",o=typeof t.key=="string"&&t.key?t.key:"token",n=ef(typeof t.origins=="string"?t.origins:""),i=typeof t.timeoutMs=="number"&&t.timeoutMs>0?t.timeoutMs:zd;return{token:await Zd({type:r,key:o,origins:n,timeoutMs:i}),source:"postmsg"}}case"cookie":{const r=typeof t.name=="string"&&t.name?t.name:"";if(!r)throw new Ke("cookie","cookie.name not configured");const o=Qd(r);if(!o)throw new Ke("cookie",`cookie "${r}" not set`);return{token:o,source:"cookie"}}case"storage":{const r=t.store==="session"?"session":"local",o=typeof t.key=="string"&&t.key?t.key:"",n=typeof t.path=="string"?t.path:"";if(!o)throw new Ke("storage","storage.key not configured");const i=Jd(r,o,n);if(!i)throw new Ke("storage",`${r}Storage["${o}"] not set`);return{token:i,source:"storage"}}case"global":{const r=typeof t.path=="string"?t.path:"";if(!r)throw new Ke("global","global.path not configured");const o=typeof t.timeoutMs=="number"&&t.timeoutMs>0?t.timeoutMs:Vd,n=typeof t.intervalMs=="number"&&t.intervalMs>0?t.intervalMs:Gd,i=await Xd(r,o,n);if(!i)throw new Ke("global",`window.${r} not present`);return{token:i,source:"global"}}default:{const r=e.tokenSource;throw new Ke("unknown",`Unknown tokenSource ${JSON.stringify(r)}`)}}}class Yl{constructor(e){this.opts=e}cached=null;get descriptor(){return this.opts.descriptor}async get(){if(this.cached)return this.cached;const e=await Kl(this.opts);return this.cached=e,e}async refresh(){return this.opts.descriptor.tokenSource==="init"?this.cached?this.cached:this.get():(this.cached=null,this.get())}}class Ke extends Error{constructor(e,t){super(`[aikaara-chat-sdk] token-discovery (${e}): ${t}`),this.source=e,this.name="TokenDiscoveryError"}}function Kd(a){if(!(typeof window>"u"))try{const e=window.location.search.slice(1);for(const t of e.split("&")){const r=t.indexOf("=");if(r!==-1&&decodeURIComponent(t.slice(0,r))===a)return decodeURIComponent(t.slice(r+1))}return}catch{return}}function Yd(a){if(!(typeof window>"u"))try{const e=window.location.hash.replace(/^#/,"");return new URLSearchParams(e).get(a)??void 0}catch{return}}function Qd(a){if(typeof document>"u")return;const e=encodeURIComponent(a),t=document.cookie?document.cookie.split("; "):[];for(const r of t){const o=r.indexOf("=");if(o===-1)continue;const n=r.slice(0,o);if(n===a||n===e)try{return decodeURIComponent(r.slice(o+1))}catch{return r.slice(o+1)}}}function Jd(a,e,t){if(!(typeof window>"u"))try{const o=(a==="session"?window.sessionStorage:window.localStorage).getItem(e);if(o==null)return;if(!t)return o;let n;try{n=JSON.parse(o)}catch{return o}const i=Ql(n,t);return typeof i=="string"?i:void 0}catch{return}}async function Xd(a,e,t){if(typeof window>"u")return;const r=Date.now()+e;for(;Date.now()<r;){const o=Ql(window,a);if(typeof o=="string"&&o.length>0)return o;if(typeof o=="function")try{const n=o();if(typeof n=="string"&&n.length>0)return n}catch{}await new Promise(n=>setTimeout(n,t))}}function Zd(a){return new Promise((e,t)=>{if(typeof window>"u"){t(new Ke("postmsg","no window"));return}const r=()=>{window.removeEventListener("message",n),clearTimeout(o)},o=setTimeout(()=>{r(),t(new Ke("postmsg",`timeout after ${a.timeoutMs}ms`))},a.timeoutMs),n=i=>{if(a.origins.length>0&&!a.origins.includes(i.origin))return;const s=i.data;if(!s||typeof s!="object")return;const l=s;if(a.type&&l.type!==a.type)return;const c=l[a.key];typeof c=="string"&&c.length>0&&(r(),e(c))};window.addEventListener("message",n)})}function ef(a){return a?a.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean):[]}function Ql(a,e){if(!e)return a;const t=e.split(".").filter(Boolean);let r=a;for(const o of t)if(r&&typeof r=="object"&&o in r)r=r[o];else return;return r}function tf(){const a=typeof crypto<"u"?crypto:null;if(a?.randomUUID)return a.randomUUID();if(a?.getRandomValues){const e=new Uint8Array(16);a.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=[...e].map(r=>r.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}const rf="aikaara_chat:requestId";function _o(a,e,t){const r=`${rf}:${a}:${e}`;return t?`${r}:${t}`:r}function Jl(a,e,t){try{return localStorage.getItem(_o(a,e,t))}catch{return null}}function nf(a,e,t,r){try{localStorage.setItem(_o(a,e,r),t)}catch{}}function of(a,e,t){try{localStorage.removeItem(_o(a,e,t))}catch{}}async function ko(a,e,t="before-chat"){const r=a.filter(u=>(u.trigger??"before-chat")===t);console.log("[aikaara-chat-sdk] preflight running",r.length,"steps",`(trigger=${t})`);const o={userId:e.userId,projectId:e.projectId,slug:e.slug};if(e.identity)for(const[u,h]of Object.entries(e.identity))typeof h=="string"&&(o[u]=h);typeof e.serviceType=="string"&&(o.serviceType=e.serviceType),typeof e.userType=="string"&&(o.userType=e.userType);const n=u=>u.replace(/\{(\w+)\}/g,(h,p)=>p in o?o[p]:""),i=u=>{if(typeof u=="string")return n(u);if(Array.isArray(u))return u.map(i);if(u&&typeof u=="object"){const h={};for(const[p,g]of Object.entries(u))h[p]=i(g);return h}return u},s=await qt(e.sessionToken),l={},c=[800,1500,3e3,5e3,8e3];for(let u=0;u<r.length;u++){const h=r[u],p=n(h.url),g=h.method??(h.body?"POST":"GET"),f={accept:"application/json",...h.headers??{}};if((h.authHeader??"session")==="session"){const x=h.authHeaderTemplate??"Bearer {token}";f.authorization=x.replace("{token}",s)}const b={method:g,headers:f};h.body&&(f["content-type"]="application/json",b.body=JSON.stringify(i(h.body)));let y=0,w="",m=0,_=null;for(;;)try{const x=await fetch(p,b);if(x.ok){_=x;break}if(y=x.status,w=await x.text().catch(()=>""),m<c.length&&af(y,w)){const E=c[m++];console.warn(`[aikaara-chat-sdk] preflight #${u} ${g} ${p} → ${y} (transient). Retry #${m} in ${E}ms.`),await new Promise(S=>setTimeout(S,E));continue}const v=`Preflight #${u} ${g} ${p} → ${y} ${w.slice(0,200)}`;if(h.soft){console.warn("[aikaara-chat-sdk]",v);break}throw new Error(v)}catch(x){if(m<c.length){const v=c[m++];console.warn(`[aikaara-chat-sdk] preflight #${u} threw, retry #${m} in ${v}ms`,x),await new Promise(E=>setTimeout(E,v));continue}if(h.soft){console.warn(`[aikaara-chat-sdk] preflight #${u} soft-failed:`,x);break}throw x}if(_&&h.capture&&h.capture.as)try{const x=await _.clone().text();let v=x;try{v=JSON.parse(x)}catch{}if(h.capture.path)for(const E of h.capture.path.split("."))if(v&&typeof v=="object"&&E in v)v=v[E];else{v=void 0;break}if(typeof v=="string"&&v.length>0){let E=v;h.capture.stripPrefix&&E.startsWith(h.capture.stripPrefix)&&(E=E.slice(h.capture.stripPrefix.length)),l[h.capture.as]=E,o[h.capture.as]=E,console.log(`[aikaara-chat-sdk] preflight #${u} captured ${h.capture.as} (${E.slice(0,24)}…)`)}}catch(x){console.warn(`[aikaara-chat-sdk] preflight #${u} capture failed`,x)}}return{captured:l}}async function sf(a){const e=a.steps??[];return e.some(r=>r.trigger==="on-method-select")?(await ko(e,{sessionToken:a.sessionToken,userId:a.userId,projectId:a.projectId??"",slug:a.slug??"",identity:a.identity,serviceType:a.serviceType,userType:a.userType},"on-method-select")).captured:{}}function af(a,e){if(a===503||a===504||a===502)return!0;if(a===401||a===403)return e.trim().length===0;if(a===500){const t=e.toLowerCase();return t.includes("customernew")||t.includes("is null")||t.includes("not yet ready")}return!1}async function Xl(a,e){const t=await fetch(a,{method:"GET",headers:{accept:"application/json",...e??{}}});if(!t.ok){const o=await t.text().catch(()=>"");throw new Error(`Widget config fetch failed: ${t.status} ${t.statusText} ${o.slice(0,200)}`)}const r=await t.json();if(r&&typeof r=="object"){if("config"in r)return r.config;if("data"in r)return r.data}return r}function Zl(a,e){return a.replace("{projectId}",e).replace("{uuid}",tf().replace(/-/g,""))}function ec(a){const e=a._preload;if(!Array.isArray(e)||e.length===0)return;const t=Array.from(new Set(e.map(r=>r&&typeof r=="object"?r.scriptUrl:null).filter(r=>typeof r=="string"&&r.length>0)));t.length!==0&&Promise.allSettled(t.map(r=>Dl(r)))}async function tc(a){const e={...a.config??(a.configUrl?await Xl(a.configUrl,a.configHeaders):{}),...a.overrides??{}};ec(e);const t=e.transport??"tiledesk",r=e.tiledesk;if((t==="tiledesk"||t==="dual")&&!r)throw new Error("mount: descriptor.tiledesk is required for tiledesk/dual transport");const o=r?.projectId??"",n=a.identity.userId,i=a.conversationScope||void 0,s=a.forceNewConversation?null:Jl(n,o,i),l=r?.requestIdTemplate??"support-group-{projectId}-{uuid}",c=a.conversationId??s??Zl(l,o);(a.conversationId||!s||a.forceNewConversation)&&o&&nf(n,o,c,i);const u=await a.tokenProvider(),h=a.tokenProvider,p=a.historyTokenProvider??h,g=r?{mqttEndpoint:r.mqttEndpoint,jwtToken:u,userId:n,userName:a.identity.userName,projectId:r.projectId,appId:r.appId,mqttUsername:r.mqttUsername,protocolId:r.protocolId,protocolVersion:r.protocolVersion,keepAliveSec:r.keepAliveSec,connectTimeoutMs:r.connectTimeoutMs,maxReconnectAttempts:r.maxReconnectAttempts,reconnectMaxDelayMs:r.reconnectMaxDelayMs,wildcardSubscribe:r.wildcardSubscribe,enablePresence:r.enablePresence,autoInitiateOnEmpty:r.autoInitiateOnEmpty,chatInitiatedAttributes:r.chatInitiatedAttributes,messageDefaults:{...r.messageDefaults,...a.identity.departmentId?{departmentId:a.identity.departmentId}:r.messageDefaults?.departmentId?{departmentId:r.messageDefaults.departmentId}:{}},fileTemplate:r.fileTemplate,topicTemplates:r.topicTemplates,debug:r.debug,senderFullname:a.identity.senderFullname??a.identity.userName,tokenProvider:h}:void 0,f=a.uploadAdapter??(e.uploadEndpoint?fo({endpoint:e.uploadEndpoint,fieldName:e.uploadFieldName,extraFields:e.uploadExtraFields}):void 0),b=a.historyAdapter??(e.historyApiBase?wl({apiBase:e.historyApiBase,pageSize:e.historyPageSize??200,pathTemplate:e.historyPathTemplate,extraHeaders:e.historyHeaders,getToken:p}):void 0),y={transport:t,baseUrl:"",userToken:a.userToken??n,conversationId:c,display:e.display??"embed",position:e.position,primaryColor:e.theme?.primary??e.primaryColor,title:e.title,subtitle:e.subtitle,avatarUrl:e.avatarUrl,width:e.width,height:e.height,borderRadius:e.theme?.radius??e.borderRadius,fontFamily:e.theme?.font??e.fontFamily,themeTokens:e.theme,linkHandlers:e.linkHandlers,getLinkBearer:a.getLinkBearer,welcomeMessage:e.welcomeMessage,placeholder:e.placeholder,showTimestamps:e.showTimestamps,persistConversation:e.persistConversation,showHeader:e.showHeader,hideSystemMessages:e.hideSystemMessages,timestampFormat:e.timestampFormat,input:e.input,templateLayout:e.templateLayout,chatActions:e.chatActions,tiledesk:g,tiledeskIdentity:{userId:n,userName:a.identity.userName,departmentId:a.identity.departmentId,senderFullname:a.identity.senderFullname??a.identity.userName},templateActionAttributes:e.templateActionAttributes,uploadAdapter:f,historyAdapter:b,onError:a.onError,onMessage:a.onMessage},w=document.createElement("aikaara-chat-widget");return w.configure(y),y.title&&w.setAttribute("title",y.title),y.primaryColor&&w.setAttribute("primary-color",y.primaryColor),y.display&&w.setAttribute("display",y.display),y.display==="embed"&&(w.style.cssText="display:flex;flex-direction:column;width:100%;height:100%;min-height:0;--aikaara-close-btn-display:none;"),a.container.appendChild(w),{widget:w,requestId:c,config:y,destroy(){w.remove()}}}function lf(a){if(typeof a!="string")return a;const e=document.querySelector(a);if(!e)throw new Error(`mountFromSlug: container "${a}" not found`);return e}async function rc(a){const e=(a.configBase??"https://api.aikaara.com").replace(/\/$/,""),t=`${e}/api/v1/widget_configs/${encodeURIComponent(a.slug)}`;let r=null;try{r=await Xl(t,a.configHeaders)}catch(I){if(!a.fallbackConfig)throw I;console.warn(`[aikaara-chat-sdk] Widget config fetch failed for slug "${a.slug}" — using fallbackConfig.`,I)}const o={...a.fallbackConfig??{},...r??{},...a.overrides??{}};if(ec(o),o.templates&&Object.keys(o.templates).length>0){o.components={...o.components??{}};for(const[I,P]of Object.entries(o.templates)){const O=`template:${I}`;o.components[O]||!P?.scriptUrl||!P?.render||(o.components[O]={kind:"iife-element",scriptUrl:P.scriptUrl,tag:P.render,...P.props?{props:P.props}:{}})}}const n=window;if(n.__aikaara_descriptor__={...n.__aikaara_descriptor__??{},templates:o.templates,components:o.components,razorpay:o.razorpay,title:o.title,cloud:o.cloud??n.__aikaara_descriptor__?.cloud,upload:o.upload??n.__aikaara_descriptor__?.upload,themeSource:o.themeSource??n.__aikaara_descriptor__?.themeSource,api:o.api,auth:o.auth},!o.auth)throw new Error(`mountFromSlug: widget_configs/${a.slug} descriptor must include "auth" block`);let i=null,s=a.user.id,l=a.user.name,c="",u=a.user.token,h=null;const p=await qt(a.user.token).catch(()=>""),g=typeof p=="string"&&p.length>0;if(!g&&o.sso?.tokenSource){h=new Yl({descriptor:{provider:o.sso.provider,flow:o.sso.flow,skipLogin:o.sso.skipLogin,autoRefresh:o.sso.autoRefresh,tokenSource:o.sso.tokenSource,tokenSourceConfig:o.sso.tokenSourceConfig,fallback:o.sso.fallback,map:o.sso.map},initToken:a.user.partnerToken});const I=await h.get();u=async()=>(await h.get()).token,a.user.identity&&!a.user.identity.partnerToken&&(a.user.identity.partnerToken=I.token)}else if(!g&&o.sso&&o.sso.collect&&o.sso.collect.length>0){const I=`${e}/api/v1/projects/by-slug/${encodeURIComponent(a.slug)}/sso_exchange`;i=await new Gl({descriptor:o.sso,providers:a.user.credentialProviders,exchangeUrl:I}).get(),s=i.extUid||s,l=l??i.displayName,c=i.userToken}let f="",b="";if(o.preflight&&o.preflight.length){const I=await ko(o.preflight,{sessionToken:u,userId:s,projectId:o.tiledesk?.projectId??"",slug:a.slug,identity:a.user.identity});if(I.captured.sessionToken){f=I.captured.sessionToken;const P=f;u=()=>P}I.captured.userId&&(s=I.captured.userId),I.captured.requestId&&(b=I.captured.requestId)}const y=new zl(o.auth,u);if(f){const I=o.tiledesk?.projectId??"",P=I?Jl(s,I):null,O=o.tiledesk?.requestIdTemplate??"support-group-{projectId}-{uuid}",N=P??(I?Zl(O,I):"");y.prime(f,{requestId:N,fullName:l})}const w=await y.get();s=s||w.userId;const m=w.fullName||l||s;window.__aikaara_runtime__={getChatJwt:async()=>(await y.get()).token,getSessionToken:()=>qt(a.user.token),identity:a.user.identity,slug:a.slug,configBase:e};const _=h&&o.sso?.autoRefresh?async()=>{try{return await h.refresh(),y.reset(),(await y.get()).token}catch(I){return console.warn("[aikaara-chat-sdk] partner auto-refresh failed",I),null}}:null,x=o.upload,v=async()=>`Bearer ${x&&"tokenSource"in x&&x.tokenSource==="chat"?(await y.get()).token:await qt(a.user.token)}`,E=a.hooks?.upload??(x&&x.mode==="presigned-3step"?vl({...x,authHeader:v}):x&&x.mode==="direct"?fo({endpoint:x.endpoint,fieldName:x.fieldName,extraFields:x.extraFields,headers:async()=>({authorization:await v()})}):void 0),S=await tc({container:lf(a.container),config:o,userToken:c||void 0,identity:{userId:s,userName:m,departmentId:a.user.departmentId,senderFullname:m},tokenProvider:async()=>(await y.get()).token,historyTokenProvider:async()=>(await y.get()).token,uploadAdapter:E,historyAdapter:a.hooks?.history,conversationId:w.requestId||b||void 0,conversationScope:a.conversationScope,onError:a.hooks?.onError,onMessage:a.hooks?.onMessage,getLinkBearer:async I=>I==="none"?null:I==="chat"?(await y.get()).token:qt(a.user.token)});return Object.assign(S,{fullName:m,requestId:w.requestId,descriptor:o,async refreshAuth(){y.reset(),await y.get()},async refreshPartnerAuth(){return _?_():null},async runMethodSelectPreflight(I){const P=o.preflight;return!P||!P.length?{}:P.some(N=>N.trigger==="on-method-select")?(await ko(P,{sessionToken:u,userId:s,projectId:o.tiledesk?.projectId??"",slug:a.slug,identity:{...a.user.identity??{},...I?.identity??{}},serviceType:I?.serviceType,userType:I?.userType},"on-method-select")).captured:{}}})}function cf(a){wo();const e=document.createElement("aikaara-chat-widget"),t={baseUrl:"base-url",userToken:"user-token",apiKey:"api-key",title:"title",subtitle:"subtitle",theme:"theme",primaryColor:"primary-color",position:"position",width:"width",height:"height",placeholder:"placeholder",welcomeMessage:"welcome-message",avatarUrl:"avatar-url"};for(const[r,o]of Object.entries(t)){const n=a[r];n!=null&&e.setAttribute(o,String(n))}return e.configure(a),document.body.appendChild(e),e}function uf(){const a=document.querySelector("aikaara-chat-widget");a&&a.remove()}const hf="https://checkout.razorpay.com/v1/checkout.js";let Zt=null;function Vr(){return window}class nc extends HTMLElement{shadow;payloadData=[];message="";paidIdx={};constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}setPayload(e,t){this.payloadData=Array.isArray(e)?e:[],this.message=t??"",this.render()}render(){const e=this.payloadData.filter(r=>!!r&&typeof r=="object"&&r.type==="link"&&typeof r.url=="string"),t=e.map((r,o)=>{const n=r.name||"Open link",i=!!this.paidIdx[o];return`<button class="link${i?" paid":""}" data-i="${o}" type="button"${i?" disabled":""}><span class="lbl">${df(i?"Paid":n)}</span>`+(i?'<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5 L7 12 L13 5"/></svg>':'<svg class="icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 11 L11 5 M6 5 H11 V10"/></svg>')+"</button>"}).join("");this.shadow.innerHTML="<style>:host { display:block; margin:6px 0; font-family:inherit; }.bubble { padding:12px 16px; border-radius:14px; background:var(--aikaara-bot-bubble-bg, #d8e5f5); color:var(--aikaara-bot-bubble-text, #1a2845); font-size:14px; line-height:1.55; margin-bottom:10px; }.links { display:flex; flex-direction:column; gap:8px; }.link { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 22px; border:1.5px solid var(--aikaara-primary, #1849a9); background:var(--aikaara-primary, #1849a9); color:var(--aikaara-primary-contrast, #fff); border-radius:24px; font-size:14px; font-weight:600; cursor:pointer; font-family:inherit; text-decoration:none; transition: filter 120ms; width:150px; align-self:flex-start; }.link:hover:not(:disabled) { filter: brightness(0.94); }.link.paid, .link:disabled { background:#e7f5ec; color:#0e7c3a; border-color:#0e7c3a; cursor:default; }.icon { width:13px; height:13px; }</style>"+(this.message?`<div class="bubble">${this.message}</div>`:"")+`<div class="links">${t}</div>`,this.shadow.querySelectorAll(".link").forEach(r=>{r.addEventListener("click",()=>{if(r.disabled)return;const o=Number(r.dataset.i||0),n=e[o];n&&this.handleClick(o,n)})})}handleClick(e,t){const r=ff(t),o=Vr().__aikaara_descriptor__?.razorpay;if(!r||!o?.keyId){gf(t.url,t.name||"Pay"),this.dispatchEvent(new CustomEvent("template-action",{detail:{text:t.name||"link-click",attributes:{action:{type:"link",url:t.url,orderId:r||t.orderId,openedIn:"modal"}}},bubbles:!0,composed:!0}));return}mf(o.preferredBanksUrl,r,o.preferredBanksMethod,o.preferredBanksHeaders).catch(n=>(console.warn("[payment_link] preferred-banks fetch failed; continuing with default UI",n),[])).then(n=>pf().then(()=>this.openRazorpay(e,r,o,n))).catch(n=>{console.error("[payment_link] Razorpay launch failed",n)})}openRazorpay(e,t,r,o){const n=Vr(),i=n.__aikaara_runtime__?.identity??{},s={key:r.keyId,order_id:t,name:r.name||n.__aikaara_descriptor__?.title||"Payment",prefill:{},handler:()=>{this.paidIdx[e]=!0,this.render()},modal:{ondismiss:()=>{}}};typeof i.mobile=="string"?s.prefill.contact=i.mobile:typeof i.phone=="string"&&(s.prefill.contact=i.phone),typeof i.email=="string"&&(s.prefill.email=i.email),typeof i.name=="string"?s.prefill.name=i.name:typeof i.userName=="string"&&(s.prefill.name=i.userName),Array.isArray(o)&&o.length&&(s.config={display:{blocks:{utib:{name:"Pay Using Preferred Netbanking",instruments:[{method:"netbanking",banks:o}]}},sequence:["block.utib","netbanking","card","upi"],preferences:{show_default_blocks:!0}}});const l=n.Razorpay;if(typeof l!="function")throw new Error("Razorpay Checkout script not available");const c=new l(s);c.on("payment.failed",u=>{console.warn("[payment_link] payment.failed",u?.error)}),c.open()}}function df(a){return String(a??"").replace(/[&<>]/g,e=>e==="&"?"&":e==="<"?"<":">")}function ff(a){if(typeof a.orderId=="string"&&a.orderId)return a.orderId;try{const e=new URL(a.url,window.location.origin),t=e.searchParams.get("orderId")||e.searchParams.get("order_id");if(t)return t;if(e.hash&&e.hash.length>1){const r=new URLSearchParams(e.hash.replace(/^#/,"")),o=r.get("orderId")||r.get("order_id");if(o)return o}}catch{}return null}function pf(){return typeof Vr().Razorpay=="function"?Promise.resolve():Zt||(Zt=new Promise((a,e)=>{const t=document.querySelector('script[data-aikaara-razorpay="1"]');if(t){t.addEventListener("load",()=>a()),t.addEventListener("error",()=>e(new Error("checkout.js failed to load")));return}const r=document.createElement("script");r.src=hf,r.async=!0,r.dataset.aikaaraRazorpay="1",r.onload=()=>a(),r.onerror=()=>{Zt=null,e(new Error("checkout.js failed to load"))},document.head.appendChild(r)}),Zt)}function mf(a,e,t,r){if(!a)return Promise.resolve([]);const o=String(t||"GET").toUpperCase()==="POST"?"POST":"GET",n=a.includes("{orderId}")?a.replace("{orderId}",encodeURIComponent(e)):a+(a.includes("?")?"&":"?")+"orderId="+encodeURIComponent(e),i=Vr().__aikaara_runtime__??{};return(typeof i.getSessionToken=="function"?i.getSessionToken():typeof i.getChatJwt=="function"?i.getChatJwt():Promise.resolve(null)).then(l=>{const c={Accept:"application/json",...r??{}};l&&(c.Authorization=`Bearer ${l}`);const u={method:o,headers:c,credentials:"omit"};return o==="POST"&&(c["Content-Type"]="application/json",u.body=JSON.stringify({orderId:e})),fetch(n,u)}).then(l=>{if(!l.ok)throw new Error(`preferred-banks ${l.status}`);return l.json()}).then(l=>{const c=l,u=c?.data&&typeof c.data=="object"&&!Array.isArray(c.data)?c.data:null;return(Array.isArray(l)?l:Array.isArray(c?.banks)?c.banks:Array.isArray(c?.data)?c.data:Array.isArray(u?.preferredPaymentBank)?u.preferredPaymentBank:Array.isArray(u?.banks)?u.banks:[]).map(p=>{if(typeof p=="string")return p;if(p&&typeof p=="object"){const g=p;return g.code||g.bankCode||g.bank_code||null}return null}).filter(p=>!!p)})}function gf(a,e){if(!a)return;let t=document.querySelector("aikaara-link-modal");t||(t=document.createElement("aikaara-link-modal"),document.body.appendChild(t)),typeof t.show=="function"?t.show(a,e):window.open(a,"_blank","noopener,noreferrer")}function bf(){typeof customElements>"u"||customElements.get("aikaara-template-payment-link")||customElements.define("aikaara-template-payment-link",nc)}const yf=Object.freeze(Object.defineProperty({__proto__:null,AikaaraPaymentLink:nc,registerAikaaraPaymentLink:bf},Symbol.toStringTag,{value:"Module"}));class ic extends HTMLElement{shadow;payload=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}setPayload(e){this.payload=e,this.render()}render(){const e=this.payload;this.shadow.innerHTML=`
|
|
1472
1472
|
<style>
|
|
1473
1473
|
:host { display: block; margin-top: 8px; }
|
|
1474
1474
|
button {
|
package/dist/headless.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-LbcBXsS9.cjs");class s extends e.EventEmitter{registration=null;pendingEdits=[];constructor(t){super(),this.setupListeners(t)}registerForm(t){this.registration=t;const i=this.pendingEdits.filter(r=>r.entity_type===t.entityType&&String(r.entity_id)===String(t.entityId));if(i.length>0){for(const r of i)t.onFieldUpdate(r.fields),this.emit("edit:applied",{entityType:r.entity_type,entityId:r.entity_id,fields:r.fields});this.pendingEdits=this.pendingEdits.filter(r=>!(r.entity_type===t.entityType&&String(r.entity_id)===String(t.entityId)))}}unregisterForm(t,i){this.registration?.entityType===t&&String(this.registration?.entityId)===String(i)&&(this.registration=null)}get currentForm(){return this.registration}pushFieldUpdates(t,i,r){this.registration&&this.registration.entityType===t&&String(this.registration.entityId)===String(i)?(this.registration.onFieldUpdate(r),this.emit("edit:applied",{entityType:t,entityId:i,fields:r})):(this.pendingEdits.push({action:"edit_entity",entity_type:t,entity_id:i,fields:r}),this.emit("edit:pending",{entityType:t,entityId:i,fields:r}))}async requestSave(){if(!this.registration)return{success:!1,error:"No form registered"};try{return await this.registration.onSave(),this.emit("save:success",{entityType:this.registration.entityType,entityId:this.registration.entityId}),{success:!0}}catch(t){const i=t instanceof Error?t.message:"Save failed";return this.emit("save:error",{entityType:this.registration.entityType,entityId:this.registration.entityId,error:i}),{success:!1,error:i}}}async requestTest(t){if(!this.registration?.onTest)return{success:!1,error:"Current form does not support testing"};try{return await this.registration.onTest(t),{success:!0}}catch(i){return{success:!1,error:i instanceof Error?i.message:"Test failed"}}}setupListeners(t){t.on("action:edit_entity",i=>{this.pushFieldUpdates(i.entity_type,i.entity_id,i.fields)}),t.on("action:save_entity",i=>{this.requestSave()}),t.on("action:test_tool",i=>{this.emit("test:triggered",{toolId:i.tool_id,parameters:i.parameters}),this.requestTest(i.parameters)})}}exports.ActionCableClient=e.ActionCableClient;exports.AikaaraChatClient=e.AikaaraChatClient;exports.ApiClient=e.ApiClient;exports.ChannelSubscription=e.ChannelSubscription;exports.ConnectionManager=e.ConnectionManager;exports.ConversationManager=e.ConversationManager;exports.EventEmitter=e.EventEmitter;exports.MessageStore=e.MessageStore;exports.SessionAuthAdapter=e.SessionAuthAdapter;exports.SsoExchangeAdapter=e.SsoExchangeAdapter;exports.TiledeskTransport=e.TiledeskTransport;exports.TokenDiscoveryError=e.TokenDiscoveryError;exports.TokenDiscoveryReader=e.TokenDiscoveryReader;exports.clearPersistedConversationId=e.clearPersistedConversationId;exports.collectSsoCredentials=e.collectSsoCredentials;exports.createFetchUploadAdapter=e.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=e.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=e.createTiledeskHistoryAdapter;exports.discoverToken=e.discoverToken;exports.extractTiledeskFileEnvelope=e.extractTiledeskFileEnvelope;exports.inferTiledeskRole=e.inferTiledeskRole;exports.isTiledeskSelfEcho=e.isTiledeskSelfEcho;exports.mountFromSlug=e.mountFromSlug;exports.mountTenantWidget=e.mount;exports.parseTiledeskTemplate=e.parseTiledeskTemplate;exports.runMethodSelectPreflight=e.runMethodSelectPreflight;exports.FormBridge=s;
|
package/dist/headless.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as s } from "./MountTenant-
|
|
2
|
-
import { A as p, b as l, k as g, C as c, l as h, m as y, M as u, S as m, n as f, T, o as S, p as _, q as v, s as E, t as C, u as F, v as k, w as A, x as I, y as x, z as U, B as q, D as M, F as b, G as w } from "./MountTenant-
|
|
1
|
+
import { E as s } from "./MountTenant-DOYMoJu4.mjs";
|
|
2
|
+
import { A as p, b as l, k as g, C as c, l as h, m as y, M as u, S as m, n as f, T, o as S, p as _, q as v, s as E, t as C, u as F, v as k, w as A, x as I, y as x, z as U, B as q, D as M, F as b, G as w } from "./MountTenant-DOYMoJu4.mjs";
|
|
3
3
|
class a extends s {
|
|
4
4
|
registration = null;
|
|
5
5
|
pendingEdits = [];
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MountTenant-LbcBXsS9.cjs"),s=require("./headless.cjs");function l(a){e.registerComponents();const t=document.createElement("aikaara-chat-widget"),i={baseUrl:"base-url",userToken:"user-token",apiKey:"api-key",title:"title",subtitle:"subtitle",theme:"theme",primaryColor:"primary-color",position:"position",width:"width",height:"height",placeholder:"placeholder",welcomeMessage:"welcome-message",avatarUrl:"avatar-url"};for(const[o,n]of Object.entries(i)){const r=a[o];r!=null&&t.setAttribute(n,String(r))}return t.configure(a),document.body.appendChild(t),t}function d(){const a=document.querySelector("aikaara-chat-widget");a&&a.remove()}exports.ActionCableClient=e.ActionCableClient;exports.AikaaraChatBubble=e.AikaaraChatBubble;exports.AikaaraChatClient=e.AikaaraChatClient;exports.AikaaraChatHeader=e.AikaaraChatHeader;exports.AikaaraChatInput=e.AikaaraChatInput;exports.AikaaraChatWidget=e.AikaaraChatWidget;exports.AikaaraErrorBanner=e.AikaaraErrorBanner;exports.AikaaraMessageBubble=e.AikaaraMessageBubble;exports.AikaaraMessageList=e.AikaaraMessageList;exports.AikaaraStreamingMessage=e.AikaaraStreamingMessage;exports.AikaaraTypingIndicator=e.AikaaraTypingIndicator;exports.ApiClient=e.ApiClient;exports.ChannelSubscription=e.ChannelSubscription;exports.ConnectionManager=e.ConnectionManager;exports.ConversationManager=e.ConversationManager;exports.EventEmitter=e.EventEmitter;exports.MessageStore=e.MessageStore;exports.SessionAuthAdapter=e.SessionAuthAdapter;exports.SsoExchangeAdapter=e.SsoExchangeAdapter;exports.TiledeskTransport=e.TiledeskTransport;exports.TokenDiscoveryError=e.TokenDiscoveryError;exports.TokenDiscoveryReader=e.TokenDiscoveryReader;exports.clearPersistedConversationId=e.clearPersistedConversationId;exports.collectSsoCredentials=e.collectSsoCredentials;exports.createFetchUploadAdapter=e.createFetchUploadAdapter;exports.createPresigned3StepUploadAdapter=e.createPresigned3StepUploadAdapter;exports.createTiledeskHistoryAdapter=e.createTiledeskHistoryAdapter;exports.discoverToken=e.discoverToken;exports.extractTiledeskFileEnvelope=e.extractTiledeskFileEnvelope;exports.inferTiledeskRole=e.inferTiledeskRole;exports.isTiledeskSelfEcho=e.isTiledeskSelfEcho;exports.mountFromSlug=e.mountFromSlug;exports.mountTenantWidget=e.mount;exports.parseTiledeskTemplate=e.parseTiledeskTemplate;exports.registerComponents=e.registerComponents;exports.runMethodSelectPreflight=e.runMethodSelectPreflight;exports.FormBridge=s.FormBridge;exports.mount=l;exports.unmount=d;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as o } from "./MountTenant-
|
|
2
|
-
import { A as u, a as m, b as g, c as h, d as k, e as A, f as C, g as T, h as b, i as f, j as v, k as S, C as y, l as M, m as w, E, M as x, S as B, n as F, T as U, o as D, p as I, q as P, s as j, t as q, u as H, v as R, w as W, x as z, y as G, z as K, B as L, D as O, F as J, G as N } from "./MountTenant-
|
|
1
|
+
import { r as o } from "./MountTenant-DOYMoJu4.mjs";
|
|
2
|
+
import { A as u, a as m, b as g, c as h, d as k, e as A, f as C, g as T, h as b, i as f, j as v, k as S, C as y, l as M, m as w, E, M as x, S as B, n as F, T as U, o as D, p as I, q as P, s as j, t as q, u as H, v as R, w as W, x as z, y as G, z as K, B as L, D as O, F as J, G as N } from "./MountTenant-DOYMoJu4.mjs";
|
|
3
3
|
import { FormBridge as V } from "./headless.mjs";
|
|
4
4
|
function l(e) {
|
|
5
5
|
o();
|
package/dist/ui.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./MountTenant-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./MountTenant-LbcBXsS9.cjs");exports.AikaaraChat=a.AikaaraChat;exports.AikaaraChatBubble=a.AikaaraChatBubble;exports.AikaaraChatHeader=a.AikaaraChatHeader;exports.AikaaraChatInput=a.AikaaraChatInput;exports.AikaaraChatWidget=a.AikaaraChatWidget;exports.AikaaraComparePlans=a.AikaaraComparePlans;exports.AikaaraErrorBanner=a.AikaaraErrorBanner;exports.AikaaraLinkModal=a.AikaaraLinkModal;exports.AikaaraMessageBubble=a.AikaaraMessageBubble;exports.AikaaraMessageList=a.AikaaraMessageList;exports.AikaaraModalAction=a.AikaaraModalAction;exports.AikaaraOptionList=a.AikaaraOptionList;exports.AikaaraSchemaForm=a.AikaaraSchemaForm;exports.AikaaraSmartEditModal=a.AikaaraSmartEditModal;exports.AikaaraStreamingMessage=a.AikaaraStreamingMessage;exports.AikaaraSubmitAction=a.AikaaraSubmitAction;exports.AikaaraSystemPill=a.AikaaraSystemPill;exports.AikaaraTemplateRenderer=a.AikaaraTemplateRenderer;exports.AikaaraTypingIndicator=a.AikaaraTypingIndicator;exports.registerComponents=a.registerComponents;
|
package/dist/ui.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { I as i, a as s, c as e, d as t, e as A, J as k, f as n, K as o, g as m, h as d, L as l, N as g, O as h, P as p, i as C, Q as M, R as b, U as c, j as S, r as u } from "./MountTenant-
|
|
1
|
+
import { I as i, a as s, c as e, d as t, e as A, J as k, f as n, K as o, g as m, h as d, L as l, N as g, O as h, P as p, i as C, Q as M, R as b, U as c, j as S, r as u } from "./MountTenant-DOYMoJu4.mjs";
|
|
2
2
|
export {
|
|
3
3
|
i as AikaaraChat,
|
|
4
4
|
s as AikaaraChatBubble,
|