@sentientui/core 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-TRBPPGFT.mjs +2 -0
- package/dist/chunk-TRBPPGFT.mjs.map +1 -0
- package/dist/{index-BjVvN7cU.d.ts → index-B5b5LlRJ.d.cts} +42 -215
- package/dist/{index-Cd0gMdJv.d.cts → index-NqZbPgmm.d.ts} +42 -215
- package/dist/index-engagement.js +1 -1
- package/dist/index-engagement.js.map +1 -1
- package/dist/index-engagement.mjs +1 -1
- package/dist/index-graph.d.cts +4 -3
- package/dist/index-graph.d.ts +4 -3
- package/dist/index-graph.js +1 -1
- package/dist/index-graph.js.map +1 -1
- package/dist/index-graph.mjs +1 -1
- package/dist/index-graph.mjs.map +1 -1
- package/dist/index-local.d.cts +2 -2
- package/dist/index-local.d.ts +2 -2
- package/dist/index-server.d.cts +9 -2
- package/dist/index-server.d.ts +9 -2
- package/dist/index-server.js +1 -1
- package/dist/index-server.js.map +1 -1
- package/dist/index-server.mjs +1 -1
- package/dist/index-server.mjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/session-meta-dN92q19_.d.cts +378 -0
- package/dist/session-meta-dN92q19_.d.ts +378 -0
- package/llms.txt +4 -0
- package/package.json +1 -1
- package/dist/chunk-RL5B6M4G.mjs +0 -2
- package/dist/chunk-RL5B6M4G.mjs.map +0 -1
- package/dist/session-meta-C-bMqVeq.d.cts +0 -130
- package/dist/session-meta-C-bMqVeq.d.ts +0 -130
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as Y}from"./chunk-WKXD7KI3.mjs";import{a as T,d as z,e as E,f as b,g as G}from"./chunk-Z6ILOYBD.mjs";import{
|
|
1
|
+
import{a as Y}from"./chunk-WKXD7KI3.mjs";import{a as T,d as z,e as E,f as b,g as G}from"./chunk-Z6ILOYBD.mjs";import{C as H,E as J}from"./chunk-TRBPPGFT.mjs";import"./chunk-2NVSFI4V.mjs";import{a as f,b as V}from"./chunk-TMCGHANO.mjs";import{fnv1a as Q}from"@sentientui/policy";var X="section, header, footer, nav, main > div, [data-sentient-section]",Z=2e4;function ee(d){let r=Array.from(d.querySelectorAll(X)),i=r.filter(a=>r.filter(c=>c!==a&&a.contains(c)).length<2);return i.filter(a=>!i.some(c=>c!==a&&c.contains(a)))}function te(d,r,i,a){try{fetch(`${r}/v1/section-map`,{method:"POST",keepalive:!0,headers:{"content-type":"application/json",authorization:`Bearer ${d}`},body:JSON.stringify({pageUrl:i,sections:a})}).catch(()=>{})}catch(c){}}var h=()=>{};function ne(d,r){var k,x,L,N,D,R,_,F,M,P,$,K;let i=(k=r.doc)!=null?k:typeof document!="undefined"?document:void 0;if(!i||typeof IntersectionObserver=="undefined"||J()||!r.apiKey||!r.apiKey.startsWith("pk_"))return h;let a=((x=r.apiBase)!=null?x:"https://api.sentient-ui.com").replace(/\/+$/,"").replace(/\/v1$/,""),c=ee(i);if(c.length===0)return h;let m=new Map,A=[];for(let e of c){let t=e.getAttribute("data-sentient-type"),o=t&&T.includes(t)?t:null,n=b(e),p=(N=o!=null?o:(L=r.typeOf)==null?void 0:L.call(r,e))!=null?N:E(n).type,l=Y(e,i),B=l?`nc-${p}-${Q(JSON.stringify({id:(D=l.id)!=null?D:null,dataAttr:(R=l.dataAttr)!=null?R:null,selector:(_=l.selector)!=null?_:null})).toString(36)}`:`nc-${p}`;m.set(e,B);let j=z.filter(([,S])=>S.test(n.bodyText)).map(([S])=>S);A.push(V(f({componentId:B,semanticType:p,source:o?"markup":"auto"},l?{locator:l}:{}),{observation:f(f({tag:n.tag,idClass:n.idClass.slice(0,200),headingText:n.headingText,textLength:n.textLength,actionCount:n.actionCount},n.ariaRole?{ariaRole:n.ariaRole}:{}),j.length>0?{patternFlags:j}:{})}))}let q=($=(P=(M=(F=i.defaultView)!=null?F:typeof window!="undefined"?window:void 0)==null?void 0:M.location)==null?void 0:P.pathname)!=null?$:"/";te(r.apiKey,a,q,A);let u=new Map,U=e=>{let t=u.get(e);return t||(t={ms:0,scroll:0,enterAt:null,intersecting:!1},u.set(e,t)),t},v=new IntersectionObserver(e=>{for(let t of e){let o=m.get(t.target);if(!o)continue;let n=U(o);t.isIntersecting?(n.intersecting=!0,n.enterAt=Date.now(),t.intersectionRatio>n.scroll&&(n.scroll=t.intersectionRatio)):(n.intersecting=!1,n.enterAt!=null&&(n.ms+=Date.now()-n.enterAt,n.enterAt=null))}},{threshold:[0,.25,.5,.75,1]});for(let e of m.keys())v.observe(e);let g=()=>{let e=Date.now();for(let[t,o]of u)if(o.enterAt!=null&&(o.ms+=e-o.enterAt,o.enterAt=null),!(o.ms<=0)){try{d.track({projectId:r.apiKey,componentId:t,eventType:"dwell",payload:{dwell_time:Math.round(o.ms),scroll_depth:Number(o.scroll.toFixed(2))}})}catch(n){}o.ms=0}},w=()=>{if(i.hidden)g();else{let e=Date.now();for(let t of u.values())t.intersecting&&(t.enterAt=e)}},y=!1,C=e=>{if(g(),e!=null&&e.persisted){y=!0;return}try{v.disconnect()}catch(t){}},O=e=>{if(!(e!=null&&e.persisted)||!y)return;y=!1;let t=Date.now();for(let o of u.values())o.enterAt=o.intersecting&&!i.hidden?t:null};i.addEventListener("visibilitychange",w);let s=(K=i.defaultView)!=null?K:typeof window!="undefined"?window:void 0;s==null||s.addEventListener("pagehide",C),s==null||s.addEventListener("pageshow",O);let W=setInterval(()=>{if(i.hidden||y)return;g();let e=Date.now();for(let t of u.values())t.intersecting&&(t.enterAt=e)},Z),I=[];return r.microSignals&&[...m.entries()].forEach(([e,t],o)=>{I.push(H((n,p={})=>{try{d.track({projectId:r.apiKey,componentId:t,eventType:"micro_signal",payload:f({signalType:n},p)})}catch(l){}},e,void 0,{tabLoss:o===0}))}),()=>{g(),clearInterval(W),i.removeEventListener("visibilitychange",w),s==null||s.removeEventListener("pagehide",C),s==null||s.removeEventListener("pageshow",O);for(let e of I)e();try{v.disconnect()}catch(e){}}}export{T as SEMANTIC_TYPES,E as classifyFeatures,G as classifySection,b as featuresFromElement,ne as startEngagementCapture};
|
|
2
2
|
//# sourceMappingURL=index-engagement.mjs.map
|
package/dist/index-graph.d.cts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { A as AssignResult, a as Assignment, b as AssignmentCache,
|
|
3
|
-
|
|
1
|
+
import { n as SentientConfig, m as SentientClient } from './index-B5b5LlRJ.cjs';
|
|
2
|
+
export { A as AssignResult, a as Assignment, b as AssignmentCache, E as EventQueue, e as EventType, g as GraphClient, h as GraphConfig, i as GraphSnapshot, L as LEGACY_SESSION_COOKIE_NAME, M as MicroSignalEmitter, k as MicroSignalType, l as PageNode, Q as QueueConfig, o as SentientEvent, p as SessionConfig, q as SessionManager, r as attachMicroSignalDetectors, s as grantConsent, u as isDoNotTrackEnabled, v as sanitizePageUrl, w as sessionCookieName } from './index-B5b5LlRJ.cjs';
|
|
3
|
+
import { z as CompoundLocator } from './session-meta-dN92q19_.cjs';
|
|
4
|
+
export { B as BLOCK_ALIGNS, b as BLOCK_EMPHASES, c as BLOCK_FITS, d as BLOCK_GAPS, e as BLOCK_GRID_COLUMNS, f as BLOCK_HEADING_LEVELS, g as BLOCK_JUSTIFIES, h as BLOCK_RATIOS, i as BLOCK_SIZES, j as BLOCK_TEXT_ALIGNS, k as BLOCK_TONES, l as BLOCK_WEIGHTS, m as BadgeBlock, n as BlockAlign, o as BlockEmphasis, p as BlockFit, q as BlockGap, r as BlockJustify, s as BlockNode, t as BlockRatio, u as BlockSize, v as BlockTextAlign, w as BlockTone, x as BlockWeight, y as ButtonBlock, D as DecisionSnapshot, F as FORM_FIELD_KINDS, E as FORM_INPUT_TYPES, G as FormBlock, H as FormField, I as GridBlock, J as HeadingBlock, K as ImageBlock, L as LinkBlock, M as MAX_BLOCK_ARMS, N as MAX_BLOCK_CHILDREN, O as MAX_BLOCK_DEPTH, P as MAX_BLOCK_NODES, Q as MAX_BLOCK_TEXT_LEN, R as MAX_FORM_FIELDS, S as MAX_FORM_SELECT_OPTIONS, T as SNAPSHOT_STORAGE_KEY_PREFIX, V as SitePalette, W as SlotConfigEntry, X as SlotDeclInput, Y as SlotOps, Z as SpacerBlock, _ as StackBlock, $ as TextBlock, a2 as armOfResult, a3 as baselineResultFor, a4 as baselineSlots, a7 as containsFormBlock, a8 as deriveSessionSegment, a9 as detectDeviceClass, aa as detectTimeOfDay, ab as detectTrafficSource, ae as readSnapshot, af as referrerDomainFromReferer, ag as renderPrePaintScript, ah as toWireSlot, aj as writeSnapshot } from './session-meta-dN92q19_.cjs';
|
|
4
5
|
export { SlotResult } from '@sentientui/policy';
|
|
5
6
|
|
|
6
7
|
/** Reads the rendered DOM to build the page-side context graph. */
|
package/dist/index-graph.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { A as AssignResult, a as Assignment, b as AssignmentCache,
|
|
3
|
-
|
|
1
|
+
import { n as SentientConfig, m as SentientClient } from './index-NqZbPgmm.js';
|
|
2
|
+
export { A as AssignResult, a as Assignment, b as AssignmentCache, E as EventQueue, e as EventType, g as GraphClient, h as GraphConfig, i as GraphSnapshot, L as LEGACY_SESSION_COOKIE_NAME, M as MicroSignalEmitter, k as MicroSignalType, l as PageNode, Q as QueueConfig, o as SentientEvent, p as SessionConfig, q as SessionManager, r as attachMicroSignalDetectors, s as grantConsent, u as isDoNotTrackEnabled, v as sanitizePageUrl, w as sessionCookieName } from './index-NqZbPgmm.js';
|
|
3
|
+
import { z as CompoundLocator } from './session-meta-dN92q19_.js';
|
|
4
|
+
export { B as BLOCK_ALIGNS, b as BLOCK_EMPHASES, c as BLOCK_FITS, d as BLOCK_GAPS, e as BLOCK_GRID_COLUMNS, f as BLOCK_HEADING_LEVELS, g as BLOCK_JUSTIFIES, h as BLOCK_RATIOS, i as BLOCK_SIZES, j as BLOCK_TEXT_ALIGNS, k as BLOCK_TONES, l as BLOCK_WEIGHTS, m as BadgeBlock, n as BlockAlign, o as BlockEmphasis, p as BlockFit, q as BlockGap, r as BlockJustify, s as BlockNode, t as BlockRatio, u as BlockSize, v as BlockTextAlign, w as BlockTone, x as BlockWeight, y as ButtonBlock, D as DecisionSnapshot, F as FORM_FIELD_KINDS, E as FORM_INPUT_TYPES, G as FormBlock, H as FormField, I as GridBlock, J as HeadingBlock, K as ImageBlock, L as LinkBlock, M as MAX_BLOCK_ARMS, N as MAX_BLOCK_CHILDREN, O as MAX_BLOCK_DEPTH, P as MAX_BLOCK_NODES, Q as MAX_BLOCK_TEXT_LEN, R as MAX_FORM_FIELDS, S as MAX_FORM_SELECT_OPTIONS, T as SNAPSHOT_STORAGE_KEY_PREFIX, V as SitePalette, W as SlotConfigEntry, X as SlotDeclInput, Y as SlotOps, Z as SpacerBlock, _ as StackBlock, $ as TextBlock, a2 as armOfResult, a3 as baselineResultFor, a4 as baselineSlots, a7 as containsFormBlock, a8 as deriveSessionSegment, a9 as detectDeviceClass, aa as detectTimeOfDay, ab as detectTrafficSource, ae as readSnapshot, af as referrerDomainFromReferer, ag as renderPrePaintScript, ah as toWireSlot, aj as writeSnapshot } from './session-meta-dN92q19_.js';
|
|
4
5
|
export { SlotResult } from '@sentientui/policy';
|
|
5
6
|
|
|
6
7
|
/** Reads the rendered DOM to build the page-side context graph. */
|
package/dist/index-graph.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Gt=Object.create;var ve=Object.defineProperty,$t=Object.defineProperties,Ut=Object.getOwnPropertyDescriptor,Ft=Object.getOwnPropertyDescriptors,jt=Object.getOwnPropertyNames,tt=Object.getOwnPropertySymbols,Wt=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty,Ht=Object.prototype.propertyIsEnumerable;var nt=(e,t,n)=>t in e?ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))rt.call(t,n)&&nt(e,n,t[n]);if(tt)for(var n of tt(t))Ht.call(t,n)&&nt(e,n,t[n]);return e},j=(e,t)=>$t(e,Ft(t));var zt=(e,t)=>{for(var n in t)ve(e,n,{get:t[n],enumerable:!0})},ot=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of jt(t))!rt.call(e,d)&&d!==n&&ve(e,d,{get:()=>t[d],enumerable:!(c=Ut(t,d))||c.enumerable});return e};var qt=(e,t,n)=>(n=e!=null?Gt(Wt(e)):{},ot(t||!e||!e.__esModule?ve(n,"default",{value:e,enumerable:!0}):n,e)),Qt=e=>ot(ve({},"__esModule",{value:!0}),e);var hr={};zt(hr,{BLOCK_ALIGNS:()=>hn,BLOCK_EMPHASES:()=>En,BLOCK_FITS:()=>In,BLOCK_GAPS:()=>yn,BLOCK_GRID_COLUMNS:()=>kn,BLOCK_HEADING_LEVELS:()=>Tn,BLOCK_JUSTIFIES:()=>Sn,BLOCK_RATIOS:()=>Cn,BLOCK_SIZES:()=>bn,BLOCK_TEXT_ALIGNS:()=>xn,BLOCK_TONES:()=>wn,BLOCK_WEIGHTS:()=>vn,LEGACY_SESSION_COOKIE_NAME:()=>we,MAX_BLOCK_ARMS:()=>On,MAX_BLOCK_CHILDREN:()=>Rn,MAX_BLOCK_DEPTH:()=>_n,MAX_BLOCK_NODES:()=>An,MAX_BLOCK_TEXT_LEN:()=>Pn,SNAPSHOT_STORAGE_KEY_PREFIX:()=>re,armOfResult:()=>Le,attachMicroSignalDetectors:()=>bt,baselineResultFor:()=>fe,baselineSlots:()=>ft,deriveSessionSegment:()=>We,detectDeviceClass:()=>le,detectTimeOfDay:()=>pe,detectTrafficSource:()=>de,grantConsent:()=>It,init:()=>Kt,isDoNotTrackEnabled:()=>Ce,locatorFromElement:()=>Ke,readSnapshot:()=>me,referrerDomainFromReferer:()=>ue,renderPrePaintScript:()=>mt,sanitizePageUrl:()=>Je,sessionCookieName:()=>ae,toWireSlot:()=>Ee,writeSnapshot:()=>ye});module.exports=Qt(hr);function Te(){try{if(typeof crypto!="undefined"&&typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch(e){}try{if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,"0"),(n===3||n===5||n===7||n===9)&&(t+="-");return t}}catch(e){}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function ne(e){return e?`_${e.slice(0,12)}`:""}var we="_snt_uid";function ae(e){return`${we}${ne(e)}`}var Jt="_snt_uid",Xt=365,Ae="_snt_uid";function Yt(){return Te()}function st(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]):null}catch(t){return null}}function Vt(e,t,n){try{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; SameSite=strict; path=/`}catch(c){}}function $e(e){try{return localStorage.getItem(e)}catch(t){return null}}function it(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return!1}}function at(e){try{return sessionStorage.getItem(e)}catch(t){return null}}function Zt(e,t){try{return sessionStorage.setItem(e,t),!0}catch(n){return!1}}function en(e){try{sessionStorage.removeItem(e)}catch(t){}}function tn(e){try{return document.cookie=`${e}_probe=1; max-age=1; SameSite=strict; path=/`,document.cookie.indexOf(`${e}_probe=1`)!==-1}catch(t){return!1}}function nn(e){try{localStorage.removeItem(e)}catch(t){}}function rn(e){try{document.cookie=`${e}=; max-age=0; SameSite=strict; path=/`}catch(t){}}var on={getSessionId:()=>null,isEphemeral:()=>!1,destroy:()=>{}};function _e(e){var m,S,x,E,G,U,A;if(typeof window=="undefined")return on;let t=ne(e==null?void 0:e.apiKey),n=(m=e==null?void 0:e.cookieName)!=null?m:ae(e==null?void 0:e.apiKey),c=`${Ae}${t}`,d=`${Ae}_tomb${t}`,a=((S=e==null?void 0:e.cookieTTLDays)!=null?S:Xt)*24*60*60,l=I=>I&&I.length>0?I:null,u=()=>{var I,N;return t&&!(e!=null&&e.cookieName)&&$e(d)===null?(N=(I=l(st(Jt)))!=null?I:l($e(Ae)))!=null?N:l(at(Ae)):null},o=(A=(U=(G=(E=(x=l(st(n)))!=null?x:l($e(c)))!=null?E:l(at(c)))!=null?G:u())!=null?U:l(e==null?void 0:e.ssrSessionId))!=null?A:Yt();Vt(n,o,a);let r=it(c,o),s=tn(n),g=r?!1:Zt(c,o),p=!r&&!s&&!g;return{getSessionId:()=>o,isEphemeral:()=>p,destroy:()=>{o=null,rn(n),nn(c),en(c),t&&!(e!=null&&e.cookieName)&&it(d,"1")}}}function Y(e){return Math.min(6e4,1e3*2**Math.min(e,6))}function ce(e){if(e.ok===!0)return"delivered";let{status:t}=e;return typeof t!="number"?"retry":t>=200&&t<300?"delivered":t>=400&&t<500&&t!==429?"dropped":"retry"}function Re(e,t){try{let n=localStorage.getItem(e);if(!n)return[];let c=JSON.parse(n);return Array.isArray(c)?(localStorage.removeItem(e),c.slice(-t)):[]}catch(n){return[]}}function V(e,t,n){try{let c=(()=>{try{let i=localStorage.getItem(n);if(!i)return[];let a=JSON.parse(i);return Array.isArray(a)?a:[]}catch(i){return[]}})(),d=new Map;for(let i of c)d.set(i.id,i);for(let i of e)d.set(i.id,i);localStorage.setItem(n,JSON.stringify([...d.values()].slice(-t)))}catch(c){}}function Oe(e,t){try{let n=localStorage.getItem(t);if(!n)return;let c=JSON.parse(n);if(!Array.isArray(c))return;let d=new Set(e),i=c.filter(a=>!d.has(a.id));if(i.length===c.length)return;i.length===0?localStorage.removeItem(t):localStorage.setItem(t,JSON.stringify(i))}catch(n){}}var sn=500,an=56*1024;function Ue(e){return`_snt_retry_${e.slice(0,12)}`}var cn={push:()=>{},flush:()=>{},destroy:()=>{}};function ct(e){var Z,M,oe;if(typeof window=="undefined")return cn;let t=(Z=e.flushIntervalMs)!=null?Z:5e3,n=(M=e.maxBatchSize)!=null?M:20,c=(oe=e.maxRetrySize)!=null?oe:100,d=e.ingestUrl,i=e.apiKey,a=Ue(i),l=[],u=new Set,o=[],r=h=>{for(let k of h)s.delete(k),!u.has(k)&&(u.add(k),o.push(k));for(;o.length>sn;){let k=o.shift();k&&u.delete(k)}Oe(h,a)},s=new Set,g=()=>{for(;l.length>c;){let h=l.shift();h&&s.delete(h.id)}},p=h=>{u.has(h.id)||s.has(h.id)||(s.add(h.id),l.push(h),g())},m=h=>{for(let k of h)u.has(k.id)||(s.add(k.id),l.push(k));g()},S=Re(a,c);for(let h of S)p(h);let x=0,E=0,G=(h,k=!0)=>{if(h.length===0)return;let H=JSON.stringify(h),ee=h.map(q=>q.id),F;try{F=fetch(d,{method:"POST",keepalive:!0,body:H,headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`}})}catch(q){V(h,c,a),m(h),E++,x=Date.now()+Y(E);return}let he=q=>{if(ce(q)!=="retry"){if(!q.ok&&k){let se=h.filter(Q=>Q.eventType!=="pageview");if(se.length>0&&se.length<h.length){r(h.filter(Q=>Q.eventType==="pageview").map(Q=>Q.id)),G(se,!1);return}}r(ee),E=0,x=0;return}V(h,c,a),m(h),E++,x=Date.now()+Y(E)};F instanceof Promise?F.then(he).catch(()=>{V(h,c,a),m(h),E++,x=Date.now()+Y(E)}):he(F)},U=typeof TextEncoder!="undefined"?new TextEncoder:null,A=h=>U?U.encode(h).length:h.length,I=h=>{let k=[],H=2;for(let ee of h){let F=A(JSON.stringify(ee))+1;if(k.length>0&&H+F>an||k.length>=n)break;k.push(ee),H+=F}return k},N=()=>{try{if(Date.now()<x)return;for(;l.length>0&&!(Date.now()<x);){let h=l.filter(H=>!u.has(H.id));if(l.length=0,h.length===0)break;let k=I(h);if(k.length===0)break;k.length<h.length&&l.push(...h.slice(k.length)),G(k)}}catch(h){}},b=!0,R=null;R=setInterval(()=>{b&&N()},t);let B=()=>{document.visibilityState==="hidden"&&N()},W=()=>{N()};return document.addEventListener("visibilitychange",B),window.addEventListener("pagehide",W),{push(h){p(h),l.length>=n&&N()},flush:N,destroy(){b=!1,R!==null&&(clearInterval(R),R=null),document.removeEventListener("visibilitychange",B),window.removeEventListener("pagehide",W),N()}}}var ln=200;function Fe(e){return`_snt_goal_retry_${e.slice(0,12)}`}var dn={send:()=>{},flush:()=>{},destroy:()=>{}};function lt(e){var A,I,N;if(typeof window=="undefined")return dn;let t=(A=e.flushIntervalMs)!=null?A:5e3,n=(I=e.maxRetrySize)!=null?I:100,c=(N=e.maxPerFlush)!=null?N:5,d=Fe(e.apiKey),i=[],a=new Set,l=new Set,u=[],o=0,r=0,s=!1,g=b=>{for(a.delete(b.id),l.has(b.id)||(l.add(b.id),u.push(b.id));u.length>ln;){let R=u.shift();R&&l.delete(R)}Oe([b.id],d)},p=b=>{V([b],n,d),!l.has(b.id)&&!a.has(b.id)&&(a.add(b.id),i.push(b)),Date.now()>=o&&(r++,o=Date.now()+Y(r))},m=b=>{let R;try{R=fetch(e.url,{method:"POST",keepalive:!0,body:b.body,headers:e.headers})}catch(W){p(b);return}let B=W=>{var M;let Z=ce(W);if(Z==="retry"){p(b);return}Z==="dropped"&&((M=e.onDrop)==null||M.call(e,b,W.status)),g(b),r=0,o=0};R instanceof Promise?R.then(B).catch(()=>p(b)):B(R)},S=()=>{try{if(s||Date.now()<o)return;let b=0;for(;i.length>0&&b<c&&!(Date.now()<o);){let R=i.shift();a.delete(R.id),!l.has(R.id)&&(b++,m(R))}}catch(b){}},x=Re(d,n);for(let b of x)a.has(b.id)||(a.add(b.id),i.push(b));x.length>0&&V(x,n,d);let E=setInterval(S,t),G=()=>{document.visibilityState==="hidden"&&S()},U=()=>S();return document.addEventListener("visibilitychange",G),window.addEventListener("pagehide",U),{send(b){if(!s&&!(l.has(b.id)||a.has(b.id))){if(Date.now()<o){V([b],n,d),a.add(b.id),i.push(b);return}m(b)}},flush:S,destroy(){clearInterval(E),document.removeEventListener("visibilitychange",G),window.removeEventListener("pagehide",U),S(),s=!0}}}var un=1800*1e3;function Pe(e,t){return`${encodeURIComponent(e)}:${encodeURIComponent(t)}`}function dt(e=un,t){let n=new Map,c=`_snt_asgn${ne(t)}_`,d=(o,r)=>`${c}${encodeURIComponent(o)}:${encodeURIComponent(r)}`,i=o=>{let r=o.slice(c.length),s=r.indexOf(":");if(s<0)return null;try{return{componentId:decodeURIComponent(r.slice(0,s)),segment:decodeURIComponent(r.slice(s+1))}}catch(g){return null}},a=()=>{try{let o=[];for(let r=0;r<localStorage.length;r++){let s=localStorage.key(r);s!=null&&s.startsWith(c)&&o.push(s)}return o}catch(o){return[]}},l=o=>o.assignedAt+(o.ttlMs&&o.ttlMs>0?o.ttlMs:e)<Date.now();return typeof window!="undefined"&&(()=>{for(let o of a())try{let r=localStorage.getItem(o);if(!r)continue;let s=JSON.parse(r);if(l(s)){localStorage.removeItem(o);continue}let g=i(o);if(!g)continue;n.set(Pe(g.componentId,g.segment),s)}catch(r){}})(),{get(o,r){let s=n.get(Pe(o,r));return s?l(s)?(n.delete(Pe(o,r)),null):s:null},set(o,r,s){let g=Pe(o,r);n.set(g,s);try{localStorage.setItem(d(o,r),JSON.stringify(s))}catch(p){}},clear(){n.clear();for(let o of a())try{localStorage.removeItem(o)}catch(r){}}}}var ut=["GPTBot","ChatGPT-User","OAI-SearchBot","ClaudeBot","Claude-User","Claude-SearchBot","PerplexityBot","Perplexity-User","Google-Extended","Applebot-Extended","Meta-ExternalAgent","Bytespider","CCBot","Amazonbot","cohere-ai","Diffbot"];function Ne(e){return pt(e)!==null}function pt(e){var n;if(!e)return null;let t=e.toLowerCase();return(n=ut.find(c=>t.includes(c.toLowerCase())))!=null?n:null}function le(e){let t=e.toLowerCase();return/ipad|tablet|playbook|kindle|silk/.test(t)?"tablet":/mobi|iphone|ipod|android.*mobile|phone/.test(t)?"mobile":"desktop"}function de(e,t){if(!e)return"direct";try{let n=new URL(e);if(t)try{if(new URL(t).host===n.host)return"direct"}catch(d){}let c=n.hostname.toLowerCase();return/(^|\.)(google|bing|duckduckgo|yahoo)\./.test(c)?"search":/(^|\.)(twitter\.com|x\.com|facebook\.com|linkedin\.com|reddit\.com|t\.co)$/.test(c)?"social":"referral"}catch(n){return"direct"}}function ue(e){if(!e)return null;try{return new URL(e).hostname}catch(t){return null}}var gt=["gclid","gbraid","wbraid","fbclid","ttclid","msclkid","twclid","li_fat_id"];function je(e){let t={},n={};try{let c=typeof e=="string"||e instanceof URLSearchParams?new URLSearchParams(e):Object.entries(e).flatMap(([d,i])=>{let a=Array.isArray(i)?i[0]:i;return a===void 0?[]:[[d,a]]});for(let[d,i]of c)d.startsWith("utm_")?d in t||(t[d]=i):gt.includes(d)&&(d in n||(n[d]=i))}catch(c){}return{utmParams:t,clickIds:n}}function pe(e){let t=e.getHours();return t<6?"night":t<12?"morning":t<18?"afternoon":"evening"}function We(e){let t=pn("__segment__",e);return`${t.deviceClass}:${t.trafficSource}`}function pn(e,t){var i,a,l,u,o,r,s,g;let n=(a=(i=t==null?void 0:t.userAgent)==null?void 0:i.trim())!=null?a:"",c=(u=(l=t==null?void 0:t.referer)==null?void 0:l.trim())!=null?u:"",d=(o=t==null?void 0:t.now)!=null?o:new Date;return{sessionId:e,ephemeral:!1,utmParams:(r=t==null?void 0:t.utmParams)!=null?r:{},clickIds:(s=t==null?void 0:t.clickIds)!=null?s:{},deviceClass:n?le(n):"desktop",trafficSource:c?de(c,t==null?void 0:t.appOrigin):"direct",referrerDomain:ue(c),timeOfDay:pe(d),dayOfWeek:(g=["sun","mon","tue","wed","thu","fri","sat"][d.getDay()])!=null?g:"sun",automation:(t==null?void 0:t.webdriver)===!0||Ne(n)}}var ge=require("@sentientui/policy");function Ee(e){return v(v(v({id:e.id},e.arms?{arms:[...e.arms]}:{}),e.dims?{dims:Object.fromEntries(Object.entries(e.dims).map(([t,n])=>[t,[...n]]))}:{}),e.baseline!==void 0?{baseline:e.baseline}:{})}function fe(e){let t=Ee(e);return(0,ge.slotResultFor)(t,(0,ge.slotBaselineArm)(t))}function ft(e){let t={};for(let n of e)t[n.id]=fe(n);return t}function Le(e){return typeof e=="string"?e:(0,ge.canonicalArm)(e)}var re="_snt_snap:",gn=["low","medium","high"];function me(e){try{let t=localStorage.getItem(re+e);if(!t)return null;let n=JSON.parse(t);return!n||typeof n!="object"||n.v!==1||typeof n.persona!="string"||typeof n.band!="string"||!gn.includes(n.band)||typeof n.slots!="object"||n.slots===null||Array.isArray(n.slots)||!(n.layoutOrder===null||Array.isArray(n.layoutOrder))||typeof n.savedAt!="number"||!(n.slotConfig===void 0||typeof n.slotConfig=="object"&&n.slotConfig!==null&&!Array.isArray(n.slotConfig))?null:n}catch(t){return null}}function ye(e,t){try{localStorage.setItem(re+e,JSON.stringify(t))}catch(n){}}function mt(e){return"(function(){try{var r=localStorage.getItem("+JSON.stringify(re+e).replace(/</g,"\\u003c")+');if(!r)return;var s=JSON.parse(r);if(!s||s.v!==1||typeof s.persona!=="string"||typeof s.band!=="string")return;var d=document.documentElement;if(d.hasAttribute("data-sentient-persona"))return;d.setAttribute("data-sentient-persona",s.persona);d.setAttribute("data-sentient-confidence",s.band);}catch(e){}})();'}var ze=require("@sentientui/policy");var Be=require("@sentientui/policy");var yt="[sentient] No API key configured \u2014 nothing is being learned. Set NEXT_PUBLIC_SENTIENT_API_KEY or pass localMode: true for local development.",fn="[sentient] Local mode \u2014 decisions are simulated on-device and nothing is sent over the network. Add an API key to learn from real traffic.",ht=!1,De=!1;function mn(){var e;try{return(e=new URLSearchParams(window.location.search).get("sentient_persona"))!=null?e:void 0}catch(t){return}}function St(e){var o;let t=_e({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),n=(o=t.getSessionId())!=null?o:"local",c=mn(),d=import("@sentientui/core/local").then(r=>{let s=r;return s.LOCAL_ENGINE_AVAILABLE?(ht||(ht=!0,console.info(fn)),s):(De||(De=!0,console.error(yt)),null)}).catch(()=>(De||(De=!0,console.error(yt)),null)),i=null,a={low:.15,medium:.5,high:.85},l=(()=>{var s;if(e.initialPersona)return v({},e.initialPersona);let r=me(e.apiKey||"local");return r?{persona:r.persona,confidence:(s=a[r.band])!=null?s:.15}:null})();function u(r){let s=document.documentElement;s.dataset.sentientPersona===void 0&&(s.dataset.sentientPersona=r.persona,s.dataset.sentientConfidence=(0,Be.confidenceBand)(r.confidence))}return{isLocal:!0,async decide(r){var p,m,S;let s=await d;if(!s)return null;let g=s.createLocalEngine({sessionId:n,forcedPersona:c}).decide(r);return i=j(v({},g),{layoutOrder:(m=(p=g.layoutOrder)!=null?p:i==null?void 0:i.layoutOrder)!=null?m:null,slots:v(v({},(S=i==null?void 0:i.slots)!=null?S:{}),g.slots)}),ye(e.apiKey||"local",{v:1,persona:i.persona,band:(0,Be.confidenceBand)(i.confidence),slots:i.slots,layoutOrder:i.layoutOrder,savedAt:Date.now()}),u(g),g},getSlotResult(r){var s,g,p;return(p=(g=i==null?void 0:i.slots[r])!=null?g:(s=e.initialSlots)==null?void 0:s[r])!=null?p:null},getPersona(){let r=i!=null?i:l;return r?{persona:r.persona,confidence:r.confidence,band:(0,Be.confidenceBand)(r.confidence)}:null},async assign(r,s){var m;let g=await d;return!g||!s||s.length===0?s!=null&&s[0]?{variantId:s[0],assignmentTtlMs:0}:null:{variantId:(m=g.createLocalEngine({sessionId:n,forcedPersona:c}).decide({components:[{id:r,variantIds:s}]}).assignments[r])!=null?m:s[0],assignmentTtlMs:0}},track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>t.destroy()}}var yn=["none","sm","md","lg"],hn=["start","center","end","stretch"],Sn=["start","center","end","between"],bn=["sm","md","lg"],vn=["normal","medium","bold"],wn=["default","muted","accent"],En=["primary","secondary","ghost"],xn=["left","center","right"],Cn=["auto","square","landscape","wide"],In=["cover","contain"],kn=[2,3,4],Tn=[2,3,4],An=64,_n=5,Rn=12,On=4,Pn=500;function bt(e,t,n,c){let d=[];{let l=!1,u=[],o=()=>{if(l)return;let r=Date.now();for(u.push(r);u.length>0&&r-u[0]>500;)u.shift();u.length>=3&&(l=!0,e("rage_click"))};t.addEventListener("click",o),d.push(()=>t.removeEventListener("click",o))}{let i=!1,a=l=>{if(i||!(l.target instanceof Node)||!t.contains(l.target)&&t!==l.target)return;i=!0;let u=typeof window!="undefined"?window.getSelection():null,o=u?u.toString().length:0;e("text_copy",{selectionLength:o})};document.addEventListener("copy",a),d.push(()=>document.removeEventListener("copy",a))}{let i=!1,a=!1,l=null,u=()=>{l!==null&&(clearTimeout(l),l=null)},o=()=>{i||!a||(u(),l=setTimeout(()=>{!i&&a&&(i=!0,e("scroll_hesitation"))},3e3))},r=()=>{u(),o()},s=p=>{for(let m of p)a=m.intersectionRatio>.3,a?o():u()},g=new IntersectionObserver(s,{threshold:[.3]});g.observe(t),window.addEventListener("scroll",r,{passive:!0}),d.push(()=>{g.disconnect(),window.removeEventListener("scroll",r),u()})}if((c==null?void 0:c.tabLoss)!==!1){let i=!1,a=n!=null?n:Date.now(),l=()=>{if(i||document.visibilityState!=="hidden")return;let u=Date.now()-a;u<15e3&&(i=!0,e("tab_loss",{timeOnPage:u}))};document.addEventListener("visibilitychange",l),d.push(()=>document.removeEventListener("visibilitychange",l))}return()=>{for(let i of d)i()}}var vt="https://api.sentient-ui.com/v1/events",K=new Map,wt=null;function Et(e,t){let n=K.get(e);n&&n.upgrade&&(n.reinit=t)}function Nn(e){return"value"in e||"currency"in e||"externalId"in e||"metadata"in e||"weight"in e||"stepIndex"in e}var Ln=3;function He(){return Te()}function Me(){var e;if(typeof window!="undefined")return((e=window.location)==null?void 0:e.pathname)||void 0}function Dn(){let e=new WeakMap,t=new Map,n=!1,c=(l,u,o)=>{let r=l.get(u);return o===null?r?!0:(l.set(u,new Set),!1):r?r.has(o)?!0:(r.add(o),!1):(l.set(u,new Set([o])),!1)},d=typeof window!="undefined"&&"event"in window,i=()=>{if(!d)return;let l=window.event;return typeof Event=="function"&&l instanceof Event?l:void 0},a=()=>{if(d){Promise.resolve().then(()=>{n=!1,t.clear()});return}let l=!1,u=()=>{l||(l=!0,n=!1,t.clear())};if(setTimeout(u,0),typeof MessageChannel=="function"){let o=new MessageChannel;o.port1.onmessage=()=>{o.port1.close(),o.port2.close(),u()},o.port2.postMessage(0)}};return{firedBefore(l,u){let o=i();if(o){let s=e.get(o);return s||(s=new Map,e.set(o,s)),c(s,l,u)}let r=c(t,l,u);return!r&&!n&&(n=!0,a()),r}}}var xt=new Set;function Bn(e,t,n){let c=typeof window=="undefined"?null:window.history;if(!c)return()=>{};let d=!1,i,a=()=>{if(d)return;let o=Me();!o||o===i||(i=o,e.track({projectId:t,componentId:"__page__",eventType:"pageview",payload:{}}),n(`${t}:${o}`))},l=[];for(let o of["pushState","replaceState"]){let r=c[o],s=function(...g){let p=r.apply(this,g);return a(),p};c[o]=s,l.push([o,r,s])}window.addEventListener("popstate",a);let u=Me();return u&&xt.has(`${t}:${u}`)?i=u:a(),()=>{if(!d){d=!0,window.removeEventListener("popstate",a);for(let[o,r,s]of l)c[o]===s&&(c[o]=r)}}}var xe={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,assign:()=>Promise.resolve(null),decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}};function Mn(){try{return je(window.location.search)}catch(e){return{utmParams:{},clickIds:{}}}}function Ct(e){return e.replace(/\/events\/?$/,"")}function Ce(){return typeof navigator!="undefined"&&navigator.globalPrivacyControl===!0?!0:[typeof navigator!="undefined"?navigator.doNotTrack:void 0,typeof window!="undefined"?window.doNotTrack:void 0,typeof navigator!="undefined"?navigator.msDoNotTrack:void 0].some(t=>t==="1"||t==="yes")}function It(e){var u;if(typeof window=="undefined")return;let t=e!=null?e:wt;if(!t){console.warn("[sentient] grantConsent() called before init()");return}let n=K.get(t);if(!n){console.warn("[sentient] grantConsent() called before init()");return}let{config:c,upgrade:d,reinit:i}=n;if(!d){n.upgradeBlockedReason&&console.warn(n.upgradeBlockedReason);return}if(c.respectDoNotTrack!==!1&&Ce())return;let a=(i!=null?i:Qe)(j(v({},c),{consent:!0}));d(a);let l=(u=K.get(t))==null?void 0:u.dispose;K.set(t,{config:j(v({},c),{consent:!0}),upgrade:null,dispose:l})}function Kn(e){var o;let t=e.preConsentBehavior==="statistical_winner",n=Ct((o=e.ingestUrl)!=null?o:vt),c={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},d=new Map,i=new Map,a={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),assign(r,s,g){if(!t)return Promise.resolve(null);let p=d.get(r);return p?Promise.resolve(p):qe(i,r,async()=>{try{let m=new URLSearchParams({componentId:r});for(let G of s!=null?s:[])m.append("variantIds[]",G);let S=await fetch(`${n}/winner?${m.toString()}`,{headers:c});if(!S.ok)return s!=null&&s[0]?{variantId:s[0],assignmentTtlMs:0}:null;let E={variantId:(await S.json()).variantId,assignmentTtlMs:0};return d.set(r,E),E}catch(m){return s!=null&&s[0]?{variantId:s[0],assignmentTtlMs:0}:null}})},decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}},l={track:r=>a.track(r),goal:((r,s,g,p)=>a.goal(r,s,g,p)),componentGoal:(r,s,g)=>a.componentGoal(r,s,g),identify:r=>a.identify(r),getAssignment:(r,s)=>a.getAssignment(r,s),assign:(r,s,g,p)=>a.assign(r,s,g,p),decide:r=>a.decide(r),getSlotResult:r=>a.getSlotResult(r),getPersona:()=>a.getPersona(),fetchWeights:()=>a.fetchWeights(),getGraph:()=>a.getGraph(),dispose:()=>a.dispose(),destroy:()=>a.destroy()};function u(r){a=r}return{proxy:l,setInner:u}}function qe(e,t,n){let c=e.get(t);if(c)return c;let d=(async()=>{try{return await n()}finally{e.delete(t)}})();return e.set(t,d),d}function Qe(e){var k,H,ee,F,he,q,se,Q,Ve;if(typeof window=="undefined")return xe;wt=e.apiKey||"local";let t=K.get(e.apiKey||"local");if(t!=null&&t.dispose)try{t.dispose()}catch(f){}let n=e.respectDoNotTrack!==!1&&Ce(),c=e.consent===!1||n,d=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_");if(e.localMode===!0||!d&&e.localMode!==!1)return K.set(e.apiKey||"local",{config:e,upgrade:null,upgradeBlockedReason:"[sentient] grantConsent(): this client is keyless/local \u2014 there is no hosted client to upgrade to. Configure a pk_ API key to enable tracking."}),c?xe:St(e);if(c){if(!e.apiKey||!e.apiKey.startsWith("pk_"))return e.preConsentBehavior==="statistical_winner"&&console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),K.set(e.apiKey||"local",{config:e,upgrade:null,upgradeBlockedReason:"[sentient] grantConsent(): the client was initialized with an invalid apiKey (expected a pk_ public key) \u2014 consent cannot enable tracking."}),xe;let{proxy:f,setInner:y}=Kn(e);return K.set(e.apiKey,{config:e,upgrade:n?null:y}),f}if(!e.apiKey||!e.apiKey.startsWith("pk_"))return console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),xe;if(e.ingestUrl==="")return console.warn("[sentient] init() called with an empty ingestUrl. SDK disabled."),xe;let i=(k=e.ingestUrl)!=null?k:vt,a=Date.now(),l=_e({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),u=dt(void 0,e.apiKey),o=ct({ingestUrl:i,apiKey:e.apiKey}),r=Ct(i),s={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},g=new Set,p=lt({url:`${r}/goals`,apiKey:e.apiKey,headers:s,onDrop:(f,y)=>{if(!e.debug){if(g.has(y))return;g.add(y)}console.warn(`[sentient] goal dropped (HTTP ${y}) \u2014 this will not be retried. `+(y===400?"The session was not found: call init() and let the session upsert complete before firing goals.":y===401||y===403?"Check the API key and that this origin is on the project allowlist.":"See the response status for the cause."),f)}}),m=le((H=navigator.userAgent)!=null?H:""),S=window.location.origin,x=de((ee=document.referrer)!=null?ee:"",S),E=(F=e.sessionSegment)!=null?F:`${m}:${x}`,G=new Map,U=new Map,A=new Map,I=null,N=f=>{for(let y of f)A.has(y.id)||A.set(y.id,fe(y))};if(e.initialSlots)for(let[f,y]of Object.entries(e.initialSlots))A.set(f,y);let b=me(e.apiKey);if(b)for(let[f,y]of Object.entries(b.slots))A.has(f)||A.set(f,y);let R={low:.15,medium:.5,high:.85};if(e.initialPersona)I=v({},e.initialPersona);else{let f=document.documentElement.dataset;f.sentientPersona?I={persona:f.sentientPersona,confidence:(q=R[(he=f.sentientConfidence)!=null?he:"low"])!=null?q:.15}:b&&(I={persona:b.persona,confidence:(se=R[b.band])!=null?se:.15})}if(e.initialAssignments)for(let[f,y]of Object.entries(e.initialAssignments))u.set(f,E,{variantId:y,assignedAt:Date.now(),segment:E,confidence:1});let B=Promise.resolve(),W=l.getSessionId();if(W){let f=ue((Q=document.referrer)!=null?Q:""),{utmParams:y,clickIds:C}=Mn(),O=v(v(v({sessionId:W,deviceClass:m,trafficSource:x,referrerDomain:f,utmParams:y,clickIds:C,timeOfDay:pe(new Date),dayOfWeek:["sun","mon","tue","wed","thu","fri","sat"][new Date().getDay()],ephemeral:l.isEphemeral(),automation:typeof navigator!="undefined"&&navigator.webdriver===!0||Ne((Ve=navigator.userAgent)!=null?Ve:"")},e.userId?{userId:e.userId}:{}),e.persona?{persona:e.persona}:{}),e.country?{country:e.country}:{}),L=async()=>{for(let w=0;;w++){try{let _=await fetch(`${r}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify(O),headers:s});if(_.status===402){console.warn("[SentientUI] Session limit exceeded for this project. The bandit will stop learning until the limit resets. Upgrade at sentient-ui.com/pricing");return}if(_.ok||ce(_)==="dropped")return}catch(_){}if(w>=Ln){console.warn("[SentientUI] Could not register the session after retries. Conversions in this visit may not be recorded.");return}await new Promise(_=>setTimeout(_,Y(w+1)))}};try{B=L()}catch(w){}}e.debug&&(console.log("[sentient] initialized",{context:e.context}),window.__sentient={client:null,queue:o});let Z=Dn(),M=null,oe=!1,h={goal(f,y={},C=1,O=0){var Se,be,ie,T,z,ke,P;let L=l.getSessionId();if(!L)return;let w=Nn(y)?y:{metadata:y},_=[f,(Se=w.externalId)!=null?Se:"",(be=w.stepIndex)!=null?be:O,(ie=w.weight)!=null?ie:C].join("\0"),$=w.value!==void 0?`${w.value}\0${(T=w.currency)!=null?T:""}`:null;if(Z.firedBefore(_,$)){e.debug&&console.log(`[sentient] goal("${f}") already recorded for this action \u2014 not sent twice`);return}let D=He(),J={sessionId:L,name:f,metadata:(z=w.metadata)!=null?z:{},weight:(ke=w.weight)!=null?ke:C,stepIndex:(P=w.stepIndex)!=null?P:O,goalId:D,value:w.value,currency:w.currency,externalId:w.externalId};e.debug&&console.log("[sentient] goal",J);let te={id:D,body:JSON.stringify(J)};B.then(()=>p.send(te))},componentGoal(f,y,C){var D,J,te;let O=l.getSessionId();if(!O)return;let L=u.get(f,E),w=L?null:(D=A.get(f))!=null?D:null;if(!L&&w===null){e.debug&&console.warn(`[sentient] componentGoal("${f}"): no assignment or slot decision yet \u2014 render its <Adaptive>/adaptive hook or call assign()/decide() before recording a goal.`);return}let _=L?L.variantId:Le(w),$={id:He(),sessionId:O,projectId:e.apiKey,componentId:f,variantId:_,eventType:"goal_achieved",goalType:y,payload:v({reward:(J=C==null?void 0:C.reward)!=null?J:1,goalValue:C==null?void 0:C.value,currency:C==null?void 0:C.currency},(te=C==null?void 0:C.metadata)!=null?te:{}),timestamp:Date.now(),timeInSession:Date.now()-a,path:Me()};e.debug&&console.log("[sentient] componentGoal",$),B.then(()=>o.push($))},identify(f){let y=l.getSessionId();y&&B.then(()=>{fetch(`${r}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify({sessionId:y,userId:f,ephemeral:l.isEphemeral()}),headers:s}).catch(()=>{})})},track(f){let y=l.getSessionId();if(!y)return;let C=j(v({path:Me()},f),{id:He(),sessionId:y,timestamp:Date.now(),timeInSession:Date.now()-a});e.debug&&console.log("[sentient] track",C),B.then(()=>o.push(C))},getAssignment(f,y){return u.get(f,y)},async assign(f,y,C,O){let L=l.getSessionId();if(!L)return null;let w=u.get(f,E);if(w&&(y!=null&&y.length||w.content!==void 0)){let _=w.ttlMs&&w.ttlMs>0?Math.max(0,w.assignedAt+w.ttlMs-Date.now()):0;return{variantId:w.variantId,assignmentTtlMs:_,content:w.content}}return qe(G,f,async()=>{await B;try{let _={sessionId:L,componentId:f,variantIds:y};O!==void 0?_.agentDataByVariant=O:C!==void 0&&(_.agentData=C);let $=await fetch(`${r}/assign`,{method:"POST",body:JSON.stringify(_),headers:s});if(!$.ok)return null;let D=await $.json();return u.set(f,E,v({variantId:D.variantId,assignedAt:Date.now(),segment:E,confidence:1,content:D.content},D.assignmentTtlMs&&D.assignmentTtlMs>0?{ttlMs:D.assignmentTtlMs}:{})),D}catch(_){return null}})},async decide(f){var w,_;let y=l.getSessionId();if(!y)return null;let C=(w=f.slots)!=null?w:[],O={sessionId:y};f.sections&&f.sections.length>0&&(O.sections=f.sections.map($=>({id:$}))),O.components=(_=f.components)!=null?_:[],C.length>0&&(O.slots=C.map(Ee)),f.slotsFrom==="registry"&&(O.slotsFrom="registry"),f.v&&(O.v=f.v),e.persona&&(O.persona=e.persona);let L=JSON.stringify(O);return qe(U,L,async()=>{var $,D,J,te,Se,be;await B;try{let ie=await fetch(`${r}/decide`,{method:"POST",body:L,headers:s});if(!ie.ok)return N(C),null;let T=await ie.json(),z={};for(let P of C){let X=($=T.slots)==null?void 0:$[P.id];if(X!==void 0){z[P.id]=X,A.set(P.id,X);continue}let Ze=A.get(P.id);if(Ze!==void 0)z[P.id]=Ze;else{let et=fe(P);z[P.id]=et,A.set(P.id,et)}}if(T.slots)for(let[P,X]of Object.entries(T.slots))P in z||(z[P]=X,A.set(P,X));let ke=I!=null&&I.persona!=="unknown";T.persona&&!(T.persona==="unknown"&&ke)?I={persona:T.persona,confidence:(D=T.confidence)!=null?D:0}:I||(I={persona:"unknown",confidence:0});for(let[P,X]of Object.entries((J=T.assignments)!=null?J:{}))u.set(P,E,{variantId:X,assignedAt:Date.now(),segment:E,confidence:1});return ye(e.apiKey,v(v({v:1,persona:I.persona,band:(0,ze.confidenceBand)(I.confidence),slots:Object.fromEntries(A),layoutOrder:(te=T.layoutOrder)!=null?te:null,savedAt:Date.now()},T.slotConfig?{slotConfig:T.slotConfig}:{}),T.palette?{palette:T.palette}:{})),v(v(v(v({layoutOrder:(Se=T.layoutOrder)!=null?Se:null,assignments:(be=T.assignments)!=null?be:{},slots:z,persona:I.persona,confidence:I.confidence},T.slotConfig?{slotConfig:T.slotConfig}:{}),T.goals?{goals:T.goals}:{}),T.sectionMap?{sectionMap:T.sectionMap}:{}),T.palette?{palette:T.palette}:{})}catch(ie){return N(C),null}})},getSlotResult(f){var y;return(y=A.get(f))!=null?y:null},getPersona(){return I?{persona:I.persona,confidence:I.confidence,band:(0,ze.confidenceBand)(I.confidence)}:null},async fetchWeights(){var f;try{let y=await fetch(`${r}/weights`,{headers:s});return y.ok?(f=(await y.json()).components)!=null?f:[]:[]}catch(y){return[]}},getGraph(){return{pageNodes:[],capturedAt:0}},dispose(){var f;M==null||M(),oe=!0,o.destroy(),p.destroy(),((f=K.get(e.apiKey))==null?void 0:f.dispose)===h.dispose&&K.delete(e.apiKey),e.debug&&console.log("[sentient] disposed")},destroy(){var f;M==null||M(),oe=!0,o.destroy(),p.destroy(),l.destroy(),u.clear(),((f=K.get(e.apiKey))==null?void 0:f.dispose)===h.dispose&&K.delete(e.apiKey);try{localStorage.removeItem(re+e.apiKey),localStorage.removeItem(Ue(e.apiKey)),localStorage.removeItem(Fe(e.apiKey))}catch(y){}e.debug&&console.log("[sentient] destroyed")}};if(K.set(e.apiKey,{config:e,upgrade:null,dispose:h.dispose}),M=Bn(h,e.apiKey,f=>{B.then(()=>{oe||xt.add(f)})}),e.debug){let f=window;f.__sentient&&(f.__sentient.client=h)}return h}var kt="_snt_graph_edges",Gn={pricing:["features","faq"],features:["pricing"],faq:["pricing"],social_proof:["cta"],cta:["social_proof","hero","trust"],hero:["cta"],comparison:["pricing"],trust:["cta"]};function $n(e){var t;return(t=Gn[e])!=null?t:[]}function Un(e,t){try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch(n){return t}}function Fn(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(n){}}var jn=new Set(["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"]);function Wn(e){return jn.has(e)?e:"generic"}function Je(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch(t){return"/"}}function Hn(e,t,n){let c=`${e}:${t}:${n.join(",")}`,d=5381;for(let i=0;i<c.length;i++)d=(d<<5)+d+c.charCodeAt(i)&4294967295;return(d>>>0).toString(16).padStart(8,"0")}function Tt(e){let t=new Map,n=new Map,c=`_snt_graph_nodes${ne(e==null?void 0:e.apiKey)}`,d=()=>{typeof window!="undefined"&&Fn(c,[...t.values()])};if(typeof window!="undefined"){let i=Un(c,[]);for(let a of i)t.set(a.componentId,a);try{localStorage.removeItem(kt)}catch(a){}}return{addPageNode(i){t.set(i.componentId,i),d()},addStructuralEdge(i){let a=`${i.fromComponentId}->${i.toComponentId}`;n.set(a,i)},syncOnce(){var a,l;if(!(e!=null&&e.syncUrl)||typeof window=="undefined")return;let i=[...t.values()];if(i.length!==0)try{let u=new Map;for(let p of i){let m=(a=u.get(p.semanticType))!=null?a:[];m.push(p),u.set(p.semanticType,m)}let o=[],r=new Set;for(let p of i)for(let m of $n(p.semanticType)){let S=(l=u.get(m))!=null?l:[];for(let x of S){if(x.componentId===p.componentId)continue;let E=`semantic:${p.componentId}->${x.componentId}`;r.has(E)||(r.add(E),o.push({fromComponentId:p.componentId,toComponentId:x.componentId,type:"semantic",weight:.4,confidence:.9}))}}let s=new Set(i.map(p=>p.componentId));for(let p of n.values()){if(!s.has(p.fromComponentId)||!s.has(p.toComponentId))continue;let m=`structural:${p.fromComponentId}->${p.toComponentId}`;r.has(m)||(r.add(m),o.push({fromComponentId:p.fromComponentId,toComponentId:p.toComponentId,type:"structural",weight:p.weight,confidence:1}))}let g=j(v(v({pageUrl:Je(window.location.href)},e.sessionId?{sessionId:e.sessionId}:{}),e.projectId?{projectId:e.projectId}:{}),{nodes:i.map(p=>{let m=Wn(p.semanticType);return{componentId:p.componentId,semanticType:m,answers:p.answers,contentHash:Hn(p.componentId,m,p.answers),prominenceScore:p.prominenceScore,depthInPage:p.depth}}),edges:o});fetch(e.syncUrl,{method:"POST",keepalive:!0,headers:v({"Content-Type":"application/json"},e.apiKey?{Authorization:`Bearer ${e.apiKey}`}:{}),body:JSON.stringify(g)}).catch(()=>{})}catch(u){}},snapshot(){return{pageNodes:[...t.values()],capturedAt:Date.now()}},destroy(){if(typeof window!="undefined")try{localStorage.removeItem(c),localStorage.removeItem(kt)}catch(i){}}}}var zn=["data-sentient-id","data-testid","data-test","data-id","data-name","data-cy"];function Xe(e){var t;return((t=e.textContent)!=null?t:"").replace(/\s+/g," ").trim()}function qn(e){return{tag:e.tagName.toLowerCase(),text:Xe(e).slice(0,40)}}function At(e){return e.replace(/["\\\]]/g,"\\$&")}function Ie(e,t){try{return e.querySelectorAll(t).length===1}catch(n){return!1}}function _t(e,t){var a;let n=e.tagName.toLowerCase();if(!n)return null;let c=((a=e.getAttribute("class"))!=null?a:"").split(/\s+/).filter(l=>/^[a-zA-Z][\w-]*$/.test(l)),d=[n,...c.map(l=>`${n}.${l}`)];for(let l of d)if(Ie(t,l))return l;let i=e.parentElement;if(i&&i!==t){let l=_t(i,t);if(l){for(let s of d){let g=`${l} > ${s}`;if(Ie(t,g))return g}let u=Array.from(i.children).filter(s=>s.tagName.toLowerCase()===n),o=u.indexOf(e),r=u.some(s=>s!==e&&Xe(s)!==Xe(e));if(o>=0&&r){let s=`${l} > ${n}:nth-of-type(${o+1})`;if(Ie(t,s))return s}}}return null}function Ke(e,t){let n=qn(e),c=e.getAttribute("id");if(c&&Ie(t,`#${At(c)}`))return{v:1,id:c,fingerprint:n};for(let i of zn){let a=e.getAttribute(i);if(a&&Ie(t,`[${i}="${At(a)}"]`))return{v:1,dataAttr:{name:i,value:a},fingerprint:n}}let d=_t(e,t);return d?{v:1,selector:d,fingerprint:n}:null}var Ot=["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"],Qn={banner:"hero",navigation:"navigation",contentinfo:"footer"};function Jn(e){let t=e.ariaRole?Qn[e.ariaRole.toLowerCase()]:void 0;if(t)return t;if(e.tag==="nav")return"navigation";if(e.tag==="footer")return"footer";if(e.tag==="header")return e.actionCount>=5?"navigation":"hero";let n=`${e.idClass} ${e.headingText}`.toLowerCase();return/\b(navbar|nav-bar|navigation|site-nav|main-nav|topbar|footer)\b/.test(n)?/footer/.test(n)?"footer":"navigation":/\b(hero|masthead|jumbotron)\b/i.test(e.idClass)?"hero":null}function Xn(e){return e.actionCount>=1&&e.textLength>0&&e.textLength<200?"cta":"generic"}var Yn=[["pricing",/\b(pricing|price list|per month|\/mo|subscriptions?)\b|\bplans?\b(?=[^.]{0,40}(from|start|month|year|[$€£]))/i],["faq",/\bfaq\b|frequently asked|common questions?/i],["comparison",/\b(compare|comparison|versus)\b|\bvs\./i],["social_proof",/\b(reviews?|ratings?|testimonial|brands?|galler(y|ies)|logos)\b|trusted by|loved by|case stud|what our customers say/i],["trust",/\b(insurance|warrant(y|ies)|guarantees?|certifi|accredit|security|privacy|compliance|gdpr|encrypt)\b|why choose|about us|our team/i],["cta",/\b(book|booking|reserve|appointments?|newsletter|subscribe)\b|contact us|get in touch|opening hours/i],["features",/\b(features?|benefits?|capabilit|services?|repairs?|menus?|products?)\b|how it works|our process|what we (do|offer)|what you get/i]],Vn=[["pricing",/(?:[$€£]\s?\d[\d,.]*\s*(?:\/|per\s)\s*(?:mo|month|yr|year|seat|user))|(?:\b(?:starter|basic|pro|growth|premium|enterprise)\b[^.]{0,60}[$€£]\s?\d)/i],["social_proof",/(?:★{2,})|(?:\b\d(?:\.\d)?\s*(?:out of|\/)\s*5\b)|(?:\brated\b)|(?:["“][^"”]{20,160}["”]\s*[—–-]\s*[A-Z][a-z]+)/],["trust",/\b(?:money[- ]back guarantee|free returns?|returns? within|refund(?:s)? within|encrypted|soc ?2|iso ?27001|gdpr[- ]compliant|cancel anytime)\b/i],["comparison",/\b(?:vs|versus)\b\.?[^.!?]{0,80}\b(?:compare|comparison|plans?|features?|alternative)\b|\bhow (?:we|it) compares?\b/i]],Rt={navigation:"navigation",footer:"navigation",hero:"hero",cta:"cta",generic:"generic"};function Zn(e){var n;let t=e.querySelector("h1, h2, h3");return((n=t==null?void 0:t.textContent)!=null?n:"").slice(0,160)}function er(e){var d,i;let t=Jn(e);if(t)return{type:(d=Rt[t])!=null?d:"generic",strength:"strong"};let n=`${e.idClass} ${e.headingText}`.toLowerCase();for(let[a,l]of Yn)if(l.test(n))return{type:a,strength:"strong"};for(let[a,l]of Vn)if(l.test(e.bodyText))return{type:a,strength:"strong"};let c=Xn(e);return{type:(i=Rt[c])!=null?i:"generic",strength:"weak"}}function tr(e){var c,d;let t=((c=e.textContent)!=null?c:"").replace(/\s+/g," ").trim(),n=e.getAttribute("role");return v({tag:e.tagName.toLowerCase(),idClass:`${e.id} ${String((d=e.className)!=null?d:"")}`,headingText:Zn(e),bodyText:t.slice(0,2e3),actionCount:e.querySelectorAll('a, button, [role="button"]').length,textLength:t.length},n?{ariaRole:n}:{})}function Pt(e){return er(tr(e)).type}var nr=new Set(["SECTION","ARTICLE","MAIN","DIV","ASIDE"]),rr="h1, h2, h3",or="[data-sentient-id], section[aria-label], article[aria-label], main[aria-label], aside[aria-label]",Nt=30,sr=1500,ir={scan:async()=>({nodes:[],edges:[],scannedAt:0}),observe:()=>{},getProminenceScore:()=>0,destroy:()=>{}};function Lt(e,t,n){return n<=t?0:Math.max(0,Math.min(1,(e-t)/(n-t)))}function ar(e){var t,n,c;try{let d=e;for(let i of Object.keys(d)){if(!i.startsWith("__reactFiber")&&!i.startsWith("__reactInternalInstance"))continue;let a=d[i],l=(c=(t=a==null?void 0:a.type)==null?void 0:t.displayName)!=null?c:(n=a==null?void 0:a.type)==null?void 0:n.name;if(l&&l.length>1)return l}}catch(d){}}function cr(e){let t={};for(let n of Array.from(e.attributes))n.name.startsWith("data-")&&(t[n.name]=n.value);return t}var Dt=new Set(Ot);function lr(e){let t=e.getAttribute("data-sentient-type");if(t&&Dt.has(t))return t;let n=e.getAttribute("role");return n&&Dt.has(n)?n:Pt(e)}function dr(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)&4294967295;return(t>>>0).toString(16).padStart(8,"0")}function ur(e){let t=[],n=e;for(;n;){let c=n.parentElement;if(!c){t.push(n.tagName.toLowerCase());break}let d=Array.prototype.indexOf.call(c.children,n);t.push(`${n.tagName.toLowerCase()}[${d}]`),n=c}return t.reverse().join("/")}function pr(e){var n;let t=(n=e.getAttribute("data-sentient-id"))!=null?n:e.getAttribute("id");return t||`${e.tagName.toLowerCase()}-${dr(ur(e))}`}function gr(e){let t=0,n=e.parentElement;for(;n;)t++,n=n.parentElement;return t}function Ye(e,t){var c,d,i,a;let n=e.querySelector(rr);return{componentId:pr(e),semanticType:lr(e),ariaLabel:(c=e.getAttribute("aria-label"))!=null?c:void 0,headingText:(i=(d=n==null?void 0:n.textContent)==null?void 0:d.trim())!=null?i:void 0,isAboveFold:e.getBoundingClientRect().top<window.innerHeight,prominenceScore:t(e),depth:gr(e),reactComponentName:ar(e),dataAttributes:cr(e),locator:(a=Ke(e,e.ownerDocument))!=null?a:void 0}}function Bt(e){var i;let t=[],n=new Set,c="__root__",d=new Map;for(let[a,l]of e){let u=a.parentElement,o=c;for(;u;){if(e.has(u)){o=e.get(u);let s=e.get(a),g=`${o}->${s}`;!n.has(g)&&o!==s&&(n.add(g),t.push({fromComponentId:o,toComponentId:s,weight:.6}));break}u=u.parentElement}let r=(i=d.get(o))!=null?i:[];r.push(a),d.set(o,r)}for(let a of d.values()){if(a.length<2)continue;let l=a.length>Nt?a.slice(0,Nt):a;for(let u=0;u<l.length;u++)for(let o=u+1;o<l.length;o++){if(t.length>=sr)return t;let r=e.get(l[u]),s=e.get(l[o]);if(r===s)continue;let g=`${r}->${s}::sib`,p=`${s}->${r}::sib`;n.has(g)||(n.add(g),t.push({fromComponentId:r,toComponentId:s,weight:.3})),n.has(p)||(n.add(p),t.push({fromComponentId:s,toComponentId:r,weight:.3}))}}return t}function fr(e){let t=[],n=new Set,c=new Map;return document.querySelectorAll("[data-sentient-id]").forEach(a=>{if(a instanceof Element&&!n.has(a)){n.add(a);let l=Ye(a,e);t.push(l),c.set(a,l.componentId)}}),document.querySelectorAll("section, article, main, aside").forEach(a=>{if(!(a instanceof Element)||n.has(a))return;let l=a.hasAttribute("aria-label"),u=a.hasAttribute("data-sentient-id");if(!l&&!u)return;n.add(a);let o=Ye(a,e);t.push(o),c.set(a,o.componentId)}),{nodes:t,edges:Bt(c),elementToId:c}}function Mt(){if(typeof window=="undefined")return ir;let e=null,t=0,n=null,c=new Map,d=u=>{try{let o=window.getComputedStyle(u),r=parseFloat(o.fontSize)||12,s=parseFloat(o.zIndex)||0,g=u.getBoundingClientRect(),p=Math.max(g.top,0),m=window.innerHeight||1,S=1/(p/m+1),x=Lt(r,12,48)*.4+S*.4+Lt(s,0,100)*.2;return Math.max(0,Math.min(1,x))}catch(o){return .5}};return{scan:()=>new Promise(u=>{let o=()=>{let{nodes:r,edges:s,elementToId:g}=fr(d);c.clear();for(let[p,m]of g)c.set(p,m);u({nodes:r,edges:s,scannedAt:Date.now()})};try{typeof requestIdleCallback=="function"?t=requestIdleCallback(o,{timeout:100}):o()}catch(r){o()}}),observe:u=>{n=u;try{e=new MutationObserver(o=>{let r=[],s=new Set;for(let p of o)p.type==="childList"&&p.addedNodes.forEach(m=>{if(!(m instanceof Element))return;let S=[];nr.has(m.tagName)&&(m.hasAttribute("data-sentient-id")||m.hasAttribute("aria-label"))&&S.push(m);try{m.querySelectorAll(or).forEach(x=>S.push(x))}catch(x){}for(let x of S){if(c.has(x))continue;let E=Ye(x,d);r.push(E),s.add(E.componentId),c.set(x,E.componentId)}});if(r.length===0||!n)return;for(let p of[...c.keys()])p.isConnected||c.delete(p);let g=Bt(c).filter(p=>s.has(p.fromComponentId)||s.has(p.toComponentId));n({nodes:r,edges:g,addedAt:Date.now()})}),e.observe(document.body,{childList:!0,subtree:!0})}catch(o){}},getProminenceScore:d,destroy:()=>{if(e&&(e.disconnect(),e=null),t&&typeof cancelIdleCallback=="function")try{cancelIdleCallback(t)}catch(u){}t=0,n=null,c.clear()}}}var mr="https://api.sentient-ui.com/v1/events";function yr(e){var n;let t=c=>{try{let d=document.cookie.match(new RegExp(`(?:^|; )${c}=([^;]*)`));return d?decodeURIComponent(d[1]):void 0}catch(d){return}};return(n=e?t(ae(e)):void 0)!=null?n:t(we)}var Ge=new Map;function Kt(e){var p;let t=Qe(e),n=e.respectDoNotTrack!==!1&&Ce(),c=e.consent===!1||n,d=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_"),i=e.localMode===!0||!d;if(!e.graph||i||typeof window=="undefined")return t;if(c)return n||Et(e.apiKey,m=>Kt(m)),t;let a=Ge.get(e.apiKey);if(a)try{a()}catch(m){}let l=Mt(),u=(p=e.ingestUrl)!=null?p:mr,o=Tt({syncUrl:u.replace(/\/events\/?$/,"/graph/sync"),apiKey:e.apiKey,projectId:e.apiKey,sessionId:yr(e.apiKey)});l.scan().then(m=>{for(let S of m.nodes)o.addPageNode({id:S.componentId,componentId:S.componentId,semanticType:S.semanticType,answers:e.captureDomText&&S.headingText?[S.headingText]:[],prominenceScore:S.prominenceScore,depth:S.depth});for(let S of m.edges)o.addStructuralEdge(S);o.syncOnce()});let r=null,s=()=>{r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,o.syncOnce()},500)};l.observe(m=>{for(let S of m.nodes)o.addPageNode({id:S.componentId,componentId:S.componentId,semanticType:S.semanticType,answers:e.captureDomText&&S.headingText?[S.headingText]:[],prominenceScore:S.prominenceScore,depth:S.depth});for(let S of m.edges)o.addStructuralEdge(S);s()});let g=()=>{r!==null&&(clearTimeout(r),r=null),l.destroy(),o.destroy(),Ge.get(e.apiKey)===g&&Ge.delete(e.apiKey)};return Ge.set(e.apiKey,g),j(v({},t),{getGraph:()=>o.snapshot(),dispose:()=>{g(),t.dispose()},destroy:()=>{g(),t.destroy()}})}0&&(module.exports={BLOCK_ALIGNS,BLOCK_EMPHASES,BLOCK_FITS,BLOCK_GAPS,BLOCK_GRID_COLUMNS,BLOCK_HEADING_LEVELS,BLOCK_JUSTIFIES,BLOCK_RATIOS,BLOCK_SIZES,BLOCK_TEXT_ALIGNS,BLOCK_TONES,BLOCK_WEIGHTS,LEGACY_SESSION_COOKIE_NAME,MAX_BLOCK_ARMS,MAX_BLOCK_CHILDREN,MAX_BLOCK_DEPTH,MAX_BLOCK_NODES,MAX_BLOCK_TEXT_LEN,SNAPSHOT_STORAGE_KEY_PREFIX,armOfResult,attachMicroSignalDetectors,baselineResultFor,baselineSlots,deriveSessionSegment,detectDeviceClass,detectTimeOfDay,detectTrafficSource,grantConsent,init,isDoNotTrackEnabled,locatorFromElement,readSnapshot,referrerDomainFromReferer,renderPrePaintScript,sanitizePageUrl,sessionCookieName,toWireSlot,writeSnapshot});
|
|
1
|
+
"use strict";var Ht=Object.create;var ve=Object.defineProperty,qt=Object.defineProperties,Qt=Object.getOwnPropertyDescriptor,Xt=Object.getOwnPropertyDescriptors,Yt=Object.getOwnPropertyNames,at=Object.getOwnPropertySymbols,Jt=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable;var ct=(e,t,n)=>t in e?ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))lt.call(t,n)&&ct(e,n,t[n]);if(at)for(var n of at(t))Vt.call(t,n)&&ct(e,n,t[n]);return e},H=(e,t)=>qt(e,Xt(t));var Zt=(e,t)=>{for(var n in t)ve(e,n,{get:t[n],enumerable:!0})},dt=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of Yt(t))!lt.call(e,d)&&d!==n&&ve(e,d,{get:()=>t[d],enumerable:!(c=Qt(t,d))||c.enumerable});return e};var en=(e,t,n)=>(n=e!=null?Ht(Jt(e)):{},dt(t||!e||!e.__esModule?ve(n,"default",{value:e,enumerable:!0}):n,e)),tn=e=>dt(ve({},"__esModule",{value:!0}),e);var Ar={};Zt(Ar,{BLOCK_ALIGNS:()=>Cn,BLOCK_EMPHASES:()=>_n,BLOCK_FITS:()=>Pn,BLOCK_GAPS:()=>xn,BLOCK_GRID_COLUMNS:()=>Nn,BLOCK_HEADING_LEVELS:()=>Ln,BLOCK_JUSTIFIES:()=>In,BLOCK_RATIOS:()=>On,BLOCK_SIZES:()=>kn,BLOCK_TEXT_ALIGNS:()=>Rn,BLOCK_TONES:()=>An,BLOCK_WEIGHTS:()=>Tn,FORM_FIELD_KINDS:()=>Dn,FORM_INPUT_TYPES:()=>Bn,LEGACY_SESSION_COOKIE_NAME:()=>we,MAX_BLOCK_ARMS:()=>Fn,MAX_BLOCK_CHILDREN:()=>Un,MAX_BLOCK_DEPTH:()=>$n,MAX_BLOCK_NODES:()=>Gn,MAX_BLOCK_TEXT_LEN:()=>jn,MAX_FORM_FIELDS:()=>Mn,MAX_FORM_SELECT_OPTIONS:()=>Kn,SNAPSHOT_STORAGE_KEY_PREFIX:()=>oe,armOfResult:()=>Le,attachMicroSignalDetectors:()=>kt,baselineResultFor:()=>fe,baselineSlots:()=>vt,containsFormBlock:()=>It,deriveSessionSegment:()=>We,detectDeviceClass:()=>le,detectTimeOfDay:()=>pe,detectTrafficSource:()=>de,grantConsent:()=>Pt,init:()=>zt,isDoNotTrackEnabled:()=>Ce,locatorFromElement:()=>Ke,readSnapshot:()=>me,referrerDomainFromReferer:()=>ue,renderPrePaintScript:()=>wt,sanitizePageUrl:()=>Xe,sessionCookieName:()=>ae,toWireSlot:()=>Ee,writeSnapshot:()=>ye});module.exports=tn(Ar);function Te(){try{if(typeof crypto!="undefined"&&typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch(e){}try{if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t="";for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,"0"),(n===3||n===5||n===7||n===9)&&(t+="-");return t}}catch(e){}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function re(e){return e?`_${e.slice(0,12)}`:""}var we="_snt_uid";function ae(e){return`${we}${re(e)}`}var nn="_snt_uid",rn=365,Ae="_snt_uid";function on(){return Te()}function ut(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]):null}catch(t){return null}}function sn(e,t,n){try{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; SameSite=strict; path=/`}catch(c){}}function $e(e){try{return localStorage.getItem(e)}catch(t){return null}}function pt(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return!1}}function gt(e){try{return sessionStorage.getItem(e)}catch(t){return null}}function an(e,t){try{return sessionStorage.setItem(e,t),!0}catch(n){return!1}}function cn(e){try{sessionStorage.removeItem(e)}catch(t){}}function ln(e){try{return document.cookie=`${e}_probe=1; max-age=1; SameSite=strict; path=/`,document.cookie.indexOf(`${e}_probe=1`)!==-1}catch(t){return!1}}function dn(e){try{localStorage.removeItem(e)}catch(t){}}function un(e){try{document.cookie=`${e}=; max-age=0; SameSite=strict; path=/`}catch(t){}}var pn={getSessionId:()=>null,isEphemeral:()=>!1,destroy:()=>{}};function _e(e){var y,b,x,E,K,F,T;if(typeof window=="undefined")return pn;let t=re(e==null?void 0:e.apiKey),n=(y=e==null?void 0:e.cookieName)!=null?y:ae(e==null?void 0:e.apiKey),c=`${Ae}${t}`,d=`${Ae}_tomb${t}`,i=((b=e==null?void 0:e.cookieTTLDays)!=null?b:rn)*24*60*60,l=R=>R&&R.length>0?R:null,u=()=>{var R,A;return t&&!(e!=null&&e.cookieName)&&$e(d)===null?(A=(R=l(ut(nn)))!=null?R:l($e(Ae)))!=null?A:l(gt(Ae)):null},s=(T=(F=(K=(E=(x=l(ut(n)))!=null?x:l($e(c)))!=null?E:l(gt(c)))!=null?K:u())!=null?F:l(e==null?void 0:e.ssrSessionId))!=null?T:on();sn(n,s,i);let r=pt(c,s),o=ln(n),f=r?!1:an(c,s),p=!r&&!o&&!f;return{getSessionId:()=>s,isEphemeral:()=>p,destroy:()=>{s=null,un(n),dn(c),cn(c),t&&!(e!=null&&e.cookieName)&&pt(d,"1")}}}function ee(e){return Math.min(6e4,1e3*2**Math.min(e,6))}function ce(e){if(e.ok===!0)return"delivered";let{status:t}=e;return typeof t!="number"?"retry":t>=200&&t<300?"delivered":t>=400&&t<500&&t!==429?"dropped":"retry"}function Re(e,t){try{let n=localStorage.getItem(e);if(!n)return[];let c=JSON.parse(n);return Array.isArray(c)?(localStorage.removeItem(e),c.slice(-t)):[]}catch(n){return[]}}function te(e,t,n){try{let c=(()=>{try{let a=localStorage.getItem(n);if(!a)return[];let i=JSON.parse(a);return Array.isArray(i)?i:[]}catch(a){return[]}})(),d=new Map;for(let a of c)d.set(a.id,a);for(let a of e)d.set(a.id,a);localStorage.setItem(n,JSON.stringify([...d.values()].slice(-t)))}catch(c){}}function Oe(e,t){try{let n=localStorage.getItem(t);if(!n)return;let c=JSON.parse(n);if(!Array.isArray(c))return;let d=new Set(e),a=c.filter(i=>!d.has(i.id));if(a.length===c.length)return;a.length===0?localStorage.removeItem(t):localStorage.setItem(t,JSON.stringify(a))}catch(n){}}var gn=500,fn=56*1024;function Ue(e){return`_snt_retry_${e.slice(0,12)}`}var mn={push:()=>{},flush:()=>{},destroy:()=>{}};function ft(e){var X,B,he;if(typeof window=="undefined")return mn;let t=(X=e.flushIntervalMs)!=null?X:5e3,n=(B=e.maxBatchSize)!=null?B:20,c=(he=e.maxRetrySize)!=null?he:100,d=e.ingestUrl,a=e.apiKey,i=Ue(a),l=[],u=new Set,s=[],r=S=>{for(let I of S)o.delete(I),!u.has(I)&&(u.add(I),s.push(I));for(;s.length>gn;){let I=s.shift();I&&u.delete(I)}Oe(S,i)},o=new Set,f=()=>{for(;l.length>c;){let S=l.shift();S&&o.delete(S.id)}},p=S=>{u.has(S.id)||o.has(S.id)||(o.add(S.id),l.push(S),f())},y=S=>{for(let I of S)u.has(I.id)||(o.add(I.id),l.push(I));f()},b=Re(i,c);for(let S of b)p(S);let x=0,E=0,K=(S,I=!0)=>{if(S.length===0)return;let Y=JSON.stringify(S),G=S.map(J=>J.id),U;try{U=fetch(d,{method:"POST",keepalive:!0,body:Y,headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`}})}catch(J){te(S,c,i),y(S),E++,x=Date.now()+ee(E);return}let q=J=>{if(ce(J)!=="retry"){if(!J.ok&&I){let se=S.filter(V=>V.eventType!=="pageview");if(se.length>0&&se.length<S.length){r(S.filter(V=>V.eventType==="pageview").map(V=>V.id)),K(se,!1);return}}r(G),E=0,x=0;return}te(S,c,i),y(S),E++,x=Date.now()+ee(E)};U instanceof Promise?U.then(q).catch(()=>{te(S,c,i),y(S),E++,x=Date.now()+ee(E)}):q(U)},F=typeof TextEncoder!="undefined"?new TextEncoder:null,T=S=>F?F.encode(S).length:S.length,R=S=>{let I=[],Y=2;for(let G of S){let U=T(JSON.stringify(G))+1;if(I.length>0&&Y+U>fn||I.length>=n)break;I.push(G),Y+=U}return I},A=()=>{try{if(Date.now()<x)return;for(;l.length>0&&!(Date.now()<x);){let S=l.filter(Y=>!u.has(Y.id));if(l.length=0,S.length===0)break;let I=R(S);if(I.length===0)break;I.length<S.length&&l.push(...S.slice(I.length)),K(I)}}catch(S){}},h=!0,O=null;O=setInterval(()=>{h&&A()},t);let j=()=>{document.visibilityState==="hidden"&&A()},W=()=>{A()};return document.addEventListener("visibilitychange",j),window.addEventListener("pagehide",W),{push(S){p(S),l.length>=n&&A()},flush:A,destroy(){h=!1,O!==null&&(clearInterval(O),O=null),document.removeEventListener("visibilitychange",j),window.removeEventListener("pagehide",W),A()}}}var yn=200;function Fe(e){return`_snt_goal_retry_${e.slice(0,12)}`}var hn={send:()=>{},flush:()=>{},destroy:()=>{}};function mt(e){var T,R,A;if(typeof window=="undefined")return hn;let t=(T=e.flushIntervalMs)!=null?T:5e3,n=(R=e.maxRetrySize)!=null?R:100,c=(A=e.maxPerFlush)!=null?A:5,d=Fe(e.apiKey),a=[],i=new Set,l=new Set,u=[],s=0,r=0,o=!1,f=h=>{for(i.delete(h.id),l.has(h.id)||(l.add(h.id),u.push(h.id));u.length>yn;){let O=u.shift();O&&l.delete(O)}Oe([h.id],d)},p=h=>{te([h],n,d),!l.has(h.id)&&!i.has(h.id)&&(i.add(h.id),a.push(h)),Date.now()>=s&&(r++,s=Date.now()+ee(r))},y=h=>{let O;try{O=fetch(e.url,{method:"POST",keepalive:!0,body:h.body,headers:e.headers})}catch(W){p(h);return}let j=W=>{var B;let X=ce(W);if(X==="retry"){p(h);return}X==="dropped"&&((B=e.onDrop)==null||B.call(e,h,W.status)),f(h),r=0,s=0};O instanceof Promise?O.then(j).catch(()=>p(h)):j(O)},b=()=>{try{if(o||Date.now()<s)return;let h=0;for(;a.length>0&&h<c&&!(Date.now()<s);){let O=a.shift();i.delete(O.id),!l.has(O.id)&&(h++,y(O))}}catch(h){}},x=Re(d,n);for(let h of x)i.has(h.id)||(i.add(h.id),a.push(h));x.length>0&&te(x,n,d);let E=setInterval(b,t),K=()=>{document.visibilityState==="hidden"&&b()},F=()=>b();return document.addEventListener("visibilitychange",K),window.addEventListener("pagehide",F),{send(h){if(!o&&!(l.has(h.id)||i.has(h.id))){if(Date.now()<s){te([h],n,d),i.add(h.id),a.push(h);return}y(h)}},flush:b,destroy(){clearInterval(E),document.removeEventListener("visibilitychange",K),window.removeEventListener("pagehide",F),b(),o=!0}}}var Sn=1800*1e3;function Pe(e,t){return`${encodeURIComponent(e)}:${encodeURIComponent(t)}`}function yt(e=Sn,t){let n=new Map,c=`_snt_asgn${re(t)}_`,d=(s,r)=>`${c}${encodeURIComponent(s)}:${encodeURIComponent(r)}`,a=s=>{let r=s.slice(c.length),o=r.indexOf(":");if(o<0)return null;try{return{componentId:decodeURIComponent(r.slice(0,o)),segment:decodeURIComponent(r.slice(o+1))}}catch(f){return null}},i=()=>{try{let s=[];for(let r=0;r<localStorage.length;r++){let o=localStorage.key(r);o!=null&&o.startsWith(c)&&s.push(o)}return s}catch(s){return[]}},l=s=>s.assignedAt+(s.ttlMs&&s.ttlMs>0?s.ttlMs:e)<Date.now();return typeof window!="undefined"&&(()=>{for(let s of i())try{let r=localStorage.getItem(s);if(!r)continue;let o=JSON.parse(r);if(l(o)){localStorage.removeItem(s);continue}let f=a(s);if(!f)continue;n.set(Pe(f.componentId,f.segment),o)}catch(r){}})(),{get(s,r){let o=n.get(Pe(s,r));return o?l(o)?(n.delete(Pe(s,r)),null):o:null},set(s,r,o){let f=Pe(s,r);n.set(f,o);try{localStorage.setItem(d(s,r),JSON.stringify(o))}catch(p){}},clear(){n.clear();for(let s of i())try{localStorage.removeItem(s)}catch(r){}}}}var ht=["GPTBot","ChatGPT-User","OAI-SearchBot","ClaudeBot","Claude-User","Claude-SearchBot","PerplexityBot","Perplexity-User","Google-Extended","Applebot-Extended","Meta-ExternalAgent","Bytespider","CCBot","Amazonbot","cohere-ai","Diffbot"];function Ne(e){return St(e)!==null}function St(e){var n;if(!e)return null;let t=e.toLowerCase();return(n=ht.find(c=>t.includes(c.toLowerCase())))!=null?n:null}function le(e){let t=e.toLowerCase();return/ipad|tablet|playbook|kindle|silk/.test(t)?"tablet":/mobi|iphone|ipod|android.*mobile|phone/.test(t)?"mobile":"desktop"}function de(e,t){if(!e)return"direct";try{let n=new URL(e);if(t)try{if(new URL(t).host===n.host)return"direct"}catch(d){}let c=n.hostname.toLowerCase();return/(^|\.)(google|bing|duckduckgo|yahoo)\./.test(c)?"search":/(^|\.)(twitter\.com|x\.com|facebook\.com|linkedin\.com|reddit\.com|t\.co)$/.test(c)?"social":"referral"}catch(n){return"direct"}}function ue(e){if(!e)return null;try{return new URL(e).hostname}catch(t){return null}}var bt=["gclid","gbraid","wbraid","fbclid","ttclid","msclkid","twclid","li_fat_id"];function je(e){let t={},n={};try{let c=typeof e=="string"||e instanceof URLSearchParams?new URLSearchParams(e):Object.entries(e).flatMap(([d,a])=>{let i=Array.isArray(a)?a[0]:a;return i===void 0?[]:[[d,i]]});for(let[d,a]of c)d.startsWith("utm_")?d in t||(t[d]=a):bt.includes(d)&&(d in n||(n[d]=a))}catch(c){}return{utmParams:t,clickIds:n}}function pe(e){let t=e.getHours();return t<6?"night":t<12?"morning":t<18?"afternoon":"evening"}function We(e){let t=bn("__segment__",e);return`${t.deviceClass}:${t.trafficSource}`}function bn(e,t){var a,i,l,u,s,r,o,f;let n=(i=(a=t==null?void 0:t.userAgent)==null?void 0:a.trim())!=null?i:"",c=(u=(l=t==null?void 0:t.referer)==null?void 0:l.trim())!=null?u:"",d=(s=t==null?void 0:t.now)!=null?s:new Date;return{sessionId:e,ephemeral:!1,utmParams:(r=t==null?void 0:t.utmParams)!=null?r:{},clickIds:(o=t==null?void 0:t.clickIds)!=null?o:{},deviceClass:n?le(n):"desktop",trafficSource:c?de(c,t==null?void 0:t.appOrigin):"direct",referrerDomain:ue(c),timeOfDay:pe(d),dayOfWeek:(f=["sun","mon","tue","wed","thu","fri","sat"][d.getDay()])!=null?f:"sun",automation:(t==null?void 0:t.webdriver)===!0||Ne(n)}}var ge=require("@sentientui/policy");function Ee(e){return v(v(v({id:e.id},e.arms?{arms:[...e.arms]}:{}),e.dims?{dims:Object.fromEntries(Object.entries(e.dims).map(([t,n])=>[t,[...n]]))}:{}),e.baseline!==void 0?{baseline:e.baseline}:{})}function fe(e){let t=Ee(e);return(0,ge.slotResultFor)(t,(0,ge.slotBaselineArm)(t))}function vt(e){let t={};for(let n of e)t[n.id]=fe(n);return t}function Le(e){return typeof e=="string"?e:(0,ge.canonicalArm)(e)}var oe="_snt_snap:",vn=["low","medium","high"];function me(e){try{let t=localStorage.getItem(oe+e);if(!t)return null;let n=JSON.parse(t);return!n||typeof n!="object"||n.v!==1||typeof n.persona!="string"||typeof n.band!="string"||!vn.includes(n.band)||typeof n.slots!="object"||n.slots===null||Array.isArray(n.slots)||!(n.layoutOrder===null||Array.isArray(n.layoutOrder))||typeof n.savedAt!="number"||!(n.slotConfig===void 0||typeof n.slotConfig=="object"&&n.slotConfig!==null&&!Array.isArray(n.slotConfig))?null:n}catch(t){return null}}function ye(e,t){try{localStorage.setItem(oe+e,JSON.stringify(t))}catch(n){}}function wt(e){return"(function(){try{var r=localStorage.getItem("+JSON.stringify(oe+e).replace(/</g,"\\u003c")+');if(!r)return;var s=JSON.parse(r);if(!s||s.v!==1||typeof s.persona!=="string"||typeof s.band!=="string")return;var d=document.documentElement;if(d.hasAttribute("data-sentient-persona"))return;d.setAttribute("data-sentient-persona",s.persona);d.setAttribute("data-sentient-confidence",s.band);}catch(e){}})();'}var He=require("@sentientui/policy");var Be=require("@sentientui/policy");var Et="[sentient] No API key configured \u2014 nothing is being learned. Set NEXT_PUBLIC_SENTIENT_API_KEY or pass localMode: true for local development.",wn="[sentient] Local mode \u2014 decisions are simulated on-device and nothing is sent over the network. Add an API key to learn from real traffic.",xt=!1,De=!1;function En(){var e;try{return(e=new URLSearchParams(window.location.search).get("sentient_persona"))!=null?e:void 0}catch(t){return}}function Ct(e){var s;let t=_e({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),n=(s=t.getSessionId())!=null?s:"local",c=En(),d=import("@sentientui/core/local").then(r=>{let o=r;return o.LOCAL_ENGINE_AVAILABLE?(xt||(xt=!0,console.info(wn)),o):(De||(De=!0,console.error(Et)),null)}).catch(()=>(De||(De=!0,console.error(Et)),null)),a=null,i={low:.15,medium:.5,high:.85},l=(()=>{var o;if(e.initialPersona)return v({},e.initialPersona);let r=me(e.apiKey||"local");return r?{persona:r.persona,confidence:(o=i[r.band])!=null?o:.15}:null})();function u(r){let o=document.documentElement;o.dataset.sentientPersona===void 0&&(o.dataset.sentientPersona=r.persona,o.dataset.sentientConfidence=(0,Be.confidenceBand)(r.confidence))}return{isLocal:!0,async decide(r){var p,y,b;let o=await d;if(!o)return null;let f=o.createLocalEngine({sessionId:n,forcedPersona:c}).decide(r);return a=H(v({},f),{layoutOrder:(y=(p=f.layoutOrder)!=null?p:a==null?void 0:a.layoutOrder)!=null?y:null,slots:v(v({},(b=a==null?void 0:a.slots)!=null?b:{}),f.slots)}),ye(e.apiKey||"local",{v:1,persona:a.persona,band:(0,Be.confidenceBand)(a.confidence),slots:a.slots,layoutOrder:a.layoutOrder,savedAt:Date.now()}),u(f),f},getSlotResult(r){var o,f,p;return(p=(f=a==null?void 0:a.slots[r])!=null?f:(o=e.initialSlots)==null?void 0:o[r])!=null?p:null},getSlotConfig(r){var o,f;return(f=(o=e.initialSlotConfig)==null?void 0:o[r])!=null?f:null},getSitePalette(){var r;return(r=e.initialPalette)!=null?r:null},reportSlots(){},getPersona(){let r=a!=null?a:l;return r?{persona:r.persona,confidence:r.confidence,band:(0,Be.confidenceBand)(r.confidence)}:null},async assign(r,o){var y;let f=await d;return!f||!o||o.length===0?o!=null&&o[0]?{variantId:o[0],assignmentTtlMs:0}:null:{variantId:(y=f.createLocalEngine({sessionId:n,forcedPersona:c}).decide({components:[{id:r,variantIds:o}]}).assignments[r])!=null?y:o[0],assignmentTtlMs:0}},track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>t.destroy()}}var xn=["none","sm","md","lg"],Cn=["start","center","end","stretch"],In=["start","center","end","between"],kn=["sm","md","lg"],Tn=["normal","medium","bold"],An=["default","muted","accent"],_n=["primary","secondary","ghost"],Rn=["left","center","right"],On=["auto","square","landscape","wide"],Pn=["cover","contain"],Nn=[2,3,4],Ln=[2,3,4],Dn=["input","textarea","select"],Bn=["text","email","number","tel"],Mn=5,Kn=8,Gn=64,$n=5,Un=12,Fn=4,jn=500;function It(e){if(e==null||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.type==="form"?!0:Array.isArray(t.children)?t.children.some(It):!1}function kt(e,t,n,c){let d=[];{let l=!1,u=[],s=()=>{if(l)return;let r=Date.now();for(u.push(r);u.length>0&&r-u[0]>500;)u.shift();u.length>=3&&(l=!0,e("rage_click"))};t.addEventListener("click",s),d.push(()=>t.removeEventListener("click",s))}{let a=!1,i=l=>{if(a||!(l.target instanceof Node)||!t.contains(l.target)&&t!==l.target)return;a=!0;let u=typeof window!="undefined"?window.getSelection():null,s=u?u.toString().length:0;e("text_copy",{selectionLength:s})};document.addEventListener("copy",i),d.push(()=>document.removeEventListener("copy",i))}{let a=!1,i=!1,l=null,u=()=>{l!==null&&(clearTimeout(l),l=null)},s=()=>{a||!i||(u(),l=setTimeout(()=>{!a&&i&&(a=!0,e("scroll_hesitation"))},3e3))},r=()=>{u(),s()},o=p=>{for(let y of p)i=y.intersectionRatio>.3,i?s():u()},f=new IntersectionObserver(o,{threshold:[.3]});f.observe(t),window.addEventListener("scroll",r,{passive:!0}),d.push(()=>{f.disconnect(),window.removeEventListener("scroll",r),u()})}if((c==null?void 0:c.tabLoss)!==!1){let a=!1,i=n!=null?n:Date.now(),l=()=>{if(a||document.visibilityState!=="hidden")return;let u=Date.now()-i;u<15e3&&(a=!0,e("tab_loss",{timeOnPage:u}))};document.addEventListener("visibilitychange",l),d.push(()=>document.removeEventListener("visibilitychange",l))}return()=>{for(let a of d)a()}}var Tt="https://api.sentient-ui.com/v1/events",M=new Map,At=null;function _t(e,t){let n=M.get(e);n&&n.upgrade&&(n.reinit=t)}function Wn(e){return"value"in e||"currency"in e||"externalId"in e||"metadata"in e||"weight"in e||"stepIndex"in e}var zn=3;function ze(){return Te()}function Me(){var e;if(typeof window!="undefined")return((e=window.location)==null?void 0:e.pathname)||void 0}function Hn(){let e=new WeakMap,t=new Map,n=!1,c=(l,u,s)=>{let r=l.get(u);return s===null?r?!0:(l.set(u,new Set),!1):r?r.has(s)?!0:(r.add(s),!1):(l.set(u,new Set([s])),!1)},d=typeof window!="undefined"&&"event"in window,a=()=>{if(!d)return;let l=window.event;return typeof Event=="function"&&l instanceof Event?l:void 0},i=()=>{if(d){Promise.resolve().then(()=>{n=!1,t.clear()});return}let l=!1,u=()=>{l||(l=!0,n=!1,t.clear())};if(setTimeout(u,0),typeof MessageChannel=="function"){let s=new MessageChannel;s.port1.onmessage=()=>{s.port1.close(),s.port2.close(),u()},s.port2.postMessage(0)}};return{firedBefore(l,u){let s=a();if(s){let o=e.get(s);return o||(o=new Map,e.set(s,o)),c(o,l,u)}let r=c(t,l,u);return!r&&!n&&(n=!0,i()),r}}}var Rt=new Set;function qn(e,t,n){let c=typeof window=="undefined"?null:window.history;if(!c)return()=>{};let d=!1,a,i=()=>{if(d)return;let s=Me();!s||s===a||(a=s,e.track({projectId:t,componentId:"__page__",eventType:"pageview",payload:{}}),n(`${t}:${s}`))},l=[];for(let s of["pushState","replaceState"]){let r=c[s],o=function(...f){let p=r.apply(this,f);return i(),p};c[s]=o,l.push([s,r,o])}window.addEventListener("popstate",i);let u=Me();return u&&Rt.has(`${t}:${u}`)?a=u:i(),()=>{if(!d){d=!0,window.removeEventListener("popstate",i);for(let[s,r,o]of l)c[s]===o&&(c[s]=r)}}}var xe={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,assign:()=>Promise.resolve(null),decide:()=>Promise.resolve(null),getSlotResult:()=>null,getSlotConfig:()=>null,getSitePalette:()=>null,reportSlots:()=>{},getPersona:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}};function Qn(){try{return je(window.location.search)}catch(e){return{utmParams:{},clickIds:{}}}}function Ot(e){return e.replace(/\/events\/?$/,"")}function Ce(){return typeof navigator!="undefined"&&navigator.globalPrivacyControl===!0?!0:[typeof navigator!="undefined"?navigator.doNotTrack:void 0,typeof window!="undefined"?window.doNotTrack:void 0,typeof navigator!="undefined"?navigator.msDoNotTrack:void 0].some(t=>t==="1"||t==="yes")}function Pt(e){var u;if(typeof window=="undefined")return;let t=e!=null?e:At;if(!t){console.warn("[sentient] grantConsent() called before init()");return}let n=M.get(t);if(!n){console.warn("[sentient] grantConsent() called before init()");return}let{config:c,upgrade:d,reinit:a}=n;if(!d){n.upgradeBlockedReason&&console.warn(n.upgradeBlockedReason);return}if(c.respectDoNotTrack!==!1&&Ce())return;let i=(a!=null?a:Qe)(H(v({},c),{consent:!0}));d(i);let l=(u=M.get(t))==null?void 0:u.dispose;M.set(t,{config:H(v({},c),{consent:!0}),upgrade:null,dispose:l})}function Xn(e){var s;let t=e.preConsentBehavior==="statistical_winner",n=Ot((s=e.ingestUrl)!=null?s:Tt),c={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},d=new Map,a=new Map,i={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),assign(r,o,f){if(!t)return Promise.resolve(null);let p=d.get(r);return p?Promise.resolve(p):qe(a,r,async()=>{try{let y=new URLSearchParams({componentId:r});for(let K of o!=null?o:[])y.append("variantIds[]",K);let b=await fetch(`${n}/winner?${y.toString()}`,{headers:c});if(!b.ok)return o!=null&&o[0]?{variantId:o[0],assignmentTtlMs:0}:null;let E={variantId:(await b.json()).variantId,assignmentTtlMs:0};return d.set(r,E),E}catch(y){return o!=null&&o[0]?{variantId:o[0],assignmentTtlMs:0}:null}})},decide:()=>Promise.resolve(null),getSlotResult:()=>null,getSlotConfig:()=>null,getSitePalette:()=>null,reportSlots:()=>{},getPersona:()=>null,getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}},l={track:r=>i.track(r),goal:((r,o,f,p)=>i.goal(r,o,f,p)),componentGoal:(r,o,f)=>i.componentGoal(r,o,f),identify:r=>i.identify(r),getAssignment:(r,o)=>i.getAssignment(r,o),assign:(r,o,f,p)=>i.assign(r,o,f,p),decide:r=>i.decide(r),getSlotResult:r=>i.getSlotResult(r),getSlotConfig:r=>i.getSlotConfig(r),getSitePalette:()=>i.getSitePalette(),reportSlots:r=>i.reportSlots(r),getPersona:()=>i.getPersona(),fetchWeights:()=>i.fetchWeights(),getGraph:()=>i.getGraph(),dispose:()=>i.dispose(),destroy:()=>i.destroy()};function u(r){i=r}return{proxy:l,setInner:u}}function qe(e,t,n){let c=e.get(t);if(c)return c;let d=(async()=>{try{return await n()}finally{e.delete(t)}})();return e.set(t,d),d}function Qe(e){var J,se,V,Ve,Ze,et,tt,nt,rt,ot;if(typeof window=="undefined")return xe;At=e.apiKey||"local";let t=M.get(e.apiKey||"local");if(t!=null&&t.dispose)try{t.dispose()}catch(g){}let n=e.respectDoNotTrack!==!1&&Ce(),c=e.consent===!1||n,d=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_");if(e.localMode===!0||!d&&e.localMode!==!1)return M.set(e.apiKey||"local",{config:e,upgrade:null,upgradeBlockedReason:"[sentient] grantConsent(): this client is keyless/local \u2014 there is no hosted client to upgrade to. Configure a pk_ API key to enable tracking."}),c?xe:Ct(e);if(c){if(!e.apiKey||!e.apiKey.startsWith("pk_"))return e.preConsentBehavior==="statistical_winner"&&console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),M.set(e.apiKey||"local",{config:e,upgrade:null,upgradeBlockedReason:"[sentient] grantConsent(): the client was initialized with an invalid apiKey (expected a pk_ public key) \u2014 consent cannot enable tracking."}),xe;let{proxy:g,setInner:m}=Xn(e);return M.set(e.apiKey,{config:e,upgrade:n?null:m}),g}if(!e.apiKey||!e.apiKey.startsWith("pk_"))return console.warn("[sentient] init() called with an invalid apiKey \u2014 expected a pk_ public key. SDK disabled."),xe;if(e.ingestUrl==="")return console.warn("[sentient] init() called with an empty ingestUrl. SDK disabled."),xe;let a=(J=e.ingestUrl)!=null?J:Tt,i=Date.now(),l=_e({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),u=yt(void 0,e.apiKey),s=ft({ingestUrl:a,apiKey:e.apiKey}),r=Ot(a),o={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},f=new Set,p=mt({url:`${r}/goals`,apiKey:e.apiKey,headers:o,onDrop:(g,m)=>{if(!e.debug){if(f.has(m))return;f.add(m)}console.warn(`[sentient] goal dropped (HTTP ${m}) \u2014 this will not be retried. `+(m===400?"The session was not found: call init() and let the session upsert complete before firing goals.":m===401||m===403?"Check the API key and that this origin is on the project allowlist.":"See the response status for the cause."),g)}}),y=le((se=navigator.userAgent)!=null?se:""),b=window.location.origin,x=de((V=document.referrer)!=null?V:"",b),E=(Ve=e.sessionSegment)!=null?Ve:`${y}:${x}`,K=new Map,F=new Map,T=new Map,R=new Map,A=null,h=null,O=new Set,j=new Set,W=null,X=g=>{for(let m of g)T.has(m.id)||T.set(m.id,fe(m))};if(e.initialSlots)for(let[g,m]of Object.entries(e.initialSlots))T.set(g,m);if(e.initialSlotConfig)for(let[g,m]of Object.entries(e.initialSlotConfig))R.set(g,m);e.initialPalette&&(A=e.initialPalette);let B=me(e.apiKey);if(B){for(let[g,m]of Object.entries(B.slots))T.has(g)||T.set(g,m);for(let[g,m]of Object.entries((Ze=B.slotConfig)!=null?Ze:{}))R.has(g)||R.set(g,m);!A&&B.palette&&(A=B.palette)}let he={low:.15,medium:.5,high:.85};if(e.initialPersona)h=v({},e.initialPersona);else{let g=document.documentElement.dataset;g.sentientPersona?h={persona:g.sentientPersona,confidence:(tt=he[(et=g.sentientConfidence)!=null?et:"low"])!=null?tt:.15}:B&&(h={persona:B.persona,confidence:(nt=he[B.band])!=null?nt:.15})}if(e.initialAssignments)for(let[g,m]of Object.entries(e.initialAssignments))u.set(g,E,{variantId:m,assignedAt:Date.now(),segment:E,confidence:1});let S=Promise.resolve(),I=l.getSessionId();if(I){let g=ue((rt=document.referrer)!=null?rt:""),{utmParams:m,clickIds:C}=Qn(),P=v(v(v(v({sessionId:I,deviceClass:y,trafficSource:x,referrerDomain:g,utmParams:m,clickIds:C,timeOfDay:pe(new Date),dayOfWeek:["sun","mon","tue","wed","thu","fri","sat"][new Date().getDay()],ephemeral:l.isEphemeral(),automation:typeof navigator!="undefined"&&navigator.webdriver===!0||Ne((ot=navigator.userAgent)!=null?ot:"")},e.userId?{userId:e.userId}:{}),e.persona?{persona:e.persona}:{}),e.country?{country:e.country}:{}),e.sdk?{sdk:e.sdk.name,sdkVersion:e.sdk.version}:{}),L=async()=>{for(let w=0;;w++){try{let _=await fetch(`${r}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify(P),headers:o});if(_.status===402){console.warn("[SentientUI] Session limit exceeded for this project. The bandit will stop learning until the limit resets. Upgrade at sentient-ui.com/pricing");return}if(_.ok||ce(_)==="dropped")return}catch(_){}if(w>=zn){console.warn("[SentientUI] Could not register the session after retries. Conversions in this visit may not be recorded.");return}await new Promise(_=>setTimeout(_,ee(w+1)))}};try{S=L()}catch(w){}}e.debug&&(console.log("[sentient] initialized",{context:e.context}),window.__sentient={client:null,queue:s});let Y=Hn(),G=null,U=!1,q={goal(g,m={},C=1,P=0){var Se,be,ie,k,Q,ke,N;let L=l.getSessionId();if(!L)return;let w=Wn(m)?m:{metadata:m},_=[g,(Se=w.externalId)!=null?Se:"",(be=w.stepIndex)!=null?be:P,(ie=w.weight)!=null?ie:C].join("\0"),$=w.value!==void 0?`${w.value}\0${(k=w.currency)!=null?k:""}`:null;if(Y.firedBefore(_,$)){e.debug&&console.log(`[sentient] goal("${g}") already recorded for this action \u2014 not sent twice`);return}let D=ze(),Z={sessionId:L,name:g,metadata:(Q=w.metadata)!=null?Q:{},weight:(ke=w.weight)!=null?ke:C,stepIndex:(N=w.stepIndex)!=null?N:P,goalId:D,value:w.value,currency:w.currency,externalId:w.externalId};e.debug&&console.log("[sentient] goal",Z);let ne={id:D,body:JSON.stringify(Z)};S.then(()=>p.send(ne))},componentGoal(g,m,C){var D,Z,ne;let P=l.getSessionId();if(!P)return;let L=u.get(g,E),w=L?null:(D=T.get(g))!=null?D:null;if(!L&&w===null){e.debug&&console.warn(`[sentient] componentGoal("${g}"): no assignment or slot decision yet \u2014 render its <Adaptive>/adaptive hook or call assign()/decide() before recording a goal.`);return}let _=L?L.variantId:Le(w),$={id:ze(),sessionId:P,projectId:e.apiKey,componentId:g,variantId:_,eventType:"goal_achieved",goalType:m,payload:v({reward:(Z=C==null?void 0:C.reward)!=null?Z:1,goalValue:C==null?void 0:C.value,currency:C==null?void 0:C.currency},(ne=C==null?void 0:C.metadata)!=null?ne:{}),timestamp:Date.now(),timeInSession:Date.now()-i,path:Me()};e.debug&&console.log("[sentient] componentGoal",$),S.then(()=>s.push($))},identify(g){let m=l.getSessionId();m&&S.then(()=>{fetch(`${r}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify({sessionId:m,userId:g,ephemeral:l.isEphemeral()}),headers:o}).catch(()=>{})})},track(g){let m=l.getSessionId();if(!m)return;let C=H(v({path:Me()},g),{id:ze(),sessionId:m,timestamp:Date.now(),timeInSession:Date.now()-i});e.debug&&console.log("[sentient] track",C),S.then(()=>s.push(C))},getAssignment(g,m){return u.get(g,m)},async assign(g,m,C,P){let L=l.getSessionId();if(!L)return null;let w=u.get(g,E);if(w&&(m!=null&&m.length||w.content!==void 0)){let _=w.ttlMs&&w.ttlMs>0?Math.max(0,w.assignedAt+w.ttlMs-Date.now()):0;return{variantId:w.variantId,assignmentTtlMs:_,content:w.content}}return qe(K,g,async()=>{await S;try{let _={sessionId:L,componentId:g,variantIds:m};P!==void 0?_.agentDataByVariant=P:C!==void 0&&(_.agentData=C);let $=await fetch(`${r}/assign`,{method:"POST",body:JSON.stringify(_),headers:o});if(!$.ok)return null;let D=await $.json();return u.set(g,E,v({variantId:D.variantId,assignedAt:Date.now(),segment:E,confidence:1,content:D.content},D.assignmentTtlMs&&D.assignmentTtlMs>0?{ttlMs:D.assignmentTtlMs}:{})),D}catch(_){return null}})},async decide(g){var w,_;let m=l.getSessionId();if(!m)return null;let C=(w=g.slots)!=null?w:[],P={sessionId:m};g.sections&&g.sections.length>0&&(P.sections=g.sections.map($=>({id:$}))),P.components=(_=g.components)!=null?_:[],C.length>0&&(P.slots=C.map(Ee)),g.slotsFrom==="registry"&&(P.slotsFrom="registry"),g.v&&(P.v=g.v),typeof g.pp=="number"&&(P.pp=g.pp),e.persona&&(P.persona=e.persona);let L=JSON.stringify(P);return qe(F,L,async()=>{var $,D,Z,ne,Se,be;await S;try{let ie=await fetch(`${r}/decide`,{method:"POST",body:L,headers:o});if(!ie.ok)return X(C),null;let k=await ie.json(),Q={};for(let N of C){let z=($=k.slots)==null?void 0:$[N.id];if(z!==void 0){Q[N.id]=z,T.set(N.id,z);continue}let st=T.get(N.id);if(st!==void 0)Q[N.id]=st;else{let it=fe(N);Q[N.id]=it,T.set(N.id,it)}}if(k.slots)for(let[N,z]of Object.entries(k.slots))N in Q||(Q[N]=z,T.set(N,z));let ke=h!=null&&h.persona!=="unknown";k.persona&&!(k.persona==="unknown"&&ke)?h={persona:k.persona,confidence:(D=k.confidence)!=null?D:0}:h||(h={persona:"unknown",confidence:0});for(let[N,z]of Object.entries((Z=k.assignments)!=null?Z:{}))u.set(N,E,{variantId:z,assignedAt:Date.now(),segment:E,confidence:1});if(k.slotConfig)for(let[N,z]of Object.entries(k.slotConfig))R.set(N,z);return k.palette&&(A=k.palette),ye(e.apiKey,v(v({v:1,persona:h.persona,band:(0,He.confidenceBand)(h.confidence),slots:Object.fromEntries(T),layoutOrder:(ne=k.layoutOrder)!=null?ne:null,savedAt:Date.now()},R.size>0?{slotConfig:Object.fromEntries(R)}:{}),A?{palette:A}:{})),v(v(v(v({layoutOrder:(Se=k.layoutOrder)!=null?Se:null,assignments:(be=k.assignments)!=null?be:{},slots:Q,persona:h.persona,confidence:h.confidence},k.slotConfig?{slotConfig:k.slotConfig}:{}),k.goals?{goals:k.goals}:{}),k.sectionMap?{sectionMap:k.sectionMap}:{}),k.palette?{palette:k.palette}:{})}catch(ie){return X(C),null}})},getSlotResult(g){var m;return(m=T.get(g))!=null?m:null},getSlotConfig(g){var m;return(m=R.get(g))!=null?m:null},reportSlots(g){for(let m of g)typeof m=="string"&&m.length>0&&!O.has(m)&&(O.add(m),j.add(m));j.size===0||W!=null||(W=setTimeout(()=>{W=null;let m=[...j].slice(0,20);j.clear(),m.length!==0&&fetch(`${r}/slots/observed`,{method:"POST",headers:o,body:JSON.stringify({slotIds:m})}).catch(()=>{})},1e3))},getSitePalette(){return A},getPersona(){return h?{persona:h.persona,confidence:h.confidence,band:(0,He.confidenceBand)(h.confidence)}:null},async fetchWeights(){var g;try{let m=await fetch(`${r}/weights`,{headers:o});return m.ok?(g=(await m.json()).components)!=null?g:[]:[]}catch(m){return[]}},getGraph(){return{pageNodes:[],capturedAt:0}},dispose(){var g;G==null||G(),U=!0,s.destroy(),p.destroy(),((g=M.get(e.apiKey))==null?void 0:g.dispose)===q.dispose&&M.delete(e.apiKey),e.debug&&console.log("[sentient] disposed")},destroy(){var g;G==null||G(),U=!0,s.destroy(),p.destroy(),l.destroy(),u.clear(),((g=M.get(e.apiKey))==null?void 0:g.dispose)===q.dispose&&M.delete(e.apiKey);try{localStorage.removeItem(oe+e.apiKey),localStorage.removeItem(Ue(e.apiKey)),localStorage.removeItem(Fe(e.apiKey))}catch(m){}e.debug&&console.log("[sentient] destroyed")}};if(M.set(e.apiKey,{config:e,upgrade:null,dispose:q.dispose}),G=qn(q,e.apiKey,g=>{S.then(()=>{U||Rt.add(g)})}),e.debug){let g=window;g.__sentient&&(g.__sentient.client=q)}return q}var Nt="_snt_graph_edges",Yn={pricing:["features","faq"],features:["pricing"],faq:["pricing"],social_proof:["cta"],cta:["social_proof","hero","trust"],hero:["cta"],comparison:["pricing"],trust:["cta"]};function Jn(e){var t;return(t=Yn[e])!=null?t:[]}function Vn(e,t){try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch(n){return t}}function Zn(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(n){}}var er=new Set(["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"]);function tr(e){return er.has(e)?e:"generic"}function Xe(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch(t){return"/"}}function nr(e,t,n){let c=`${e}:${t}:${n.join(",")}`,d=5381;for(let a=0;a<c.length;a++)d=(d<<5)+d+c.charCodeAt(a)&4294967295;return(d>>>0).toString(16).padStart(8,"0")}function Lt(e){let t=new Map,n=new Map,c=`_snt_graph_nodes${re(e==null?void 0:e.apiKey)}`,d=()=>{typeof window!="undefined"&&Zn(c,[...t.values()])};if(typeof window!="undefined"){let a=Vn(c,[]);for(let i of a)t.set(i.componentId,i);try{localStorage.removeItem(Nt)}catch(i){}}return{addPageNode(a){t.set(a.componentId,a),d()},addStructuralEdge(a){let i=`${a.fromComponentId}->${a.toComponentId}`;n.set(i,a)},syncOnce(){var i,l;if(!(e!=null&&e.syncUrl)||typeof window=="undefined")return;let a=[...t.values()];if(a.length!==0)try{let u=new Map;for(let p of a){let y=(i=u.get(p.semanticType))!=null?i:[];y.push(p),u.set(p.semanticType,y)}let s=[],r=new Set;for(let p of a)for(let y of Jn(p.semanticType)){let b=(l=u.get(y))!=null?l:[];for(let x of b){if(x.componentId===p.componentId)continue;let E=`semantic:${p.componentId}->${x.componentId}`;r.has(E)||(r.add(E),s.push({fromComponentId:p.componentId,toComponentId:x.componentId,type:"semantic",weight:.4,confidence:.9}))}}let o=new Set(a.map(p=>p.componentId));for(let p of n.values()){if(!o.has(p.fromComponentId)||!o.has(p.toComponentId))continue;let y=`structural:${p.fromComponentId}->${p.toComponentId}`;r.has(y)||(r.add(y),s.push({fromComponentId:p.fromComponentId,toComponentId:p.toComponentId,type:"structural",weight:p.weight,confidence:1}))}let f=H(v(v({pageUrl:Xe(window.location.href)},e.sessionId?{sessionId:e.sessionId}:{}),e.projectId?{projectId:e.projectId}:{}),{nodes:a.map(p=>{let y=tr(p.semanticType);return{componentId:p.componentId,semanticType:y,answers:p.answers,contentHash:nr(p.componentId,y,p.answers),prominenceScore:p.prominenceScore,depthInPage:p.depth}}),edges:s});fetch(e.syncUrl,{method:"POST",keepalive:!0,headers:v({"Content-Type":"application/json"},e.apiKey?{Authorization:`Bearer ${e.apiKey}`}:{}),body:JSON.stringify(f)}).catch(()=>{})}catch(u){}},snapshot(){return{pageNodes:[...t.values()],capturedAt:Date.now()}},destroy(){if(typeof window!="undefined")try{localStorage.removeItem(c),localStorage.removeItem(Nt)}catch(a){}}}}var rr=["data-sentient-id","data-testid","data-test","data-id","data-name","data-cy"];function Ye(e){var t;return((t=e.textContent)!=null?t:"").replace(/\s+/g," ").trim()}function or(e){return{tag:e.tagName.toLowerCase(),text:Ye(e).slice(0,40)}}function Dt(e){return e.replace(/["\\\]]/g,"\\$&")}function Ie(e,t){try{return e.querySelectorAll(t).length===1}catch(n){return!1}}function Bt(e,t){var i;let n=e.tagName.toLowerCase();if(!n)return null;let c=((i=e.getAttribute("class"))!=null?i:"").split(/\s+/).filter(l=>/^[a-zA-Z][\w-]*$/.test(l)),d=[n,...c.map(l=>`${n}.${l}`)];for(let l of d)if(Ie(t,l))return l;let a=e.parentElement;if(a&&a!==t){let l=Bt(a,t);if(l){for(let o of d){let f=`${l} > ${o}`;if(Ie(t,f))return f}let u=Array.from(a.children).filter(o=>o.tagName.toLowerCase()===n),s=u.indexOf(e),r=u.some(o=>o!==e&&Ye(o)!==Ye(e));if(s>=0&&r){let o=`${l} > ${n}:nth-of-type(${s+1})`;if(Ie(t,o))return o}}}return null}function Ke(e,t){let n=or(e),c=e.getAttribute("id");if(c&&Ie(t,`#${Dt(c)}`))return{v:1,id:c,fingerprint:n};for(let a of rr){let i=e.getAttribute(a);if(i&&Ie(t,`[${a}="${Dt(i)}"]`))return{v:1,dataAttr:{name:a,value:i},fingerprint:n}}let d=Bt(e,t);return d?{v:1,selector:d,fingerprint:n}:null}var Kt=["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"],sr={banner:"hero",navigation:"navigation",contentinfo:"footer"};function ir(e){let t=e.ariaRole?sr[e.ariaRole.toLowerCase()]:void 0;if(t)return t;if(e.tag==="nav")return"navigation";if(e.tag==="footer")return"footer";if(e.tag==="header")return e.actionCount>=5?"navigation":"hero";let n=`${e.idClass} ${e.headingText}`.toLowerCase();return/\b(navbar|nav-bar|navigation|site-nav|main-nav|topbar|footer)\b/.test(n)?/footer/.test(n)?"footer":"navigation":/\b(hero|masthead|jumbotron)\b/i.test(e.idClass)?"hero":null}function ar(e){return e.actionCount>=1&&e.textLength>0&&e.textLength<200?"cta":"generic"}var cr=[["pricing",/\b(pricing|price list|per month|\/mo|subscriptions?)\b|\bplans?\b(?=[^.]{0,40}(from|start|month|year|[$€£]))/i],["faq",/\bfaq\b|frequently asked|common questions?/i],["comparison",/\b(compare|comparison|versus)\b|\bvs\./i],["social_proof",/\b(reviews?|ratings?|testimonial|brands?|galler(y|ies)|logos)\b|trusted by|loved by|case stud|what our customers say/i],["trust",/\b(insurance|warrant(y|ies)|guarantees?|certifi|accredit|security|privacy|compliance|gdpr|encrypt)\b|why choose|about us|our team/i],["cta",/\b(book|booking|reserve|appointments?|newsletter|subscribe)\b|contact us|get in touch|opening hours/i],["features",/\b(features?|benefits?|capabilit|services?|repairs?|menus?|products?)\b|how it works|our process|what we (do|offer)|what you get/i]],lr=[["pricing",/(?:[$€£]\s?\d[\d,.]*\s*(?:\/|per\s)\s*(?:mo|month|yr|year|seat|user))|(?:\b(?:starter|basic|pro|growth|premium|enterprise)\b[^.]{0,60}[$€£]\s?\d)/i],["social_proof",/(?:★{2,})|(?:\b\d(?:\.\d)?\s*(?:out of|\/)\s*5\b)|(?:\brated\b)|(?:["“][^"”]{20,160}["”]\s*[—–-]\s*[A-Z][a-z]+)/],["trust",/\b(?:money[- ]back guarantee|free returns?|returns? within|refund(?:s)? within|encrypted|soc ?2|iso ?27001|gdpr[- ]compliant|cancel anytime)\b/i],["comparison",/\b(?:vs|versus)\b\.?[^.!?]{0,80}\b(?:compare|comparison|plans?|features?|alternative)\b|\bhow (?:we|it) compares?\b/i]],Mt={navigation:"navigation",footer:"navigation",hero:"hero",cta:"cta",generic:"generic"};function dr(e){var n;let t=e.querySelector("h1, h2, h3");return((n=t==null?void 0:t.textContent)!=null?n:"").slice(0,160)}function ur(e){var d,a;let t=ir(e);if(t)return{type:(d=Mt[t])!=null?d:"generic",strength:"strong"};let n=`${e.idClass} ${e.headingText}`.toLowerCase();for(let[i,l]of cr)if(l.test(n))return{type:i,strength:"strong"};for(let[i,l]of lr)if(l.test(e.bodyText))return{type:i,strength:"strong"};let c=ar(e);return{type:(a=Mt[c])!=null?a:"generic",strength:"weak"}}function pr(e){var c,d;let t=((c=e.textContent)!=null?c:"").replace(/\s+/g," ").trim(),n=e.getAttribute("role");return v({tag:e.tagName.toLowerCase(),idClass:`${e.id} ${String((d=e.className)!=null?d:"")}`,headingText:dr(e),bodyText:t.slice(0,2e3),actionCount:e.querySelectorAll('a, button, [role="button"]').length,textLength:t.length},n?{ariaRole:n}:{})}function Gt(e){return ur(pr(e)).type}var gr=new Set(["SECTION","ARTICLE","MAIN","DIV","ASIDE"]),fr="h1, h2, h3",mr="[data-sentient-id], section[aria-label], article[aria-label], main[aria-label], aside[aria-label]",$t=30,yr=1500,hr={scan:async()=>({nodes:[],edges:[],scannedAt:0}),observe:()=>{},getProminenceScore:()=>0,destroy:()=>{}};function Ut(e,t,n){return n<=t?0:Math.max(0,Math.min(1,(e-t)/(n-t)))}function Sr(e){var t,n,c;try{let d=e;for(let a of Object.keys(d)){if(!a.startsWith("__reactFiber")&&!a.startsWith("__reactInternalInstance"))continue;let i=d[a],l=(c=(t=i==null?void 0:i.type)==null?void 0:t.displayName)!=null?c:(n=i==null?void 0:i.type)==null?void 0:n.name;if(l&&l.length>1)return l}}catch(d){}}function br(e){let t={};for(let n of Array.from(e.attributes))n.name.startsWith("data-")&&(t[n.name]=n.value);return t}var Ft=new Set(Kt);function vr(e){let t=e.getAttribute("data-sentient-type");if(t&&Ft.has(t))return t;let n=e.getAttribute("role");return n&&Ft.has(n)?n:Gt(e)}function wr(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)&4294967295;return(t>>>0).toString(16).padStart(8,"0")}function Er(e){let t=[],n=e;for(;n;){let c=n.parentElement;if(!c){t.push(n.tagName.toLowerCase());break}let d=Array.prototype.indexOf.call(c.children,n);t.push(`${n.tagName.toLowerCase()}[${d}]`),n=c}return t.reverse().join("/")}function xr(e){var n;let t=(n=e.getAttribute("data-sentient-id"))!=null?n:e.getAttribute("id");return t||`${e.tagName.toLowerCase()}-${wr(Er(e))}`}function Cr(e){let t=0,n=e.parentElement;for(;n;)t++,n=n.parentElement;return t}function Je(e,t){var c,d,a,i;let n=e.querySelector(fr);return{componentId:xr(e),semanticType:vr(e),ariaLabel:(c=e.getAttribute("aria-label"))!=null?c:void 0,headingText:(a=(d=n==null?void 0:n.textContent)==null?void 0:d.trim())!=null?a:void 0,isAboveFold:e.getBoundingClientRect().top<window.innerHeight,prominenceScore:t(e),depth:Cr(e),reactComponentName:Sr(e),dataAttributes:br(e),locator:(i=Ke(e,e.ownerDocument))!=null?i:void 0}}function jt(e){var a;let t=[],n=new Set,c="__root__",d=new Map;for(let[i,l]of e){let u=i.parentElement,s=c;for(;u;){if(e.has(u)){s=e.get(u);let o=e.get(i),f=`${s}->${o}`;!n.has(f)&&s!==o&&(n.add(f),t.push({fromComponentId:s,toComponentId:o,weight:.6}));break}u=u.parentElement}let r=(a=d.get(s))!=null?a:[];r.push(i),d.set(s,r)}for(let i of d.values()){if(i.length<2)continue;let l=i.length>$t?i.slice(0,$t):i;for(let u=0;u<l.length;u++)for(let s=u+1;s<l.length;s++){if(t.length>=yr)return t;let r=e.get(l[u]),o=e.get(l[s]);if(r===o)continue;let f=`${r}->${o}::sib`,p=`${o}->${r}::sib`;n.has(f)||(n.add(f),t.push({fromComponentId:r,toComponentId:o,weight:.3})),n.has(p)||(n.add(p),t.push({fromComponentId:o,toComponentId:r,weight:.3}))}}return t}function Ir(e){let t=[],n=new Set,c=new Map;return document.querySelectorAll("[data-sentient-id]").forEach(i=>{if(i instanceof Element&&!n.has(i)){n.add(i);let l=Je(i,e);t.push(l),c.set(i,l.componentId)}}),document.querySelectorAll("section, article, main, aside").forEach(i=>{if(!(i instanceof Element)||n.has(i))return;let l=i.hasAttribute("aria-label"),u=i.hasAttribute("data-sentient-id");if(!l&&!u)return;n.add(i);let s=Je(i,e);t.push(s),c.set(i,s.componentId)}),{nodes:t,edges:jt(c),elementToId:c}}function Wt(){if(typeof window=="undefined")return hr;let e=null,t=0,n=null,c=new Map,d=u=>{try{let s=window.getComputedStyle(u),r=parseFloat(s.fontSize)||12,o=parseFloat(s.zIndex)||0,f=u.getBoundingClientRect(),p=Math.max(f.top,0),y=window.innerHeight||1,b=1/(p/y+1),x=Ut(r,12,48)*.4+b*.4+Ut(o,0,100)*.2;return Math.max(0,Math.min(1,x))}catch(s){return .5}};return{scan:()=>new Promise(u=>{let s=()=>{let{nodes:r,edges:o,elementToId:f}=Ir(d);c.clear();for(let[p,y]of f)c.set(p,y);u({nodes:r,edges:o,scannedAt:Date.now()})};try{typeof requestIdleCallback=="function"?t=requestIdleCallback(s,{timeout:100}):s()}catch(r){s()}}),observe:u=>{n=u;try{e=new MutationObserver(s=>{let r=[],o=new Set;for(let p of s)p.type==="childList"&&p.addedNodes.forEach(y=>{if(!(y instanceof Element))return;let b=[];gr.has(y.tagName)&&(y.hasAttribute("data-sentient-id")||y.hasAttribute("aria-label"))&&b.push(y);try{y.querySelectorAll(mr).forEach(x=>b.push(x))}catch(x){}for(let x of b){if(c.has(x))continue;let E=Je(x,d);r.push(E),o.add(E.componentId),c.set(x,E.componentId)}});if(r.length===0||!n)return;for(let p of[...c.keys()])p.isConnected||c.delete(p);let f=jt(c).filter(p=>o.has(p.fromComponentId)||o.has(p.toComponentId));n({nodes:r,edges:f,addedAt:Date.now()})}),e.observe(document.body,{childList:!0,subtree:!0})}catch(s){}},getProminenceScore:d,destroy:()=>{if(e&&(e.disconnect(),e=null),t&&typeof cancelIdleCallback=="function")try{cancelIdleCallback(t)}catch(u){}t=0,n=null,c.clear()}}}var kr="https://api.sentient-ui.com/v1/events";function Tr(e){var n;let t=c=>{try{let d=document.cookie.match(new RegExp(`(?:^|; )${c}=([^;]*)`));return d?decodeURIComponent(d[1]):void 0}catch(d){return}};return(n=e?t(ae(e)):void 0)!=null?n:t(we)}var Ge=new Map;function zt(e){var p;let t=Qe(e),n=e.respectDoNotTrack!==!1&&Ce(),c=e.consent===!1||n,d=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_"),a=e.localMode===!0||!d;if(!e.graph||a||typeof window=="undefined")return t;if(c)return n||_t(e.apiKey,y=>zt(y)),t;let i=Ge.get(e.apiKey);if(i)try{i()}catch(y){}let l=Wt(),u=(p=e.ingestUrl)!=null?p:kr,s=Lt({syncUrl:u.replace(/\/events\/?$/,"/graph/sync"),apiKey:e.apiKey,projectId:e.apiKey,sessionId:Tr(e.apiKey)});l.scan().then(y=>{for(let b of y.nodes)s.addPageNode({id:b.componentId,componentId:b.componentId,semanticType:b.semanticType,answers:e.captureDomText&&b.headingText?[b.headingText]:[],prominenceScore:b.prominenceScore,depth:b.depth});for(let b of y.edges)s.addStructuralEdge(b);s.syncOnce()});let r=null,o=()=>{r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null,s.syncOnce()},500)};l.observe(y=>{for(let b of y.nodes)s.addPageNode({id:b.componentId,componentId:b.componentId,semanticType:b.semanticType,answers:e.captureDomText&&b.headingText?[b.headingText]:[],prominenceScore:b.prominenceScore,depth:b.depth});for(let b of y.edges)s.addStructuralEdge(b);o()});let f=()=>{r!==null&&(clearTimeout(r),r=null),l.destroy(),s.destroy(),Ge.get(e.apiKey)===f&&Ge.delete(e.apiKey)};return Ge.set(e.apiKey,f),H(v({},t),{getGraph:()=>s.snapshot(),dispose:()=>{f(),t.dispose()},destroy:()=>{f(),t.destroy()}})}0&&(module.exports={BLOCK_ALIGNS,BLOCK_EMPHASES,BLOCK_FITS,BLOCK_GAPS,BLOCK_GRID_COLUMNS,BLOCK_HEADING_LEVELS,BLOCK_JUSTIFIES,BLOCK_RATIOS,BLOCK_SIZES,BLOCK_TEXT_ALIGNS,BLOCK_TONES,BLOCK_WEIGHTS,FORM_FIELD_KINDS,FORM_INPUT_TYPES,LEGACY_SESSION_COOKIE_NAME,MAX_BLOCK_ARMS,MAX_BLOCK_CHILDREN,MAX_BLOCK_DEPTH,MAX_BLOCK_NODES,MAX_BLOCK_TEXT_LEN,MAX_FORM_FIELDS,MAX_FORM_SELECT_OPTIONS,SNAPSHOT_STORAGE_KEY_PREFIX,armOfResult,attachMicroSignalDetectors,baselineResultFor,baselineSlots,containsFormBlock,deriveSessionSegment,detectDeviceClass,detectTimeOfDay,detectTrafficSource,grantConsent,init,isDoNotTrackEnabled,locatorFromElement,readSnapshot,referrerDomainFromReferer,renderPrePaintScript,sanitizePageUrl,sessionCookieName,toWireSlot,writeSnapshot});
|
|
2
2
|
//# sourceMappingURL=index-graph.js.map
|