@solomei-ai/intent 2.1.0 → 2.1.2

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.
@@ -2,5 +2,5 @@
2
2
  * © 2026 Solomei AI SRL. Proprietary and confidential.
3
3
  * DEBUG BUILD - Includes debug panel. NOT recommended for production.
4
4
  */
5
- import t from"html2canvas-pro";import e from"js-cookie";async function n(){const t=(new Intl.DateTimeFormat).resolvedOptions().timeZone,e=(t=>{const e=t<=0?"+":"-",n=Math.abs(t);return`${e}${String(Math.floor(n/60)).padStart(2,"0")}:${String(n%60).padStart(2,"0")}`})((new Date).getTimezoneOffset()),n=[];n.push(`Language: ${navigator.language}`),navigator.languages?.length&&n.push(`Languages: ${navigator.languages.join(", ")}`),n.push(`User agent: ${navigator.userAgent}`);const o=(()=>{if(!("userAgentData"in(t=navigator))||void 0===t.userAgentData)return;var t;const e=navigator.userAgentData,n=Array.isArray(e.brands)?e.brands.map(t=>`${t.brand} ${t.version}`).join(", "):void 0,o=e.platform?`${e.platform}${e.mobile?" (mobile)":""}`:void 0;return[n&&`UA brands: ${n}`,o&&`Platform: ${o}`].filter(Boolean).join(" | ")||void 0})();o&&n.push(o),n.push(`Timezone: ${t} (UTC${e})`),n.push(`Local time: ${(new Date).toString()}`);const i=window.devicePixelRatio||1;n.push(`Screen: ${screen.width}x${screen.height} @${i}x (avail ${screen.availWidth}x${screen.availHeight}, ${screen.colorDepth}-bit)`);const r=screen.orientation&&"type"in screen.orientation?screen.orientation.type:void 0;n.push(`Viewport: ${window.innerWidth}x${window.innerHeight}${r?`, orientation ${r}`:""}`),n.push(`CPU: ${navigator.hardwareConcurrency} cores`);const s=await async function(){const t=[];let e="browser API";if("connection"in(n=navigator)&&void 0!==n.connection){const e=navigator.connection;e?.effectiveType&&t.push(e.effectiveType),"number"==typeof e?.downlink&&t.push(`~${e.downlink} Mbps`),"number"==typeof e?.rtt&&t.push(`${e.rtt} ms`),e?.saveData&&t.push("saveData")}else{const n=((t=20)=>{const e=performance.getEntriesByType("navigation").find(t=>"navigation"===t.entryType),n=e?Math.max(0,e.responseStart-e.requestStart):void 0,o=performance.getEntriesByType("resource").filter(t=>"resource"===t.entryType);let i=0,r=0;for(const e of o.slice(0,Math.max(0,t))){const t=e.encodedBodySize>0?e.encodedBodySize:e.transferSize>0?e.transferSize:0,n=e.duration;t>0&&n>0&&Number.isFinite(n)&&(i+=t,r+=n)}const s=r>0?8*i/r:void 0;return{downlinkMbps:"number"==typeof s?s/1e3:void 0,rttMs:n}})();"number"==typeof n.downlinkMbps&&t.push(`~${n.downlinkMbps.toFixed(1)} Mbps`),"number"==typeof n.rttMs&&t.push(`TTFB ~${Math.round(n.rttMs)} ms`),e="inferred"}var n;const o=performance.getEntriesByType("navigation").find(t=>"navigation"===t.entryType);if(o){const e=Math.max(0,o.responseStart-o.requestStart);t.some(t=>t.startsWith("TTFB"))||t.push(`TTFB ~${Math.round(e)} ms`)}return t.length?`Network: ${t.join(", ")} (${e})`:void 0}();s&&n.push(s),n.push((()=>{const t="function"==typeof matchMedia&&matchMedia("(pointer: coarse)").matches,e="function"==typeof matchMedia&&matchMedia("(pointer: fine)").matches;return`Pointer/Touch: ${t?"coarse":e?"fine":"unknown"}, maxTouchPoints ${navigator.maxTouchPoints}`})());const a=await(async()=>{var t;if("getBattery"in(t=navigator)&&"function"==typeof t.getBattery)try{const t=await navigator.getBattery(),e=Math.round(100*t.level);return`Battery: ${[`${Number.isFinite(e)?e:0}%`,t.charging?"charging":"not charging"].join(", ")}`}catch{}})();a&&n.push(a),n.push(`CookiesEnabled: ${navigator.cookieEnabled?"yes":"no"}; DNT: ${navigator.doNotTrack??"n/a"}`),n.push("Online: "+(navigator.onLine?"yes":"no")),document.referrer&&n.push(`Referrer: ${document.referrer}`),n.push((()=>{const t="function"==typeof matchMedia&&matchMedia("(display-mode: standalone)").matches;return`PWA: ${Boolean(navigator.serviceWorker?.controller)?"SW-controlled":"no SW"}, display-mode standalone: ${t?"yes":"no"}`})());const c=await async function(t=400){if("DeviceOrientationEvent"in window&&window.isSecureContext)return new Promise(e=>{let n=!1;const o=t=>{const i="number"==typeof t.beta?t.beta:void 0,r="number"==typeof t.gamma?t.gamma:void 0;if(void 0===i||void 0===r)return;if(n)return;n=!0,window.removeEventListener("deviceorientation",o);const s=((t,e)=>{const n=Math.abs(t),o=Math.abs(e);return n<15&&o<15?"flat":n>=60?"upright":"reclined"})(i,r);e(`Tilt: ${s} (β ${Math.round(i)}°, γ ${Math.round(r)}°)`)};window.setTimeout(()=>{n||(n=!0,window.removeEventListener("deviceorientation",o),e(void 0))},t),window.addEventListener("deviceorientation",o,{passive:!0})})}();c&&n.push(c);const l="enabled"===localStorage.getItem("intent:geo");return n.push(l?"Device geolocation: enabled":"Device geolocation: disabled"),n.join(" | ")}const o="intent:consent",i="intent:geo",r="intent:debug",s="intent:debug-panel",a="intent:data-client-id",c="intent:data-base-url",l="https://intent.callimacus.ai",d=2166136261,u=16777619;function f(t,e){let n=t;for(let t=0;t<e.length;t++)n^=e.charCodeAt(t),n=Math.imul(n,u);return n>>>0}function g(t,e){return Math.imul(t^e,u)>>>0}const m=[{seed:2166136261,prime:16777619},{seed:2654435761,prime:2246822507},{seed:3266489909,prime:668265263},{seed:374761393,prime:3266489955}];function h(t,e){let n=0;return(...o)=>{const i=Date.now();i-n>=e&&(n=i,t(...o))}}function p(...t){try{"undefined"!=typeof localStorage&&"enabled"===localStorage.getItem(r)&&console.log(...t)}catch{}}const b=Object.freeze(new Set(["textbox","combobox","searchbox"])),v=["input","textarea","select","[contenteditable]",...[...b].map(t=>`[role="${t}"]`)].join(", ");function w(t){const e=t.tagName;return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function y(t){if(w(t))return!0;const e=t.getAttribute("contenteditable");if(""===e||"true"===e||"plaintext-only"===e)return!0;const n=t.getAttribute("role")?.toLowerCase();return!(!n||!b.has(n))}function x(t){const e=t.parentElement;if(e)return e;const{parentNode:n}=t;return n instanceof ShadowRoot&&n.host instanceof Element?n.host:void 0}function S(t){if(w(t))return t.value;const e=t.innerText;return"string"==typeof e?e:t.textContent??""}function T(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}Object.freeze(new Set(["searchbox","search"]));const E=new Map([["name","Name"],["given-name","First name"],["family-name","Last name"],["additional-name","Middle name"],["nickname","Nickname"],["username","Username"],["name-given","First name"],["name-family","Last name"],["name-middle","Middle name"],["name-middle-initial","Middle initial"],["name-prefix","Name prefix"],["name-suffix","Name suffix"],["honorific-prefix","Name prefix"],["honorific-suffix","Name suffix"],["username-new","Username"],["password","Password"],["password-new","Password"],["current-password","Password"],["new-password","Password"],["one-time-code","One-time code"],["sms-otp","One-time code"],["webauthn","WebAuthn"],["email","Email"],["tel","Phone"],["tel-country-code","Phone country code"],["tel-national","Phone"],["tel-device","Phone"],["street-address","Street address"],["address-line1","Address line 1"],["address-line2","Address line 2"],["address-line3","Address line 3"],["address-level1","State/Province"],["address-level2","City"],["address-level3","District"],["address-level4","Neighborhood"],["postal-code","Postal code"],["country","Country code"],["country-name","Country name"],["postal-address","Street address"],["postal-address-country","Country name"],["postal-address-extended","Address line 2"],["postal-address-extended-postal-code","Postal code"],["postal-address-locality","City"],["postal-address-region","State/Province"],["cc-name","Cardholder name"],["cc-given-name","Cardholder first name"],["cc-family-name","Cardholder last name"],["cc-additional-name","Cardholder middle name"],["cc-middle-name","Cardholder middle name"],["cc-number","Card number"],["cc-exp","Expiration date"],["cc-exp-day","Expiration day"],["cc-exp-month","Expiration month"],["cc-exp-year","Expiration year"],["cc-csc","Security code"],["cc-type","Card type"],["bday","Birthday"],["bday-day","Birth day"],["bday-month","Birth month"],["bday-year","Birth year"],["birthdate-full","Birthday"],["birthdate-day","Birth day"],["birthdate-month","Birth month"],["birthdate-year","Birth year"],["organization","Organization"],["organization-title","Job title"],["sex","Sex"],["gender","Sex"]]),L=Object.freeze(new Set(E.keys()));function k(t){return t?t.toLowerCase().trim().split(/\s+/).filter(Boolean):[]}function A(t){return t.some(t=>L.has(t))}function $(t){for(const e of t){const t=E.get(e);if(t)return t}}const I="data-intent-redact";function M(t){return e=(t=>{const e=(t.getAttribute?.("data-intent-redact-label")??"").trim();if(e)return e;const n=y(t)?k(t.getAttribute?.("autocomplete")):[];if("INPUT"===t.tagName&&"password"===t.type)return"Password";const o=$(n);if(o)return o;const i="INPUT"===t.tagName?U.get(t.type):void 0,r=i?$([i]):void 0;if(r)return r;const s=t.getAttribute?.(I)?.toLowerCase();return"mask"===s?"Redacted":"Sensitive"})(t),`<${e}>`;var e}function C(t){return t.hasAttribute("data-html2canvas-ignore")||"ignore"===t.getAttribute(I)?.toLowerCase()}const N=new Set;function D(t){const e=t.getAttribute(I);if(null===e)return!1;const n=e.toLowerCase();return"ignore"!==n&&(""!==e&&"mask"!==n&&(t=>{if(N.has(t))return;N.add(t);const e=`[intent] Unsupported data-intent-redact value ${JSON.stringify(t)}. Supported values are "" or "mask" (redact), "ignore" (exclude from capture). Treating as "mask" to prevent data leaks.`;try{console.warn(e)}catch{}})(e),!0)}function O(t){let e=t;for(;e&&e!==document.body;){if(C(e))return!0;e=x(e)}return!1}function P(t){let e=t;for(;e&&e!==document.body;){if(D(e))return e;e=x(e)}}function B(t){return void 0!==P(t)}function z(t){return D(t)||F(t)?M(t):M(P(t)??t)}function H(t){return!O(t)&&(B(t)||F(t))}const R=Object.freeze(new Set(["searchbox"])),U=new Map([["email","email"],["tel","tel"]]);function F(t){const e=t.tagName,n=t.getAttribute("role")?.toLowerCase();if("INPUT"===e){const e=t;return"password"===e.type||!("search"===e.type||n&&R.has(n))&&(!!U.has(e.type)||A(k(e.autocomplete)))}return"TEXTAREA"===e||"SELECT"===e?A(k(t.autocomplete)):!(!y(t)||w(t))&&(!n||!R.has(n))&&A(k(t.getAttribute("autocomplete")))}function j(t){return!(C(t)||!D(t)&&!F(t))}function q(t){if(!O(t))if(w(t)){if(j(t)){if("INPUT"===t.tagName){const e=t;["date","datetime-local","month","time","week"].includes(e.type)&&(e.type="text")}const e=M(t);t.value=e,t.setAttribute("value",e)}}else y(t)?j(t)&&(t.textContent=M(t)):t.hasAttribute(I)&&D(t)&&(t.textContent=M(t))}function W(t,e){const n=[],o=[t];for(t instanceof Element&&t.shadowRoot&&o.push(t.shadowRoot);o.length>0;){const t=o.pop().querySelectorAll("*");for(const i of t)i.matches(e)&&n.push(i),i.shadowRoot&&o.push(i.shadowRoot)}return n}function _(t,e=new Set){const n=t instanceof Document?t:t.ownerDocument;if(n){if(e.has(n))return;e.add(n)}t instanceof Element&&q(t);for(const e of W(t,v))q(e);for(const e of W(t,`[${I}]`))q(e);for(const n of W(t,"iframe"))if("IFRAME"===n.tagName)try{const t=n.contentDocument;t&&_(t,e)}catch{}}let X="";function Y(){return X}function V(t){return e.get(t)}function J(t,n){const o=localStorage.getItem("intent:data-sid-max-age"),i=null===o?void 0:Number(o),r="number"==typeof n&&Number.isFinite(n)?n:"number"==typeof i&&Number.isFinite(i)?i:2592e3,s="https:"===window.location.protocol;e.set("intent_sid",t,{expires:r/86400,path:"/",sameSite:"Lax",...s&&{secure:!0}})}function K(){e.remove("intent_sid",{path:"/"})}function G(){const t=V("intent_sid");if("granted"!==localStorage.getItem(o))return t&&K(),void(X="");t?X=t:(X=crypto.randomUUID(),J(X))}let Q,Z=!1,tt=!1,et=!1,nt=!1,ot=!1;function it(){return"enabled"===localStorage.getItem(i)}function rt(){Z=!1,et=!1,ot=!1}function st(){return!Z&&it()&&!nt&&ot}let at=[],ct=!1;function lt(){try{return"enabled"===localStorage.getItem(s)}catch{return!1}}function dt(t){try{localStorage.setItem(s,t?"enabled":"disabled"),t?ft():Q&&(Q.style.display="none")}catch{}}function ut(){if(!Q)return;const t=Q.querySelector("#intent-debug-events"),e=Q.querySelector("#intent-debug-count");if(!t||!e)return;if(0===at.length)return t.innerHTML='\n\t\t\t<div style="color: var(--solomei-color-muted-foreground, #979797); text-align: center; padding: 20px;">\n\t\t\t\tNo events captured yet. Interact with the page to see events.\n\t\t\t</div>\n\t\t',void(e.textContent="0 events");const n=[...at].reverse();t.innerHTML=n.map(t=>(t=>{const e=new Date(t.timestamp).toLocaleTimeString(),n=t.img&&t.img.length>0,o=n?Math.round(.75*t.img.length/1024):0,i=T(t.event),r=T(JSON.stringify(t.props,null,2)),s=T(t.html),a=T(JSON.stringify(t.bbox,null,2));return`\n\t\t<div style="\n\t\t\tbackground: var(--solomei-color-card, white);\n\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\tborder-radius: var(--solomei-radius-lg, 10px);\n\t\t\tpadding: 10px;\n\t\t\tmargin-bottom: 8px;\n\t\t">\n\t\t\t<div style="\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t\tmargin-bottom: 8px;\n\t\t\t\tpadding-bottom: 8px;\n\t\t\t\tborder-bottom: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t">\n\t\t\t\t<div style="\n\t\t\t\t\tfont-weight: var(--solomei-font-weight-semibold, 600);\n\t\t\t\t\tcolor: var(--solomei-color-foreground, #212121);\n\t\t\t\t\tfont-size: 13px;\n\t\t\t\t">${i}</div>\n\t\t\t\t<div style="\n\t\t\t\t\tcolor: var(--solomei-color-text-secondary, #979797);\n\t\t\t\t\tfont-size: 11px;\n\t\t\t\t">${e}</div>\n\t\t\t</div>\n\t\t\t${n?`\n\t\t\t\t<div style="margin-bottom: 8px;">\n\t\t\t\t\t<img src="${t.img}" \n\t\t\t\t\t\tclass="intent-debug-screenshot" \n\t\t\t\t\t\tstyle="\n\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t" \n\t\t\t\t\t\ttitle="Click to view fullscreen"/>\n\t\t\t\t\t<div style="\n\t\t\t\t\t\tcolor: var(--solomei-color-text-secondary, #979797);\n\t\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\t\tmargin-top: 4px;\n\t\t\t\t\t">Screenshot (~${o} KB)</div>\n\t\t\t\t</div>\n\t\t\t`:""}\n\t\t\t<details style="margin-top: 8px;">\n\t\t\t\t<summary style="\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tcolor: var(--solomei-color-foreground, #212121);\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\tfont-weight: var(--solomei-font-weight-regular, 500);\n\t\t\t\t\tuser-select: none;\n\t\t\t\t">View Details</summary>\n\t\t\t\t<div style="\n\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t\tbackground: var(--solomei-color-secondary, #fafaf9);\n\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\tcolor: var(--solomei-color-foreground, #212121);\n\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t">\n\t\t\t\t\t<div style="margin-bottom: 6px;"><strong>Properties:</strong></div>\n\t\t\t\t\t<pre style="\n\t\t\t\t\t\tmargin: 0 0 8px 0;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\twhite-space: pre-wrap;\n\t\t\t\t\t\tword-break: break-word;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t">${r}</pre>\n\t\t\t\t\t${t.html?`\n\t\t\t\t\t\t<div style="margin-bottom: 6px;"><strong>HTML:</strong></div>\n\t\t\t\t\t\t<pre style="\n\t\t\t\t\t\t\tmargin: 0 0 8px 0;\n\t\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\twhite-space: pre-wrap;\n\t\t\t\t\t\t\tword-break: break-word;\n\t\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t\t">${s}</pre>\n\t\t\t\t\t`:""}\n\t\t\t\t\t<div style="margin-bottom: 6px;"><strong>Bounding Box:</strong></div>\n\t\t\t\t\t<pre style="\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t">${a}</pre>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t</div>\n\t`})(t)).join(""),e.textContent=`${at.length} event${1===at.length?"":"s"}`}function ft(){if(Q)return void(Q.style.display="flex");const t=document.createElement("div");t.innerHTML='\n\t\t<div id="intent-debug-panel" data-intent-redact="ignore" style="\n\t\t\tposition: fixed;\n\t\t\ttop: 20px;\n\t\t\tright: 20px;\n\t\t\twidth: 400px;\n\t\t\tmax-height: 80vh;\n\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\tborder-radius: var(--solomei-radius-lg, 10px);\n\t\t\tbox-shadow: var(--solomei-shadow-box, 0 2px 10px rgba(0, 0, 0, 0.15));\n\t\t\tz-index: 2147483647;\n\t\t\tfont-family: var(--solomei-font-primary, -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif);\n\t\t\tfont-size: var(--solomei-font-size-base, 15px);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t">\n\t\t\t<div id="intent-debug-header" style="\n\t\t\t\tbackground: var(--solomei-color-primary, #262626);\n\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\tpadding: 12px 15px;\n\t\t\t\tborder-radius: var(--solomei-radius-lg, 10px) var(--solomei-radius-lg, 10px) 0 0;\n\t\t\t\tcursor: move;\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t\tuser-select: none;\n\t\t\t">\n\t\t\t\t<div style="font-weight: var(--solomei-font-weight-semibold, 600); font-size: 14px;">Intent SDK Debug</div>\n\t\t\t\t<div style="display: flex; gap: 8px;">\n\t\t\t\t\t<button id="intent-debug-minimize" style="\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\twidth: 24px;\n\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 4px);\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t">−</button>\n\t\t\t\t\t<button id="intent-debug-close" style="\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\twidth: 24px;\n\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 4px);\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t">×</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div id="intent-debug-content" style="\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\toverflow: hidden;\n\t\t\t\tflex: 1;\n\t\t\t">\n\t\t\t\t<div style="\n\t\t\t\t\tpadding: 12px 15px;\n\t\t\t\t\tborder-bottom: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t">\n\t\t\t\t\t<div style="font-weight: var(--solomei-font-weight-semibold, 600); color: var(--solomei-color-foreground, #212121); margin-bottom: 8px;">Event Log</div>\n\t\t\t\t\t<div style="display: flex; gap: 8px; align-items: center;">\n\t\t\t\t\t\t<button id="intent-debug-clear" style="\n\t\t\t\t\t\t\tbackground: var(--solomei-color-primary, #262626);\n\t\t\t\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\tpadding: 6px 12px;\n\t\t\t\t\t\t\tborder-radius: var(--solomei-radius-button, 20px);\n\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\tfont-weight: var(--solomei-font-weight-regular, 500);\n\t\t\t\t\t\t">Clear</button>\n\t\t\t\t\t\t<span id="intent-debug-count" style="color: var(--solomei-color-text-secondary, #979797); font-size: 12px;">0 events</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div id="intent-debug-events" style="\n\t\t\t\t\tflex: 1;\n\t\t\t\t\toverflow-y: auto;\n\t\t\t\t\tpadding: 10px;\n\t\t\t\t">\n\t\t\t\t\t<div style="color: var(--solomei-color-muted-foreground, #979797); text-align: center; padding: 20px;">\n\t\t\t\t\t\tNo events captured yet. Interact with the page to see events.\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t',Q=t.firstElementChild,document.body.appendChild(Q);const e=Q.querySelector("#intent-debug-close"),n=Q.querySelector("#intent-debug-minimize"),o=Q.querySelector("#intent-debug-clear");e?.addEventListener("click",()=>{dt(!1)}),n?.addEventListener("click",()=>{(()=>{if(!Q)return;const t=Q.querySelector("#intent-debug-content"),e=Q.querySelector("#intent-debug-minimize");t&&e&&(ct=!ct,ct?(t.style.display="none",Q.style.width="200px",e.textContent="+"):(t.style.display="flex",Q.style.width="400px",e.textContent="−"))})()}),o?.addEventListener("click",()=>{at=[],ut()}),(()=>{if(!Q)return;const t=Q.querySelector("#intent-debug-header");if(!t)return;let e=!1,n=0,o=0,i=0,r=0;t.addEventListener("mousedown",t=>{if("BUTTON"===t.target.tagName)return;e=!0;const n=Q.getBoundingClientRect();i=t.clientX-n.left,r=t.clientY-n.top}),document.addEventListener("mousemove",t=>{if(!e||!Q)return;t.preventDefault(),n=t.clientX-i,o=t.clientY-r;const s=window.innerWidth-Q.offsetWidth,a=window.innerHeight-Q.offsetHeight;n=Math.max(0,Math.min(n,s)),o=Math.max(0,Math.min(o,a)),Q.style.left=`${n}px`,Q.style.top=`${o}px`,Q.style.right="auto"}),document.addEventListener("mouseup",()=>{e=!1})})(),Q.addEventListener("click",t=>{const e=t.target;if(e.classList.contains("intent-debug-screenshot")){const t=e;t.src&&t.src.startsWith("data:image/")&&(t=>{const e=document.createElement("div");e.id="intent-debug-fullscreen-modal",e.setAttribute("data-intent-redact","ignore"),e.style.cssText="\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground: rgba(0, 0, 0, 0.95);\n\t\tz-index: 2147483646;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcursor: zoom-out;\n\t";const n=document.createElement("div");n.style.cssText="\n\t\tmax-width: 95%;\n\t\tmax-height: 95%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t";const o=document.createElement("img");o.src=t,o.style.cssText="\n\t\tmax-width: 100%;\n\t\tmax-height: calc(95vh - 60px);\n\t\tborder-radius: var(--solomei-radius-lg, 10px);\n\t\tbox-shadow: var(--solomei-shadow-box, 0 2px 10px rgba(0, 0, 0, 0.2));\n\t";const i=document.createElement("div");i.style.cssText="\n\t\tmargin-top: 20px;\n\t\tdisplay: flex;\n\t\tgap: 20px;\n\t\talign-items: center;\n\t";const r=document.createElement("button");r.textContent="✕ Close",r.style.cssText="\n\t\tpadding: 12px 24px;\n\t\tbackground: var(--solomei-color-primary-button-background, #262626);\n\t\tcolor: var(--solomei-color-primary-button-color, white);\n\t\tborder: none;\n\t\tborder-radius: var(--solomei-radius-button, 20px);\n\t\tfont-size: 14px;\n\t\tfont-weight: var(--solomei-font-weight-semibold, 600);\n\t\tcursor: pointer;\n\t\tbox-shadow: var(--solomei-shadow-box, 0 2px 10px rgba(0, 0, 0, 0.15));\n\t";const s=document.createElement("div");s.textContent="Click anywhere or press ESC to close",s.style.cssText="\n\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\tfont-size: 13px;\n\t",i.appendChild(r),i.appendChild(s),n.appendChild(o),n.appendChild(i),e.appendChild(n);const a=()=>{e.remove(),document.removeEventListener("keydown",c)};e.addEventListener("click",a),r.addEventListener("click",t=>{t.stopPropagation(),a()}),o.addEventListener("click",t=>{t.stopPropagation()});const c=t=>{"Escape"===t.key&&a()};document.addEventListener("keydown",c),document.body.appendChild(e)})(t.src)}}),ut()}"undefined"!=typeof window&&lt()&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{ft()}):ft());const gt={x:0,y:0,w:0,h:0},mt={maxSegments:300,maxDepth:24,maxTextLength:1200,maxHeadings:1,maxInteractives:8,minTextLength:12,minDescentCoverage:.67};const ht=new Set(["SCRIPT","STYLE","NOSCRIPT","TEMPLATE","HEAD","META","LINK","TITLE","BR","HR","IFRAME","CANVAS","svg"]),pt=new Set(["ARTICLE","SECTION","LI","FIGURE","BLOCKQUOTE","TR","DD","DETAILS"]),bt=new Set(["article","listitem","option","row","gridcell","tab","treeitem","card"]),vt=new Set(["H1","H2","H3","H4","H5","H6"]),wt=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA","SUMMARY","LABEL","VIDEO","AUDIO"]),yt=new Set(["button","link","option","tab","checkbox","radio","switch","menuitem","textbox","combobox","searchbox","slider"]),xt=["aria-label","aria-labelledby","title","role"],St=["type","autocomplete"],Tt={children:t=>t.children,parent:t=>t.parentElement??void 0,ownText(t){let e="";for(const n of t.childNodes)if(3===n.nodeType){const t=(n.textContent??"").trim();t&&(e+=t)}return e},kind:t=>t.tagName,isSkipped:t=>!!ht.has(t.tagName)||t.hasAttribute("hidden")||"true"===t.getAttribute("aria-hidden"),isUnit(t){if(pt.has(t.tagName))return!0;const e=t.getAttribute("role")?.toLowerCase();return Boolean(e&&bt.has(e))},isHeading:t=>vt.has(t.tagName),isInteractive(t){if(wt.has(t.tagName))return!0;const e=t.getAttribute("role")?.toLowerCase();return!(!e||!yt.has(e))||t.hasAttribute("onclick")||t.hasAttribute("href")},isMarked:t=>t.hasAttribute("data-intent-item"),signature(t){const e=Array.from(t.classList).sort().join(".");return`${t.tagName}#${e}`},mixDigestAttributes(t,e){let n=t;const o=e.tagName;for(const t of xt){const o=e.getAttribute(t);o&&(n=f(n,`${t}:${o}`))}const i=e.getAttribute("data-intent-redact");if(null!==i){n=f(n,`redact:${i}`);const t=e.getAttribute("data-intent-redact-label");t&&(n=f(n,t))}e.hasAttribute("data-html2canvas-ignore")&&(n=f(n,"redact:ignore-legacy"));const r=e.getAttribute("contenteditable");if(null!==r&&(n=f(n,`contenteditable:${r}`)),"INPUT"===o||"TEXTAREA"===o||"SELECT"===o)for(const t of St){const o=e.getAttribute(t);null!==o&&(n=f(n,`${t}:${o}`))}if("A"===o||"AREA"===o){const t=e.getAttribute("href");t&&(n=f(n,t))}else if("IMG"===o){const t=e.getAttribute("alt");t&&(n=f(n,t));const o=e.currentSrc||e.getAttribute("src");o&&(n=o.startsWith("data:")?g(n,o.length):f(n,o))}return n}},Et=80;function Lt(t,e){return t?t.replace(/\s+/g," ").trim().slice(0,e):""}function kt(...t){let e="";for(const n of t)e+=`${n.length}:${n}`;return e}function At(t,e,n,o,i){const r=kt(...o.map(t=>kt(t.label,t.role??"",t.href??""))),s=kt(...i.map(t=>kt(t.alt??"",t.src??"")));return(t=>{let e="";for(const{seed:n,prime:o}of m){let i=n>>>0;for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);i=Math.imul(i^255&n,o)>>>0,i=Math.imul(i^n>>>8,o)>>>0}e+=i.toString(36).padStart(7,"0")}return e})(kt(t,e,n,r,s))}const $t='h1, h2, h3, h4, h5, h6, [role="heading"]',It='a[href], button, [role="button"], [role="link"], [role="option"], [role="tab"], input[type="submit"], input[type="button"]';function Mt(t,e=400){if(O(t))return"";if(B(t))return Lt(z(t),e);const n=[];let o=e;const i=t=>{n.at(-1)!==t&&(n.push(t),o-=t.length)},r=t=>{if(!(o<=0||C(t))){if(y(t)){const e=Lt(j(t)?M(t):S(t),o);return void(e&&(n.push(e),o-=e.length))}if(D(t)){const e=Lt(M(t),o);return void(e&&(n.push(e),o-=e.length))}for(const e of t.childNodes){if(o<=0)return;if(e.nodeType===Node.TEXT_NODE){const t=Lt(e.textContent,o);t&&i(t)}else e.nodeType===Node.ELEMENT_NODE&&r(e)}}};return r(t),n.join(" ").slice(0,e)}const Ct=new Set(["submit","button","reset","image","hidden","file"]);function Nt(t){const e=t.cloneNode(!0);for(const t of e.querySelectorAll("input, textarea, select, button, option"))t.remove();return Lt(e.textContent,Et)}function Dt(t){const e=Lt(t.getAttribute("aria-label"),Et);if(e)return e;const n=t.labels?.[0];if(n){const t=Nt(n);if(t)return t}const o=t.closest("label");if(o){const t=Nt(o);if(t)return t}return Lt(t.getAttribute("placeholder"),Et)}function Ot(t,e){if(H(t))return z(t);if("checkbox"===e||"radio"===e)return t.checked?"checked":"unchecked";if("SELECT"===t.tagName){const e=t;return e.selectedOptions?.[0]?.textContent??e.value}return S(t)}function Pt(t){if(O(t))return"";if(B(t))return z(t);const e=Lt(t.getAttribute("aria-label"),Et);if(e)return e;const n=t.getAttribute("aria-labelledby");if(n){const e=n.split(/\s+/).map(e=>t.ownerDocument.getElementById(e)).filter(Boolean).map(t=>Mt(t,Et)).join(" ");if(e.trim())return Lt(e,Et)}const o=Lt(t.getAttribute("title"),Et);if(o)return o;const i=Mt(t,Et);if(i)return i;const r=t.querySelector("img[alt]");return Lt(r?.getAttribute("alt"),Et)}function Bt(t){const e=t.currentSrc||t.src||"";if(e&&!e.startsWith("data:")&&!e.startsWith("blob:"))return e.length>512?void 0:e}function zt(t){const e=t.getAttribute("role")?.toLowerCase();return e||("A"===t.tagName?"link":"BUTTON"===t.tagName||"INPUT"===t.tagName?"button":t.tagName.toLowerCase())}let Ht;function Rt(){if(!Ht)throw new Error("[intent] No platform host installed. Import @solomei-ai/intent (web) or @solomei-ai/intent/native before use.");return Ht}let Ut=!1;const Ft={get(t){try{return localStorage.getItem(t)??void 0}catch{return}},set(t,e){try{localStorage.setItem(t,e)}catch{}},remove(t){try{localStorage.removeItem(t)}catch{}}},jt={platform:"web",now:()=>performance.now(),wallClock:()=>Date.now(),storage:Ft,send:async(t,e,{beacon:n,byteLength:o})=>{if(n)return((t,e)=>{if("function"!=typeof navigator.sendBeacon)return!1;try{return navigator.sendBeacon(t,new Blob([e],{type:"application/json"}))}catch{return!1}})(t,e);const i=await(async t=>{const e=globalThis.CompressionStream;if(Ut&&"function"==typeof e)try{const n=new Blob([t]).stream().pipeThrough(new e("gzip"));return await new Response(n).blob()}catch{return}})(e),r={"Content-Type":"application/json"},s=Ft.get(a);s&&(r["x-sl-access-token"]=s);const c=Y();c&&(r["x-intent-sid"]=c),i&&(r["Content-Encoding"]="gzip");const l=await fetch(t,{method:"POST",headers:r,body:i??e,keepalive:o<=6e4,credentials:"omit"});return l.ok||jt.log(`[Transport] batch rejected with ${l.status}`),l.ok},scheduleIdle:async()=>{const{scheduler:t}=globalThis;if(t&&"function"==typeof t.postTask)try{return void await t.postTask(()=>{},{priority:"background"})}catch{}"function"!=typeof requestIdleCallback?await new Promise(t=>{setTimeout(t,0)}):await new Promise(t=>{requestIdleCallback(()=>{t()},{timeout:200})})},log(...t){try{"undefined"!=typeof localStorage&&"enabled"===localStorage.getItem(r)&&console.log(...t)}catch{}}};function qt(){void 0===Ht&&(Ht=jt)}const Wt={visibilityIntervalMs:500,resegmentDebounceMs:700,resegmentMaxDelayMs:1500,segmentOptions:{}},_t=new class{options;entries=new Map;pendingRegistrations=[];generation=0;constructor(t){this.options=t}get size(){return this.entries.size}get(t){return this.entries.get(t)}values(){return this.entries.values()}reconcile(t,e){const n=new Set,o=[],i=[];for(const{node:e,kind:i,fingerprint:r}of t){n.add(e);const t=this.entries.get(e);t?t.fingerprint!==r&&(t.fingerprint=r,t.kind=i,t.registered=!1,t.digest=void 0):(this.entries.set(e,{node:e,kind:i,intersecting:!1,visible:!1,ratio:0,rect:{...gt},dwellMs:0,registered:!1,fingerprint:r}),o.push(e))}for(const[t,o]of this.entries)n.has(t)&&(e?.(t)??1)||(this.closeDwell(o),this.entries.delete(t),i.push(t));return this.options.log?.(`[Ledger] ${this.entries.size} segments tracked`),{added:o,removed:i}}setGeometry(t,e){const n=this.entries.get(t);n&&(n.intersecting=e.intersecting,n.ratio=e.ratio,n.rect=e.rect)}refreshVisibility(t){const e=this.options.now();for(const n of this.entries.values()){if(!n.intersecting){this.closeDwell(n,e),n.visible=!1;continue}const o=t?.(n.node)??!0;o&&void 0===n.visibleSince?n.visibleSince=e:o||this.closeDwell(n,e),n.visible=o}}async registerVisible(){const t=this.generation,e=[];for(const t of this.entries.values())t.visible&&!t.registered&&e.push(t);if(0===e.length)return;for(const t of e)t.registered=!0;let n,o=0;for(const i of e)try{if(await this.options.scheduleIdle(),t!==this.generation)return void this.options.log?.("[Ledger] abandoned an extraction pass the ledger was cleared under");const e=this.options.extract(i.node,i.kind);e&&(i.digest=e,this.pendingRegistrations.push(e))}catch(t){i.registered=!1,o++,n=t}o>0&&this.options.log?.(`[Ledger] extraction failed for ${o}/${e.length} segments: ${String(n)}`)}getOnScreen(){const t=this.options.now(),e=new Map;for(const n of this.entries.values()){if(!n.visible||!n.digest)continue;const o=void 0===n.visibleSince?0:t-n.visibleSince,i={ref:n.digest.ref,ratio:Math.round(100*n.ratio)/100,dwellMs:Math.round(n.dwellMs+o),rect:n.rect},r=e.get(i.ref);(!r||i.dwellMs>r.dwellMs)&&e.set(i.ref,i)}return[...e.values()]}drainRegistrations(){const t=new Set;for(const e of this.entries.values())e.digest&&t.add(e.digest.ref);const e=new Set,n=[];let o=0;for(const i of this.pendingRegistrations)e.has(i.ref)||(t.has(i.ref)?(e.add(i.ref),n.push(i)):o++);return this.pendingRegistrations=[],o>0&&this.options.log?.(`[Ledger] dropped ${o} registrations the ledger no longer describes`),n}getCoverage(){let t=0,e=0;for(const n of this.entries.values())n.visible&&t++,n.digest&&e++;return{segments:this.entries.size,onScreen:t,registered:e}}clear(){this.entries.clear(),this.pendingRegistrations=[],this.generation++}closeDwell(t,e=this.options.now()){void 0!==t.visibleSince&&(t.dwellMs+=e-t.visibleSince,t.visibleSince=void 0)}}({now:()=>performance.now(),extract:(t,e)=>function(t,e){if(O(t))return;const n=B(t)?void 0:t.matches($t)?t:[...t.querySelectorAll($t)].find(t=>!O(t)&&!B(t)),o=n?Lt(Mt(n,120),120):"",i=[],r=t.matches(It)?[t]:[...t.querySelectorAll(It)];for(const t of r){if(i.length>=12)break;if(O(t))continue;if(B(t)){i.push({label:z(t),role:zt(t)});continue}const e=Pt(t);if(!e)continue;const n=t.getAttribute("href")??void 0;i.push({label:e,role:zt(t),...n?{href:n}:{}})}const s=[];for(const e of t.querySelectorAll("img")){if(s.length>=6)break;if(O(e)||B(e))continue;const t=Lt(e.getAttribute("alt"),Et),n=Bt(e);(t||n)&&s.push({...t?{alt:t}:{},...n?{src:n}:{}})}return(t=>{const e=Lt(t.heading,120),n=Lt(t.text,400),o=[];for(const e of t.actions??[]){if(o.length>=12)break;const t=Lt(e.label,Et);t&&o.push({label:t,role:e.role,...e.href?{href:e.href}:{}})}const i=[];for(const e of t.images??[]){if(i.length>=6)break;const t=Lt(e.alt,Et),{src:n}=e;(t||n)&&i.push({...t?{alt:t}:{},...n?{src:n}:{}})}if(n||e||0!==o.length||0!==i.length)return{ref:At(t.kind,e,n,o,i),kind:t.kind,...e?{heading:e}:{},text:n,actions:o,images:i}})({kind:e,heading:o,text:Mt(t),actions:i,images:s})}(t,e),scheduleIdle:()=>jt.scheduleIdle(),log:t=>{jt.log(t)}});let Xt,Yt,Vt,Jt,Kt,Gt,Qt,Zt=Wt,te=!1;function ee(){Gt?.(),Gt=void 0}async function ne(t=2e3){Qt&&await Promise.race([Qt,new Promise(e=>{setTimeout(e,t)})])}function oe(){const t="function"==typeof Element.prototype.checkVisibility;_t.refreshVisibility(e=>!t||e.checkVisibility({opacityProperty:!0,visibilityProperty:!0,contentVisibilityAuto:!0}))}function ie(){oe(),_t.registerVisible().then(ee)}function re(t){for(const e of t){const{x:t,y:n,width:o,height:i}=e.boundingClientRect;_t.setGeometry(e.target,{intersecting:e.isIntersecting,ratio:e.intersectionRatio,rect:{x:Math.round(t),y:Math.round(n),w:Math.round(o),h:Math.round(i)}})}ie()}function se(){if(!Xt)return;const t=((t,e={})=>function(t,e,n={}){const o={...mt,...n},i=((t,e)=>{const n=new Map,o=t=>{const i=e.ownText(t),r={textLength:i.length,headings:e.isHeading(t)?1:0,interactives:e.isInteractive(t)?1:0,contentHash:e.mixDigestAttributes(f(f(d,i),e.kind(t)),t)};for(const n of e.children(t)){if(e.isSkipped(n))continue;const t=o(n);r.textLength+=t.textLength,r.headings+=t.headings,r.interactives+=t.interactives,r.contentHash=g(r.contentHash,t.contentHash)}return n.set(t,r),r};return o(t),n})(t,e),r=[],s=t=>i.get(t)??{textLength:0,headings:0,interactives:0,contentHash:d},a=(t,e)=>{const n=s(t);r.push({node:t,reason:e,textLength:n.textLength,interactives:n.interactives,headings:n.headings,contentHash:n.contentHash})},c=t=>{const e=s(t);return e.interactives>0||e.textLength>=o.minTextLength},l=(t,n)=>{if(r.length>=o.maxSegments||e.isSkipped(t))return!1;if(e.isMarked(t))return a(t,"marked"),!0;const i=s(t);if(n>=o.maxDepth)return!!c(t)&&(a(t,"depth"),!0);if(i.textLength<=o.maxTextLength&&i.headings<=o.maxHeadings&&i.interactives<=o.maxInteractives&&c(t)){if(e.isUnit(t))return a(t,"unit"),!0;if(((t,e)=>{const n=e.parent(t);if(void 0===n)return!1;const o=e.signature(t);let i=0;for(const t of e.children(n))if(e.signature(t)===o&&(i++,i>=3))return!0;return!1})(t,e))return a(t,"repeated"),!0;if(i.headings>0)return a(t,"heading"),!0}const d=r.length;let u=!1;for(const o of e.children(t))u=l(o,n+1)||u;return!u&&c(t)?(a(t,"leaf"),!0):u&&i.textLength>0&&r.slice(d).reduce((t,e)=>t+e.textLength,0)/i.textLength<o.minDescentCoverage&&c(t)?(r.length=d,a(t,"unit"),!0):u};for(const n of e.children(t))l(n,0);return r}(t,Tt,e))(document.body,Zt.segmentOptions),{added:e,removed:n}=_t.reconcile(t.map(({node:t,reason:e,contentHash:n})=>({node:t,kind:e,fingerprint:n})),t=>t.isConnected);for(const t of e)Xt.observe(t);for(const t of n)Xt.unobserve(t)}function ae(){return void 0!==Jt&&(clearTimeout(Jt),Jt=void 0),Kt=void 0,jt.scheduleIdle().then(se)}function ce(){const t=performance.now();Kt??=t,t-Kt>=Zt.resegmentMaxDelayMs?ae():(void 0!==Jt&&clearTimeout(Jt),Jt=setTimeout(ae,Zt.resegmentDebounceMs))}function le(){return te&&void 0!==Kt?ae():Promise.resolve()}function de(t={}){te||"undefined"==typeof IntersectionObserver||(document.body?(te=!0,qt(),Zt={...Wt,...t},Qt=new Promise(t=>{Gt=t}),Xt=new IntersectionObserver(re,{threshold:[0,.25,.75]}),jt.scheduleIdle().then(se),Yt=new MutationObserver(ce),Yt.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["href","src","srcset","sizes","alt","aria-label","aria-labelledby","title","role","data-intent-redact","data-intent-redact-label","data-html2canvas-ignore","type","autocomplete","contenteditable"],characterData:!0}),window.addEventListener("resize",ce,{passive:!0}),Vt=setInterval(ie,Zt.visibilityIntervalMs)):document.addEventListener("DOMContentLoaded",()=>{de(t)},{once:!0}))}function ue(){return _t.getOnScreen()}const fe=()=>_t.drainRegistrations();function ge(){return _t.getCoverage()}const me={batchSize:20,flushIntervalMs:5e3,maxBuffered:200},he=Object.freeze(new Set(["click","input-submit","form-submit"]));function pe(t){let e=0;for(let n=0;n<t.length;n++){const o=t.charCodeAt(n);o<128?e+=1:o<2048?e+=2:o>=55296&&o<=56319?(e+=4,n++):e+=3}return e}class be{options;flushOn;buffer=[];extras={};cancelTimer;generation=0;inFlight=new Map;stats={sent:0,failed:0,dropped:0};constructor(t){this.options=t,this.flushOn=t.flushOn??he}getStats(){return{...this.stats,buffered:this.buffer.length}}start(){this.cancelTimer??=this.options.schedule(()=>{this.flush()},this.options.flushIntervalMs)}stop(){this.cancelTimer?.(),this.cancelTimer=void 0,this.buffer=[],this.extras={},this.generation++}discard(){this.buffer=[],this.extras={},this.generation++}enqueue(t){if(this.buffer.push(t),this.buffer.length>this.options.maxBuffered){const t=this.buffer.length-this.options.maxBuffered;this.buffer.splice(0,t),this.stats.dropped+=t,Rt().log(`[Transport] buffer full, dropped ${t} oldest events`)}(this.buffer.length>=this.options.batchSize||this.flushOn.has(t.event))&&this.flush()}attach(t,e){0!==e.length&&(this.extras[t]=[...this.extras[t]??[],...e])}async flush({beacon:t=!1}={}){if(t&&this.persistInFlight(),0===this.buffer.length&&0===Object.keys(this.extras).length)return;const e=Rt(),n=this.buffer,o=this.extras,i=this.generation;let r;try{r=JSON.stringify({...this.options.context(),sentAt:e.wallClock(),events:n,...o})}catch(t){return this.buffer=[],this.extras={},this.stats.failed+=n.length,void e.log(`[Transport] ${n.length} events dropped, batch could not be serialised`,t)}this.buffer=[],this.extras={};const s=pe(r);this.inFlight.set(r,{generation:i,...t?{release:this.options.onTeardownBatch?.(r)}:{}});let a=!1;try{a=await e.send(this.options.endpoint(),r,{beacon:t,byteLength:s})}catch(t){e.log(`[Transport] ${n.length} events failed to send`,t)}const c=this.inFlight.get(r)?.release;return this.inFlight.delete(r),a?(this.stats.sent+=n.length,void c?.()):(this.stats.failed+=n.length,e.log(`[Transport] ${n.length} events undelivered (${s} bytes, beacon=${t})`),i!==this.generation?(e.log("[Transport] dropped an in-flight batch discarded mid-request"),void c?.()):void(t||this.restore(n,o)))}persistInFlight(){if(this.options.onTeardownBatch)for(const[t,e]of this.inFlight)e.release||e.generation!==this.generation||(e.release=this.options.onTeardownBatch(t),Rt().log("[Transport] took custody of a batch still in flight at teardown"))}restore(t,e){for(const[t,n]of Object.entries(e))this.extras[t]=[...n,...this.extras[t]??[]];this.buffer=[...t,...this.buffer];const n=this.buffer.length-this.options.maxBuffered;n>0&&(this.buffer.splice(0,n),this.stats.dropped+=n,Rt().log(`[Transport] buffer full after retry, dropped ${n} oldest events`))}async replay(t){const e=Rt();try{return await e.send(this.options.endpoint(),t,{beacon:!1,byteLength:pe(t)})}catch(t){return e.log("[Transport] replay failed",t),!1}}}const ve={...me,compress:!1};function we(){return`${jt.storage.get(c)??l}/v2/events`}function ye(){return{clientId:jt.storage.get(a),sid:Y(),platform:"web"}}function xe(t,e){const n=setInterval(t,e);return()=>{clearInterval(n)}}let Se,Te,Ee=!1;function Le(){return qt(),Se??=new be({...me,endpoint:we,context:ye,schedule:xe}),Se}async function ke(t={}){return Le().flush(t)}function Ae(t){Le().enqueue(t)}function $e(t,e){Le().attach(t,e)}function Ie(){"hidden"===document.visibilityState&&ke({beacon:!0})}function Me(){ke({beacon:!0})}let Ce,Ne=0,De=0;function Oe(t){try{return new Blob([t]).size}catch{return t.length}}let Pe=!1;const Be="__intent__sdk__initialized__",ze=["button","a[href]","a",'input[type="submit"]','input[type="button"]','[role="button"]','[role="link"]',"[onclick]"].join(",");function He(){return"granted"===localStorage.getItem(o)}function Re(){return G(),He()&&Boolean(Y())&&Boolean(localStorage.getItem(a)?.trim().length)}function Ue(){return!Re()||tt}async function Fe(e){for(;Ce;)await Ce;return Ce=(async()=>{try{const n=performance.now(),o=performance.now(),i=(t=>{if(C(t))return"";const e=t.cloneNode(!1);return Array.from(t.attributes).forEach(({name:t,value:n})=>{e.setAttribute(t,n)}),w(t)?w(e)&&(e.value=t.value):y(t)?e.innerHTML=t.innerHTML:e.textContent=t.textContent,_(e),w(e)&&e.setAttribute("value",e.value),e.outerHTML})(e);p(`[Timing] serialize: ${(performance.now()-o).toFixed(2)}ms`);const r=e.getBoundingClientRect(),s=performance.now(),a={left:window.scrollX,top:window.scrollY,right:window.scrollX+window.innerWidth,bottom:window.scrollY+window.innerHeight},c=await t(document.body,{useCORS:!0,x:window.scrollX,y:window.scrollY,width:window.innerWidth,height:window.innerHeight,scale:.6,logging:!1,onclone(t){_(t)},ignoreElements(t){if(!(t instanceof Element))return!1;if(O(t))return!0;const e=t.getBoundingClientRect(),n=e.left+window.scrollX,o=e.top+window.scrollY,i=e.right+window.scrollX,r=e.bottom+window.scrollY,s=100,c=o>a.bottom+s;if(!(i<a.left-s||n>a.right+s||r<a.top-s||c))return!1;const{position:l}=window.getComputedStyle(t);let d;if("fixed"===l||"absolute"===l){const t=500;d=i<a.left-t||n>a.right+t||r<a.top-t||o>a.bottom+t}else d=c;return!!d&&!("INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||t.hasAttribute("data-intent-redact")||t.querySelector("input, textarea, select, [data-intent-redact]"))}});p(`[Timing] html2canvas-pro: ${(performance.now()-s).toFixed(2)}ms`);const l=performance.now(),d=c.toDataURL("image/jpeg",.8);p(`[Timing] jpeg-encoding: ${(performance.now()-l).toFixed(2)}ms`);return p(`[Timing] capture-total: ${(performance.now()-n).toFixed(2)}ms`),{html:i,bbox:{x:r.x,y:r.y,w:r.width,h:r.height},img:d,fullCanvas:c}}finally{Ce=void 0}})(),Ce}function je(){const t=localStorage.getItem(a),e={"Content-Type":"application/json"};t&&(e["x-sl-access-token"]=t);const n=Y();return n&&(e["x-intent-sid"]=n),e}function qe(){return"screenshot"!==localStorage.getItem("intent:data-capture-mode")}const We={w:0,h:0,scrollY:0,docH:0};function _e(){We.w=window.innerWidth,We.h=window.innerHeight,We.scrollY=Math.round(window.scrollY),We.docH=document.documentElement.scrollHeight}function Xe(){return{...We}}function Ye(t,e,n){if(!Re())return;const o=ue(),i=n instanceof HTMLFormElement?function(t){if(O(t))return;const e=[];for(const n of Array.from(t.elements)){if(!y(n)||n.disabled)continue;const t="TEXTAREA"===n.tagName||"SELECT"===n.tagName?n.tagName.toLowerCase():(n.getAttribute("type")??"text").toLowerCase();Ct.has(t)||O(n)||e.push({name:n.getAttribute("name")??n.id,label:Dt(n),type:t,value:Ot(n,t)})}return((t,e)=>{const n=[];let o=!1;for(const t of e){if(n.length>=30){o=!0;break}const e=Lt(t.name,Et),i=Lt(t.label,Et),r=e||i;r&&n.push({name:r,...i&&i!==r?{label:i}:{},...t.type?{type:t.type}:{},value:Lt(t.value,300)})}if(0===n.length)return;const i=Lt(t,Et);return{...i?{name:i}:{},fields:n,...o?{truncated:!0}:{}}})(t.getAttribute("name")??t.getAttribute("aria-label")??(t.id||void 0)??void 0,e)}(n):void 0;let r;if(n!==document.body&&n!==document.documentElement&&!O(n)){const t=(t=>{let e=t;for(;e;){const t=_t.get(e);if(t)return t;e=e.parentElement??void 0}})(n);r={tag:n.tagName,label:n instanceof HTMLFormElement?i?.name??"":Pt(n),role:n.getAttribute("role")??void 0,ref:t?.digest?.ref},y(n)&&(r.value=H(n)?z(n):S(n))}p(`[Digest] ${t} — ${o.length} segments on screen`),$e("segments",fe()),le(),Ae({ts:Date.now(),event:t,url:window.location.href,props:{...e,localTime:(new Date).toISOString()},...r?{chosen:r}:{},...i?{form:i}:{},onScreen:o,viewport:Xe(),coverage:ge()}),he.has(t)&&((t,e,n)=>{void 0!==Ke&&clearTimeout(Ke);const o=new Set(n.map(t=>t.ref)),i=n=>{Ke=void 0,(async()=>{if(!Re())return;await(async()=>{te&&(await le(),oe(),await _t.registerVisible())})();const r=ue().filter(t=>!o.has(t.ref));if(0===r.length)return 0===n?void(Ke=setTimeout(()=>i(1),Je)):void p(`[Digest] settled after ${t} — nothing new on screen`);p(`[Digest] settled after ${t} — ${r.length} newly on screen`),$e("segments",fe()),Ae({ts:Date.now(),event:"settled",url:window.location.href,props:{after:t,label:e,localTime:(new Date).toISOString()},onScreen:r,viewport:Xe(),coverage:ge()})})()};Ke=setTimeout(()=>i(0),Zt.resegmentMaxDelayMs+Ve)})(t,r?.label,o)}const Ve=400,Je=900;let Ke;function Ge(t,e,n,o){qe()?Ye(t,e,n):Qe(t,e,n,o)}async function Qe(t,e,n,o){if(!Re())return;const i={...e,localTime:(new Date).toISOString()};y(n)&&!O(n)&&(i.value=H(n)?z(n):S(n));let r="",s={x:0,y:0,w:0,h:0},d="";const u=!("scroll"===t||"page-blur"===t||"page-focus"===t),f=Date.now();let g=o;u&&(("click"===t||"input-submit"===t||"pageview"===t)&&!g||!g&&f-Ne>=300)&&(g=await Fe(n),Ne=f),g&&(r=g.html,s=g.bbox,d=g.img);const m="page-blur"===t||"page-focus"===t||"pageview"===t,h={ts:Date.now(),event:t,url:window.location.href,props:i,html:m?"":r,bbox:s,img:d};(function(t,e,n,o,i){((t,e,n,o,i)=>{if(!lt())return;const r={id:"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random()}`,timestamp:Date.now(),event:t,props:e,html:n,bbox:o,img:i};at.push(r),at.length>50&&at.shift(),ut()})(t,e,n,o,i)})(t,i,m?"":r,s,d),await async function(t){const e=`${localStorage.getItem(c)??l}/events`,n=localStorage.getItem(a)??void 0,o=JSON.stringify({...t,clientId:n}),i=Oe(o);let r;try{const t=await fetch(e,{method:"POST",headers:je(),body:o,keepalive:i<=6e4,credentials:"omit"});if(t.ok)return;r=new Error(`events endpoint returned ${t.status}`)}catch(t){r=t}p(`[Transmit] ${t.event} (${i} bytes) failed on /events, trying /p.gif`,r);try{await(async t=>{const e=`${localStorage.getItem(c)??l}/p.gif`,n=JSON.stringify(t),o=await fetch(e,{method:"POST",headers:je(),body:n,keepalive:Oe(n)<=6e4,credentials:"omit",cache:"no-store"});if(!o.ok)throw new Error(`pixel body fallback failed with ${o.status}`)})(t)}catch(e){De++,p(`[Transmit] DROPPED ${t.event} (${i} bytes), ${De} total`,e)}}(h)}G();let Ze=!1;function tn(){Ze&&qe()&&He()&&(function(t={}){if(Ee)return;Ee=!0,qt();const{compress:e,...n}={...ve,...t};Ut=e,Se=new be({...n,endpoint:we,context:ye,schedule:xe}),Se.start(),window.addEventListener("pagehide",Me),document.addEventListener("visibilitychange",Ie)}(),de())}let en=!1;function nn(){!en&&Re()&&(en=!0,Ge("pageview",{url:window.location.href,title:document.title,ref:document.referrer},document.body))}function on(){void 0!==Ke&&(clearTimeout(Ke),Ke=void 0),en=!1,G(),Xt?.disconnect(),Yt?.disconnect(),window.removeEventListener("resize",ce),void 0!==Vt&&clearInterval(Vt),void 0!==Jt&&clearTimeout(Jt),Xt=void 0,Yt=void 0,Vt=void 0,Jt=void 0,Kt=void 0,_t.clear(),ee(),Qt=void 0,te=!1,Se?.discard()}function rn(){G(),tn(),qe()?ne().then(nn):nn()}async function sn(t={}){if(!Re())return;const e="number"==typeof t.lat&&"number"==typeof t.lon;if(e&&Z)return;if(!e&&Pe)return;const o=localStorage.getItem("intent:data-ip"),i={context:await n()};o&&(i.ip=o);for(const[e,n]of Object.entries(t))i[e]=n;await Qe("context",i,document.body,{html:"",bbox:{x:0,y:0,w:0,h:0},img:""}),e||(Pe=!0)}async function an(){await(async(t,e)=>{const n=e(),o=it();if(!n||!o||Z)return;if(!("geolocation"in navigator))return;if(nt)return;nt=!0,tt=!0;const i={enableHighAccuracy:!1,maximumAge:3e5,timeout:2e4};try{await(navigator.permissions?.query({name:"geolocation"}))}catch(t){}await new Promise(t=>{let e=!1;const n=async(n,o,i)=>{e||(e=!0,Number.isFinite(n)&&Number.isFinite(o)&&(await(async(t,e,n)=>{await sn({lat:t,lon:e,source:"device",...n})})(n,o,i),Z=!0),nt=!1,tt=!1,ot=!0,t())};navigator.geolocation.getCurrentPosition(t=>{const e=t.coords;n(e.latitude,e.longitude,{accuracy:e.accuracy,altitude:"number"==typeof e.altitude?e.altitude:void 0,altitudeAccuracy:"number"==typeof e.altitudeAccuracy?e.altitudeAccuracy:void 0,heading:"number"==typeof e.heading?e.heading:void 0,speed:"number"==typeof e.speed?e.speed:void 0,timestamp:t.timestamp,visibility:document.visibilityState,focused:document.hasFocus()})},t=>{const e=t?.code,o={error:{code:e,name:1===e?"PERMISSION_DENIED":2===e?"POSITION_UNAVAILABLE":3===e?"TIMEOUT":"UNKNOWN",message:t?.message??""},online:navigator.onLine,visibility:document.visibilityState,focused:document.hasFocus(),secure:window.isSecureContext,proto:location.protocol,host:location.hostname};n(void 0,void 0,o)},i)})})(0,Re)}function cn(){(t=>{if(et||!it()||Z)return;et=!0;const e=()=>{window.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",e,!0),t()};window.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",e,!0)})(an)}let ln=!document.hidden&&document.hasFocus(),dn=document.hasFocus();function un(){if(Ue())return;const t=!document.hidden&&document.hasFocus();t&&(dn=!0),dn||t?t!==ln&&(ln=t,Ge(t?"page-focus":"page-blur",{},document.body)):ln=t}function fn(t){let e=!1;const n=()=>{e||(e=!0,t())};"complete"!==document.readyState?window.addEventListener("load",n,{once:!0}):n()}function gn(){(()=>{const t=globalThis;return!t[Be]&&(Object.defineProperty(t,Be,{value:!0,configurable:!1,enumerable:!1,writable:!1}),!0)})()&&(_e(),window.addEventListener("resize",h(_e,200),{passive:!0}),window.addEventListener("scroll",h(_e,100),{passive:!0}),qe()&&(function(){const t=()=>`${window.location.pathname}${window.location.search}`;let e=t();const n=()=>{t()===e||Ue()||(e=t(),_e(),en=!0,Ge("pageview",{url:window.location.href,title:document.title,ref:document.referrer,spa:!0},document.body))};for(const t of["pushState","replaceState"]){const e=history[t];history[t]=function(...t){const o=e.apply(this,t);return n(),o}}window.addEventListener("popstate",n)}(),Ze=!0,tn()),fn(()=>{Re()&&(sn(),(window.isSecureContext||"localhost"===location.hostname)&&(it()&&cn(),window.addEventListener("focus",()=>{st()&&an()}),document.addEventListener("visibilitychange",()=>{!document.hidden&&st()&&an()})))}),window.addEventListener("storage",t=>{t.key===o&&("granted"===localStorage.getItem(o)?(Pe=!1,rn(),sn(),it()&&cn()):(Pe=!1,rt(),on())),t.key===i&&(it()?cn():rt())}),fn(()=>{qe()?ne().then(nn):nn()}),addEventListener("pointerdown",h(t=>{if(qe()||Ue())return;const e=t.target instanceof Element?t.target.closest(ze):null;if(!(e instanceof HTMLElement))return;const n=Date.now();n-Ne<300?Te=void 0:(Ne=n,Te=Fe(e))},50),{capture:!0,passive:!0}),addEventListener("click",async t=>{if(Ue())return;if(!(t.target instanceof Element))return;const e=t.target.closest(ze);if(!(e instanceof HTMLElement))return;const n=O(o=e)?"":B(o)?z(o):(t=>{const e=t.getAttribute("aria-label")?.trim();if(e)return e;const n=t.title.trim();if(n)return n;const o=t.textContent?.trim();return o||"<no visible label>"})(o);var o;qe()?Ge("click",{tag:e.tagName,label:n},e):(async()=>{const t=Te?await Te:void 0;Te=void 0,Ge("click",{tag:e.tagName,label:n},e,t)})()},!0),addEventListener("keydown",t=>{if(!Ue()&&"Enter"===t.key){const e=t.target;if(!(e instanceof HTMLElement))return;const n=e.tagName,o=O(e);if("INPUT"===n||"TEXTAREA"===n){const t=e instanceof HTMLInputElement?e.name:void 0;Ge("input-submit",{tag:n,name:o?void 0:t??(e.id||void 0)},e)}else if(y(e)){const t=(t=>{let e=t;for(;e&&e!==document.body;){const t=e.getAttribute("contenteditable");if("true"===t||""===t||"plaintext-only"===t)return e;e=e.parentElement}return null})(e)??e;if("newline"===t.dataset.intentEnter)return;const n=t.getAttribute("role")?.toLowerCase(),o=t.id||void 0,i=t.getAttribute("name")||t.getAttribute("aria-label")||o;Ge("input-submit",{tag:"CONTENTEDITABLE",role:n??"contenteditable",name:O(t)?void 0:i},t)}}},{capture:!0}),addEventListener("submit",t=>{!Ue()&&qe()&&t.target instanceof HTMLFormElement&&Ge("form-submit",{},t.target)},{capture:!0}),["focus","blur"].forEach(t=>{window.addEventListener(t,un)}),document.addEventListener("visibilitychange",un),window.addEventListener("scroll",(()=>{let t;return(...e)=>{void 0!==t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=void 0,(()=>{Ue()||Ge("scroll",{scrollX:window.scrollX,scrollY:window.scrollY},document.body)})(...e)},250)}})(),{passive:!0}),window.intent??={send(t,e){Re()&&Ge(t,e,document.body)}})}function mn(t,e){try{if(void 0===e)return;localStorage.setItem(t,e?"intent:consent"===t?"granted":"enabled":"disabled")}catch{}}function hn(t){mn("intent:consent",t),t?rn():on()}function pn(t){mn("intent:geo",t)}function bn(t){mn("intent:debug",t)}function vn(t){t&&"undefined"!=typeof console&&console.warn&&console.warn("[Intent SDK] ⚠️ Debug panel is enabled. This feature is NOT recommended for production use. It exposes internal SDK behavior and should only be used during development."),(t=>{dt(t)})(t)}function wn(t={}){localStorage.setItem("intent:data-client-id",t.clientId??""),localStorage.setItem("intent:data-ip",t.ip??""),localStorage.setItem("intent:data-base-url",t.baseUrl??"https://intent.callimacus.ai"),"number"==typeof t.sidMaxAgeSeconds&&localStorage.setItem("intent:data-sid-max-age",String(t.sidMaxAgeSeconds)),mn("intent:consent",t.consent),mn("intent:geo",t.geo),mn("intent:debug",t.debug),void 0!==t.debugPanel&&vn(t.debugPanel),t.consent&&(V("intent_sid")||J("undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random()}`,t.sidMaxAgeSeconds)),gn()}function yn(){return V("intent_sid")}function xn(){G()}function Sn(){K()}function Tn(t){Number.isFinite(t)&&localStorage.setItem("intent:data-sid-max-age",String(t));const e=V("intent_sid");e&&J(e,t)}export{Sn as clearIntentSessionId,xn as ensureIntentSessionId,yn as getIntentSessionId,wn as initIntent,hn as setConsent,bn as setDebug,vn as setDebugPanel,pn as setGeo,Tn as setIntentSessionMaxAge};
5
+ import t from"html2canvas-pro";import e from"js-cookie";async function n(){const t=(new Intl.DateTimeFormat).resolvedOptions().timeZone,e=(t=>{const e=t<=0?"+":"-",n=Math.abs(t);return`${e}${String(Math.floor(n/60)).padStart(2,"0")}:${String(n%60).padStart(2,"0")}`})((new Date).getTimezoneOffset()),n=[];n.push(`Language: ${navigator.language}`),navigator.languages?.length&&n.push(`Languages: ${navigator.languages.join(", ")}`),n.push(`User agent: ${navigator.userAgent}`);const o=(()=>{if(!("userAgentData"in(t=navigator))||void 0===t.userAgentData)return;var t;const e=navigator.userAgentData,n=Array.isArray(e.brands)?e.brands.map(t=>`${t.brand} ${t.version}`).join(", "):void 0,o=e.platform?`${e.platform}${e.mobile?" (mobile)":""}`:void 0;return[n&&`UA brands: ${n}`,o&&`Platform: ${o}`].filter(Boolean).join(" | ")||void 0})();o&&n.push(o),n.push(`Timezone: ${t} (UTC${e})`),n.push(`Local time: ${(new Date).toString()}`);const i=window.devicePixelRatio||1;n.push(`Screen: ${screen.width}x${screen.height} @${i}x (avail ${screen.availWidth}x${screen.availHeight}, ${screen.colorDepth}-bit)`);const r=screen.orientation&&"type"in screen.orientation?screen.orientation.type:void 0;n.push(`Viewport: ${window.innerWidth}x${window.innerHeight}${r?`, orientation ${r}`:""}`),n.push(`CPU: ${navigator.hardwareConcurrency} cores`);const s=await async function(){const t=[];let e="browser API";if("connection"in(n=navigator)&&void 0!==n.connection){const e=navigator.connection;e?.effectiveType&&t.push(e.effectiveType),"number"==typeof e?.downlink&&t.push(`~${e.downlink} Mbps`),"number"==typeof e?.rtt&&t.push(`${e.rtt} ms`),e?.saveData&&t.push("saveData")}else{const n=((t=20)=>{const e=performance.getEntriesByType("navigation").find(t=>"navigation"===t.entryType),n=e?Math.max(0,e.responseStart-e.requestStart):void 0,o=performance.getEntriesByType("resource").filter(t=>"resource"===t.entryType);let i=0,r=0;for(const e of o.slice(0,Math.max(0,t))){const t=e.encodedBodySize>0?e.encodedBodySize:e.transferSize>0?e.transferSize:0,n=e.duration;t>0&&n>0&&Number.isFinite(n)&&(i+=t,r+=n)}const s=r>0?8*i/r:void 0;return{downlinkMbps:"number"==typeof s?s/1e3:void 0,rttMs:n}})();"number"==typeof n.downlinkMbps&&t.push(`~${n.downlinkMbps.toFixed(1)} Mbps`),"number"==typeof n.rttMs&&t.push(`TTFB ~${Math.round(n.rttMs)} ms`),e="inferred"}var n;const o=performance.getEntriesByType("navigation").find(t=>"navigation"===t.entryType);if(o){const e=Math.max(0,o.responseStart-o.requestStart);t.some(t=>t.startsWith("TTFB"))||t.push(`TTFB ~${Math.round(e)} ms`)}return t.length?`Network: ${t.join(", ")} (${e})`:void 0}();s&&n.push(s),n.push((()=>{const t="function"==typeof matchMedia&&matchMedia("(pointer: coarse)").matches,e="function"==typeof matchMedia&&matchMedia("(pointer: fine)").matches;return`Pointer/Touch: ${t?"coarse":e?"fine":"unknown"}, maxTouchPoints ${navigator.maxTouchPoints}`})());const a=await(async()=>{var t;if("getBattery"in(t=navigator)&&"function"==typeof t.getBattery)try{const t=await navigator.getBattery(),e=Math.round(100*t.level);return`Battery: ${[`${Number.isFinite(e)?e:0}%`,t.charging?"charging":"not charging"].join(", ")}`}catch{}})();a&&n.push(a),n.push(`CookiesEnabled: ${navigator.cookieEnabled?"yes":"no"}; DNT: ${navigator.doNotTrack??"n/a"}`),n.push("Online: "+(navigator.onLine?"yes":"no")),document.referrer&&n.push(`Referrer: ${document.referrer}`),n.push((()=>{const t="function"==typeof matchMedia&&matchMedia("(display-mode: standalone)").matches;return`PWA: ${Boolean(navigator.serviceWorker?.controller)?"SW-controlled":"no SW"}, display-mode standalone: ${t?"yes":"no"}`})());const c=await async function(t=400){if("DeviceOrientationEvent"in window&&window.isSecureContext)return new Promise(e=>{let n=!1;const o=t=>{const i="number"==typeof t.beta?t.beta:void 0,r="number"==typeof t.gamma?t.gamma:void 0;if(void 0===i||void 0===r)return;if(n)return;n=!0,window.removeEventListener("deviceorientation",o);const s=((t,e)=>{const n=Math.abs(t),o=Math.abs(e);return n<15&&o<15?"flat":n>=60?"upright":"reclined"})(i,r);e(`Tilt: ${s} (β ${Math.round(i)}°, γ ${Math.round(r)}°)`)};window.setTimeout(()=>{n||(n=!0,window.removeEventListener("deviceorientation",o),e(void 0))},t),window.addEventListener("deviceorientation",o,{passive:!0})})}();c&&n.push(c);const l="enabled"===localStorage.getItem("intent:geo");return n.push(l?"Device geolocation: enabled":"Device geolocation: disabled"),n.join(" | ")}const o="intent:consent",i="intent:geo",r="intent:debug",s="intent:debug-panel",a="intent:data-client-id",c="intent:data-base-url",l="https://intent.callimacus.ai",d=2166136261,u=16777619;function f(t,e){let n=t;for(let t=0;t<e.length;t++)n^=e.charCodeAt(t),n=Math.imul(n,u);return n>>>0}function g(t,e){return Math.imul(t^e,u)>>>0}const m=[{seed:2166136261,prime:16777619},{seed:2654435761,prime:2246822507},{seed:3266489909,prime:668265263},{seed:374761393,prime:3266489955}];function h(t,e){let n=0;return(...o)=>{const i=Date.now();i-n>=e&&(n=i,t(...o))}}function p(...t){try{"undefined"!=typeof localStorage&&"enabled"===localStorage.getItem(r)&&console.log(...t)}catch{}}const b=Object.freeze(new Set(["textbox","combobox","searchbox"])),v=["input","textarea","select","[contenteditable]",...[...b].map(t=>`[role="${t}"]`)].join(", ");function w(t){const e=t.tagName;return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function y(t){if(w(t))return!0;const e=t.getAttribute("contenteditable");if(""===e||"true"===e||"plaintext-only"===e)return!0;const n=t.getAttribute("role")?.toLowerCase();return!(!n||!b.has(n))}function x(t){const e=t.parentElement;if(e)return e;const{parentNode:n}=t;return n instanceof ShadowRoot&&n.host instanceof Element?n.host:void 0}function S(t){if(w(t))return t.value;const e=t.innerText;return"string"==typeof e?e:t.textContent??""}function T(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}Object.freeze(new Set(["searchbox","search"]));const E=new Map([["name","Name"],["given-name","First name"],["family-name","Last name"],["additional-name","Middle name"],["nickname","Nickname"],["username","Username"],["name-given","First name"],["name-family","Last name"],["name-middle","Middle name"],["name-middle-initial","Middle initial"],["name-prefix","Name prefix"],["name-suffix","Name suffix"],["honorific-prefix","Name prefix"],["honorific-suffix","Name suffix"],["username-new","Username"],["password","Password"],["password-new","Password"],["current-password","Password"],["new-password","Password"],["one-time-code","One-time code"],["sms-otp","One-time code"],["webauthn","WebAuthn"],["email","Email"],["tel","Phone"],["tel-country-code","Phone country code"],["tel-national","Phone"],["tel-device","Phone"],["street-address","Street address"],["address-line1","Address line 1"],["address-line2","Address line 2"],["address-line3","Address line 3"],["address-level1","State/Province"],["address-level2","City"],["address-level3","District"],["address-level4","Neighborhood"],["postal-code","Postal code"],["country","Country code"],["country-name","Country name"],["postal-address","Street address"],["postal-address-country","Country name"],["postal-address-extended","Address line 2"],["postal-address-extended-postal-code","Postal code"],["postal-address-locality","City"],["postal-address-region","State/Province"],["cc-name","Cardholder name"],["cc-given-name","Cardholder first name"],["cc-family-name","Cardholder last name"],["cc-additional-name","Cardholder middle name"],["cc-middle-name","Cardholder middle name"],["cc-number","Card number"],["cc-exp","Expiration date"],["cc-exp-day","Expiration day"],["cc-exp-month","Expiration month"],["cc-exp-year","Expiration year"],["cc-csc","Security code"],["cc-type","Card type"],["bday","Birthday"],["bday-day","Birth day"],["bday-month","Birth month"],["bday-year","Birth year"],["birthdate-full","Birthday"],["birthdate-day","Birth day"],["birthdate-month","Birth month"],["birthdate-year","Birth year"],["organization","Organization"],["organization-title","Job title"],["sex","Sex"],["gender","Sex"]]),L=Object.freeze(new Set(E.keys()));function k(t){return t?t.toLowerCase().trim().split(/\s+/).filter(Boolean):[]}function A(t){return t.some(t=>L.has(t))}function $(t){for(const e of t){const t=E.get(e);if(t)return t}}const I="data-intent-redact";function M(t){return e=(t=>{const e=(t.getAttribute?.("data-intent-redact-label")??"").trim();if(e)return e;const n=y(t)?k(t.getAttribute?.("autocomplete")):[];if("INPUT"===t.tagName&&"password"===t.type)return"Password";const o=$(n);if(o)return o;const i="INPUT"===t.tagName?U.get(t.type):void 0,r=i?$([i]):void 0;if(r)return r;const s=t.getAttribute?.(I)?.toLowerCase();return"mask"===s?"Redacted":"Sensitive"})(t),`<${e}>`;var e}function C(t){return t.hasAttribute("data-html2canvas-ignore")||"ignore"===t.getAttribute(I)?.toLowerCase()}const N=new Set;function D(t){const e=t.getAttribute(I);if(null===e)return!1;const n=e.toLowerCase();return"ignore"!==n&&(""!==e&&"mask"!==n&&(t=>{if(N.has(t))return;N.add(t);const e=`[intent] Unsupported data-intent-redact value ${JSON.stringify(t)}. Supported values are "" or "mask" (redact), "ignore" (exclude from capture). Treating as "mask" to prevent data leaks.`;try{console.warn(e)}catch{}})(e),!0)}function O(t){let e=t;for(;e&&e!==document.body;){if(C(e))return!0;e=x(e)}return!1}function P(t){let e=t;for(;e&&e!==document.body;){if(D(e))return e;e=x(e)}}function B(t){return void 0!==P(t)}function z(t){return D(t)||F(t)?M(t):M(P(t)??t)}function H(t){return!O(t)&&(B(t)||F(t))}const R=Object.freeze(new Set(["searchbox"])),U=new Map([["email","email"],["tel","tel"]]);function F(t){const e=t.tagName,n=t.getAttribute("role")?.toLowerCase();if("INPUT"===e){const e=t;return"password"===e.type||!("search"===e.type||n&&R.has(n))&&(!!U.has(e.type)||A(k(e.autocomplete)))}return"TEXTAREA"===e||"SELECT"===e?A(k(t.autocomplete)):!(!y(t)||w(t))&&(!n||!R.has(n))&&A(k(t.getAttribute("autocomplete")))}function j(t){return!(C(t)||!D(t)&&!F(t))}function q(t){if(!O(t))if(w(t)){if(j(t)){if("INPUT"===t.tagName){const e=t;["date","datetime-local","month","time","week"].includes(e.type)&&(e.type="text")}const e=M(t);t.value=e,t.setAttribute("value",e)}}else y(t)?j(t)&&(t.textContent=M(t)):t.hasAttribute(I)&&D(t)&&(t.textContent=M(t))}function W(t,e){const n=[],o=[t];for(t instanceof Element&&t.shadowRoot&&o.push(t.shadowRoot);o.length>0;){const t=o.pop().querySelectorAll("*");for(const i of t)i.matches(e)&&n.push(i),i.shadowRoot&&o.push(i.shadowRoot)}return n}function _(t,e=new Set){const n=t instanceof Document?t:t.ownerDocument;if(n){if(e.has(n))return;e.add(n)}t instanceof Element&&q(t);for(const e of W(t,v))q(e);for(const e of W(t,`[${I}]`))q(e);for(const n of W(t,"iframe"))if("IFRAME"===n.tagName)try{const t=n.contentDocument;t&&_(t,e)}catch{}}let X="";function Y(){return X}function V(t){return e.get(t)}function J(t,n){const o=localStorage.getItem("intent:data-sid-max-age"),i=null===o?void 0:Number(o),r="number"==typeof n&&Number.isFinite(n)?n:"number"==typeof i&&Number.isFinite(i)?i:2592e3,s="https:"===window.location.protocol;e.set("intent_sid",t,{expires:r/86400,path:"/",sameSite:"Lax",...s&&{secure:!0}})}function K(){e.remove("intent_sid",{path:"/"})}function G(){const t=V("intent_sid");if("granted"!==localStorage.getItem(o))return t&&K(),void(X="");t?X=t:(X=crypto.randomUUID(),J(X))}let Q,Z=!1,tt=!1,et=!1,nt=!1,ot=!1;function it(){return"enabled"===localStorage.getItem(i)}function rt(){Z=!1,et=!1,ot=!1}function st(){return!Z&&it()&&!nt&&ot}let at=[],ct=!1;function lt(){try{return"enabled"===localStorage.getItem(s)}catch{return!1}}function dt(t){try{localStorage.setItem(s,t?"enabled":"disabled"),t?ft():Q&&(Q.style.display="none")}catch{}}function ut(){if(!Q)return;const t=Q.querySelector("#intent-debug-events"),e=Q.querySelector("#intent-debug-count");if(!t||!e)return;if(0===at.length)return t.innerHTML='\n\t\t\t<div style="color: var(--solomei-color-muted-foreground, #979797); text-align: center; padding: 20px;">\n\t\t\t\tNo events captured yet. Interact with the page to see events.\n\t\t\t</div>\n\t\t',void(e.textContent="0 events");const n=[...at].reverse();t.innerHTML=n.map(t=>(t=>{const e=new Date(t.timestamp).toLocaleTimeString(),n=t.img&&t.img.length>0,o=n?Math.round(.75*t.img.length/1024):0,i=T(t.event),r=T(JSON.stringify(t.props,null,2)),s=T(t.html),a=T(JSON.stringify(t.bbox,null,2));return`\n\t\t<div style="\n\t\t\tbackground: var(--solomei-color-card, white);\n\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\tborder-radius: var(--solomei-radius-lg, 10px);\n\t\t\tpadding: 10px;\n\t\t\tmargin-bottom: 8px;\n\t\t">\n\t\t\t<div style="\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t\tmargin-bottom: 8px;\n\t\t\t\tpadding-bottom: 8px;\n\t\t\t\tborder-bottom: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t">\n\t\t\t\t<div style="\n\t\t\t\t\tfont-weight: var(--solomei-font-weight-semibold, 600);\n\t\t\t\t\tcolor: var(--solomei-color-foreground, #212121);\n\t\t\t\t\tfont-size: 13px;\n\t\t\t\t">${i}</div>\n\t\t\t\t<div style="\n\t\t\t\t\tcolor: var(--solomei-color-text-secondary, #979797);\n\t\t\t\t\tfont-size: 11px;\n\t\t\t\t">${e}</div>\n\t\t\t</div>\n\t\t\t${n?`\n\t\t\t\t<div style="margin-bottom: 8px;">\n\t\t\t\t\t<img src="${t.img}" \n\t\t\t\t\t\tclass="intent-debug-screenshot" \n\t\t\t\t\t\tstyle="\n\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t" \n\t\t\t\t\t\ttitle="Click to view fullscreen"/>\n\t\t\t\t\t<div style="\n\t\t\t\t\t\tcolor: var(--solomei-color-text-secondary, #979797);\n\t\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\t\tmargin-top: 4px;\n\t\t\t\t\t">Screenshot (~${o} KB)</div>\n\t\t\t\t</div>\n\t\t\t`:""}\n\t\t\t<details style="margin-top: 8px;">\n\t\t\t\t<summary style="\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tcolor: var(--solomei-color-foreground, #212121);\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\tfont-weight: var(--solomei-font-weight-regular, 500);\n\t\t\t\t\tuser-select: none;\n\t\t\t\t">View Details</summary>\n\t\t\t\t<div style="\n\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t\tbackground: var(--solomei-color-secondary, #fafaf9);\n\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\tfont-size: 11px;\n\t\t\t\t\tcolor: var(--solomei-color-foreground, #212121);\n\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t">\n\t\t\t\t\t<div style="margin-bottom: 6px;"><strong>Properties:</strong></div>\n\t\t\t\t\t<pre style="\n\t\t\t\t\t\tmargin: 0 0 8px 0;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\twhite-space: pre-wrap;\n\t\t\t\t\t\tword-break: break-word;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t">${r}</pre>\n\t\t\t\t\t${t.html?`\n\t\t\t\t\t\t<div style="margin-bottom: 6px;"><strong>HTML:</strong></div>\n\t\t\t\t\t\t<pre style="\n\t\t\t\t\t\t\tmargin: 0 0 8px 0;\n\t\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\twhite-space: pre-wrap;\n\t\t\t\t\t\t\tword-break: break-word;\n\t\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t\t">${s}</pre>\n\t\t\t\t\t`:""}\n\t\t\t\t\t<div style="margin-bottom: 6px;"><strong>Bounding Box:</strong></div>\n\t\t\t\t\t<pre style="\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 8px;\n\t\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 6px);\n\t\t\t\t\t\toverflow-x: auto;\n\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\t">${a}</pre>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t</div>\n\t`})(t)).join(""),e.textContent=`${at.length} event${1===at.length?"":"s"}`}function ft(){if(Q)return void(Q.style.display="flex");const t=document.createElement("div");t.innerHTML='\n\t\t<div id="intent-debug-panel" data-intent-redact="ignore" style="\n\t\t\tposition: fixed;\n\t\t\ttop: 20px;\n\t\t\tright: 20px;\n\t\t\twidth: 400px;\n\t\t\tmax-height: 80vh;\n\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\tborder: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\tborder-radius: var(--solomei-radius-lg, 10px);\n\t\t\tbox-shadow: var(--solomei-shadow-box, 0 2px 10px rgba(0, 0, 0, 0.15));\n\t\t\tz-index: 2147483647;\n\t\t\tfont-family: var(--solomei-font-primary, -apple-system, BlinkMacSystemFont, \'Segoe UI\', sans-serif);\n\t\t\tfont-size: var(--solomei-font-size-base, 15px);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t">\n\t\t\t<div id="intent-debug-header" style="\n\t\t\t\tbackground: var(--solomei-color-primary, #262626);\n\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\tpadding: 12px 15px;\n\t\t\t\tborder-radius: var(--solomei-radius-lg, 10px) var(--solomei-radius-lg, 10px) 0 0;\n\t\t\t\tcursor: move;\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t\tuser-select: none;\n\t\t\t">\n\t\t\t\t<div style="font-weight: var(--solomei-font-weight-semibold, 600); font-size: 14px;">Intent SDK Debug</div>\n\t\t\t\t<div style="display: flex; gap: 8px;">\n\t\t\t\t\t<button id="intent-debug-minimize" style="\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\twidth: 24px;\n\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 4px);\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t">−</button>\n\t\t\t\t\t<button id="intent-debug-close" style="\n\t\t\t\t\t\tbackground: transparent;\n\t\t\t\t\t\tborder: 1px solid var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\twidth: 24px;\n\t\t\t\t\t\theight: 24px;\n\t\t\t\t\t\tborder-radius: var(--solomei-radius-sm, 4px);\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t">×</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div id="intent-debug-content" style="\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\toverflow: hidden;\n\t\t\t\tflex: 1;\n\t\t\t">\n\t\t\t\t<div style="\n\t\t\t\t\tpadding: 12px 15px;\n\t\t\t\t\tborder-bottom: 1px solid var(--solomei-color-border, #e5e5e5);\n\t\t\t\t\tbackground: var(--solomei-color-background, white);\n\t\t\t\t">\n\t\t\t\t\t<div style="font-weight: var(--solomei-font-weight-semibold, 600); color: var(--solomei-color-foreground, #212121); margin-bottom: 8px;">Event Log</div>\n\t\t\t\t\t<div style="display: flex; gap: 8px; align-items: center;">\n\t\t\t\t\t\t<button id="intent-debug-clear" style="\n\t\t\t\t\t\t\tbackground: var(--solomei-color-primary, #262626);\n\t\t\t\t\t\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\t\tpadding: 6px 12px;\n\t\t\t\t\t\t\tborder-radius: var(--solomei-radius-button, 20px);\n\t\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\tfont-weight: var(--solomei-font-weight-regular, 500);\n\t\t\t\t\t\t">Clear</button>\n\t\t\t\t\t\t<span id="intent-debug-count" style="color: var(--solomei-color-text-secondary, #979797); font-size: 12px;">0 events</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div id="intent-debug-events" style="\n\t\t\t\t\tflex: 1;\n\t\t\t\t\toverflow-y: auto;\n\t\t\t\t\tpadding: 10px;\n\t\t\t\t">\n\t\t\t\t\t<div style="color: var(--solomei-color-muted-foreground, #979797); text-align: center; padding: 20px;">\n\t\t\t\t\t\tNo events captured yet. Interact with the page to see events.\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t',Q=t.firstElementChild,document.body.appendChild(Q);const e=Q.querySelector("#intent-debug-close"),n=Q.querySelector("#intent-debug-minimize"),o=Q.querySelector("#intent-debug-clear");e?.addEventListener("click",()=>{dt(!1)}),n?.addEventListener("click",()=>{(()=>{if(!Q)return;const t=Q.querySelector("#intent-debug-content"),e=Q.querySelector("#intent-debug-minimize");t&&e&&(ct=!ct,ct?(t.style.display="none",Q.style.width="200px",e.textContent="+"):(t.style.display="flex",Q.style.width="400px",e.textContent="−"))})()}),o?.addEventListener("click",()=>{at=[],ut()}),(()=>{if(!Q)return;const t=Q.querySelector("#intent-debug-header");if(!t)return;let e=!1,n=0,o=0,i=0,r=0;t.addEventListener("mousedown",t=>{if("BUTTON"===t.target.tagName)return;e=!0;const n=Q.getBoundingClientRect();i=t.clientX-n.left,r=t.clientY-n.top}),document.addEventListener("mousemove",t=>{if(!e||!Q)return;t.preventDefault(),n=t.clientX-i,o=t.clientY-r;const s=window.innerWidth-Q.offsetWidth,a=window.innerHeight-Q.offsetHeight;n=Math.max(0,Math.min(n,s)),o=Math.max(0,Math.min(o,a)),Q.style.left=`${n}px`,Q.style.top=`${o}px`,Q.style.right="auto"}),document.addEventListener("mouseup",()=>{e=!1})})(),Q.addEventListener("click",t=>{const e=t.target;if(e.classList.contains("intent-debug-screenshot")){const t=e;t.src&&t.src.startsWith("data:image/")&&(t=>{const e=document.createElement("div");e.id="intent-debug-fullscreen-modal",e.setAttribute("data-intent-redact","ignore"),e.style.cssText="\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground: rgba(0, 0, 0, 0.95);\n\t\tz-index: 2147483646;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcursor: zoom-out;\n\t";const n=document.createElement("div");n.style.cssText="\n\t\tmax-width: 95%;\n\t\tmax-height: 95%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t";const o=document.createElement("img");o.src=t,o.style.cssText="\n\t\tmax-width: 100%;\n\t\tmax-height: calc(95vh - 60px);\n\t\tborder-radius: var(--solomei-radius-lg, 10px);\n\t\tbox-shadow: var(--solomei-shadow-box, 0 2px 10px rgba(0, 0, 0, 0.2));\n\t";const i=document.createElement("div");i.style.cssText="\n\t\tmargin-top: 20px;\n\t\tdisplay: flex;\n\t\tgap: 20px;\n\t\talign-items: center;\n\t";const r=document.createElement("button");r.textContent="✕ Close",r.style.cssText="\n\t\tpadding: 12px 24px;\n\t\tbackground: var(--solomei-color-primary-button-background, #262626);\n\t\tcolor: var(--solomei-color-primary-button-color, white);\n\t\tborder: none;\n\t\tborder-radius: var(--solomei-radius-button, 20px);\n\t\tfont-size: 14px;\n\t\tfont-weight: var(--solomei-font-weight-semibold, 600);\n\t\tcursor: pointer;\n\t\tbox-shadow: var(--solomei-shadow-box, 0 2px 10px rgba(0, 0, 0, 0.15));\n\t";const s=document.createElement("div");s.textContent="Click anywhere or press ESC to close",s.style.cssText="\n\t\tcolor: var(--solomei-color-primary-foreground, white);\n\t\tfont-size: 13px;\n\t",i.appendChild(r),i.appendChild(s),n.appendChild(o),n.appendChild(i),e.appendChild(n);const a=()=>{e.remove(),document.removeEventListener("keydown",c)};e.addEventListener("click",a),r.addEventListener("click",t=>{t.stopPropagation(),a()}),o.addEventListener("click",t=>{t.stopPropagation()});const c=t=>{"Escape"===t.key&&a()};document.addEventListener("keydown",c),document.body.appendChild(e)})(t.src)}}),ut()}"undefined"!=typeof window&&lt()&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{ft()}):ft());const gt={x:0,y:0,w:0,h:0},mt={maxSegments:300,maxDepth:24,maxTextLength:1200,maxHeadings:1,maxInteractives:8,minTextLength:12,minDescentCoverage:.67};const ht=new Set(["SCRIPT","STYLE","NOSCRIPT","TEMPLATE","HEAD","META","LINK","TITLE","BR","HR","IFRAME","CANVAS","svg"]),pt=new Set(["ARTICLE","SECTION","LI","FIGURE","BLOCKQUOTE","TR","DD","DETAILS"]),bt=new Set(["article","listitem","option","row","gridcell","tab","treeitem","card"]),vt=new Set(["H1","H2","H3","H4","H5","H6"]),wt=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA","SUMMARY","LABEL","VIDEO","AUDIO"]),yt=new Set(["button","link","option","tab","checkbox","radio","switch","menuitem","textbox","combobox","searchbox","slider"]),xt=["aria-label","aria-labelledby","title","role"],St=["type","autocomplete"],Tt={children:t=>t.children,parent:t=>t.parentElement??void 0,ownText(t){let e="";for(const n of t.childNodes)if(3===n.nodeType){const t=(n.textContent??"").trim();t&&(e+=t)}return e},kind:t=>t.tagName,isSkipped:t=>!!ht.has(t.tagName)||t.hasAttribute("hidden")||"true"===t.getAttribute("aria-hidden"),isUnit(t){if(pt.has(t.tagName))return!0;const e=t.getAttribute("role")?.toLowerCase();return Boolean(e&&bt.has(e))},isHeading:t=>vt.has(t.tagName),isInteractive(t){if(wt.has(t.tagName))return!0;const e=t.getAttribute("role")?.toLowerCase();return!(!e||!yt.has(e))||t.hasAttribute("onclick")||t.hasAttribute("href")},isMarked:t=>t.hasAttribute("data-intent-item"),signature(t){const e=Array.from(t.classList).sort().join(".");return`${t.tagName}#${e}`},mixDigestAttributes(t,e){let n=t;const o=e.tagName;for(const t of xt){const o=e.getAttribute(t);o&&(n=f(n,`${t}:${o}`))}const i=e.getAttribute("data-intent-redact");if(null!==i){n=f(n,`redact:${i}`);const t=e.getAttribute("data-intent-redact-label");t&&(n=f(n,t))}e.hasAttribute("data-html2canvas-ignore")&&(n=f(n,"redact:ignore-legacy"));const r=e.getAttribute("contenteditable");if(null!==r&&(n=f(n,`contenteditable:${r}`)),"INPUT"===o||"TEXTAREA"===o||"SELECT"===o)for(const t of St){const o=e.getAttribute(t);null!==o&&(n=f(n,`${t}:${o}`))}if("A"===o||"AREA"===o){const t=e.getAttribute("href");t&&(n=f(n,t))}else if("IMG"===o){const t=e.getAttribute("alt");t&&(n=f(n,t));const o=e.currentSrc||e.getAttribute("src");o&&(n=o.startsWith("data:")?g(n,o.length):f(n,o))}return n}},Et=80;function Lt(t,e){return t?t.replace(/\s+/g," ").trim().slice(0,e):""}function kt(...t){let e="";for(const n of t)e+=`${n.length}:${n}`;return e}const At=["javascript:","vbscript:","data:","about:"];function $t(t){if(!t)return;const e=t.replace(/[\t\n\r]/g,"").replace(/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,"");if(!e||"#"===e)return;const n=e.toLowerCase();return At.some(t=>n.startsWith(t))?void 0:t}function It(t,e,n,o,i){const r=kt(...o.map(t=>kt(t.label,t.role??"",t.href??""))),s=kt(...i.map(t=>kt(t.alt??"",t.src??"")));return(t=>{let e="";for(const{seed:n,prime:o}of m){let i=n>>>0;for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);i=Math.imul(i^255&n,o)>>>0,i=Math.imul(i^n>>>8,o)>>>0}e+=i.toString(36).padStart(7,"0")}return e})(kt(t,e,n,r,s))}const Mt='h1, h2, h3, h4, h5, h6, [role="heading"]',Ct='a[href], button, [role="button"], [role="link"], [role="option"], [role="tab"], input[type="submit"], input[type="button"]';function Nt(t,e=400){if(O(t))return"";if(B(t))return Lt(z(t),e);const n=[];let o=e;const i=t=>{n.at(-1)!==t&&(n.push(t),o-=t.length)},r=t=>{if(!(o<=0||C(t))){if(y(t)){const e=Lt(j(t)?M(t):S(t),o);return void(e&&(n.push(e),o-=e.length))}if(D(t)){const e=Lt(M(t),o);return void(e&&(n.push(e),o-=e.length))}for(const e of t.childNodes){if(o<=0)return;if(e.nodeType===Node.TEXT_NODE){const t=Lt(e.textContent,o);t&&i(t)}else e.nodeType===Node.ELEMENT_NODE&&r(e)}}};return r(t),n.join(" ").slice(0,e)}const Dt=new Set(["submit","button","reset","image","hidden","file"]);function Ot(t){const e=t.cloneNode(!0);for(const t of e.querySelectorAll("input, textarea, select, button, option"))t.remove();return Lt(e.textContent,Et)}function Pt(t){const e=Lt(t.getAttribute("aria-label"),Et);if(e)return e;const n=t.labels?.[0];if(n){const t=Ot(n);if(t)return t}const o=t.closest("label");if(o){const t=Ot(o);if(t)return t}return Lt(t.getAttribute("placeholder"),Et)}function Bt(t,e){if(H(t))return z(t);if("checkbox"===e||"radio"===e)return t.checked?"checked":"unchecked";if("SELECT"===t.tagName){const e=t;return e.selectedOptions?.[0]?.textContent??e.value}return S(t)}function zt(t){if(O(t))return"";if(B(t))return z(t);const e=Lt(t.getAttribute("aria-label"),Et);if(e)return e;const n=t.getAttribute("aria-labelledby");if(n){const e=n.split(/\s+/).map(e=>t.ownerDocument.getElementById(e)).filter(Boolean).map(t=>Nt(t,Et)).join(" ");if(e.trim())return Lt(e,Et)}const o=Lt(t.getAttribute("title"),Et);if(o)return o;const i=Nt(t,Et);if(i)return i;const r=t.querySelector("img[alt]");return Lt(r?.getAttribute("alt"),Et)}function Ht(t){const e=t.currentSrc||t.src||"";if(e&&!e.startsWith("data:")&&!e.startsWith("blob:"))return e.length>512?void 0:e}function Rt(t){const e=t.getAttribute("role")?.toLowerCase();return e||("A"===t.tagName?"link":"BUTTON"===t.tagName||"INPUT"===t.tagName?"button":t.tagName.toLowerCase())}let Ut;function Ft(){if(!Ut)throw new Error("[intent] No platform host installed. Import @solomei-ai/intent (web) or @solomei-ai/intent/native before use.");return Ut}let jt=!1;const qt={get(t){try{return localStorage.getItem(t)??void 0}catch{return}},set(t,e){try{localStorage.setItem(t,e)}catch{}},remove(t){try{localStorage.removeItem(t)}catch{}}},Wt={platform:"web",now:()=>performance.now(),wallClock:()=>Date.now(),storage:qt,send:async(t,e,{beacon:n,byteLength:o})=>{if(n)return((t,e)=>{if("function"!=typeof navigator.sendBeacon)return!1;try{return navigator.sendBeacon(t,new Blob([e],{type:"application/json"}))}catch{return!1}})(t,e);const i=await(async t=>{const e=globalThis.CompressionStream;if(jt&&"function"==typeof e)try{const n=new Blob([t]).stream().pipeThrough(new e("gzip"));return await new Response(n).blob()}catch{return}})(e),r={"Content-Type":"application/json"},s=qt.get(a);s&&(r["x-sl-access-token"]=s);const c=Y();c&&(r["x-intent-sid"]=c),i&&(r["Content-Encoding"]="gzip");const l=await fetch(t,{method:"POST",headers:r,body:i??e,keepalive:o<=6e4,credentials:"omit"});return l.ok||Wt.log(`[Transport] batch rejected with ${l.status}`),l.ok},scheduleIdle:async()=>{const{scheduler:t}=globalThis;if(t&&"function"==typeof t.postTask)try{return void await t.postTask(()=>{},{priority:"background"})}catch{}"function"!=typeof requestIdleCallback?await new Promise(t=>{setTimeout(t,0)}):await new Promise(t=>{requestIdleCallback(()=>{t()},{timeout:200})})},log(...t){try{"undefined"!=typeof localStorage&&"enabled"===localStorage.getItem(r)&&console.log(...t)}catch{}}};function _t(){void 0===Ut&&(Ut=Wt)}const Xt={visibilityIntervalMs:500,resegmentDebounceMs:700,resegmentMaxDelayMs:1500,segmentOptions:{}},Yt=new class{options;entries=new Map;pendingRegistrations=[];generation=0;constructor(t){this.options=t}get size(){return this.entries.size}get(t){return this.entries.get(t)}values(){return this.entries.values()}reconcile(t,e){const n=new Set,o=[],i=[];for(const{node:e,kind:i,fingerprint:r}of t){n.add(e);const t=this.entries.get(e);t?t.fingerprint!==r&&(t.fingerprint=r,t.kind=i,t.registered=!1,t.digest=void 0):(this.entries.set(e,{node:e,kind:i,intersecting:!1,visible:!1,ratio:0,rect:{...gt},dwellMs:0,registered:!1,fingerprint:r}),o.push(e))}for(const[t,o]of this.entries)n.has(t)&&(e?.(t)??!0)||(this.closeDwell(o),this.entries.delete(t),i.push(t));return this.options.log?.(`[Ledger] ${this.entries.size} segments tracked`),{added:o,removed:i}}setGeometry(t,e){const n=this.entries.get(t);n&&(n.intersecting=e.intersecting,n.ratio=e.ratio,n.rect=e.rect)}refreshVisibility(t){const e=this.options.now();for(const n of this.entries.values()){if(!n.intersecting){this.closeDwell(n,e),n.visible=!1;continue}const o=t?.(n.node)??!0;o&&void 0===n.visibleSince?n.visibleSince=e:o||this.closeDwell(n,e),n.visible=o}}async registerVisible(){const t=this.generation,e=[];for(const t of this.entries.values())t.visible&&!t.registered&&e.push(t);if(0===e.length)return;for(const t of e)t.registered=!0;let n,o=0;for(const i of e)try{if(await this.options.scheduleIdle(),t!==this.generation)return void this.options.log?.("[Ledger] abandoned an extraction pass the ledger was cleared under");const e=this.options.extract(i.node,i.kind);e&&(i.digest=e,this.pendingRegistrations.push(e))}catch(t){i.registered=!1,o++,n=t}o>0&&this.options.log?.(`[Ledger] extraction failed for ${o}/${e.length} segments: ${String(n)}`)}getOnScreen(){const t=this.options.now(),e=new Map;for(const n of this.entries.values()){if(!n.visible||!n.digest)continue;const o=void 0===n.visibleSince?0:t-n.visibleSince,i={ref:n.digest.ref,ratio:Math.round(100*n.ratio)/100,dwellMs:Math.round(n.dwellMs+o),rect:n.rect},r=e.get(i.ref);(!r||i.dwellMs>r.dwellMs)&&e.set(i.ref,i)}return[...e.values()]}drainRegistrations(){const t=new Set;for(const e of this.entries.values())e.digest&&t.add(e.digest.ref);const e=new Set,n=[];let o=0;for(const i of this.pendingRegistrations)e.has(i.ref)||(t.has(i.ref)?(e.add(i.ref),n.push(i)):o++);return this.pendingRegistrations=[],o>0&&this.options.log?.(`[Ledger] dropped ${o} registrations the ledger no longer describes`),n}getCoverage(){let t=0,e=0;for(const n of this.entries.values())n.visible&&t++,n.digest&&e++;return{segments:this.entries.size,onScreen:t,registered:e}}clear(){this.entries.clear(),this.pendingRegistrations=[],this.generation++}closeDwell(t,e=this.options.now()){void 0!==t.visibleSince&&(t.dwellMs+=e-t.visibleSince,t.visibleSince=void 0)}}({now:()=>performance.now(),extract:(t,e)=>function(t,e){if(O(t))return;const n=B(t)?void 0:t.matches(Mt)?t:[...t.querySelectorAll(Mt)].find(t=>!O(t)&&!B(t)),o=n?Lt(Nt(n,120),120):"",i=[],r=t.matches(Ct)?[t]:[...t.querySelectorAll(Ct)];for(const t of r){if(i.length>=12)break;if(O(t))continue;if(B(t)){i.push({label:z(t),role:Rt(t)});continue}const e=zt(t);if(!e)continue;const n=t.getAttribute("href")??void 0;i.push({label:e,role:Rt(t),...n?{href:n}:{}})}const s=[];for(const e of t.querySelectorAll("img")){if(s.length>=6)break;if(O(e)||B(e))continue;const t=Lt(e.getAttribute("alt"),Et),n=Ht(e);(t||n)&&s.push({...t?{alt:t}:{},...n?{src:n}:{}})}return(t=>{const e=Lt(t.heading,120),n=Lt(t.text,400),o=[];for(const e of t.actions??[]){if(o.length>=12)break;const t=Lt(e.label,Et);if(!t)continue;const n=$t(e.href);o.push({label:t,role:e.role,...n?{href:n}:{}})}const i=[];for(const e of t.images??[]){if(i.length>=6)break;const t=Lt(e.alt,Et),{src:n}=e;(t||n)&&i.push({...t?{alt:t}:{},...n?{src:n}:{}})}if(n||e||0!==o.length||0!==i.length)return{ref:It(t.kind,e,n,o,i),kind:t.kind,...e?{heading:e}:{},text:n,actions:o,images:i}})({kind:e,heading:o,text:Nt(t),actions:i,images:s})}(t,e),scheduleIdle:()=>Wt.scheduleIdle(),log:t=>{Wt.log(t)}});let Vt,Jt,Kt,Gt,Qt,Zt,te,ee=Xt,ne=!1;function oe(){Zt?.(),Zt=void 0}async function ie(t=2e3){te&&await Promise.race([te,new Promise(e=>{setTimeout(e,t)})])}function re(){const t="function"==typeof Element.prototype.checkVisibility;Yt.refreshVisibility(e=>!t||e.checkVisibility({opacityProperty:!0,visibilityProperty:!0,contentVisibilityAuto:!0}))}function se(){re(),Yt.registerVisible().then(oe)}function ae(t){for(const e of t){const{x:t,y:n,width:o,height:i}=e.boundingClientRect;Yt.setGeometry(e.target,{intersecting:e.isIntersecting,ratio:e.intersectionRatio,rect:{x:Math.round(t),y:Math.round(n),w:Math.round(o),h:Math.round(i)}})}se()}function ce(){if(!Vt)return;const t=((t,e={})=>function(t,e,n={}){const o={...mt,...n},i=((t,e)=>{const n=new Map,o=t=>{const i=e.ownText(t),r={textLength:i.length,headings:e.isHeading(t)?1:0,interactives:e.isInteractive(t)?1:0,contentHash:e.mixDigestAttributes(f(f(d,i),e.kind(t)),t)};for(const n of e.children(t)){if(e.isSkipped(n))continue;const t=o(n);r.textLength+=t.textLength,r.headings+=t.headings,r.interactives+=t.interactives,r.contentHash=g(r.contentHash,t.contentHash)}return n.set(t,r),r};return o(t),n})(t,e),r=[],s=t=>i.get(t)??{textLength:0,headings:0,interactives:0,contentHash:d},a=(t,e)=>{const n=s(t);r.push({node:t,reason:e,textLength:n.textLength,interactives:n.interactives,headings:n.headings,contentHash:n.contentHash})},c=t=>{const e=s(t);return e.interactives>0||e.textLength>=o.minTextLength},l=(t,n)=>{if(r.length>=o.maxSegments||e.isSkipped(t))return!1;if(e.isMarked(t))return a(t,"marked"),!0;const i=s(t);if(n>=o.maxDepth)return!!c(t)&&(a(t,"depth"),!0);if(i.textLength<=o.maxTextLength&&i.headings<=o.maxHeadings&&i.interactives<=o.maxInteractives&&c(t)){if(e.isUnit(t))return a(t,"unit"),!0;if(((t,e)=>{const n=e.parent(t);if(void 0===n)return!1;const o=e.signature(t);let i=0;for(const t of e.children(n))if(e.signature(t)===o&&(i++,i>=3))return!0;return!1})(t,e))return a(t,"repeated"),!0;if(i.headings>0)return a(t,"heading"),!0}const d=r.length;let u=!1;for(const o of e.children(t))u=l(o,n+1)||u;return!u&&c(t)?(a(t,"leaf"),!0):u&&i.textLength>0&&r.slice(d).reduce((t,e)=>t+e.textLength,0)/i.textLength<o.minDescentCoverage&&c(t)?(r.length=d,a(t,"unit"),!0):u};for(const n of e.children(t))l(n,0);return r}(t,Tt,e))(document.body,ee.segmentOptions),{added:e,removed:n}=Yt.reconcile(t.map(({node:t,reason:e,contentHash:n})=>({node:t,kind:e,fingerprint:n})),t=>t.isConnected);for(const t of e)Vt.observe(t);for(const t of n)Vt.unobserve(t)}function le(){return void 0!==Gt&&(clearTimeout(Gt),Gt=void 0),Qt=void 0,Wt.scheduleIdle().then(ce)}function de(){const t=performance.now();Qt??=t,t-Qt>=ee.resegmentMaxDelayMs?le():(void 0!==Gt&&clearTimeout(Gt),Gt=setTimeout(le,ee.resegmentDebounceMs))}function ue(){return ne&&void 0!==Qt?le():Promise.resolve()}function fe(t={}){ne||"undefined"==typeof IntersectionObserver||(document.body?(ne=!0,_t(),ee={...Xt,...t},te=new Promise(t=>{Zt=t}),Vt=new IntersectionObserver(ae,{threshold:[0,.25,.75]}),Wt.scheduleIdle().then(ce),Jt=new MutationObserver(de),Jt.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["href","src","srcset","sizes","alt","aria-label","aria-labelledby","title","role","data-intent-redact","data-intent-redact-label","data-html2canvas-ignore","type","autocomplete","contenteditable"],characterData:!0}),window.addEventListener("resize",de,{passive:!0}),Kt=setInterval(se,ee.visibilityIntervalMs)):document.addEventListener("DOMContentLoaded",()=>{fe(t)},{once:!0}))}function ge(){return Yt.getOnScreen()}const me=()=>Yt.drainRegistrations();function he(){return Yt.getCoverage()}const pe={batchSize:20,flushIntervalMs:5e3,maxBuffered:200},be=Object.freeze(new Set(["click","input-submit","form-submit"]));function ve(t){let e=0;for(let n=0;n<t.length;n++){const o=t.charCodeAt(n);o<128?e+=1:o<2048?e+=2:o>=55296&&o<=56319?(e+=4,n++):e+=3}return e}class we{options;flushOn;buffer=[];extras={};cancelTimer;generation=0;inFlight=new Map;stats={sent:0,failed:0,dropped:0};constructor(t){this.options=t,this.flushOn=t.flushOn??be}getStats(){return{...this.stats,buffered:this.buffer.length}}start(){this.cancelTimer??=this.options.schedule(()=>{this.flush()},this.options.flushIntervalMs)}stop(){this.cancelTimer?.(),this.cancelTimer=void 0,this.buffer=[],this.extras={},this.generation++}discard(){this.buffer=[],this.extras={},this.generation++}enqueue(t){if(this.buffer.push(t),this.buffer.length>this.options.maxBuffered){const t=this.buffer.length-this.options.maxBuffered;this.buffer.splice(0,t),this.stats.dropped+=t,Ft().log(`[Transport] buffer full, dropped ${t} oldest events`)}(this.buffer.length>=this.options.batchSize||this.flushOn.has(t.event))&&this.flush()}attach(t,e){0!==e.length&&(this.extras[t]=[...this.extras[t]??[],...e])}async flush({beacon:t=!1}={}){if(t&&this.persistInFlight(),0===this.buffer.length&&0===Object.keys(this.extras).length)return;const e=Ft(),n=this.buffer,o=this.extras,i=this.generation;let r;try{r=JSON.stringify({...this.options.context(),sentAt:e.wallClock(),events:n,...o})}catch(t){return this.buffer=[],this.extras={},this.stats.failed+=n.length,void e.log(`[Transport] ${n.length} events dropped, batch could not be serialised`,t)}this.buffer=[],this.extras={};const s=ve(r);this.inFlight.set(r,{generation:i,...t?{release:this.options.onTeardownBatch?.(r)}:{}});let a=!1;try{a=await e.send(this.options.endpoint(),r,{beacon:t,byteLength:s})}catch(t){e.log(`[Transport] ${n.length} events failed to send`,t)}const c=this.inFlight.get(r)?.release;return this.inFlight.delete(r),a?(this.stats.sent+=n.length,void c?.()):(this.stats.failed+=n.length,e.log(`[Transport] ${n.length} events undelivered (${s} bytes, beacon=${t})`),i!==this.generation?(e.log("[Transport] dropped an in-flight batch discarded mid-request"),void c?.()):void(t||this.restore(n,o)))}persistInFlight(){if(this.options.onTeardownBatch)for(const[t,e]of this.inFlight)e.release||e.generation!==this.generation||(e.release=this.options.onTeardownBatch(t),Ft().log("[Transport] took custody of a batch still in flight at teardown"))}restore(t,e){for(const[t,n]of Object.entries(e))this.extras[t]=[...n,...this.extras[t]??[]];this.buffer=[...t,...this.buffer];const n=this.buffer.length-this.options.maxBuffered;n>0&&(this.buffer.splice(0,n),this.stats.dropped+=n,Ft().log(`[Transport] buffer full after retry, dropped ${n} oldest events`))}async replay(t){const e=Ft();try{return await e.send(this.options.endpoint(),t,{beacon:!1,byteLength:ve(t)})}catch(t){return e.log("[Transport] replay failed",t),!1}}}const ye={...pe,compress:!1};function xe(){return`${Wt.storage.get(c)??l}/v2/events`}function Se(){return{clientId:Wt.storage.get(a),sid:Y(),platform:"web"}}function Te(t,e){const n=setInterval(t,e);return()=>{clearInterval(n)}}let Ee,Le,ke=!1;function Ae(){return _t(),Ee??=new we({...pe,endpoint:xe,context:Se,schedule:Te}),Ee}async function $e(t={}){return Ae().flush(t)}function Ie(t){Ae().enqueue(t)}function Me(t,e){Ae().attach(t,e)}function Ce(){"hidden"===document.visibilityState&&$e({beacon:!0})}function Ne(){$e({beacon:!0})}let De,Oe=0,Pe=0;function Be(t){try{return new Blob([t]).size}catch{return t.length}}let ze=!1;const He="__intent__sdk__initialized__",Re=["button","a[href]","a",'input[type="submit"]','input[type="button"]','[role="button"]','[role="link"]',"[onclick]"].join(",");function Ue(){return"granted"===localStorage.getItem(o)}function Fe(){return G(),Ue()&&Boolean(Y())&&Boolean(localStorage.getItem(a)?.trim().length)}function je(){return!Fe()||tt}async function qe(e){for(;De;)await De;return De=(async()=>{try{const n=performance.now(),o=performance.now(),i=(t=>{if(C(t))return"";const e=t.cloneNode(!1);return Array.from(t.attributes).forEach(({name:t,value:n})=>{e.setAttribute(t,n)}),w(t)?w(e)&&(e.value=t.value):y(t)?e.innerHTML=t.innerHTML:e.textContent=t.textContent,_(e),w(e)&&e.setAttribute("value",e.value),e.outerHTML})(e);p(`[Timing] serialize: ${(performance.now()-o).toFixed(2)}ms`);const r=e.getBoundingClientRect(),s=performance.now(),a={left:window.scrollX,top:window.scrollY,right:window.scrollX+window.innerWidth,bottom:window.scrollY+window.innerHeight},c=await t(document.body,{useCORS:!0,x:window.scrollX,y:window.scrollY,width:window.innerWidth,height:window.innerHeight,scale:.6,logging:!1,onclone(t){_(t)},ignoreElements(t){if(!(t instanceof Element))return!1;if(O(t))return!0;const e=t.getBoundingClientRect(),n=e.left+window.scrollX,o=e.top+window.scrollY,i=e.right+window.scrollX,r=e.bottom+window.scrollY,s=100,c=o>a.bottom+s;if(!(i<a.left-s||n>a.right+s||r<a.top-s||c))return!1;const{position:l}=window.getComputedStyle(t);let d;if("fixed"===l||"absolute"===l){const t=500;d=i<a.left-t||n>a.right+t||r<a.top-t||o>a.bottom+t}else d=c;return!!d&&!("INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||t.hasAttribute("data-intent-redact")||t.querySelector("input, textarea, select, [data-intent-redact]"))}});p(`[Timing] html2canvas-pro: ${(performance.now()-s).toFixed(2)}ms`);const l=performance.now(),d=c.toDataURL("image/jpeg",.8);p(`[Timing] jpeg-encoding: ${(performance.now()-l).toFixed(2)}ms`);return p(`[Timing] capture-total: ${(performance.now()-n).toFixed(2)}ms`),{html:i,bbox:{x:r.x,y:r.y,w:r.width,h:r.height},img:d,fullCanvas:c}}finally{De=void 0}})(),De}function We(){const t=localStorage.getItem(a),e={"Content-Type":"application/json"};t&&(e["x-sl-access-token"]=t);const n=Y();return n&&(e["x-intent-sid"]=n),e}function _e(){return"screenshot"!==localStorage.getItem("intent:data-capture-mode")}const Xe={w:0,h:0,scrollY:0,docH:0};function Ye(){Xe.w=window.innerWidth,Xe.h=window.innerHeight,Xe.scrollY=Math.round(window.scrollY),Xe.docH=document.documentElement.scrollHeight}function Ve(){return{...Xe}}function Je(t,e,n){if(!Fe())return;const o=ge(),i=n instanceof HTMLFormElement?function(t){if(O(t))return;const e=[];for(const n of Array.from(t.elements)){if(!y(n)||n.disabled)continue;const t="TEXTAREA"===n.tagName||"SELECT"===n.tagName?n.tagName.toLowerCase():(n.getAttribute("type")??"text").toLowerCase();Dt.has(t)||O(n)||e.push({name:n.getAttribute("name")??n.id,label:Pt(n),type:t,value:Bt(n,t)})}return((t,e)=>{const n=[];let o=!1;for(const t of e){if(n.length>=30){o=!0;break}const e=Lt(t.name,Et),i=Lt(t.label,Et),r=e||i;r&&n.push({name:r,...i&&i!==r?{label:i}:{},...t.type?{type:t.type}:{},value:Lt(t.value,300)})}if(0===n.length)return;const i=Lt(t,Et);return{...i?{name:i}:{},fields:n,...o?{truncated:!0}:{}}})(t.getAttribute("name")??t.getAttribute("aria-label")??(t.id||void 0)??void 0,e)}(n):void 0;let r;if(n!==document.body&&n!==document.documentElement&&!O(n)){const t=(t=>{let e=t;for(;e;){const t=Yt.get(e);if(t)return t;e=e.parentElement??void 0}})(n);r={tag:n.tagName,label:n instanceof HTMLFormElement?i?.name??"":zt(n),role:n.getAttribute("role")??void 0,ref:t?.digest?.ref},y(n)&&(r.value=H(n)?z(n):S(n))}p(`[Digest] ${t} — ${o.length} segments on screen`),Me("segments",me()),ue(),Ie({ts:Date.now(),event:t,url:window.location.href,props:{...e,localTime:(new Date).toISOString()},...r?{chosen:r}:{},...i?{form:i}:{},onScreen:o,viewport:Ve(),coverage:he()}),be.has(t)&&((t,e,n)=>{void 0!==Qe&&clearTimeout(Qe);const o=new Set(n.map(t=>t.ref)),i=n=>{Qe=void 0,(async()=>{if(!Fe())return;await(async()=>{ne&&(await ue(),re(),await Yt.registerVisible())})();const r=ge().filter(t=>!o.has(t.ref));if(0===r.length)return 0===n?void(Qe=setTimeout(()=>i(1),Ge)):void p(`[Digest] settled after ${t} — nothing new on screen`);p(`[Digest] settled after ${t} — ${r.length} newly on screen`),Me("segments",me()),Ie({ts:Date.now(),event:"settled",url:window.location.href,props:{after:t,label:e,localTime:(new Date).toISOString()},onScreen:r,viewport:Ve(),coverage:he()})})()};Qe=setTimeout(()=>i(0),ee.resegmentMaxDelayMs+Ke)})(t,r?.label,o)}const Ke=400,Ge=900;let Qe;function Ze(t,e,n,o){_e()?Je(t,e,n):tn(t,e,n,o)}async function tn(t,e,n,o){if(!Fe())return;const i={...e,localTime:(new Date).toISOString()};y(n)&&!O(n)&&(i.value=H(n)?z(n):S(n));let r="",s={x:0,y:0,w:0,h:0},d="";const u=!("scroll"===t||"page-blur"===t||"page-focus"===t),f=Date.now();let g=o;u&&(("click"===t||"input-submit"===t||"pageview"===t)&&!g||!g&&f-Oe>=300)&&(g=await qe(n),Oe=f),g&&(r=g.html,s=g.bbox,d=g.img);const m="page-blur"===t||"page-focus"===t||"pageview"===t,h={ts:Date.now(),event:t,url:window.location.href,props:i,html:m?"":r,bbox:s,img:d};(function(t,e,n,o,i){((t,e,n,o,i)=>{if(!lt())return;const r={id:"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random()}`,timestamp:Date.now(),event:t,props:e,html:n,bbox:o,img:i};at.push(r),at.length>50&&at.shift(),ut()})(t,e,n,o,i)})(t,i,m?"":r,s,d),await async function(t){const e=`${localStorage.getItem(c)??l}/events`,n=localStorage.getItem(a)??void 0,o=JSON.stringify({...t,clientId:n}),i=Be(o);let r;try{const t=await fetch(e,{method:"POST",headers:We(),body:o,keepalive:i<=6e4,credentials:"omit"});if(t.ok)return;r=new Error(`events endpoint returned ${t.status}`)}catch(t){r=t}p(`[Transmit] ${t.event} (${i} bytes) failed on /events, trying /p.gif`,r);try{await(async t=>{const e=`${localStorage.getItem(c)??l}/p.gif`,n=JSON.stringify(t),o=await fetch(e,{method:"POST",headers:We(),body:n,keepalive:Be(n)<=6e4,credentials:"omit",cache:"no-store"});if(!o.ok)throw new Error(`pixel body fallback failed with ${o.status}`)})(t)}catch(e){Pe++,p(`[Transmit] DROPPED ${t.event} (${i} bytes), ${Pe} total`,e)}}(h)}G();let en=!1;function nn(){en&&_e()&&Ue()&&(function(t={}){if(ke)return;ke=!0,_t();const{compress:e,...n}={...ye,...t};jt=e,Ee=new we({...n,endpoint:xe,context:Se,schedule:Te}),Ee.start(),window.addEventListener("pagehide",Ne),document.addEventListener("visibilitychange",Ce)}(),fe())}let on=!1;function rn(){!on&&Fe()&&(on=!0,Ze("pageview",{url:window.location.href,title:document.title,ref:document.referrer},document.body))}function sn(){void 0!==Qe&&(clearTimeout(Qe),Qe=void 0),on=!1,G(),Vt?.disconnect(),Jt?.disconnect(),window.removeEventListener("resize",de),void 0!==Kt&&clearInterval(Kt),void 0!==Gt&&clearTimeout(Gt),Vt=void 0,Jt=void 0,Kt=void 0,Gt=void 0,Qt=void 0,Yt.clear(),oe(),te=void 0,ne=!1,Ee?.discard()}function an(){G(),nn(),_e()?ie().then(rn):rn()}async function cn(t={}){if(!Fe())return;const e="number"==typeof t.lat&&"number"==typeof t.lon;if(e&&Z)return;if(!e&&ze)return;const o=localStorage.getItem("intent:data-ip"),i={context:await n()};o&&(i.ip=o);for(const[e,n]of Object.entries(t))i[e]=n;await tn("context",i,document.body,{html:"",bbox:{x:0,y:0,w:0,h:0},img:""}),e||(ze=!0)}async function ln(){await(async(t,e)=>{const n=e(),o=it();if(!n||!o||Z)return;if(!("geolocation"in navigator))return;if(nt)return;nt=!0,tt=!0;const i={enableHighAccuracy:!1,maximumAge:3e5,timeout:2e4};try{await(navigator.permissions?.query({name:"geolocation"}))}catch(t){}await new Promise(t=>{let e=!1;const n=async(n,o,i)=>{e||(e=!0,Number.isFinite(n)&&Number.isFinite(o)&&(await(async(t,e,n)=>{await cn({lat:t,lon:e,source:"device",...n})})(n,o,i),Z=!0),nt=!1,tt=!1,ot=!0,t())};navigator.geolocation.getCurrentPosition(t=>{const e=t.coords;n(e.latitude,e.longitude,{accuracy:e.accuracy,altitude:"number"==typeof e.altitude?e.altitude:void 0,altitudeAccuracy:"number"==typeof e.altitudeAccuracy?e.altitudeAccuracy:void 0,heading:"number"==typeof e.heading?e.heading:void 0,speed:"number"==typeof e.speed?e.speed:void 0,timestamp:t.timestamp,visibility:document.visibilityState,focused:document.hasFocus()})},t=>{const e=t?.code,o={error:{code:e,name:1===e?"PERMISSION_DENIED":2===e?"POSITION_UNAVAILABLE":3===e?"TIMEOUT":"UNKNOWN",message:t?.message??""},online:navigator.onLine,visibility:document.visibilityState,focused:document.hasFocus(),secure:window.isSecureContext,proto:location.protocol,host:location.hostname};n(void 0,void 0,o)},i)})})(0,Fe)}function dn(){(t=>{if(et||!it()||Z)return;et=!0;const e=()=>{window.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",e,!0),t()};window.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",e,!0)})(ln)}let un=!document.hidden&&document.hasFocus(),fn=document.hasFocus();function gn(){if(je())return;const t=!document.hidden&&document.hasFocus();t&&(fn=!0),fn||t?t!==un&&(un=t,Ze(t?"page-focus":"page-blur",{},document.body)):un=t}function mn(t){let e=!1;const n=()=>{e||(e=!0,t())};"complete"!==document.readyState?window.addEventListener("load",n,{once:!0}):n()}function hn(){(()=>{const t=globalThis;return!t[He]&&(Object.defineProperty(t,He,{value:!0,configurable:!1,enumerable:!1,writable:!1}),!0)})()&&(Ye(),window.addEventListener("resize",h(Ye,200),{passive:!0}),window.addEventListener("scroll",h(Ye,100),{passive:!0}),_e()&&(function(){const t=()=>`${window.location.pathname}${window.location.search}`;let e=t();const n=()=>{t()===e||je()||(e=t(),Ye(),on=!0,Ze("pageview",{url:window.location.href,title:document.title,ref:document.referrer,spa:!0},document.body))};for(const t of["pushState","replaceState"]){const e=history[t];history[t]=function(...t){const o=e.apply(this,t);return n(),o}}window.addEventListener("popstate",n)}(),en=!0,nn()),mn(()=>{Fe()&&(cn(),(window.isSecureContext||"localhost"===location.hostname)&&(it()&&dn(),window.addEventListener("focus",()=>{st()&&ln()}),document.addEventListener("visibilitychange",()=>{!document.hidden&&st()&&ln()})))}),window.addEventListener("storage",t=>{t.key===o&&("granted"===localStorage.getItem(o)?(ze=!1,an(),cn(),it()&&dn()):(ze=!1,rt(),sn())),t.key===i&&(it()?dn():rt())}),mn(()=>{_e()?ie().then(rn):rn()}),addEventListener("pointerdown",h(t=>{if(_e()||je())return;const e=t.target instanceof Element?t.target.closest(Re):null;if(!(e instanceof HTMLElement))return;const n=Date.now();n-Oe<300?Le=void 0:(Oe=n,Le=qe(e))},50),{capture:!0,passive:!0}),addEventListener("click",async t=>{if(je())return;if(!(t.target instanceof Element))return;const e=t.target.closest(Re);if(!(e instanceof HTMLElement))return;const n=O(o=e)?"":B(o)?z(o):(t=>{const e=t.getAttribute("aria-label")?.trim();if(e)return e;const n=t.title.trim();if(n)return n;const o=t.textContent?.trim();return o||"<no visible label>"})(o);var o;_e()?Ze("click",{tag:e.tagName,label:n},e):(async()=>{const t=Le?await Le:void 0;Le=void 0,Ze("click",{tag:e.tagName,label:n},e,t)})()},!0),addEventListener("keydown",t=>{if(!je()&&"Enter"===t.key){const e=t.target;if(!(e instanceof HTMLElement))return;const n=e.tagName,o=O(e);if("INPUT"===n||"TEXTAREA"===n){const t=e instanceof HTMLInputElement?e.name:void 0;Ze("input-submit",{tag:n,name:o?void 0:t??(e.id||void 0)},e)}else if(y(e)){const t=(t=>{let e=t;for(;e&&e!==document.body;){const t=e.getAttribute("contenteditable");if("true"===t||""===t||"plaintext-only"===t)return e;e=e.parentElement}return null})(e)??e;if("newline"===t.dataset.intentEnter)return;const n=t.getAttribute("role")?.toLowerCase(),o=t.id||void 0,i=t.getAttribute("name")||t.getAttribute("aria-label")||o;Ze("input-submit",{tag:"CONTENTEDITABLE",role:n??"contenteditable",name:O(t)?void 0:i},t)}}},{capture:!0}),addEventListener("submit",t=>{!je()&&_e()&&t.target instanceof HTMLFormElement&&Ze("form-submit",{},t.target)},{capture:!0}),["focus","blur"].forEach(t=>{window.addEventListener(t,gn)}),document.addEventListener("visibilitychange",gn),window.addEventListener("scroll",(()=>{let t;return(...e)=>{void 0!==t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=void 0,(()=>{je()||Ze("scroll",{scrollX:window.scrollX,scrollY:window.scrollY},document.body)})(...e)},250)}})(),{passive:!0}),window.intent??={send(t,e){Fe()&&Ze(t,e,document.body)}})}function pn(t,e){try{if(void 0===e)return;localStorage.setItem(t,e?"intent:consent"===t?"granted":"enabled":"disabled")}catch{}}function bn(t){pn("intent:consent",t),t?an():sn()}function vn(t){pn("intent:geo",t)}function wn(t){pn("intent:debug",t)}function yn(t){t&&"undefined"!=typeof console&&console.warn&&console.warn("[Intent SDK] ⚠️ Debug panel is enabled. This feature is NOT recommended for production use. It exposes internal SDK behavior and should only be used during development."),(t=>{dt(t)})(t)}function xn(t={}){localStorage.setItem("intent:data-client-id",t.clientId??""),localStorage.setItem("intent:data-ip",t.ip??""),localStorage.setItem("intent:data-base-url",t.baseUrl??"https://intent.callimacus.ai"),"number"==typeof t.sidMaxAgeSeconds&&localStorage.setItem("intent:data-sid-max-age",String(t.sidMaxAgeSeconds)),pn("intent:consent",t.consent),pn("intent:geo",t.geo),pn("intent:debug",t.debug),void 0!==t.debugPanel&&yn(t.debugPanel),t.consent&&(V("intent_sid")||J("undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random()}`,t.sidMaxAgeSeconds)),hn()}function Sn(){return V("intent_sid")}function Tn(){G()}function En(){K()}function Ln(t){Number.isFinite(t)&&localStorage.setItem("intent:data-sid-max-age",String(t));const e=V("intent_sid");e&&J(e,t)}export{En as clearIntentSessionId,Tn as ensureIntentSessionId,Sn as getIntentSessionId,xn as initIntent,bn as setConsent,wn as setDebug,yn as setDebugPanel,vn as setGeo,Ln as setIntentSessionMaxAge};
6
6
  //# sourceMappingURL=index.debug.js.map