@sentientui/snippet 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -2
- package/dist/install.cjs +32 -0
- package/dist/install.d.cts +68 -0
- package/dist/install.d.ts +68 -0
- package/dist/install.js +9 -0
- package/dist/snippet.global.js +2 -2
- package/package.json +15 -1
package/README.md
CHANGED
|
@@ -29,6 +29,10 @@ page is left exactly as it was.
|
|
|
29
29
|
},
|
|
30
30
|
};
|
|
31
31
|
</script>
|
|
32
|
+
<!-- Optional but recommended: the pre-paint tag. Copy the real thing from your
|
|
33
|
+
dashboard's Install page — it is one ~2.6 KB inline script, byte-identical
|
|
34
|
+
for every site, so it is not reproduced here. -->
|
|
35
|
+
<script>/* SentientUI pre-paint */</script>
|
|
32
36
|
<script
|
|
33
37
|
src="https://unpkg.com/@sentientui/snippet/dist/snippet.global.js"
|
|
34
38
|
defer
|
|
@@ -36,6 +40,21 @@ page is left exactly as it was.
|
|
|
36
40
|
></script>
|
|
37
41
|
```
|
|
38
42
|
|
|
43
|
+
**The pre-paint tag.** The loader above is `defer`, so it runs after your page has parsed —
|
|
44
|
+
and on a return visit the browser may already have painted your original section order and
|
|
45
|
+
baseline styles before it does. The middle tag closes that gap: a tiny synchronous inline
|
|
46
|
+
script that applies the last served decision *before* the page paints. It reads only the
|
|
47
|
+
snapshot already stored on that visitor's own device, makes no network request, hides nothing
|
|
48
|
+
(there is no cloak here, by design), and does nothing at all on a first visit or for a
|
|
49
|
+
Do-Not-Track / Global Privacy Control / consent-gated visitor. Anything it gets wrong — a
|
|
50
|
+
selector that resolved differently mid-parse, say — the loader reverts within the same page
|
|
51
|
+
load. Skip it and everything still works; your returning visitors just see the change land a
|
|
52
|
+
beat later. Generating it yourself:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
import { renderSnippetPrePaintScript } from '@sentientui/snippet/install';
|
|
56
|
+
```
|
|
57
|
+
|
|
39
58
|
The URL above carries no version: unpkg resolves it to the latest release, so your site picks
|
|
40
59
|
up new snippet versions on its own and this tag is pasted once. That is the recommended setup,
|
|
41
60
|
and what the Shopify app embed and the dashboard's install page both hand out.
|
|
@@ -68,11 +87,12 @@ role label — never a user id or email.
|
|
|
68
87
|
your theme renders them (the first learned baseline). Each selector must match exactly one
|
|
69
88
|
element and all of them must share one parent; anything else — a missing section, an ambiguous
|
|
70
89
|
selector, a served order that isn't a permutation of your list — applies nothing. Return visits
|
|
71
|
-
|
|
90
|
+
apply the last served order from a local snapshot; with the pre-paint tag installed that
|
|
91
|
+
happens before the browser paints, so there is no natural-order flash at all.
|
|
72
92
|
|
|
73
93
|
The snippet also captures per-section attention (visible time + scroll depth) and behavioral
|
|
74
94
|
signals by default — that's what builds audience profiles with zero tagging. Add
|
|
75
95
|
`sectionCapture: false` to `window.sentient` to turn it off; it never runs for a Do-Not-Track,
|
|
76
96
|
Global Privacy Control, or consent-gated visitor.
|
|
77
97
|
|
|
78
|
-
Bundle ≤
|
|
98
|
+
Bundle ≤ 23 KiB gzip, pre-paint tag ≤ 3 KiB raw (both CI-enforced). MIT.
|
package/dist/install.cjs
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/install.ts
|
|
21
|
+
var install_exports = {};
|
|
22
|
+
__export(install_exports, {
|
|
23
|
+
SNIPPET_PREPAINT_VERSION: () => SNIPPET_PREPAINT_VERSION,
|
|
24
|
+
renderSnippetPrePaintScript: () => renderSnippetPrePaintScript
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(install_exports);
|
|
27
|
+
|
|
28
|
+
// src/prepaint-script.ts
|
|
29
|
+
var SNIPPET_PREPAINT_VERSION = 1;
|
|
30
|
+
function renderSnippetPrePaintScript() {
|
|
31
|
+
return `(function(){try{var W=window,D=document,N=navigator,L=W.location,c=W.sentient,n=Date.now();if(!c||typeof c.apiKey!="string"||c.consent===!1||W.__sntPP)return;if(N.doNotTrack=="1"||N.globalPrivacyControl||N.webdriver)return;if(/[?&]sentient_(editor|preview|persona)=/.test(L.search))return;var s=JSON.parse(localStorage.getItem("_snt_snap:"+c.apiKey)),S=s.slots;if(s.v!==1||typeof s.persona!="string"||typeof s.band!="string"||!S||typeof S!="object"||!(2592e6>n-s.savedAt))return;var H=["data-sentient-persona","data-sentient-confidence"],d=D.documentElement,P=W.__sntPP={v:1,at:n,stamped:[],html:[],reordered:!1,done:!1,stop:function(){X()}},b=P.stamped,p=[],i,k,t,e,l,m,x,V=c.sections,O=s.layoutOrder,q=!(V&&V.length>1&&O&&O.length==V.length);if(c.personaAttributes&&!d.hasAttribute(H[0])){d.setAttribute(H[0],s.persona);d.setAttribute(H[1],s.band);P.html=H}var Q=function(v){return(""+v).replace(/["\\\\]/g,"\\\\$&")},A=function(t,v,g){if(typeof v=="string"){if(!g||(g.arms||[]).indexOf(v)>-1)p.push([t,"data-sentient-arm",v])}else if(v)for(k in v)if(!g||((g.dims||{})[k]||[]).indexOf(v[k])>-1)p.push([t,"data-"+k,v[k]])},U=function(t){var a=t[3];if(!a)return;a[2]==null?a[0].removeAttribute(a[1]):a[0].setAttribute(a[1],a[2]);x=b.indexOf(a);if(x>-1)b.splice(x,1);t[3]=0},R=function(){var g={},f=[],y,z,a,n=0;for(i in V){try{y=D.querySelectorAll(V[i])}catch(_){return 1}if(y.length==1){g[V[i]]=y[0];n++}}if(n!=V.length)return 0;for(i in O){z=g[O[i]];if(!z||~f.indexOf(z))return 1;f.push(z)}a=f[0].parentNode;if(!a)return 1;for(i in f)if(f[i].parentNode!=a)return 1;y=f.slice().sort(function(u,v){return u.compareDocumentPosition(v)&4?-1:1});for(i=0;i in f;i++){z=f[i];if(y[i]!=z){a.insertBefore(z,y[i]);y.splice(y.indexOf(z),1);y.splice(i,0,z)}}P.reordered=!0;return 1},F=function(){if(P.done)return;for(i=0;i in p;i++){t=p[i];if(!t)continue;try{m=D.querySelectorAll(t[0])}catch(_){p[i]=0;continue}if(m.length>1){U(t);p[i]=0}else if(m.length==1&&(!t[3]||t[3][0]!=m[0])){U(t);e=m[0];t[3]=[e,t[1],e.getAttribute(t[1])];e.setAttribute(t[1],t[2]);b.push(t[3])}}if(!q)q=R()},X=function(){if(P.done)return;P.done=!0;try{o.disconnect()}catch(_){}clearTimeout(T)},G=c.slots,C=s.slotConfig;for(i in G)if(G[i]&&G[i].target)A(G[i].target,S[i],G[i]);for(i in C){e=C[i]||{};l=e.locator;t=e.target;if(l){if(l.urlMatch&&!~L.pathname.indexOf(l.urlMatch))continue;t=l.id?'[id="'+Q(l.id)+'"]':l.dataAttr&&/^[\\w-]+$/.test(l.dataAttr.name)?"["+l.dataAttr.name+'="'+Q(l.dataAttr.value)+'"]':l.selector}if(t)A(t,S[i])}var o=new MutationObserver(F),T=setTimeout(X,3e3);o.observe(d,{childList:!0,subtree:!0});D.addEventListener("DOMContentLoaded",function(){F();X()});F();}catch(_){}})();`;
|
|
32
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The snippet install's inline pre-paint script — the middle tag of the
|
|
3
|
+
* three-tag install, and the only SentientUI code that runs before the page
|
|
4
|
+
* paints on a return visit.
|
|
5
|
+
*
|
|
6
|
+
* It lives here rather than in @sentientui/core because it is an artefact of the
|
|
7
|
+
* SNIPPET install specifically: it reads `window.sentient`, it hands off to this
|
|
8
|
+
* bundle through `window.__sntPP`, and its contract version is this package's to
|
|
9
|
+
* keep. Core owns the snapshot format it reads; nothing else is shared.
|
|
10
|
+
*
|
|
11
|
+
* Design: docs/superpowers/specs/2026-09-07-snippet-prepaint-script-design.md
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* What the inline pre-paint script leaves behind for the bundle. The bundle must
|
|
15
|
+
* tolerate this being absent (a two-tag install), a HIGHER `v` (a newer inline
|
|
16
|
+
* pasted before the bundle updated — read only the fields you know), and
|
|
17
|
+
* malformed (treat as absent).
|
|
18
|
+
*/
|
|
19
|
+
type PrePaintRecord = {
|
|
20
|
+
v: number;
|
|
21
|
+
/** Date.now() when the inline script ran. */
|
|
22
|
+
at: number;
|
|
23
|
+
/** [element, attribute, value before we stamped it] — null means "absent". */
|
|
24
|
+
stamped: Array<[Element, string, string | null]>;
|
|
25
|
+
/** <html> attribute names the inline script set (empty when it set none). */
|
|
26
|
+
html: string[];
|
|
27
|
+
reordered: boolean;
|
|
28
|
+
/** True once the observer is disconnected. */
|
|
29
|
+
done: boolean;
|
|
30
|
+
/** Disconnect now — the bundle has taken over. */
|
|
31
|
+
stop(): void;
|
|
32
|
+
};
|
|
33
|
+
/** Contract version of the snippet inline pre-paint script — mirrored at runtime
|
|
34
|
+
* as `window.__sntPP.v`, and reported to /v1/decide as `pp` so the dashboard can
|
|
35
|
+
* tell a two-tag install from a three-tag one. The script is pasted into a site
|
|
36
|
+
* once and never floats, so v1 must stay supported by the bundle indefinitely. */
|
|
37
|
+
declare const SNIPPET_PREPAINT_VERSION = 1;
|
|
38
|
+
/**
|
|
39
|
+
* Snippet-install inline pre-paint script (v1).
|
|
40
|
+
*
|
|
41
|
+
* The snippet loader is `defer`, so the bundle's snapshot pass is pre-*decide*
|
|
42
|
+
* but not necessarily pre-*paint*: on a return visit a page can show its natural
|
|
43
|
+
* section order and baseline dims and then restamp. This script closes that gap
|
|
44
|
+
* with zero network — it reads the snapshot the visitor's own prior visit wrote
|
|
45
|
+
* and applies the reversible subset (persona attributes, slot attributes, the
|
|
46
|
+
* cached section order) as the parser inserts the elements, before they paint.
|
|
47
|
+
* It is a CONSTANT — it reads `window.sentient` at runtime instead of baking the
|
|
48
|
+
* key in, so the dashboard install page, the README and the Shopify Liquid embed
|
|
49
|
+
* all inline the same bytes and a test can pin them.
|
|
50
|
+
*
|
|
51
|
+
* Safety properties (pinned by tests):
|
|
52
|
+
* - No interpolation at all, so nothing a hostile config value could reach.
|
|
53
|
+
* - Built by string concatenation and contains no backticks, so the output
|
|
54
|
+
* survives being embedded in template-literal-based renderers.
|
|
55
|
+
* - Contains no `<` whatsoever (comparisons are written with `>` / `~indexOf`),
|
|
56
|
+
* so it cannot terminate the inline `<script>` in any parser state.
|
|
57
|
+
* - Every path is inside one try/catch: any error leaves the DOM alone, and the
|
|
58
|
+
* bundle's authoritative pass corrects anything this got wrong (see the
|
|
59
|
+
* `__sntPP` reconcile in index.ts).
|
|
60
|
+
*
|
|
61
|
+
* What it deliberately does NOT do: no `textContent`, no ops stylesheet, no
|
|
62
|
+
* `moveBefore`/`moveAfter`, no Composition-Block rendering, and no cloak of any
|
|
63
|
+
* kind. Those either need the decide response to be trustworthy or need the
|
|
64
|
+
* renderer that lives in the bundle.
|
|
65
|
+
*/
|
|
66
|
+
declare function renderSnippetPrePaintScript(): string;
|
|
67
|
+
|
|
68
|
+
export { type PrePaintRecord, SNIPPET_PREPAINT_VERSION, renderSnippetPrePaintScript };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The snippet install's inline pre-paint script — the middle tag of the
|
|
3
|
+
* three-tag install, and the only SentientUI code that runs before the page
|
|
4
|
+
* paints on a return visit.
|
|
5
|
+
*
|
|
6
|
+
* It lives here rather than in @sentientui/core because it is an artefact of the
|
|
7
|
+
* SNIPPET install specifically: it reads `window.sentient`, it hands off to this
|
|
8
|
+
* bundle through `window.__sntPP`, and its contract version is this package's to
|
|
9
|
+
* keep. Core owns the snapshot format it reads; nothing else is shared.
|
|
10
|
+
*
|
|
11
|
+
* Design: docs/superpowers/specs/2026-09-07-snippet-prepaint-script-design.md
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* What the inline pre-paint script leaves behind for the bundle. The bundle must
|
|
15
|
+
* tolerate this being absent (a two-tag install), a HIGHER `v` (a newer inline
|
|
16
|
+
* pasted before the bundle updated — read only the fields you know), and
|
|
17
|
+
* malformed (treat as absent).
|
|
18
|
+
*/
|
|
19
|
+
type PrePaintRecord = {
|
|
20
|
+
v: number;
|
|
21
|
+
/** Date.now() when the inline script ran. */
|
|
22
|
+
at: number;
|
|
23
|
+
/** [element, attribute, value before we stamped it] — null means "absent". */
|
|
24
|
+
stamped: Array<[Element, string, string | null]>;
|
|
25
|
+
/** <html> attribute names the inline script set (empty when it set none). */
|
|
26
|
+
html: string[];
|
|
27
|
+
reordered: boolean;
|
|
28
|
+
/** True once the observer is disconnected. */
|
|
29
|
+
done: boolean;
|
|
30
|
+
/** Disconnect now — the bundle has taken over. */
|
|
31
|
+
stop(): void;
|
|
32
|
+
};
|
|
33
|
+
/** Contract version of the snippet inline pre-paint script — mirrored at runtime
|
|
34
|
+
* as `window.__sntPP.v`, and reported to /v1/decide as `pp` so the dashboard can
|
|
35
|
+
* tell a two-tag install from a three-tag one. The script is pasted into a site
|
|
36
|
+
* once and never floats, so v1 must stay supported by the bundle indefinitely. */
|
|
37
|
+
declare const SNIPPET_PREPAINT_VERSION = 1;
|
|
38
|
+
/**
|
|
39
|
+
* Snippet-install inline pre-paint script (v1).
|
|
40
|
+
*
|
|
41
|
+
* The snippet loader is `defer`, so the bundle's snapshot pass is pre-*decide*
|
|
42
|
+
* but not necessarily pre-*paint*: on a return visit a page can show its natural
|
|
43
|
+
* section order and baseline dims and then restamp. This script closes that gap
|
|
44
|
+
* with zero network — it reads the snapshot the visitor's own prior visit wrote
|
|
45
|
+
* and applies the reversible subset (persona attributes, slot attributes, the
|
|
46
|
+
* cached section order) as the parser inserts the elements, before they paint.
|
|
47
|
+
* It is a CONSTANT — it reads `window.sentient` at runtime instead of baking the
|
|
48
|
+
* key in, so the dashboard install page, the README and the Shopify Liquid embed
|
|
49
|
+
* all inline the same bytes and a test can pin them.
|
|
50
|
+
*
|
|
51
|
+
* Safety properties (pinned by tests):
|
|
52
|
+
* - No interpolation at all, so nothing a hostile config value could reach.
|
|
53
|
+
* - Built by string concatenation and contains no backticks, so the output
|
|
54
|
+
* survives being embedded in template-literal-based renderers.
|
|
55
|
+
* - Contains no `<` whatsoever (comparisons are written with `>` / `~indexOf`),
|
|
56
|
+
* so it cannot terminate the inline `<script>` in any parser state.
|
|
57
|
+
* - Every path is inside one try/catch: any error leaves the DOM alone, and the
|
|
58
|
+
* bundle's authoritative pass corrects anything this got wrong (see the
|
|
59
|
+
* `__sntPP` reconcile in index.ts).
|
|
60
|
+
*
|
|
61
|
+
* What it deliberately does NOT do: no `textContent`, no ops stylesheet, no
|
|
62
|
+
* `moveBefore`/`moveAfter`, no Composition-Block rendering, and no cloak of any
|
|
63
|
+
* kind. Those either need the decide response to be trustworthy or need the
|
|
64
|
+
* renderer that lives in the bundle.
|
|
65
|
+
*/
|
|
66
|
+
declare function renderSnippetPrePaintScript(): string;
|
|
67
|
+
|
|
68
|
+
export { type PrePaintRecord, SNIPPET_PREPAINT_VERSION, renderSnippetPrePaintScript };
|
package/dist/install.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// src/prepaint-script.ts
|
|
2
|
+
var SNIPPET_PREPAINT_VERSION = 1;
|
|
3
|
+
function renderSnippetPrePaintScript() {
|
|
4
|
+
return `(function(){try{var W=window,D=document,N=navigator,L=W.location,c=W.sentient,n=Date.now();if(!c||typeof c.apiKey!="string"||c.consent===!1||W.__sntPP)return;if(N.doNotTrack=="1"||N.globalPrivacyControl||N.webdriver)return;if(/[?&]sentient_(editor|preview|persona)=/.test(L.search))return;var s=JSON.parse(localStorage.getItem("_snt_snap:"+c.apiKey)),S=s.slots;if(s.v!==1||typeof s.persona!="string"||typeof s.band!="string"||!S||typeof S!="object"||!(2592e6>n-s.savedAt))return;var H=["data-sentient-persona","data-sentient-confidence"],d=D.documentElement,P=W.__sntPP={v:1,at:n,stamped:[],html:[],reordered:!1,done:!1,stop:function(){X()}},b=P.stamped,p=[],i,k,t,e,l,m,x,V=c.sections,O=s.layoutOrder,q=!(V&&V.length>1&&O&&O.length==V.length);if(c.personaAttributes&&!d.hasAttribute(H[0])){d.setAttribute(H[0],s.persona);d.setAttribute(H[1],s.band);P.html=H}var Q=function(v){return(""+v).replace(/["\\\\]/g,"\\\\$&")},A=function(t,v,g){if(typeof v=="string"){if(!g||(g.arms||[]).indexOf(v)>-1)p.push([t,"data-sentient-arm",v])}else if(v)for(k in v)if(!g||((g.dims||{})[k]||[]).indexOf(v[k])>-1)p.push([t,"data-"+k,v[k]])},U=function(t){var a=t[3];if(!a)return;a[2]==null?a[0].removeAttribute(a[1]):a[0].setAttribute(a[1],a[2]);x=b.indexOf(a);if(x>-1)b.splice(x,1);t[3]=0},R=function(){var g={},f=[],y,z,a,n=0;for(i in V){try{y=D.querySelectorAll(V[i])}catch(_){return 1}if(y.length==1){g[V[i]]=y[0];n++}}if(n!=V.length)return 0;for(i in O){z=g[O[i]];if(!z||~f.indexOf(z))return 1;f.push(z)}a=f[0].parentNode;if(!a)return 1;for(i in f)if(f[i].parentNode!=a)return 1;y=f.slice().sort(function(u,v){return u.compareDocumentPosition(v)&4?-1:1});for(i=0;i in f;i++){z=f[i];if(y[i]!=z){a.insertBefore(z,y[i]);y.splice(y.indexOf(z),1);y.splice(i,0,z)}}P.reordered=!0;return 1},F=function(){if(P.done)return;for(i=0;i in p;i++){t=p[i];if(!t)continue;try{m=D.querySelectorAll(t[0])}catch(_){p[i]=0;continue}if(m.length>1){U(t);p[i]=0}else if(m.length==1&&(!t[3]||t[3][0]!=m[0])){U(t);e=m[0];t[3]=[e,t[1],e.getAttribute(t[1])];e.setAttribute(t[1],t[2]);b.push(t[3])}}if(!q)q=R()},X=function(){if(P.done)return;P.done=!0;try{o.disconnect()}catch(_){}clearTimeout(T)},G=c.slots,C=s.slotConfig;for(i in G)if(G[i]&&G[i].target)A(G[i].target,S[i],G[i]);for(i in C){e=C[i]||{};l=e.locator;t=e.target;if(l){if(l.urlMatch&&!~L.pathname.indexOf(l.urlMatch))continue;t=l.id?'[id="'+Q(l.id)+'"]':l.dataAttr&&/^[\\w-]+$/.test(l.dataAttr.name)?"["+l.dataAttr.name+'="'+Q(l.dataAttr.value)+'"]':l.selector}if(t)A(t,S[i])}var o=new MutationObserver(F),T=setTimeout(X,3e3);o.observe(d,{childList:!0,subtree:!0});D.addEventListener("DOMContentLoaded",function(){F();X()});F();}catch(_){}})();`;
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
SNIPPET_PREPAINT_VERSION,
|
|
8
|
+
renderSnippetPrePaintScript
|
|
9
|
+
};
|
package/dist/snippet.global.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var SentientSnippet=(()=>{var Fe=Object.defineProperty;var or=Object.getOwnPropertyDescriptor;var ir=Object.getOwnPropertyNames,Pt=Object.getOwnPropertySymbols;var Mt=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable;var Dt=(e,t,n)=>t in e?Fe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t)=>{for(var n in t||(t={}))Mt.call(t,n)&&Dt(e,n,t[n]);if(Pt)for(var n of Pt(t))sr.call(t,n)&&Dt(e,n,t[n]);return e};var Bt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Nt=(e,t)=>{for(var n in t)Fe(e,n,{get:t[n],enumerable:!0})},ar=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ir(t))!Mt.call(e,o)&&o!==n&&Fe(e,o,{get:()=>t[o],enumerable:!(r=or(t,o))||r.enumerable});return e};var lr=e=>ar(Fe({},"__esModule",{value:!0}),e);var cr,ur,dr,$t,fr,pr,Kt,_,be,Te=Bt(()=>{"use strict";cr=Object.defineProperty,ur=Object.defineProperties,dr=Object.getOwnPropertyDescriptors,$t=Object.getOwnPropertySymbols,fr=Object.prototype.hasOwnProperty,pr=Object.prototype.propertyIsEnumerable,Kt=(e,t,n)=>t in e?cr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_=(e,t)=>{for(var n in t||(t={}))fr.call(t,n)&&Kt(e,n,t[n]);if($t)for(var n of $t(t))pr.call(t,n)&&Kt(e,n,t[n]);return e},be=(e,t)=>ur(e,dr(t))});var Xt={};Nt(Xt,{LOCAL_ENGINE_AVAILABLE:()=>wr,createLocalEngine:()=>Sr});function Sr(e){throw new Error("[sentient] createLocalEngine is not available in production builds. The local engine only exists under the `development` export condition.")}var wr,Zt=Bt(()=>{"use strict";wr=!1});var Mo={};Nt(Mo,{applyPersonaAttributes:()=>rt,applyRegistrySlots:()=>st,applySlotArms:()=>it,applySlotAttributes:()=>ot,parseEditorToken:()=>Qn,parsePersonaPreview:()=>nr,parsePreview:()=>tr,parseSnippetConfig:()=>Qe,reapply:()=>Lt,run:()=>rr,version:()=>ze});Te();var gr=["buyer","researcher","deal_seeker","browser"];var mr={buyer:"Buyer",researcher:"Researcher",deal_seeker:"Deal seeker",browser:"Browser",unknown:"Unknown"};function We(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join("|")}function jt(e){if(e.length===0)return null;let t={};for(let n of e.split("|")){let r=n.indexOf("=");if(r<=0||r!==n.lastIndexOf("=")||r===n.length-1)return null;let o=n.slice(0,r);if(o in t)return null;t[o]=n.slice(r+1)}return t}function pt(e){var t,n,r;if(e.arms)return typeof e.baseline=="string"?e.baseline:(t=e.arms[0])!=null?t:"";if(e.baseline!==void 0&&typeof e.baseline=="object")return We(e.baseline);if(typeof e.baseline=="string")return e.baseline;let o={};for(let[l,i]of Object.entries((n=e.dims)!=null?n:{}))o[l]=(r=i[0])!=null?r:"";return We(o)}function Gt(e,t){var n,r;return e.dims!=null?(r=(n=jt(t))!=null?n:jt(pt(e)))!=null?r:{}:t}function Ut(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t}function we(e){return e>=.3?e<.7?"medium":"high":"low"}var $o=gr.map(e=>({key:e,displayName:mr[e]}));function He(e){return e?`_${e.slice(0,12)}`:""}var hr="_snt_uid";function zt(e){return`${hr}${He(e)}`}var yr=["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 qt(e){return vr(e)!==null}function vr(e){var t;if(!e)return null;let n=e.toLowerCase();return(t=yr.find(r=>n.includes(r.toLowerCase())))!=null?t:null}function Ft(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 Wt(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(o){}let r=n.hostname.toLowerCase();return/(^|\.)(google|bing|duckduckgo|yahoo)\./.test(r)?"search":/(^|\.)(twitter\.com|x\.com|facebook\.com|linkedin\.com|reddit\.com|t\.co)$/.test(r)?"social":"referral"}catch(n){return"direct"}}function Ht(e){if(!e)return null;try{return new URL(e).hostname}catch(t){return null}}var br=["gclid","gbraid","wbraid","fbclid","ttclid","msclkid","twclid","li_fat_id"];function Vt(e){let t={},n={};try{let r=typeof e=="string"||e instanceof URLSearchParams?new URLSearchParams(e):Object.entries(e).flatMap(([o,l])=>{let i=Array.isArray(l)?l[0]:l;return i===void 0?[]:[[o,i]]});for(let[o,l]of r)o.startsWith("utm_")?o in t||(t[o]=l):br.includes(o)&&(o in n||(n[o]=l))}catch(r){}return{utmParams:t,clickIds:n}}function Jt(e){let t=e.getHours();return t<6?"night":t<12?"morning":t<18?"afternoon":"evening"}function gt(e){return _(_(_({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 mt(e){let t=gt(e);return Gt(t,pt(t))}function Yt(e){return typeof e=="string"?e:We(e)}Te();function rn(){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)})}var Ar="_snt_uid",xr=365,Ve="_snt_uid";function kr(){return rn()}function Qt(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]):null}catch(t){return null}}function Er(e,t,n){try{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; SameSite=strict; path=/`}catch(r){}}function ht(e){try{return localStorage.getItem(e)}catch(t){return null}}function en(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return!1}}function tn(e){try{return sessionStorage.getItem(e)}catch(t){return null}}function Cr(e,t){try{return sessionStorage.setItem(e,t),!0}catch(n){return!1}}function _r(e){try{sessionStorage.removeItem(e)}catch(t){}}function Ir(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 Or(e){try{localStorage.removeItem(e)}catch(t){}}function Lr(e){try{document.cookie=`${e}=; max-age=0; SameSite=strict; path=/`}catch(t){}}var Tr={getSessionId:()=>null,isEphemeral:()=>!1,destroy:()=>{}};function on(e){var t,n,r,o,l,i,s;if(typeof window=="undefined")return Tr;let c=He(e==null?void 0:e.apiKey),u=(t=e==null?void 0:e.cookieName)!=null?t:zt(e==null?void 0:e.apiKey),a=`${Ve}${c}`,d=`${Ve}_tomb${c}`,g=((n=e==null?void 0:e.cookieTTLDays)!=null?n:xr)*24*60*60,m=w=>w&&w.length>0?w:null,p=()=>{var w,I;return c&&!(e!=null&&e.cookieName)&&ht(d)===null?(I=(w=m(Qt(Ar)))!=null?w:m(ht(Ve)))!=null?I:m(tn(Ve)):null},f=(s=(i=(l=(o=(r=m(Qt(u)))!=null?r:m(ht(a)))!=null?o:m(tn(a)))!=null?l:p())!=null?i:m(e==null?void 0:e.ssrSessionId))!=null?s:kr();Er(u,f,g);let A=en(a,f),C=Ir(u),L=A?!1:Cr(a,f),y=!A&&!C&&!L;return{getSessionId:()=>f,isEphemeral:()=>y,destroy:()=>{f=null,Lr(u),Or(a),_r(a),c&&!(e!=null&&e.cookieName)&&en(d,"1")}}}function Pe(e){return Math.min(6e4,1e3*2**Math.min(e,6))}function wt(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 sn(e,t){try{let n=localStorage.getItem(e);if(!n)return[];let r=JSON.parse(n);return Array.isArray(r)?(localStorage.removeItem(e),r.slice(-t)):[]}catch(n){return[]}}function Ee(e,t,n){try{let r=(()=>{try{let l=localStorage.getItem(n);if(!l)return[];let i=JSON.parse(l);return Array.isArray(i)?i:[]}catch(l){return[]}})(),o=new Map;for(let l of r)o.set(l.id,l);for(let l of e)o.set(l.id,l);localStorage.setItem(n,JSON.stringify([...o.values()].slice(-t)))}catch(r){}}function an(e,t){try{let n=localStorage.getItem(t);if(!n)return;let r=JSON.parse(n);if(!Array.isArray(r))return;let o=new Set(e),l=r.filter(i=>!o.has(i.id));if(l.length===r.length)return;l.length===0?localStorage.removeItem(t):localStorage.setItem(t,JSON.stringify(l))}catch(n){}}var Rr=500,Pr=56*1024;function ln(e){return`_snt_retry_${e.slice(0,12)}`}var Dr={push:()=>{},flush:()=>{},destroy:()=>{}};function Mr(e){var t,n,r;if(typeof window=="undefined")return Dr;let o=(t=e.flushIntervalMs)!=null?t:5e3,l=(n=e.maxBatchSize)!=null?n:20,i=(r=e.maxRetrySize)!=null?r:100,s=e.ingestUrl,c=e.apiKey,u=ln(c),a=[],d=new Set,g=[],m=v=>{for(let b of v)p.delete(b),!d.has(b)&&(d.add(b),g.push(b));for(;g.length>Rr;){let b=g.shift();b&&d.delete(b)}an(v,u)},p=new Set,f=()=>{for(;a.length>i;){let v=a.shift();v&&p.delete(v.id)}},A=v=>{d.has(v.id)||p.has(v.id)||(p.add(v.id),a.push(v),f())},C=v=>{for(let b of v)d.has(b.id)||(p.add(b.id),a.push(b));f()},L=sn(u,i);for(let v of L)A(v);let y=0,w=0,I=(v,b=!0)=>{if(v.length===0)return;let k=JSON.stringify(v),O=v.map(V=>V.id),E;try{E=fetch(s,{method:"POST",keepalive:!0,body:k,headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`}})}catch(V){Ee(v,i,u),C(v),w++,y=Date.now()+Pe(w);return}let oe=V=>{if(wt(V)!=="retry"){if(!V.ok&&b){let te=v.filter(ne=>ne.eventType!=="pageview");if(te.length>0&&te.length<v.length){m(v.filter(ne=>ne.eventType==="pageview").map(ne=>ne.id)),I(te,!1);return}}m(O),w=0,y=0;return}Ee(v,i,u),C(v),w++,y=Date.now()+Pe(w)};E instanceof Promise?E.then(oe).catch(()=>{Ee(v,i,u),C(v),w++,y=Date.now()+Pe(w)}):oe(E)},N=typeof TextEncoder!="undefined"?new TextEncoder:null,x=v=>N?N.encode(v).length:v.length,D=v=>{let b=[],k=2;for(let O of v){let E=x(JSON.stringify(O))+1;if(b.length>0&&k+E>Pr||b.length>=l)break;b.push(O),k+=E}return b},K=()=>{try{if(Date.now()<y)return;for(;a.length>0&&!(Date.now()<y);){let v=a.filter(k=>!d.has(k.id));if(a.length=0,v.length===0)break;let b=D(v);if(b.length===0)break;b.length<v.length&&a.push(...v.slice(b.length)),I(b)}}catch(v){}},j=!0,Z=null;Z=setInterval(()=>{j&&K()},o);let q=()=>{document.visibilityState==="hidden"&&K()},U=()=>{K()};return document.addEventListener("visibilitychange",q),window.addEventListener("pagehide",U),{push(v){A(v),a.length>=l&&K()},flush:K,destroy(){j=!1,Z!==null&&(clearInterval(Z),Z=null),document.removeEventListener("visibilitychange",q),window.removeEventListener("pagehide",U),K()}}}var Br=200;function cn(e){return`_snt_goal_retry_${e.slice(0,12)}`}var Nr={send:()=>{},flush:()=>{},destroy:()=>{}};function $r(e){var t,n,r;if(typeof window=="undefined")return Nr;let o=(t=e.flushIntervalMs)!=null?t:5e3,l=(n=e.maxRetrySize)!=null?n:100,i=(r=e.maxPerFlush)!=null?r:5,s=cn(e.apiKey),c=[],u=new Set,a=new Set,d=[],g=0,m=0,p=!1,f=x=>{for(u.delete(x.id),a.has(x.id)||(a.add(x.id),d.push(x.id));d.length>Br;){let D=d.shift();D&&a.delete(D)}an([x.id],s)},A=x=>{Ee([x],l,s),!a.has(x.id)&&!u.has(x.id)&&(u.add(x.id),c.push(x)),Date.now()>=g&&(m++,g=Date.now()+Pe(m))},C=x=>{let D;try{D=fetch(e.url,{method:"POST",keepalive:!0,body:x.body,headers:e.headers})}catch(j){A(x);return}let K=j=>{var Z;let q=wt(j);if(q==="retry"){A(x);return}q==="dropped"&&((Z=e.onDrop)==null||Z.call(e,x,j.status)),f(x),m=0,g=0};D instanceof Promise?D.then(K).catch(()=>A(x)):K(D)},L=()=>{try{if(p||Date.now()<g)return;let x=0;for(;c.length>0&&x<i&&!(Date.now()<g);){let D=c.shift();u.delete(D.id),!a.has(D.id)&&(x++,C(D))}}catch(x){}},y=sn(s,l);for(let x of y)u.has(x.id)||(u.add(x.id),c.push(x));y.length>0&&Ee(y,l,s);let w=setInterval(L,o),I=()=>{document.visibilityState==="hidden"&&L()},N=()=>L();return document.addEventListener("visibilitychange",I),window.addEventListener("pagehide",N),{send(x){if(!p&&!(a.has(x.id)||u.has(x.id))){if(Date.now()<g){Ee([x],l,s),u.add(x.id),c.push(x);return}C(x)}},flush:L,destroy(){clearInterval(w),document.removeEventListener("visibilitychange",I),window.removeEventListener("pagehide",N),L(),p=!0}}}var Kr=1800*1e3;function Je(e,t){return`${encodeURIComponent(e)}:${encodeURIComponent(t)}`}function jr(e=Kr,t){let n=new Map,r=`_snt_asgn${He(t)}_`,o=(c,u)=>`${r}${encodeURIComponent(c)}:${encodeURIComponent(u)}`,l=c=>{let u=c.slice(r.length),a=u.indexOf(":");if(a<0)return null;try{return{componentId:decodeURIComponent(u.slice(0,a)),segment:decodeURIComponent(u.slice(a+1))}}catch(d){return null}},i=()=>{try{let c=[];for(let u=0;u<localStorage.length;u++){let a=localStorage.key(u);a!=null&&a.startsWith(r)&&c.push(a)}return c}catch(c){return[]}},s=c=>c.assignedAt+(c.ttlMs&&c.ttlMs>0?c.ttlMs:e)<Date.now();return typeof window!="undefined"&&(()=>{for(let c of i())try{let u=localStorage.getItem(c);if(!u)continue;let a=JSON.parse(u);if(s(a)){localStorage.removeItem(c);continue}let d=l(c);if(!d)continue;n.set(Je(d.componentId,d.segment),a)}catch(u){}})(),{get(c,u){let a=n.get(Je(c,u));return a?s(a)?(n.delete(Je(c,u)),null):a:null},set(c,u,a){let d=Je(c,u);n.set(d,a);try{localStorage.setItem(o(c,u),JSON.stringify(a))}catch(g){}},clear(){n.clear();for(let c of i())try{localStorage.removeItem(c)}catch(u){}}}}var Ze="_snt_snap:",Gr=["low","medium","high"];function De(e){try{let t=localStorage.getItem(Ze+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"||!Gr.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 Me(e,t){try{localStorage.setItem(Ze+e,JSON.stringify(t))}catch(n){}}var vt="[sentient] No API key configured \u2014 nothing is being learned. Set NEXT_PUBLIC_SENTIENT_API_KEY or pass localMode: true for local development.",un="[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.",nn=!1,Ye=!1;function Ur(){var e;try{return(e=new URLSearchParams(window.location.search).get("sentient_persona"))!=null?e:void 0}catch(t){return}}function zr(e){var t;let n=on({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),r=(t=n.getSessionId())!=null?t:"local",o=Ur(),l=Promise.resolve().then(()=>(Zt(),Xt)).then(a=>{let d=a;return d.LOCAL_ENGINE_AVAILABLE?(nn||(nn=!0,console.info(un)),d):(Ye||(Ye=!0,console.error(vt)),null)}).catch(()=>(Ye||(Ye=!0,console.error(vt)),null)),i=null,s={low:.15,medium:.5,high:.85},c=(()=>{var a;if(e.initialPersona)return _({},e.initialPersona);let d=De(e.apiKey||"local");return d?{persona:d.persona,confidence:(a=s[d.band])!=null?a:.15}:null})();function u(a){let d=document.documentElement;d.dataset.sentientPersona===void 0&&(d.dataset.sentientPersona=a.persona,d.dataset.sentientConfidence=we(a.confidence))}return{isLocal:!0,async decide(a){var d,g,m;let p=await l;if(!p)return null;let f=p.createLocalEngine({sessionId:r,forcedPersona:o}).decide(a);return i=be(_({},f),{layoutOrder:(g=(d=f.layoutOrder)!=null?d:i==null?void 0:i.layoutOrder)!=null?g:null,slots:_(_({},(m=i==null?void 0:i.slots)!=null?m:{}),f.slots)}),Me(e.apiKey||"local",{v:1,persona:i.persona,band:we(i.confidence),slots:i.slots,layoutOrder:i.layoutOrder,savedAt:Date.now()}),u(f),f},getSlotResult(a){var d,g,m;return(m=(g=i==null?void 0:i.slots[a])!=null?g:(d=e.initialSlots)==null?void 0:d[a])!=null?m:null},getPersona(){let a=i!=null?i:c;return a?{persona:a.persona,confidence:a.confidence,band:we(a.confidence)}:null},async assign(a,d){var g;let m=await l;return!m||!d||d.length===0?d!=null&&d[0]?{variantId:d[0],assignmentTtlMs:0}:null:{variantId:(g=m.createLocalEngine({sessionId:r,forcedPersona:o}).decide({components:[{id:a,variantIds:d}]}).assignments[a])!=null?g:d[0],assignmentTtlMs:0}},track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>n.destroy()}}function Be(e,t,n,r){let o=[];{let l=!1,i=[],s=()=>{if(l)return;let c=Date.now();for(i.push(c);i.length>0&&c-i[0]>500;)i.shift();i.length>=3&&(l=!0,e("rage_click"))};t.addEventListener("click",s),o.push(()=>t.removeEventListener("click",s))}{let l=!1,i=s=>{if(l||!(s.target instanceof Node)||!t.contains(s.target)&&t!==s.target)return;l=!0;let c=typeof window!="undefined"?window.getSelection():null,u=c?c.toString().length:0;e("text_copy",{selectionLength:u})};document.addEventListener("copy",i),o.push(()=>document.removeEventListener("copy",i))}{let l=!1,i=!1,s=null,c=()=>{s!==null&&(clearTimeout(s),s=null)},u=()=>{l||!i||(c(),s=setTimeout(()=>{!l&&i&&(l=!0,e("scroll_hesitation"))},3e3))},a=()=>{c(),u()},d=m=>{for(let p of m)i=p.intersectionRatio>.3,i?u():c()},g=new IntersectionObserver(d,{threshold:[.3]});g.observe(t),window.addEventListener("scroll",a,{passive:!0}),o.push(()=>{g.disconnect(),window.removeEventListener("scroll",a),c()})}if((r==null?void 0:r.tabLoss)!==!1){let l=!1,i=n!=null?n:Date.now(),s=()=>{if(l||document.visibilityState!=="hidden")return;let c=Date.now()-i;c<15e3&&(l=!0,e("tab_loss",{timeOnPage:c}))};document.addEventListener("visibilitychange",s),o.push(()=>document.removeEventListener("visibilitychange",s))}return()=>{for(let l of o)l()}}var dn="https://api.sentient-ui.com/v1/events",re=new Map,fn=null;function qr(e){return"value"in e||"currency"in e||"externalId"in e||"metadata"in e||"weight"in e||"stepIndex"in e}var Fr=3;function yt(){return rn()}function Xe(){var e;if(typeof window!="undefined")return((e=window.location)==null?void 0:e.pathname)||void 0}function Wr(){let e=new WeakMap,t=new Map,n=!1,r=(s,c,u)=>{let a=s.get(c);return u===null?a?!0:(s.set(c,new Set),!1):a?a.has(u)?!0:(a.add(u),!1):(s.set(c,new Set([u])),!1)},o=typeof window!="undefined"&&"event"in window,l=()=>{if(!o)return;let s=window.event;return typeof Event=="function"&&s instanceof Event?s:void 0},i=()=>{if(o){Promise.resolve().then(()=>{n=!1,t.clear()});return}let s=!1,c=()=>{s||(s=!0,n=!1,t.clear())};if(setTimeout(c,0),typeof MessageChannel=="function"){let u=new MessageChannel;u.port1.onmessage=()=>{u.port1.close(),u.port2.close(),c()},u.port2.postMessage(0)}};return{firedBefore(s,c){let u=l();if(u){let d=e.get(u);return d||(d=new Map,e.set(u,d)),r(d,s,c)}let a=r(t,s,c);return!a&&!n&&(n=!0,i()),a}}}var pn=new Set;function Hr(e,t,n){let r=typeof window=="undefined"?null:window.history;if(!r)return()=>{};let o=!1,l,i=()=>{if(o)return;let u=Xe();!u||u===l||(l=u,e.track({projectId:t,componentId:"__page__",eventType:"pageview",payload:{}}),n(`${t}:${u}`))},s=[];for(let u of["pushState","replaceState"]){let a=r[u],d=function(...g){let m=a.apply(this,g);return i(),m};r[u]=d,s.push([u,a,d])}window.addEventListener("popstate",i);let c=Xe();return c&&pn.has(`${t}:${c}`)?l=c:i(),()=>{if(!o){o=!0,window.removeEventListener("popstate",i);for(let[u,a,d]of s)r[u]===d&&(r[u]=a)}}}var Re={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 Vr(){try{return Vt(window.location.search)}catch(e){return{utmParams:{},clickIds:{}}}}function gn(e){return e.replace(/\/events\/?$/,"")}function Se(){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(e=>e==="1"||e==="yes")}function St(e){var t;if(typeof window=="undefined")return;let n=e!=null?e:fn;if(!n){console.warn("[sentient] grantConsent() called before init()");return}let r=re.get(n);if(!r){console.warn("[sentient] grantConsent() called before init()");return}let{config:o,upgrade:l,reinit:i}=r;if(!l){r.upgradeBlockedReason&&console.warn(r.upgradeBlockedReason);return}if(o.respectDoNotTrack!==!1&&Se())return;let s=(i!=null?i:Ne)(be(_({},o),{consent:!0}));l(s);let c=(t=re.get(n))==null?void 0:t.dispose;re.set(n,{config:be(_({},o),{consent:!0}),upgrade:null,dispose:c})}function Jr(e){var t;let n=e.preConsentBehavior==="statistical_winner",r=gn((t=e.ingestUrl)!=null?t:dn),o={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},l=new Map,i=new Map,s={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),assign(a,d,g){if(!n)return Promise.resolve(null);let m=l.get(a);return m?Promise.resolve(m):bt(i,a,async()=>{try{let p=new URLSearchParams({componentId:a});for(let C of d!=null?d:[])p.append("variantIds[]",C);let f=await fetch(`${r}/winner?${p.toString()}`,{headers:o});if(!f.ok)return d!=null&&d[0]?{variantId:d[0],assignmentTtlMs:0}:null;let A={variantId:(await f.json()).variantId,assignmentTtlMs:0};return l.set(a,A),A}catch(p){return d!=null&&d[0]?{variantId:d[0],assignmentTtlMs:0}:null}})},decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}},c={track:a=>s.track(a),goal:((a,d,g,m)=>s.goal(a,d,g,m)),componentGoal:(a,d,g)=>s.componentGoal(a,d,g),identify:a=>s.identify(a),getAssignment:(a,d)=>s.getAssignment(a,d),assign:(a,d,g,m)=>s.assign(a,d,g,m),decide:a=>s.decide(a),getSlotResult:a=>s.getSlotResult(a),getPersona:()=>s.getPersona(),fetchWeights:()=>s.fetchWeights(),getGraph:()=>s.getGraph(),dispose:()=>s.dispose(),destroy:()=>s.destroy()};function u(a){s=a}return{proxy:c,setInner:u}}function bt(e,t,n){let r=e.get(t);if(r)return r;let o=(async()=>{try{return await n()}finally{e.delete(t)}})();return e.set(t,o),o}function Ne(e){var t,n,r,o,l,i,s,c,u;if(typeof window=="undefined")return Re;fn=e.apiKey||"local";let a=re.get(e.apiKey||"local");if(a!=null&&a.dispose)try{a.dispose()}catch(h){}let d=e.respectDoNotTrack!==!1&&Se(),g=e.consent===!1||d,m=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_");if(e.localMode===!0||!m&&e.localMode!==!1)return re.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."}),g?Re:zr(e);if(g){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."),re.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."}),Re;let{proxy:h,setInner:S}=Jr(e);return re.set(e.apiKey,{config:e,upgrade:d?null:S}),h}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."),Re;if(e.ingestUrl==="")return console.warn("[sentient] init() called with an empty ingestUrl. SDK disabled."),Re;let p=(t=e.ingestUrl)!=null?t:dn,f=Date.now(),A=on({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),C=jr(void 0,e.apiKey),L=Mr({ingestUrl:p,apiKey:e.apiKey}),y=gn(p),w={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},I=new Set,N=$r({url:`${y}/goals`,apiKey:e.apiKey,headers:w,onDrop:(h,S)=>{if(!e.debug){if(I.has(S))return;I.add(S)}console.warn(`[sentient] goal dropped (HTTP ${S}) \u2014 this will not be retried. `+(S===400?"The session was not found: call init() and let the session upsert complete before firing goals.":S===401||S===403?"Check the API key and that this origin is on the project allowlist.":"See the response status for the cause."),h)}}),x=Ft((n=navigator.userAgent)!=null?n:""),D=window.location.origin,K=Wt((r=document.referrer)!=null?r:"",D),j=(o=e.sessionSegment)!=null?o:`${x}:${K}`,Z=new Map,q=new Map,U=new Map,v=null,b=h=>{for(let S of h)U.has(S.id)||U.set(S.id,mt(S))};if(e.initialSlots)for(let[h,S]of Object.entries(e.initialSlots))U.set(h,S);let k=De(e.apiKey);if(k)for(let[h,S]of Object.entries(k.slots))U.has(h)||U.set(h,S);let O={low:.15,medium:.5,high:.85};if(e.initialPersona)v=_({},e.initialPersona);else{let h=document.documentElement.dataset;h.sentientPersona?v={persona:h.sentientPersona,confidence:(i=O[(l=h.sentientConfidence)!=null?l:"low"])!=null?i:.15}:k&&(v={persona:k.persona,confidence:(s=O[k.band])!=null?s:.15})}if(e.initialAssignments)for(let[h,S]of Object.entries(e.initialAssignments))C.set(h,j,{variantId:S,assignedAt:Date.now(),segment:j,confidence:1});let E=Promise.resolve(),oe=A.getSessionId();if(oe){let h=Ht((c=document.referrer)!=null?c:""),{utmParams:S,clickIds:M}=Vr(),ee=_(_(_(_({sessionId:oe,deviceClass:x,trafficSource:K,referrerDomain:h,utmParams:S,clickIds:M,timeOfDay:Jt(new Date),dayOfWeek:["sun","mon","tue","wed","thu","fri","sat"][new Date().getDay()],ephemeral:A.isEphemeral(),automation:typeof navigator!="undefined"&&navigator.webdriver===!0||qt((u=navigator.userAgent)!=null?u:"")},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}:{}),F=async()=>{for(let T=0;;T++){try{let B=await fetch(`${y}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify(ee),headers:w});if(B.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(B.ok||wt(B)==="dropped")return}catch(B){}if(T>=Fr){console.warn("[SentientUI] Could not register the session after retries. Conversions in this visit may not be recorded.");return}await new Promise(B=>setTimeout(B,Pe(T+1)))}};try{E=F()}catch(T){}}e.debug&&(console.log("[sentient] initialized",{context:e.context}),window.__sentient={client:null,queue:L});let V=Wr(),te=null,ne=!1,ie={goal(h,S={},M=1,ee=0){var F,T,B,J,Y,ve,fe;let Oe=A.getSessionId();if(!Oe)return;let X=qr(S)?S:{metadata:S},Le=[h,(F=X.externalId)!=null?F:"",(T=X.stepIndex)!=null?T:ee,(B=X.weight)!=null?B:M].join("\0"),R=X.value!==void 0?`${X.value}\0${(J=X.currency)!=null?J:""}`:null;if(V.firedBefore(Le,R)){e.debug&&console.log(`[sentient] goal("${h}") already recorded for this action \u2014 not sent twice`);return}let le=yt(),qe={sessionId:Oe,name:h,metadata:(Y=X.metadata)!=null?Y:{},weight:(ve=X.weight)!=null?ve:M,stepIndex:(fe=X.stepIndex)!=null?fe:ee,goalId:le,value:X.value,currency:X.currency,externalId:X.externalId};e.debug&&console.log("[sentient] goal",qe);let W={id:le,body:JSON.stringify(qe)};E.then(()=>N.send(W))},componentGoal(h,S,M){var ee,F,T;let B=A.getSessionId();if(!B)return;let J=C.get(h,j),Y=J?null:(ee=U.get(h))!=null?ee:null;if(!J&&Y===null){e.debug&&console.warn(`[sentient] componentGoal("${h}"): no assignment or slot decision yet \u2014 render its <Adaptive>/adaptive hook or call assign()/decide() before recording a goal.`);return}let ve=J?J.variantId:Yt(Y),fe={id:yt(),sessionId:B,projectId:e.apiKey,componentId:h,variantId:ve,eventType:"goal_achieved",goalType:S,payload:_({reward:(F=M==null?void 0:M.reward)!=null?F:1,goalValue:M==null?void 0:M.value,currency:M==null?void 0:M.currency},(T=M==null?void 0:M.metadata)!=null?T:{}),timestamp:Date.now(),timeInSession:Date.now()-f,path:Xe()};e.debug&&console.log("[sentient] componentGoal",fe),E.then(()=>L.push(fe))},identify(h){let S=A.getSessionId();S&&E.then(()=>{fetch(`${y}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify({sessionId:S,userId:h,ephemeral:A.isEphemeral()}),headers:w}).catch(()=>{})})},track(h){let S=A.getSessionId();if(!S)return;let M=be(_({path:Xe()},h),{id:yt(),sessionId:S,timestamp:Date.now(),timeInSession:Date.now()-f});e.debug&&console.log("[sentient] track",M),E.then(()=>L.push(M))},getAssignment(h,S){return C.get(h,S)},async assign(h,S,M,ee){let F=A.getSessionId();if(!F)return null;let T=C.get(h,j);if(T&&(S!=null&&S.length||T.content!==void 0)){let B=T.ttlMs&&T.ttlMs>0?Math.max(0,T.assignedAt+T.ttlMs-Date.now()):0;return{variantId:T.variantId,assignmentTtlMs:B,content:T.content}}return bt(Z,h,async()=>{await E;try{let B={sessionId:F,componentId:h,variantIds:S};ee!==void 0?B.agentDataByVariant=ee:M!==void 0&&(B.agentData=M);let J=await fetch(`${y}/assign`,{method:"POST",body:JSON.stringify(B),headers:w});if(!J.ok)return null;let Y=await J.json();return C.set(h,j,_({variantId:Y.variantId,assignedAt:Date.now(),segment:j,confidence:1,content:Y.content},Y.assignmentTtlMs&&Y.assignmentTtlMs>0?{ttlMs:Y.assignmentTtlMs}:{})),Y}catch(B){return null}})},async decide(h){var S,M;let ee=A.getSessionId();if(!ee)return null;let F=(S=h.slots)!=null?S:[],T={sessionId:ee};h.sections&&h.sections.length>0&&(T.sections=h.sections.map(J=>({id:J}))),T.components=(M=h.components)!=null?M:[],F.length>0&&(T.slots=F.map(gt)),h.slotsFrom==="registry"&&(T.slotsFrom="registry"),h.v&&(T.v=h.v),e.persona&&(T.persona=e.persona);let B=JSON.stringify(T);return bt(q,B,async()=>{var J,Y,ve,fe,Oe,X;await E;try{let Le=await fetch(`${y}/decide`,{method:"POST",body:B,headers:w});if(!Le.ok)return b(F),null;let R=await Le.json(),le={};for(let W of F){let pe=(J=R.slots)==null?void 0:J[W.id];if(pe!==void 0){le[W.id]=pe,U.set(W.id,pe);continue}let Tt=U.get(W.id);if(Tt!==void 0)le[W.id]=Tt;else{let Rt=mt(W);le[W.id]=Rt,U.set(W.id,Rt)}}if(R.slots)for(let[W,pe]of Object.entries(R.slots))W in le||(le[W]=pe,U.set(W,pe));let qe=v!=null&&v.persona!=="unknown";R.persona&&!(R.persona==="unknown"&&qe)?v={persona:R.persona,confidence:(Y=R.confidence)!=null?Y:0}:v||(v={persona:"unknown",confidence:0});for(let[W,pe]of Object.entries((ve=R.assignments)!=null?ve:{}))C.set(W,j,{variantId:pe,assignedAt:Date.now(),segment:j,confidence:1});return Me(e.apiKey,_(_({v:1,persona:v.persona,band:we(v.confidence),slots:Object.fromEntries(U),layoutOrder:(fe=R.layoutOrder)!=null?fe:null,savedAt:Date.now()},R.slotConfig?{slotConfig:R.slotConfig}:{}),R.palette?{palette:R.palette}:{})),_(_(_(_({layoutOrder:(Oe=R.layoutOrder)!=null?Oe:null,assignments:(X=R.assignments)!=null?X:{},slots:le,persona:v.persona,confidence:v.confidence},R.slotConfig?{slotConfig:R.slotConfig}:{}),R.goals?{goals:R.goals}:{}),R.sectionMap?{sectionMap:R.sectionMap}:{}),R.palette?{palette:R.palette}:{})}catch(Le){return b(F),null}})},getSlotResult(h){var S;return(S=U.get(h))!=null?S:null},getPersona(){return v?{persona:v.persona,confidence:v.confidence,band:we(v.confidence)}:null},async fetchWeights(){var h;try{let S=await fetch(`${y}/weights`,{headers:w});return S.ok?(h=(await S.json()).components)!=null?h:[]:[]}catch(S){return[]}},getGraph(){return{pageNodes:[],capturedAt:0}},dispose(){var h;te==null||te(),ne=!0,L.destroy(),N.destroy(),((h=re.get(e.apiKey))==null?void 0:h.dispose)===ie.dispose&&re.delete(e.apiKey),e.debug&&console.log("[sentient] disposed")},destroy(){var h;te==null||te(),ne=!0,L.destroy(),N.destroy(),A.destroy(),C.clear(),((h=re.get(e.apiKey))==null?void 0:h.dispose)===ie.dispose&&re.delete(e.apiKey);try{localStorage.removeItem(Ze+e.apiKey),localStorage.removeItem(ln(e.apiKey)),localStorage.removeItem(cn(e.apiKey))}catch(S){}e.debug&&console.log("[sentient] destroyed")}};if(re.set(e.apiKey,{config:e,upgrade:null,dispose:ie.dispose}),te=Hr(ie,e.apiKey,h=>{E.then(()=>{ne||pn.add(h)})}),e.debug){let h=window;h.__sentient&&(h.__sentient.client=ie)}return ie}var Yr=["data-sentient-id","data-testid","data-test","data-id","data-name","data-cy"];function At(e){var t;return((t=e.textContent)!=null?t:"").replace(/\s+/g," ").trim()}function Xr(e){return{tag:e.tagName.toLowerCase(),text:At(e).slice(0,40)}}function mn(e){return e.replace(/["\\\]]/g,"\\$&")}function $e(e,t){try{return e.querySelectorAll(t).length===1}catch(n){return!1}}function hn(e,t){var n;let r=e.tagName.toLowerCase();if(!r)return null;let o=((n=e.getAttribute("class"))!=null?n:"").split(/\s+/).filter(s=>/^[a-zA-Z][\w-]*$/.test(s)),l=[r,...o.map(s=>`${r}.${s}`)];for(let s of l)if($e(t,s))return s;let i=e.parentElement;if(i&&i!==t){let s=hn(i,t);if(s){for(let d of l){let g=`${s} > ${d}`;if($e(t,g))return g}let c=Array.from(i.children).filter(d=>d.tagName.toLowerCase()===r),u=c.indexOf(e),a=c.some(d=>d!==e&&At(d)!==At(e));if(u>=0&&a){let d=`${s} > ${r}:nth-of-type(${u+1})`;if($e(t,d))return d}}}return null}function yn(e,t){let n=Xr(e),r=e.getAttribute("id");if(r&&$e(t,`#${mn(r)}`))return{v:1,id:r,fingerprint:n};for(let l of Yr){let i=e.getAttribute(l);if(i&&$e(t,`[${l}="${mn(i)}"]`))return{v:1,dataAttr:{name:l,value:i},fingerprint:n}}let o=hn(e,t);return o?{v:1,selector:o,fingerprint:n}:null}Te();var bn=["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"],Zr={banner:"hero",navigation:"navigation",contentinfo:"footer"};function Qr(e){let t=e.ariaRole?Zr[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 eo(e){return e.actionCount>=1&&e.textLength>0&&e.textLength<200?"cta":"generic"}var to=[["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]],xt=[["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]],vn={navigation:"navigation",footer:"navigation",hero:"hero",cta:"cta",generic:"generic"};function no(e){var t;let n=e.querySelector("h1, h2, h3");return((t=n==null?void 0:n.textContent)!=null?t:"").slice(0,160)}function wn(e){var t,n;let r=Qr(e);if(r)return{type:(t=vn[r])!=null?t:"generic",strength:"strong"};let o=`${e.idClass} ${e.headingText}`.toLowerCase();for(let[i,s]of to)if(s.test(o))return{type:i,strength:"strong"};for(let[i,s]of xt)if(s.test(e.bodyText))return{type:i,strength:"strong"};let l=eo(e);return{type:(n=vn[l])!=null?n:"generic",strength:"weak"}}function Sn(e){var t,n;let r=((t=e.textContent)!=null?t:"").replace(/\s+/g," ").trim(),o=e.getAttribute("role");return _({tag:e.tagName.toLowerCase(),idClass:`${e.id} ${String((n=e.className)!=null?n:"")}`,headingText:no(e),bodyText:r.slice(0,2e3),actionCount:e.querySelectorAll('a, button, [role="button"]').length,textLength:r.length},o?{ariaRole:o}:{})}Te();var ro="section, header, footer, nav, main > div, [data-sentient-section]",oo=2e4;function io(e){let t=Array.from(e.querySelectorAll(ro)),n=t.filter(r=>t.filter(o=>o!==r&&r.contains(o)).length<2);return n.filter(r=>!n.some(o=>o!==r&&o.contains(r)))}function so(e,t,n,r){try{fetch(`${t}/v1/section-map`,{method:"POST",keepalive:!0,headers:{"content-type":"application/json",authorization:`Bearer ${e}`},body:JSON.stringify({pageUrl:n,sections:r})}).catch(()=>{})}catch(o){}}var An=()=>{};function xn(e,t){var n,r,o,l,i,s,c,u,a,d,g,m;let p=(n=t.doc)!=null?n:typeof document!="undefined"?document:void 0;if(!p||typeof IntersectionObserver=="undefined"||Se()||!t.apiKey||!t.apiKey.startsWith("pk_"))return An;let f=((r=t.apiBase)!=null?r:"https://api.sentient-ui.com").replace(/\/+$/,"").replace(/\/v1$/,""),A=io(p);if(A.length===0)return An;let C=new Map,L=[];for(let b of A){let k=b.getAttribute("data-sentient-type"),O=k&&bn.includes(k)?k:null,E=Sn(b),oe=(l=O!=null?O:(o=t.typeOf)==null?void 0:o.call(t,b))!=null?l:wn(E).type,V=yn(b,p),te=V?`nc-${oe}-${Ut(JSON.stringify({id:(i=V.id)!=null?i:null,dataAttr:(s=V.dataAttr)!=null?s:null,selector:(c=V.selector)!=null?c:null})).toString(36)}`:`nc-${oe}`;C.set(b,te);let ne=xt.filter(([,ie])=>ie.test(E.bodyText)).map(([ie])=>ie);L.push(be(_({componentId:te,semanticType:oe,source:O?"markup":"auto"},V?{locator:V}:{}),{observation:_(_({tag:E.tag,idClass:E.idClass.slice(0,200),headingText:E.headingText,textLength:E.textLength,actionCount:E.actionCount},E.ariaRole?{ariaRole:E.ariaRole}:{}),ne.length>0?{patternFlags:ne}:{})}))}let y=(g=(d=(a=(u=p.defaultView)!=null?u:typeof window!="undefined"?window:void 0)==null?void 0:a.location)==null?void 0:d.pathname)!=null?g:"/";so(t.apiKey,f,y,L);let w=new Map,I=b=>{let k=w.get(b);return k||(k={ms:0,scroll:0,enterAt:null,intersecting:!1},w.set(b,k)),k},N=new IntersectionObserver(b=>{for(let k of b){let O=C.get(k.target);if(!O)continue;let E=I(O);k.isIntersecting?(E.intersecting=!0,E.enterAt=Date.now(),k.intersectionRatio>E.scroll&&(E.scroll=k.intersectionRatio)):(E.intersecting=!1,E.enterAt!=null&&(E.ms+=Date.now()-E.enterAt,E.enterAt=null))}},{threshold:[0,.25,.5,.75,1]});for(let b of C.keys())N.observe(b);let x=()=>{let b=Date.now();for(let[k,O]of w)if(O.enterAt!=null&&(O.ms+=b-O.enterAt,O.enterAt=null),!(O.ms<=0)){try{e.track({projectId:t.apiKey,componentId:k,eventType:"dwell",payload:{dwell_time:Math.round(O.ms),scroll_depth:Number(O.scroll.toFixed(2))}})}catch(E){}O.ms=0}},D=()=>{if(p.hidden)x();else{let b=Date.now();for(let k of w.values())k.intersecting&&(k.enterAt=b)}},K=!1,j=b=>{if(x(),b!=null&&b.persisted){K=!0;return}try{N.disconnect()}catch(k){}},Z=b=>{if(!(b!=null&&b.persisted)||!K)return;K=!1;let k=Date.now();for(let O of w.values())O.enterAt=O.intersecting&&!p.hidden?k:null};p.addEventListener("visibilitychange",D);let q=(m=p.defaultView)!=null?m:typeof window!="undefined"?window:void 0;q==null||q.addEventListener("pagehide",j),q==null||q.addEventListener("pageshow",Z);let U=setInterval(()=>{if(p.hidden||K)return;x();let b=Date.now();for(let k of w.values())k.intersecting&&(k.enterAt=b)},oo),v=[];return t.microSignals&&[...C.entries()].forEach(([b,k],O)=>{v.push(Be((E,oe={})=>{try{e.track({projectId:t.apiKey,componentId:k,eventType:"micro_signal",payload:_({signalType:E},oe)})}catch(V){}},b,void 0,{tabLoss:O===0}))}),()=>{x(),clearInterval(U),p.removeEventListener("visibilitychange",D),q==null||q.removeEventListener("pagehide",j),q==null||q.removeEventListener("pageshow",Z);for(let b of v)b();try{N.disconnect()}catch(b){}}}var ao=["landing","ecommerce","saas","marketplace"];function lo(e){if(typeof e!="object"||e===null||Array.isArray(e))return null;let t=Object.entries(e);if(t.length<1||t.length>4)return null;let n={};for(let[r,o]of t){if(!Array.isArray(o)||o.length<2||o.length>6||!o.every(l=>typeof l=="string"))return null;n[r]=o}return n}function co(e){return!Array.isArray(e)||e.length<2||e.length>12||!e.every(t=>typeof t=="string")?null:e}function uo(e){try{return e()}catch(t){return}}function Qe(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.apiKey!="string"||!t.apiKey.startsWith("pk_"))return null;let n=ao.includes(t.context)?t.context:"landing",r={};if(typeof t.slots=="object"&&t.slots!==null&&!Array.isArray(t.slots))for(let[i,s]of Object.entries(t.slots)){if(typeof s!="object"||s===null)continue;let c=s,u=lo(c.dims);if(!u||c.target!==void 0&&typeof c.target!="string")continue;let a=c.arms!==void 0?co(c.arms):null,d={dims:u};typeof c.target=="string"&&(d.target=c.target),a&&(d.arms=a),r[i]=d}let o={apiKey:t.apiKey,context:n,personaAttributes:t.personaAttributes===!0,slots:r};typeof t.consent=="boolean"&&(o.consent=t.consent),(t.preConsentBehavior==="statistical_winner"||t.preConsentBehavior==="control")&&(o.preConsentBehavior=t.preConsentBehavior),t.debug===!0&&(o.debug=!0),typeof t.registry=="boolean"&&(o.registry=t.registry),typeof t.editorSrc=="string"&&(o.editorSrc=t.editorSrc),typeof t.apiBase=="string"&&(o.apiBase=t.apiBase),typeof t.sectionCapture=="boolean"&&(o.sectionCapture=t.sectionCapture);let l=typeof t.persona=="function"?uo(t.persona):t.persona;if(typeof l=="string"&&l.trim()!==""&&(o.persona=l),Array.isArray(t.sections)){let i=t.sections.filter(s=>typeof s=="string"&&s.trim()!=="").slice(0,50);i.length>=2&&(o.sections=i)}return o}function et(e){var n,r,o;let t=(r=(n=e.defaultView)!=null?n:typeof window!="undefined"?window:void 0)==null?void 0:r.location;return(o=t==null?void 0:t.pathname)!=null?o:""}function fo(e,t){var n;if(t.tag&&e.tagName.toLowerCase()!==t.tag.toLowerCase())return!1;if(t.text){let r=((n=e.textContent)!=null?n:"").replace(/\s+/g," ").trim().toLowerCase(),o=t.text.replace(/\s+/g," ").trim().toLowerCase();if(!(r===o||r.startsWith(o)||o.startsWith(r)))return!1}return!0}function kn(e,t){return!!(e!=null&&e.urlMatch)&&!et(t).includes(e.urlMatch)}var po=/^[a-zA-Z_][-a-zA-Z0-9_]*$/;function ge(e,t){var o;if(e.urlMatch&&!et(t).includes(e.urlMatch))return null;let n=[];if(e.id){let l=t.getElementById(e.id);n=l?[l]:[]}if(n.length===0&&((o=e.dataAttr)!=null&&o.name)&&po.test(e.dataAttr.name))try{let l=e.dataAttr.value.replace(/["\\]/g,"\\$&");n=Array.from(t.querySelectorAll(`[${e.dataAttr.name}="${l}"]`))}catch(l){n=[]}if(n.length===0&&e.selector)try{n=Array.from(t.querySelectorAll(e.selector))}catch(l){n=[]}if(n.length!==1)return null;let r=n[0];return e.fingerprint&&!fo(r,e.fingerprint)?null:r}var En={color:"color",background:"background",fontSize:"font-size",fontWeight:"font-weight",textAlign:"text-align",padding:"padding",margin:"margin",borderRadius:"border-radius",width:"width",height:"height",maxWidth:"max-width",border:"border",boxShadow:"box-shadow",opacity:"opacity",lineHeight:"line-height",letterSpacing:"letter-spacing",textTransform:"text-transform",gap:"gap",fontFamily:"font-family"},go=/^(rgb|rgba|hsl|hsla|calc|var|min|max|clamp)$/i;function Cn(e){var r;if(e.trim().length===0||/[;{}<>]/.test(e))return!1;let t=/([A-Za-z-]*)\(/g,n;for(;(n=t.exec(e))!==null;)if(!go.test((r=n[1])!=null?r:""))return!1;return!0}var _n=/^https:\/\//i,In=new Map,me=null;function mo(e){return e.replace(/["\\]/g,"\\$&")}function ho(e){var t;(!me||!me.isConnected)&&(me=e.querySelector("style[data-sentient-ops]"),me||(me=e.createElement("style"),me.setAttribute("data-sentient-ops",""),((t=e.head)!=null?t:e.documentElement).appendChild(me))),me.textContent=[...In.entries()].map(([n,r])=>`[data-snt-e="${mo(n)}"]{${r}}`).join(`
|
|
2
|
-
`)}function On(e,t,n,r){var s;let o=!1,l=(s=t.moveBefore)!=null?s:t.moveAfter;if(l){let c=ge(l,r);!c||c===e||c.parentElement!==e.parentElement||!e.parentElement?o=!0:t.moveBefore?e.parentElement.insertBefore(e,c):e.parentElement.insertBefore(e,c.nextSibling)}typeof t.text=="string"&&(e.textContent=t.text),typeof t.href=="string"&&_n.test(t.href)&&e.setAttribute("href",t.href),typeof t.imageSrc=="string"&&_n.test(t.imageSrc)&&e.setAttribute("src",t.imageSrc),typeof t.imageAlt=="string"&&e.setAttribute("alt",t.imageAlt);let i=[];if(t.hidden&&i.push("display:none !important"),t.style)for(let[c,u]of Object.entries(t.style)){let a=En[c];a&&typeof u=="string"&&Cn(u)&&i.push(`${a}:${u.trim()} !important`)}return i.length>0&&(e.setAttribute("data-snt-e",n),In.set(n,i.join(";")),ho(r)),{anchorMiss:o}}var Ke="data-sentient-block-arm",se=null;function je(e){se=e!=null?e:null}var ue="data-sentient-blocks-hid",tt={none:"0",sm:"8px",md:"16px",lg:"24px"},kt={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch",between:"space-between"},Ln={sm:"0.875em",md:"1em",lg:"1.25em"},yo={sm:"1.25em",md:"1.5em",lg:"2em"},vo={sm:"6px 14px",md:"10px 20px",lg:"14px 28px"},Tn={sm:"8px",md:"16px",lg:"32px"},bo={square:"1 / 1",landscape:"4 / 3",wide:"16 / 9"},wo={normal:"400",medium:"500",bold:"700"};function ce(e,t){for(let[n,r]of Object.entries(t))r!==void 0&&e.style.setProperty(n,r);return e}function Rn(e){return{opacity:e==="muted"?"0.7":void 0,"font-weight":e==="accent"?"600":void 0}}function Pn(e,t){var n,r,o,l,i,s,c,u,a,d,g,m;try{switch(e.type){case"stack":case"grid":{let p=t.createElement("div");if(e.type==="stack"){let f=e;ce(p,{display:"flex","flex-direction":f.direction,gap:(r=tt[(n=f.gap)!=null?n:"md"])!=null?r:tt.md,"align-items":f.align?kt[f.align]:void 0,"justify-content":f.justify?kt[f.justify]:void 0,"flex-wrap":f.wrap?"wrap":void 0})}else{let f=e,A=(l=tt[(o=f.gap)!=null?o:"md"])!=null?l:tt.md;ce(p,{display:"grid","grid-template-columns":`repeat(auto-fit, minmax(max(200px, calc((100% - ${f.columns-1} * ${A}) / ${f.columns})), 1fr))`,gap:A,"align-items":f.align?kt[f.align]:void 0})}for(let f of(i=e.children)!=null?i:[]){let A=Pn(f,t);A&&p.appendChild(A)}return p}case"text":{let p=t.createElement("p");return p.textContent=e.value,ce(p,Q({margin:"0","font-size":e.size?Ln[e.size]:void 0,"font-weight":e.weight?wo[e.weight]:void 0,"text-align":e.align},Rn(e.tone)))}case"heading":{let p=t.createElement(`h${e.level}`);return p.textContent=e.value,ce(p,{margin:"0","font-size":yo[(s=e.size)!=null?s:"md"],"text-align":e.align})}case"button":{let p=t.createElement("a");p.textContent=e.label,p.href=e.href,e.tag&&p.setAttribute("data-sentient-tag",e.tag);let f=(c=e.emphasis)!=null?c:"primary";return ce(p,{display:"inline-block",padding:vo[(u=e.size)!=null?u:"md"],"border-radius":(a=se==null?void 0:se.radius)!=null?a:"8px",font:"inherit","font-size":e.size?Ln[e.size]:void 0,"text-decoration":f==="ghost"?"underline":"none",cursor:"pointer",background:f==="primary"?(d=se==null?void 0:se.primaryBg)!=null?d:"#111827":"transparent",color:f==="primary"?(g=se==null?void 0:se.primaryText)!=null?g:"#ffffff":"inherit",border:f==="secondary"?"1px solid currentColor":"none"})}case"link":{let p=t.createElement("a");return p.textContent=e.label,p.href=e.href,e.tag&&p.setAttribute("data-sentient-tag",e.tag),ce(p,{color:"inherit","text-decoration":"underline"})}case"image":{let p=t.createElement("img");return p.src=e.src,p.alt=e.alt,ce(p,{display:"block","max-width":"100%","aspect-ratio":e.ratio&&e.ratio!=="auto"?bo[e.ratio]:void 0,"object-fit":e.fit,width:e.ratio&&e.ratio!=="auto"?"100%":void 0})}case"badge":{let p=t.createElement("span");return p.textContent=e.value,ce(p,Q({display:"inline-block",padding:"2px 10px","border-radius":"999px","font-size":"0.75em",border:"1px solid currentColor"},Rn(e.tone)))}case"spacer":return ce(t.createElement("div"),{height:(m=Tn[e.size])!=null?m:Tn.md});default:return null}}catch(p){return null}}function Dn(e,t,n,r){try{let o=new Set;for(let i of Array.from(e.children)){let s=i.getAttribute(Ke);s!==null&&(t[s]===void 0?i.remove():o.add(s))}for(let[i,s]of Object.entries(t)){if(o.has(i))continue;let c=Pn(s,r);if(!c)continue;let u=r.createElement("div");u.setAttribute(Ke,i),u.style.display="none",u.appendChild(c),e.appendChild(u)}let l=n!==void 0&&t[n]!==void 0;for(let i of Array.from(e.children)){let s=i.getAttribute(Ke),c=i;s!==null?c.style.display=l&&s===n?"":"none":l?c.hasAttribute(ue)||(c.setAttribute(ue,c.style.display),c.style.display="none"):c.hasAttribute(ue)&&(c.style.display=c.getAttribute(ue),c.removeAttribute(ue))}}catch(o){}}function So(e){try{for(let t of Array.from(e.children)){let n=t;if(n.getAttribute(Ke)!==null){n.remove();continue}n.hasAttribute(ue)&&(n.style.display=n.getAttribute(ue),n.removeAttribute(ue))}}catch(t){}}function nt(e,t){try{let n=new Set;for(let r of Array.from(e.querySelectorAll(`[${Ke}]`)))r.parentElement&&n.add(r.parentElement);for(let r of Array.from(e.querySelectorAll(`[${ue}]`)))r.parentElement&&n.add(r.parentElement);for(let r of n)t.has(r)||So(r)}catch(n){}}function Et(e,t){if(!e)return[t.documentElement];try{return Array.from(t.querySelectorAll(e))}catch(n){return[]}}function rt(e,t,n){n.documentElement.setAttribute("data-sentient-persona",e),n.documentElement.setAttribute("data-sentient-confidence",t)}function ot(e,t,n){var r;for(let[o,l]of Object.entries(t)){let i=e[o];if(!i||typeof i=="string")continue;let s=Et(l.target,n);for(let c of s)for(let[u,a]of Object.entries(i))(r=l.dims[u])!=null&&r.includes(a)&&c.setAttribute(`data-${u}`,a)}}function it(e,t,n){for(let[r,o]of Object.entries(t)){let l=e[r];if(typeof l!="string"||!o.arms||!o.arms.includes(l))continue;let i=Et(o.target,n);for(let s of i)s.setAttribute("data-sentient-arm",l)}}function st(e,t,n,r){var s,c;let o=new Set,l=(s=r==null?void 0:r.contentAndOps)!=null?s:!0,i=[];for(let[u,a]of Object.entries(t)){if(kn(a.locator,n))continue;let d;if(a.locator){let m=ge(a.locator,n);d=m?[m]:[]}else d=Et(a.target,n);(a.locator||a.target)&&d.length===0&&i.push(u);let g=e[u];for(let m of d){if(g!==void 0)if(typeof g=="string")m.setAttribute("data-sentient-arm",g),l&&((c=r==null?void 0:r.onApplied)==null||c.call(r,u,g,m));else for(let[p,f]of Object.entries(g))m.setAttribute(`data-${p}`,f);a.blocks&&!xo(n)&&(Dn(m,a.blocks,typeof g=="string"?g:void 0,n),o.add(m)),l&&(typeof a.content=="string"&&(m.textContent=a.content),a.ops&&On(m,a.ops,u,n).anchorMiss&&!i.includes(u)&&i.push(u))}}return nt(n,o),i}var Ao=/bot|crawler|spider|crawling|googlebot|bingbot|duckduckbot|baiduspider|yandexbot|slurp|gptbot|claudebot|anthropic|perplexity|ccbot|applebot|headlesschrome/i;function xo(e){var t,n,r;try{let o=(n=(t=e.defaultView)!=null?t:typeof window!="undefined"?window:void 0)==null?void 0:n.navigator;return o?o.webdriver===!0?!0:Ao.test((r=o.userAgent)!=null?r:""):!1}catch(o){return!1}}var ko=800;function at(e,t,n){let r=[];return n.forEach(({slotId:o,arm:l,el:i},s)=>{r.push(Be((g,m={})=>{try{e.track({projectId:t,componentId:o,variantId:l,eventType:"micro_signal",payload:Q({signalType:g},m)})}catch(p){}},i,void 0,{tabLoss:s===0}));let c=null,u=0,a=()=>{u=Date.now(),c=setTimeout(()=>{try{e.track({projectId:t,componentId:o,variantId:l,eventType:"cursor_signal",payload:{hoverDuration:Date.now()-u}})}catch(g){}c=null},ko)},d=()=>{c!==null&&(clearTimeout(c),c=null)};i.addEventListener("mouseenter",a),i.addEventListener("mouseleave",d),r.push(()=>{i.removeEventListener("mouseenter",a),i.removeEventListener("mouseleave",d),c!==null&&clearTimeout(c)})}),()=>{for(let o of r)o()}}function Eo(e,t){if(!e)return!1;if(e==="/")return t==="/";let n=e.endsWith("/")?e.slice(0,-1):e;return t===n||t.startsWith(`${n}/`)}function Bn(e){return e?`_snt_fired_goals_${e.slice(0,12)}`:"_snt_fired_goals"}var Co="_snt_fired_goals";function Nn(e,t){try{e==null||e.sessionStorage.removeItem(Bn(t)),e==null||e.sessionStorage.removeItem(Co)}catch(n){}}function Mn(e){var t;return[(t=e.slotId)!=null?t:"",e.goalId,e.event,e.locator?JSON.stringify(e.locator):""].join("|")}function _o(e,t){try{let n=e==null?void 0:e.sessionStorage.getItem(t);if(!n)return new Set;let r=JSON.parse(n);return Array.isArray(r)?new Set(r.filter(o=>typeof o=="string")):new Set}catch(n){return new Set}}function Io(e,t,n){try{e==null||e.sessionStorage.setItem(t,JSON.stringify([...n]))}catch(r){}}function lt(e,t,n,r){var C,L;let o=(C=n.defaultView)!=null?C:typeof window!="undefined"?window:null,l=Bn(r),i=_o(o,l),s=y=>{let w=Mn(y);if(!i.has(w))try{y.slotId?t.componentGoal(y.slotId,y.goalId):t.goal(y.goalId),i.add(w),Io(o,l,i)}catch(I){}},c=e.filter(y=>y.event==="click"),u=e.filter(y=>y.event==="form_submit"),a=e.filter(y=>y.event==="url_reached"),d=e.filter(y=>y.event==="scroll_depth"),g=(y,w)=>{if(!y.locator)return!1;let I=ge(y.locator,n);return!!I&&(I===w||I.contains(w))},m=y=>{let w=y.target;if(!(!w||typeof w.closest!="function"))for(let I of c)g(I,w)&&s(I)},p=y=>{let w=y.target;if(w)for(let I of u)g(I,w)&&s(I)},f=()=>{if(a.length===0)return;let y=et(n);for(let w of a)w.urlPattern&&Eo(w.urlPattern,y)&&s(w)},A=()=>{var I;let y=n.documentElement,w=y.scrollHeight>0?(y.scrollTop+y.clientHeight)/y.scrollHeight:0;for(let N of d)w>=((I=N.threshold)!=null?I:.75)&&s(N);d.every(N=>i.has(Mn(N)))&&n.removeEventListener("scroll",A)};return n.addEventListener("click",m,!0),n.addEventListener("submit",p,!0),(L=n.defaultView)==null||L.addEventListener("popstate",f),f(),d.length>0&&(n.addEventListener("scroll",A,{passive:!0}),A()),{checkUrl:f,teardown:()=>{var y;n.removeEventListener("click",m,!0),n.removeEventListener("submit",p,!0),(y=n.defaultView)==null||y.removeEventListener("popstate",f),d.length>0&&n.removeEventListener("scroll",A)}}}var $n="__snt_editor_token";function Kn(){try{return typeof sessionStorage!="undefined"?sessionStorage.getItem($n):null}catch(e){return null}}function jn(e){try{sessionStorage.setItem($n,e)}catch(t){}}var ze="0.23.0",dt=ze!=="0.0.0-dev"?{name:"snippet",version:ze}:void 0,Vn=5e3,Oo=50,Jn=(()=>{try{if(typeof window=="undefined")return[];let e=window.SentientSnippet;return Array.isArray(e==null?void 0:e.q)?e.q:[]}catch(e){return[]}})(),H=null,P=null,de={},ye=null,G=null,he=null,z=null,ae=null,$=null,Ae=null,Gn=!1,Ct=null,ct=null,ft=null,Ce=!1,Ge=!1,ke=!1;function Yn(e,t){let n,r=new Promise(o=>{n=setTimeout(()=>o(null),t)});return Promise.race([e,r]).then(o=>(clearTimeout(n),o),o=>{throw clearTimeout(n),o})}function xe(e,...t){e!=null&&e.debug&&console.log("[sentient-snippet]",...t)}function _e(e,t){return H?(H.personaAttributes&&$&&rt($.persona,$.band,e),ot(de,H.slots,e),it(de,H.slots,e),ye?st(de,ye,e,t):(nt(e,new Set),[])):[]}function Xn(e){var n;let t=new Map;for(let r of(n=H==null?void 0:H.sections)!=null?n:[])try{let o=e.querySelectorAll(r);o.length===1&&t.set(r,o[0])}catch(o){}return t}function _t(e,t){try{if(!e||e.length<2||new Set(e).size!==e.length)return;let n=Xn(t);if(n.size!==e.length)return;let r=[];for(let i of e){let s=n.get(i);if(!s)return;r.push(s)}let o=r[0].parentNode;if(!o||!r.every(i=>i.parentNode===o))return;let l=r.slice().sort((i,s)=>i.compareDocumentPosition(s)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1);for(let i=0;i<r.length;i++){let s=r[i];l[i]!==s&&(o.insertBefore(s,l[i]),l.splice(l.indexOf(s),1),l.splice(i,0,s))}}catch(n){}}function Zn(e){return e.apiBase?`${e.apiBase.replace(/\/+$/,"")}/v1/events`:void 0}function Lo(e,t){var n;if(t.length!==0)try{let r=(n=e.apiBase)!=null?n:"https://api.sentient-ui.com";fetch(`${r}/v1/locator-miss`,{method:"POST",keepalive:!0,headers:{"content-type":"application/json",authorization:`Bearer ${e.apiKey}`},body:JSON.stringify({slots:t})}).catch(()=>{})}catch(r){}}function Ie(){return!!(H&&P&&H.sectionCapture!==!1&&(H.consent!==!1||Ge)&&!Se())}function To(){if(!P||!H||!Ie()||ae)return;let e=[];_e(document,{contentAndOps:Ce,onApplied:(t,n,r)=>e.push({slotId:t,arm:n,el:r})}),Ot();try{z==null||z(),z=at(P,H.apiKey,e)}catch(t){}}function Ot(){if(typeof document=="undefined"||!Ie())return;let e;try{if(ct&&ct.length>0){let t=new Map;for(let n of ct){if(n.urlMatch!==window.location.pathname)continue;let r=ge(n.locator,document);r&&t.set(r,n.type)}t.size>0&&(e=n=>{var r;return(r=t.get(n))!=null?r:null})}}catch(t){}try{ae=xn(P,Q({apiKey:H.apiKey,apiBase:H.apiBase,doc:document,microSignals:!0},e?{typeOf:e}:{})),ft=window.location.pathname}catch(t){}}function Lt(){try{let e=[];if(z==null||z(),z=null,_e(document,{contentAndOps:Ce,onApplied:(t,n,r)=>e.push({slotId:t,arm:n,el:r})}),_t(Ae,document),e.length>0&&Ie())try{z=at(P,H.apiKey,e)}catch(t){}try{typeof window!="undefined"&&ft!==null&&window.location.pathname!==ft&&Ie()&&(ae==null||ae(),ae=null,Ot())}catch(t){}}catch(e){}}function Un(){Ct===null&&(Ct=setTimeout(()=>{Ct=null,Lt();try{G==null||G.checkUrl()}catch(e){}},Oo))}function It(){if(!(Gn||typeof window=="undefined"||typeof history=="undefined")){Gn=!0;try{let e=t=>{let n=history[t];history[t]=function(r,o,l){let i=n.call(this,r,o,l!=null?l:null);return Un(),i}};e("pushState"),e("replaceState"),window.addEventListener("popstate",Un)}catch(e){}}}function ut(e){let t={};for(let[n,r]of Object.entries(e.slots))try{t[n]=r.target?document.querySelectorAll(r.target).length:1}catch(o){t[n]=0}return t}function Qn(e){return new URLSearchParams(e).get("sentient_editor")}function Ro(){try{let e=Array.from(document.getElementsByTagName("script")),t=/(^|\/)snippet(\.global)?\.js(\?|$)/,n=e.find(r=>t.test(r.src));if(n!=null&&n.src)return n.src.replace(t,"$1editor.global.js$3")}catch(e){}return null}function Po(e,t){var n,r,o,l;try{window.__sentientEditor={token:t,apiBase:(n=e.apiBase)!=null?n:"https://api.sentient-ui.com"};try{let c=document.createElement("meta");c.name="referrer",c.content="no-referrer",c.setAttribute("data-sentient-editor",""),((r=document.head)!=null?r:document.documentElement).appendChild(c)}catch(c){}let i=(o=e.editorSrc)!=null?o:Ro();if(!i){qn();return}let s=document.createElement("script");s.src=i,s.async=!0,s.onerror=()=>qn(),((l=document.head)!=null?l:document.documentElement).appendChild(s)}catch(i){}}var zn="sentient-editor-load-notice",er={position:"fixed",bottom:"16px",zIndex:"2147483647",background:"#111827",color:"#fff",boxShadow:"0 10px 34px rgba(0,0,0,0.45)"};function qn(){var e,t;try{if(typeof document=="undefined"||document.getElementById(zn))return;(e=document.querySelector('meta[name="referrer"][data-sentient-editor]'))==null||e.remove();let n=document.createElement("div");n.id=zn,n.textContent="Couldn\u2019t load the editor \u2014 check your connection and reopen it from your dashboard.",Object.assign(n.style,er,{right:"16px",maxWidth:"320px",padding:"14px 16px",borderRadius:"14px",font:"13px/1.45 system-ui, sans-serif",border:"1px solid rgba(245,158,11,0.6)",cursor:"pointer"}),n.addEventListener("click",()=>n.remove()),((t=document.body)!=null?t:document.documentElement).appendChild(n),setTimeout(()=>n.remove(),1e4)}catch(n){}}function tr(e){let t=new URLSearchParams(e).get("sentient_preview");if(!t)return null;let n={};for(let r of t.split("|")){let o=r.indexOf(":"),l=o===-1?"":r.slice(0,o),i=o===-1?"":r.slice(o+1);if(!(!l||!i))if(i.includes("=")){let s={};for(let c of i.split(",")){let[u,a]=c.split("=");u&&a&&(s[u]=a)}Object.keys(s).length&&(n[l]=s)}else n[l]=i}return Object.keys(n).length?n:null}function nr(e){try{return new URLSearchParams(e).get("sentient_persona")||null}catch(t){return null}}var Fn="sentient-persona-preview-banner";function Wn(e,t){var n;try{if(typeof document=="undefined"||document.getElementById(Fn))return;let r=e.charAt(0).toUpperCase()+e.slice(1).replace(/[_-]+/g," "),o=document.createElement("div");o.id=Fn,o.setAttribute("role","status"),Object.assign(o.style,er,{left:"50%",transform:"translateX(-50%)",display:"flex",alignItems:"center",gap:"12px",padding:"10px 14px",borderRadius:"999px",font:"13px/1 system-ui, sans-serif",border:"1px solid rgba(255,255,255,0.14)"});let l=document.createElement("span");l.textContent=t?`\u201C${e}\u201D isn\u2019t in your personas \u2014 showing the default experience`:`Previewing as ${r}`;let i=document.createElement("button");i.type="button",i.textContent="Exit preview",Object.assign(i.style,{cursor:"pointer",border:"1px solid rgba(255,255,255,0.3)",background:"transparent",color:"#fff",font:"inherit",padding:"4px 10px",borderRadius:"999px"}),i.addEventListener("click",()=>{try{let s=new URL(window.location.href);s.searchParams.delete("sentient_persona"),window.location.href=s.pathname+s.search+s.hash}catch(s){}}),o.appendChild(l),o.appendChild(i),((n=document.body)!=null?n:document.documentElement).appendChild(o)}catch(r){}}async function Do(e,t){var u,a,d,g,m,p,f,A,C,L;let n=(u=e.apiBase)!=null?u:"https://api.sentient-ui.com",o=((a=e.registry)!=null?a:Object.keys(e.slots).length===0)?{persona:t,slotsFrom:"registry"}:{persona:t,slots:Object.entries(e.slots).map(([y,w])=>({id:y,dims:w.dims}))},l=await Yn(fetch(`${n}/v1/explain`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${e.apiKey}`},body:JSON.stringify(o)}).then(y=>y.ok?y.json():null).catch(()=>null),Vn);if(!l){Ue(e),xe(e,"persona preview: explain unavailable \u2014 page left as-is");return}let i=l;de=(d=i.slots)!=null?d:{},ye=(g=i.slotConfig)!=null?g:null,je(i.palette);let s=(f=(p=(m=i.personaAttributes)==null?void 0:m.persona)!=null?p:i.persona)!=null?f:t,c=(C=(A=i.personaAttributes)==null?void 0:A.confidence)!=null?C:"high";$={persona:s,band:c},_e(document),Ce=!0,It(),Ue(e),i.recognized===!1?Wn(t,!0):Wn((L=i.personaDisplay)!=null?L:s)}function Ue(e){let t={goal(n,r){try{P==null||P.goal(n,r)}catch(o){}},componentGoal(n,r){try{P==null||P.componentGoal(n,r)}catch(o){}},grantConsent(){try{!P&&ke?(P=Ne(Q({apiKey:e.apiKey,context:e.context,consent:!0,preConsentBehavior:e.preConsentBehavior,debug:e.debug,persona:e.persona,ingestUrl:Zn(e)},dt?{sdk:dt}:{})),he&&he.length>0&&(G==null||G.teardown(),G=lt(he,P,document,e.apiKey))):(St(e.apiKey),P&&he&&he.length>0&&(G==null||G.teardown(),G=lt(he,P,document,e.apiKey))),ke=!1}catch(n){}Ge=!0;try{To()}catch(n){}},revokeConsent(){try{ae==null||ae(),ae=null,ft=null,z==null||z(),z=null,G==null||G.teardown(),G=null,Nn(typeof window!="undefined"?window:null,e.apiKey),Ge=!1,ke=!0,P==null||P.destroy(),P=null}catch(n){}},reapply:Lt,getState(){var n,r;try{return{apiKey:e.apiKey,persona:(n=$==null?void 0:$.persona)!=null?n:null,band:(r=$==null?void 0:$.band)!=null?r:null,slots:de,matchCounts:ut(e),consent:!ke&&(e.consent!==!1||Ge)}}catch(o){return{apiKey:e.apiKey,persona:null,band:null,slots:{},matchCounts:{},consent:!1}}}};window.SentientSnippet=t;for(let n of Jn.splice(0))try{n[0]==="goal"&&t.goal(n[1],n[2])}catch(r){}}function Hn(){var e;try{if(typeof window=="undefined")return;let t=window;if(typeof((e=t.SentientSnippet)==null?void 0:e.goal)=="function")return;let n=()=>{};t.SentientSnippet={goal:n,componentGoal:n,grantConsent:n,revokeConsent:n,reapply:n,getState:()=>({apiKey:"",persona:null,band:null,slots:{},matchCounts:{},consent:!1})},Jn.length=0}catch(t){}}async function rr(){var e;try{let t=Qe(window.sentient);if(!t){Hn();return}H=t,Ce=!1,Ae=null,je(null),Ge=!1,ke=!1,he=null;let n=typeof window!="undefined"?Qn(window.location.search):null;if(n){jn(n);try{let f=new URL(window.location.href);f.searchParams.delete("sentient_editor"),window.history.replaceState(null,"",f.pathname+f.search+f.hash)}catch(f){}}let r=n!=null?n:Kn();if(r){Po(t,r),Ue(t),xe(t,"editor mode");return}let o=typeof window!="undefined"?tr(window.location.search):null;if(o){de=o,$=null,_e(document),It(),Ue(t),xe(t,"preview mode",o);return}let l=typeof window!="undefined"?nr(window.location.search):null;if(l){await Do(t,l),xe(t,"persona preview",l);return}let i=(e=t.registry)!=null?e:Object.keys(t.slots).length===0,s=De(t.apiKey);s&&($={persona:s.persona,band:s.band},de=s.slots,s.slotConfig&&(ye=s.slotConfig),s.palette&&je(s.palette),_e(document,{contentAndOps:!1}),s.layoutOrder&&(Ae=s.layoutOrder,_t(Ae,document)));let c=Ne(Q({apiKey:t.apiKey,context:t.context,consent:t.consent,preConsentBehavior:t.preConsentBehavior,debug:t.debug,persona:t.persona,ingestUrl:Zn(t)},dt?{sdk:dt}:{}));P=c,Ue(t),It();let u=Object.entries(t.slots).map(([f,A])=>({id:f,dims:A.dims})),a=ze!=="0.0.0-dev"?{v:ze}:{},d=Array.from(Xn(document).keys()),g=c.decide(Q(Q(Q({slots:u},a),d.length>=2?{sections:d}:{}),i?{slotsFrom:"registry"}:{})),m=await Yn(g,Vn),p=f=>{var L,y,w,I,N,x;let A=c.getPersona();A?$={persona:A.persona,band:A.band}:f.persona&&($={persona:f.persona,band:"low"}),de=f.slots,i?ye=(L=f.slotConfig)!=null?L:null:f.slotConfig&&(ye=f.slotConfig),f.palette&&je(f.palette),Ae=(y=f.layoutOrder)!=null?y:Ae;let C=()=>{let D=[];if(Lo(t,_e(document,{onApplied:(K,j,Z)=>D.push({slotId:K,arm:j,el:Z})})),_t(Ae,document),Ce=!0,Ie())try{z==null||z(),z=at(P,t.apiKey,D)}catch(K){}};if(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",C,{once:!0}):C(),he=(w=f.goals)!=null?w:null,f.goals&&f.goals.length>0&&t.consent!==!1&&P)try{G==null||G.teardown(),G=lt(f.goals,P,document,t.apiKey)}catch(D){}ct=(I=f.sectionMap)!=null?I:null,Ie()&&Ot(),xe(t,"applied",{persona:$,slots:de,matches:ut(t)}),!ke&&Me(t.apiKey,Q(Q({v:1,persona:(N=$==null?void 0:$.persona)!=null?N:f.persona,band:(x=$==null?void 0:$.band)!=null?x:"low",slots:f.slots,layoutOrder:f.layoutOrder,savedAt:Date.now()},ye?{slotConfig:ye}:{}),f.palette?{palette:f.palette}:{}))};if(!m){xe(t,"decide timeout/null \u2014 snapshot state stands",ut(t)),g.then(f=>{!f||Ce||ke||P!==c||(p(f),xe(t,"late decide applied",ut(t)))}).catch(()=>{});return}p(m)}catch(t){Hn()}}if(typeof window!="undefined"&&window.sentient){let e=window;e.__sentientInitialized||(e.__sentientInitialized=!0,Promise.resolve().then(()=>{rr()}))}return lr(Mo);})();
|
|
1
|
+
"use strict";var SentientSnippet=(()=>{var Fe=Object.defineProperty;var ir=Object.getOwnPropertyDescriptor;var ar=Object.getOwnPropertyNames,Dt=Object.getOwnPropertySymbols;var Bt=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable;var Mt=(e,t,n)=>t in e?Fe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,H=(e,t)=>{for(var n in t||(t={}))Bt.call(t,n)&&Mt(e,n,t[n]);if(Dt)for(var n of Dt(t))sr.call(t,n)&&Mt(e,n,t[n]);return e};var Nt=(e,t)=>()=>(e&&(t=e(e=0)),t);var $t=(e,t)=>{for(var n in t)Fe(e,n,{get:t[n],enumerable:!0})},lr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ar(t))!Bt.call(e,o)&&o!==n&&Fe(e,o,{get:()=>t[o],enumerable:!(r=ir(t,o))||r.enumerable});return e};var cr=e=>lr(Fe({},"__esModule",{value:!0}),e);var ur,dr,fr,Kt,pr,gr,jt,_,be,Re=Nt(()=>{"use strict";ur=Object.defineProperty,dr=Object.defineProperties,fr=Object.getOwnPropertyDescriptors,Kt=Object.getOwnPropertySymbols,pr=Object.prototype.hasOwnProperty,gr=Object.prototype.propertyIsEnumerable,jt=(e,t,n)=>t in e?ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_=(e,t)=>{for(var n in t||(t={}))pr.call(t,n)&&jt(e,n,t[n]);if(Kt)for(var n of Kt(t))gr.call(t,n)&&jt(e,n,t[n]);return e},be=(e,t)=>dr(e,fr(t))});var Zt={};$t(Zt,{LOCAL_ENGINE_AVAILABLE:()=>Sr,createLocalEngine:()=>Ar});function Ar(e){throw new Error("[sentient] createLocalEngine is not available in production builds. The local engine only exists under the `development` export condition.")}var Sr,Qt=Nt(()=>{"use strict";Sr=!1});var $o={};$t($o,{applyPersonaAttributes:()=>rt,applyRegistrySlots:()=>at,applySlotArms:()=>it,applySlotAttributes:()=>ot,parseEditorToken:()=>er,parsePersonaPreview:()=>rr,parsePreview:()=>nr,parseSnippetConfig:()=>Qe,planReorder:()=>ct,reapply:()=>Rt,run:()=>or,version:()=>ze});Re();var mr=["buyer","researcher","deal_seeker","browser"];var hr={buyer:"Buyer",researcher:"Researcher",deal_seeker:"Deal seeker",browser:"Browser",unknown:"Unknown"};function We(e){return Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join("|")}function Gt(e){if(e.length===0)return null;let t={};for(let n of e.split("|")){let r=n.indexOf("=");if(r<=0||r!==n.lastIndexOf("=")||r===n.length-1)return null;let o=n.slice(0,r);if(o in t)return null;t[o]=n.slice(r+1)}return t}function gt(e){var t,n,r;if(e.arms)return typeof e.baseline=="string"?e.baseline:(t=e.arms[0])!=null?t:"";if(e.baseline!==void 0&&typeof e.baseline=="object")return We(e.baseline);if(typeof e.baseline=="string")return e.baseline;let o={};for(let[l,i]of Object.entries((n=e.dims)!=null?n:{}))o[l]=(r=i[0])!=null?r:"";return We(o)}function Ut(e,t){var n,r;return e.dims!=null?(r=(n=Gt(t))!=null?n:Gt(gt(e)))!=null?r:{}:t}function zt(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t}function we(e){return e>=.3?e<.7?"medium":"high":"low"}var Go=mr.map(e=>({key:e,displayName:hr[e]}));function He(e){return e?`_${e.slice(0,12)}`:""}var yr="_snt_uid";function qt(e){return`${yr}${He(e)}`}var vr=["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 Ft(e){return br(e)!==null}function br(e){var t;if(!e)return null;let n=e.toLowerCase();return(t=vr.find(r=>n.includes(r.toLowerCase())))!=null?t:null}function Wt(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 Ht(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(o){}let r=n.hostname.toLowerCase();return/(^|\.)(google|bing|duckduckgo|yahoo)\./.test(r)?"search":/(^|\.)(twitter\.com|x\.com|facebook\.com|linkedin\.com|reddit\.com|t\.co)$/.test(r)?"social":"referral"}catch(n){return"direct"}}function Vt(e){if(!e)return null;try{return new URL(e).hostname}catch(t){return null}}var wr=["gclid","gbraid","wbraid","fbclid","ttclid","msclkid","twclid","li_fat_id"];function Jt(e){let t={},n={};try{let r=typeof e=="string"||e instanceof URLSearchParams?new URLSearchParams(e):Object.entries(e).flatMap(([o,l])=>{let i=Array.isArray(l)?l[0]:l;return i===void 0?[]:[[o,i]]});for(let[o,l]of r)o.startsWith("utm_")?o in t||(t[o]=l):wr.includes(o)&&(o in n||(n[o]=l))}catch(r){}return{utmParams:t,clickIds:n}}function Yt(e){let t=e.getHours();return t<6?"night":t<12?"morning":t<18?"afternoon":"evening"}function mt(e){return _(_(_({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 ht(e){let t=mt(e);return Ut(t,gt(t))}function Xt(e){return typeof e=="string"?e:We(e)}Re();function on(){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)})}var xr="_snt_uid",kr=365,Ve="_snt_uid";function Er(){return on()}function en(e){try{let t=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return t?decodeURIComponent(t[1]):null}catch(t){return null}}function Cr(e,t,n){try{document.cookie=`${e}=${encodeURIComponent(t)}; max-age=${n}; SameSite=strict; path=/`}catch(r){}}function yt(e){try{return localStorage.getItem(e)}catch(t){return null}}function tn(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return!1}}function nn(e){try{return sessionStorage.getItem(e)}catch(t){return null}}function _r(e,t){try{return sessionStorage.setItem(e,t),!0}catch(n){return!1}}function Ir(e){try{sessionStorage.removeItem(e)}catch(t){}}function Or(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 Lr(e){try{localStorage.removeItem(e)}catch(t){}}function Rr(e){try{document.cookie=`${e}=; max-age=0; SameSite=strict; path=/`}catch(t){}}var Tr={getSessionId:()=>null,isEphemeral:()=>!1,destroy:()=>{}};function an(e){var t,n,r,o,l,i,a;if(typeof window=="undefined")return Tr;let s=He(e==null?void 0:e.apiKey),u=(t=e==null?void 0:e.cookieName)!=null?t:qt(e==null?void 0:e.apiKey),c=`${Ve}${s}`,d=`${Ve}_tomb${s}`,g=((n=e==null?void 0:e.cookieTTLDays)!=null?n:kr)*24*60*60,w=v=>v&&v.length>0?v:null,p=()=>{var v,I;return s&&!(e!=null&&e.cookieName)&&yt(d)===null?(I=(v=w(en(xr)))!=null?v:w(yt(Ve)))!=null?I:w(nn(Ve)):null},m=(a=(i=(l=(o=(r=w(en(u)))!=null?r:w(yt(c)))!=null?o:w(nn(c)))!=null?l:p())!=null?i:w(e==null?void 0:e.ssrSessionId))!=null?a:Er();Cr(u,m,g);let A=tn(c,m),C=Or(u),R=A?!1:_r(c,m),f=!A&&!C&&!R;return{getSessionId:()=>m,isEphemeral:()=>f,destroy:()=>{m=null,Rr(u),Lr(c),Ir(c),s&&!(e!=null&&e.cookieName)&&tn(d,"1")}}}function Pe(e){return Math.min(6e4,1e3*2**Math.min(e,6))}function St(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 sn(e,t){try{let n=localStorage.getItem(e);if(!n)return[];let r=JSON.parse(n);return Array.isArray(r)?(localStorage.removeItem(e),r.slice(-t)):[]}catch(n){return[]}}function Ee(e,t,n){try{let r=(()=>{try{let l=localStorage.getItem(n);if(!l)return[];let i=JSON.parse(l);return Array.isArray(i)?i:[]}catch(l){return[]}})(),o=new Map;for(let l of r)o.set(l.id,l);for(let l of e)o.set(l.id,l);localStorage.setItem(n,JSON.stringify([...o.values()].slice(-t)))}catch(r){}}function ln(e,t){try{let n=localStorage.getItem(t);if(!n)return;let r=JSON.parse(n);if(!Array.isArray(r))return;let o=new Set(e),l=r.filter(i=>!o.has(i.id));if(l.length===r.length)return;l.length===0?localStorage.removeItem(t):localStorage.setItem(t,JSON.stringify(l))}catch(n){}}var Pr=500,Dr=56*1024;function cn(e){return`_snt_retry_${e.slice(0,12)}`}var Mr={push:()=>{},flush:()=>{},destroy:()=>{}};function Br(e){var t,n,r;if(typeof window=="undefined")return Mr;let o=(t=e.flushIntervalMs)!=null?t:5e3,l=(n=e.maxBatchSize)!=null?n:20,i=(r=e.maxRetrySize)!=null?r:100,a=e.ingestUrl,s=e.apiKey,u=cn(s),c=[],d=new Set,g=[],w=y=>{for(let b of y)p.delete(b),!d.has(b)&&(d.add(b),g.push(b));for(;g.length>Pr;){let b=g.shift();b&&d.delete(b)}ln(y,u)},p=new Set,m=()=>{for(;c.length>i;){let y=c.shift();y&&p.delete(y.id)}},A=y=>{d.has(y.id)||p.has(y.id)||(p.add(y.id),c.push(y),m())},C=y=>{for(let b of y)d.has(b.id)||(p.add(b.id),c.push(b));m()},R=sn(u,i);for(let y of R)A(y);let f=0,v=0,I=(y,b=!0)=>{if(y.length===0)return;let k=JSON.stringify(y),O=y.map(Y=>Y.id),E;try{E=fetch(a,{method:"POST",keepalive:!0,body:k,headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`}})}catch(Y){Ee(y,i,u),C(y),v++,f=Date.now()+Pe(v);return}let oe=Y=>{if(St(Y)!=="retry"){if(!Y.ok&&b){let te=y.filter(ne=>ne.eventType!=="pageview");if(te.length>0&&te.length<y.length){w(y.filter(ne=>ne.eventType==="pageview").map(ne=>ne.id)),I(te,!1);return}}w(O),v=0,f=0;return}Ee(y,i,u),C(y),v++,f=Date.now()+Pe(v)};E instanceof Promise?E.then(oe).catch(()=>{Ee(y,i,u),C(y),v++,f=Date.now()+Pe(v)}):oe(E)},B=typeof TextEncoder!="undefined"?new TextEncoder:null,x=y=>B?B.encode(y).length:y.length,N=y=>{let b=[],k=2;for(let O of y){let E=x(JSON.stringify(O))+1;if(b.length>0&&k+E>Dr||b.length>=l)break;b.push(O),k+=E}return b},j=()=>{try{if(Date.now()<f)return;for(;c.length>0&&!(Date.now()<f);){let y=c.filter(k=>!d.has(k.id));if(c.length=0,y.length===0)break;let b=N(y);if(b.length===0)break;b.length<y.length&&c.push(...y.slice(b.length)),I(b)}}catch(y){}},$=!0,J=null;J=setInterval(()=>{$&&j()},o);let G=()=>{document.visibilityState==="hidden"&&j()},U=()=>{j()};return document.addEventListener("visibilitychange",G),window.addEventListener("pagehide",U),{push(y){A(y),c.length>=l&&j()},flush:j,destroy(){$=!1,J!==null&&(clearInterval(J),J=null),document.removeEventListener("visibilitychange",G),window.removeEventListener("pagehide",U),j()}}}var Nr=200;function un(e){return`_snt_goal_retry_${e.slice(0,12)}`}var $r={send:()=>{},flush:()=>{},destroy:()=>{}};function Kr(e){var t,n,r;if(typeof window=="undefined")return $r;let o=(t=e.flushIntervalMs)!=null?t:5e3,l=(n=e.maxRetrySize)!=null?n:100,i=(r=e.maxPerFlush)!=null?r:5,a=un(e.apiKey),s=[],u=new Set,c=new Set,d=[],g=0,w=0,p=!1,m=x=>{for(u.delete(x.id),c.has(x.id)||(c.add(x.id),d.push(x.id));d.length>Nr;){let N=d.shift();N&&c.delete(N)}ln([x.id],a)},A=x=>{Ee([x],l,a),!c.has(x.id)&&!u.has(x.id)&&(u.add(x.id),s.push(x)),Date.now()>=g&&(w++,g=Date.now()+Pe(w))},C=x=>{let N;try{N=fetch(e.url,{method:"POST",keepalive:!0,body:x.body,headers:e.headers})}catch($){A(x);return}let j=$=>{var J;let G=St($);if(G==="retry"){A(x);return}G==="dropped"&&((J=e.onDrop)==null||J.call(e,x,$.status)),m(x),w=0,g=0};N instanceof Promise?N.then(j).catch(()=>A(x)):j(N)},R=()=>{try{if(p||Date.now()<g)return;let x=0;for(;s.length>0&&x<i&&!(Date.now()<g);){let N=s.shift();u.delete(N.id),!c.has(N.id)&&(x++,C(N))}}catch(x){}},f=sn(a,l);for(let x of f)u.has(x.id)||(u.add(x.id),s.push(x));f.length>0&&Ee(f,l,a);let v=setInterval(R,o),I=()=>{document.visibilityState==="hidden"&&R()},B=()=>R();return document.addEventListener("visibilitychange",I),window.addEventListener("pagehide",B),{send(x){if(!p&&!(c.has(x.id)||u.has(x.id))){if(Date.now()<g){Ee([x],l,a),u.add(x.id),s.push(x);return}C(x)}},flush:R,destroy(){clearInterval(v),document.removeEventListener("visibilitychange",I),window.removeEventListener("pagehide",B),R(),p=!0}}}var jr=1800*1e3;function Je(e,t){return`${encodeURIComponent(e)}:${encodeURIComponent(t)}`}function Gr(e=jr,t){let n=new Map,r=`_snt_asgn${He(t)}_`,o=(s,u)=>`${r}${encodeURIComponent(s)}:${encodeURIComponent(u)}`,l=s=>{let u=s.slice(r.length),c=u.indexOf(":");if(c<0)return null;try{return{componentId:decodeURIComponent(u.slice(0,c)),segment:decodeURIComponent(u.slice(c+1))}}catch(d){return null}},i=()=>{try{let s=[];for(let u=0;u<localStorage.length;u++){let c=localStorage.key(u);c!=null&&c.startsWith(r)&&s.push(c)}return s}catch(s){return[]}},a=s=>s.assignedAt+(s.ttlMs&&s.ttlMs>0?s.ttlMs:e)<Date.now();return typeof window!="undefined"&&(()=>{for(let s of i())try{let u=localStorage.getItem(s);if(!u)continue;let c=JSON.parse(u);if(a(c)){localStorage.removeItem(s);continue}let d=l(s);if(!d)continue;n.set(Je(d.componentId,d.segment),c)}catch(u){}})(),{get(s,u){let c=n.get(Je(s,u));return c?a(c)?(n.delete(Je(s,u)),null):c:null},set(s,u,c){let d=Je(s,u);n.set(d,c);try{localStorage.setItem(o(s,u),JSON.stringify(c))}catch(g){}},clear(){n.clear();for(let s of i())try{localStorage.removeItem(s)}catch(u){}}}}var Ze="_snt_snap:",Ur=["low","medium","high"];function De(e){try{let t=localStorage.getItem(Ze+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"||!Ur.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 Me(e,t){try{localStorage.setItem(Ze+e,JSON.stringify(t))}catch(n){}}var bt="[sentient] No API key configured \u2014 nothing is being learned. Set NEXT_PUBLIC_SENTIENT_API_KEY or pass localMode: true for local development.",dn="[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.",rn=!1,Ye=!1;function zr(){var e;try{return(e=new URLSearchParams(window.location.search).get("sentient_persona"))!=null?e:void 0}catch(t){return}}function qr(e){var t;let n=an({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),r=(t=n.getSessionId())!=null?t:"local",o=zr(),l=Promise.resolve().then(()=>(Qt(),Zt)).then(c=>{let d=c;return d.LOCAL_ENGINE_AVAILABLE?(rn||(rn=!0,console.info(dn)),d):(Ye||(Ye=!0,console.error(bt)),null)}).catch(()=>(Ye||(Ye=!0,console.error(bt)),null)),i=null,a={low:.15,medium:.5,high:.85},s=(()=>{var c;if(e.initialPersona)return _({},e.initialPersona);let d=De(e.apiKey||"local");return d?{persona:d.persona,confidence:(c=a[d.band])!=null?c:.15}:null})();function u(c){let d=document.documentElement;d.dataset.sentientPersona===void 0&&(d.dataset.sentientPersona=c.persona,d.dataset.sentientConfidence=we(c.confidence))}return{isLocal:!0,async decide(c){var d,g,w;let p=await l;if(!p)return null;let m=p.createLocalEngine({sessionId:r,forcedPersona:o}).decide(c);return i=be(_({},m),{layoutOrder:(g=(d=m.layoutOrder)!=null?d:i==null?void 0:i.layoutOrder)!=null?g:null,slots:_(_({},(w=i==null?void 0:i.slots)!=null?w:{}),m.slots)}),Me(e.apiKey||"local",{v:1,persona:i.persona,band:we(i.confidence),slots:i.slots,layoutOrder:i.layoutOrder,savedAt:Date.now()}),u(m),m},getSlotResult(c){var d,g,w;return(w=(g=i==null?void 0:i.slots[c])!=null?g:(d=e.initialSlots)==null?void 0:d[c])!=null?w:null},getPersona(){let c=i!=null?i:s;return c?{persona:c.persona,confidence:c.confidence,band:we(c.confidence)}:null},async assign(c,d){var g;let w=await l;return!w||!d||d.length===0?d!=null&&d[0]?{variantId:d[0],assignmentTtlMs:0}:null:{variantId:(g=w.createLocalEngine({sessionId:r,forcedPersona:o}).decide({components:[{id:c,variantIds:d}]}).assignments[c])!=null?g:d[0],assignmentTtlMs:0}},track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>n.destroy()}}function Be(e,t,n,r){let o=[];{let l=!1,i=[],a=()=>{if(l)return;let s=Date.now();for(i.push(s);i.length>0&&s-i[0]>500;)i.shift();i.length>=3&&(l=!0,e("rage_click"))};t.addEventListener("click",a),o.push(()=>t.removeEventListener("click",a))}{let l=!1,i=a=>{if(l||!(a.target instanceof Node)||!t.contains(a.target)&&t!==a.target)return;l=!0;let s=typeof window!="undefined"?window.getSelection():null,u=s?s.toString().length:0;e("text_copy",{selectionLength:u})};document.addEventListener("copy",i),o.push(()=>document.removeEventListener("copy",i))}{let l=!1,i=!1,a=null,s=()=>{a!==null&&(clearTimeout(a),a=null)},u=()=>{l||!i||(s(),a=setTimeout(()=>{!l&&i&&(l=!0,e("scroll_hesitation"))},3e3))},c=()=>{s(),u()},d=w=>{for(let p of w)i=p.intersectionRatio>.3,i?u():s()},g=new IntersectionObserver(d,{threshold:[.3]});g.observe(t),window.addEventListener("scroll",c,{passive:!0}),o.push(()=>{g.disconnect(),window.removeEventListener("scroll",c),s()})}if((r==null?void 0:r.tabLoss)!==!1){let l=!1,i=n!=null?n:Date.now(),a=()=>{if(l||document.visibilityState!=="hidden")return;let s=Date.now()-i;s<15e3&&(l=!0,e("tab_loss",{timeOnPage:s}))};document.addEventListener("visibilitychange",a),o.push(()=>document.removeEventListener("visibilitychange",a))}return()=>{for(let l of o)l()}}var fn="https://api.sentient-ui.com/v1/events",re=new Map,pn=null;function Fr(e){return"value"in e||"currency"in e||"externalId"in e||"metadata"in e||"weight"in e||"stepIndex"in e}var Wr=3;function vt(){return on()}function Xe(){var e;if(typeof window!="undefined")return((e=window.location)==null?void 0:e.pathname)||void 0}function Hr(){let e=new WeakMap,t=new Map,n=!1,r=(a,s,u)=>{let c=a.get(s);return u===null?c?!0:(a.set(s,new Set),!1):c?c.has(u)?!0:(c.add(u),!1):(a.set(s,new Set([u])),!1)},o=typeof window!="undefined"&&"event"in window,l=()=>{if(!o)return;let a=window.event;return typeof Event=="function"&&a instanceof Event?a:void 0},i=()=>{if(o){Promise.resolve().then(()=>{n=!1,t.clear()});return}let a=!1,s=()=>{a||(a=!0,n=!1,t.clear())};if(setTimeout(s,0),typeof MessageChannel=="function"){let u=new MessageChannel;u.port1.onmessage=()=>{u.port1.close(),u.port2.close(),s()},u.port2.postMessage(0)}};return{firedBefore(a,s){let u=l();if(u){let d=e.get(u);return d||(d=new Map,e.set(u,d)),r(d,a,s)}let c=r(t,a,s);return!c&&!n&&(n=!0,i()),c}}}var gn=new Set;function Vr(e,t,n){let r=typeof window=="undefined"?null:window.history;if(!r)return()=>{};let o=!1,l,i=()=>{if(o)return;let u=Xe();!u||u===l||(l=u,e.track({projectId:t,componentId:"__page__",eventType:"pageview",payload:{}}),n(`${t}:${u}`))},a=[];for(let u of["pushState","replaceState"]){let c=r[u],d=function(...g){let w=c.apply(this,g);return i(),w};r[u]=d,a.push([u,c,d])}window.addEventListener("popstate",i);let s=Xe();return s&&gn.has(`${t}:${s}`)?l=s:i(),()=>{if(!o){o=!0,window.removeEventListener("popstate",i);for(let[u,c,d]of a)r[u]===d&&(r[u]=c)}}}var Te={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 Jr(){try{return Jt(window.location.search)}catch(e){return{utmParams:{},clickIds:{}}}}function mn(e){return e.replace(/\/events\/?$/,"")}function Se(){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(e=>e==="1"||e==="yes")}function At(e){var t;if(typeof window=="undefined")return;let n=e!=null?e:pn;if(!n){console.warn("[sentient] grantConsent() called before init()");return}let r=re.get(n);if(!r){console.warn("[sentient] grantConsent() called before init()");return}let{config:o,upgrade:l,reinit:i}=r;if(!l){r.upgradeBlockedReason&&console.warn(r.upgradeBlockedReason);return}if(o.respectDoNotTrack!==!1&&Se())return;let a=(i!=null?i:Ne)(be(_({},o),{consent:!0}));l(a);let s=(t=re.get(n))==null?void 0:t.dispose;re.set(n,{config:be(_({},o),{consent:!0}),upgrade:null,dispose:s})}function Yr(e){var t;let n=e.preConsentBehavior==="statistical_winner",r=mn((t=e.ingestUrl)!=null?t:fn),o={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},l=new Map,i=new Map,a={track:()=>{},goal:()=>{},componentGoal:()=>{},identify:()=>{},getAssignment:()=>null,fetchWeights:()=>Promise.resolve([]),assign(c,d,g){if(!n)return Promise.resolve(null);let w=l.get(c);return w?Promise.resolve(w):wt(i,c,async()=>{try{let p=new URLSearchParams({componentId:c});for(let C of d!=null?d:[])p.append("variantIds[]",C);let m=await fetch(`${r}/winner?${p.toString()}`,{headers:o});if(!m.ok)return d!=null&&d[0]?{variantId:d[0],assignmentTtlMs:0}:null;let A={variantId:(await m.json()).variantId,assignmentTtlMs:0};return l.set(c,A),A}catch(p){return d!=null&&d[0]?{variantId:d[0],assignmentTtlMs:0}:null}})},decide:()=>Promise.resolve(null),getSlotResult:()=>null,getPersona:()=>null,getGraph:()=>({pageNodes:[],capturedAt:0}),dispose:()=>{},destroy:()=>{}},s={track:c=>a.track(c),goal:((c,d,g,w)=>a.goal(c,d,g,w)),componentGoal:(c,d,g)=>a.componentGoal(c,d,g),identify:c=>a.identify(c),getAssignment:(c,d)=>a.getAssignment(c,d),assign:(c,d,g,w)=>a.assign(c,d,g,w),decide:c=>a.decide(c),getSlotResult:c=>a.getSlotResult(c),getPersona:()=>a.getPersona(),fetchWeights:()=>a.fetchWeights(),getGraph:()=>a.getGraph(),dispose:()=>a.dispose(),destroy:()=>a.destroy()};function u(c){a=c}return{proxy:s,setInner:u}}function wt(e,t,n){let r=e.get(t);if(r)return r;let o=(async()=>{try{return await n()}finally{e.delete(t)}})();return e.set(t,o),o}function Ne(e){var t,n,r,o,l,i,a,s,u;if(typeof window=="undefined")return Te;pn=e.apiKey||"local";let c=re.get(e.apiKey||"local");if(c!=null&&c.dispose)try{c.dispose()}catch(h){}let d=e.respectDoNotTrack!==!1&&Se(),g=e.consent===!1||d,w=typeof e.apiKey=="string"&&e.apiKey.startsWith("pk_");if(e.localMode===!0||!w&&e.localMode!==!1)return re.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."}),g?Te:qr(e);if(g){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."),re.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."}),Te;let{proxy:h,setInner:S}=Yr(e);return re.set(e.apiKey,{config:e,upgrade:d?null:S}),h}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."),Te;if(e.ingestUrl==="")return console.warn("[sentient] init() called with an empty ingestUrl. SDK disabled."),Te;let p=(t=e.ingestUrl)!=null?t:fn,m=Date.now(),A=an({ssrSessionId:e.ssrSessionId,apiKey:e.apiKey}),C=Gr(void 0,e.apiKey),R=Br({ingestUrl:p,apiKey:e.apiKey}),f=mn(p),v={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey}`},I=new Set,B=Kr({url:`${f}/goals`,apiKey:e.apiKey,headers:v,onDrop:(h,S)=>{if(!e.debug){if(I.has(S))return;I.add(S)}console.warn(`[sentient] goal dropped (HTTP ${S}) \u2014 this will not be retried. `+(S===400?"The session was not found: call init() and let the session upsert complete before firing goals.":S===401||S===403?"Check the API key and that this origin is on the project allowlist.":"See the response status for the cause."),h)}}),x=Wt((n=navigator.userAgent)!=null?n:""),N=window.location.origin,j=Ht((r=document.referrer)!=null?r:"",N),$=(o=e.sessionSegment)!=null?o:`${x}:${j}`,J=new Map,G=new Map,U=new Map,y=null,b=h=>{for(let S of h)U.has(S.id)||U.set(S.id,ht(S))};if(e.initialSlots)for(let[h,S]of Object.entries(e.initialSlots))U.set(h,S);let k=De(e.apiKey);if(k)for(let[h,S]of Object.entries(k.slots))U.has(h)||U.set(h,S);let O={low:.15,medium:.5,high:.85};if(e.initialPersona)y=_({},e.initialPersona);else{let h=document.documentElement.dataset;h.sentientPersona?y={persona:h.sentientPersona,confidence:(i=O[(l=h.sentientConfidence)!=null?l:"low"])!=null?i:.15}:k&&(y={persona:k.persona,confidence:(a=O[k.band])!=null?a:.15})}if(e.initialAssignments)for(let[h,S]of Object.entries(e.initialAssignments))C.set(h,$,{variantId:S,assignedAt:Date.now(),segment:$,confidence:1});let E=Promise.resolve(),oe=A.getSessionId();if(oe){let h=Vt((s=document.referrer)!=null?s:""),{utmParams:S,clickIds:D}=Jr(),ee=_(_(_(_({sessionId:oe,deviceClass:x,trafficSource:j,referrerDomain:h,utmParams:S,clickIds:D,timeOfDay:Yt(new Date),dayOfWeek:["sun","mon","tue","wed","thu","fri","sat"][new Date().getDay()],ephemeral:A.isEphemeral(),automation:typeof navigator!="undefined"&&navigator.webdriver===!0||Ft((u=navigator.userAgent)!=null?u:"")},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}:{}),F=async()=>{for(let L=0;;L++){try{let M=await fetch(`${f}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify(ee),headers:v});if(M.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(M.ok||St(M)==="dropped")return}catch(M){}if(L>=Wr){console.warn("[SentientUI] Could not register the session after retries. Conversions in this visit may not be recorded.");return}await new Promise(M=>setTimeout(M,Pe(L+1)))}};try{E=F()}catch(L){}}e.debug&&(console.log("[sentient] initialized",{context:e.context}),window.__sentient={client:null,queue:R});let Y=Hr(),te=null,ne=!1,ie={goal(h,S={},D=1,ee=0){var F,L,M,X,Z,ve,fe;let Oe=A.getSessionId();if(!Oe)return;let Q=Fr(S)?S:{metadata:S},Le=[h,(F=Q.externalId)!=null?F:"",(L=Q.stepIndex)!=null?L:ee,(M=Q.weight)!=null?M:D].join("\0"),T=Q.value!==void 0?`${Q.value}\0${(X=Q.currency)!=null?X:""}`:null;if(Y.firedBefore(Le,T)){e.debug&&console.log(`[sentient] goal("${h}") already recorded for this action \u2014 not sent twice`);return}let le=vt(),qe={sessionId:Oe,name:h,metadata:(Z=Q.metadata)!=null?Z:{},weight:(ve=Q.weight)!=null?ve:D,stepIndex:(fe=Q.stepIndex)!=null?fe:ee,goalId:le,value:Q.value,currency:Q.currency,externalId:Q.externalId};e.debug&&console.log("[sentient] goal",qe);let W={id:le,body:JSON.stringify(qe)};E.then(()=>B.send(W))},componentGoal(h,S,D){var ee,F,L;let M=A.getSessionId();if(!M)return;let X=C.get(h,$),Z=X?null:(ee=U.get(h))!=null?ee:null;if(!X&&Z===null){e.debug&&console.warn(`[sentient] componentGoal("${h}"): no assignment or slot decision yet \u2014 render its <Adaptive>/adaptive hook or call assign()/decide() before recording a goal.`);return}let ve=X?X.variantId:Xt(Z),fe={id:vt(),sessionId:M,projectId:e.apiKey,componentId:h,variantId:ve,eventType:"goal_achieved",goalType:S,payload:_({reward:(F=D==null?void 0:D.reward)!=null?F:1,goalValue:D==null?void 0:D.value,currency:D==null?void 0:D.currency},(L=D==null?void 0:D.metadata)!=null?L:{}),timestamp:Date.now(),timeInSession:Date.now()-m,path:Xe()};e.debug&&console.log("[sentient] componentGoal",fe),E.then(()=>R.push(fe))},identify(h){let S=A.getSessionId();S&&E.then(()=>{fetch(`${f}/sessions`,{method:"POST",keepalive:!0,body:JSON.stringify({sessionId:S,userId:h,ephemeral:A.isEphemeral()}),headers:v}).catch(()=>{})})},track(h){let S=A.getSessionId();if(!S)return;let D=be(_({path:Xe()},h),{id:vt(),sessionId:S,timestamp:Date.now(),timeInSession:Date.now()-m});e.debug&&console.log("[sentient] track",D),E.then(()=>R.push(D))},getAssignment(h,S){return C.get(h,S)},async assign(h,S,D,ee){let F=A.getSessionId();if(!F)return null;let L=C.get(h,$);if(L&&(S!=null&&S.length||L.content!==void 0)){let M=L.ttlMs&&L.ttlMs>0?Math.max(0,L.assignedAt+L.ttlMs-Date.now()):0;return{variantId:L.variantId,assignmentTtlMs:M,content:L.content}}return wt(J,h,async()=>{await E;try{let M={sessionId:F,componentId:h,variantIds:S};ee!==void 0?M.agentDataByVariant=ee:D!==void 0&&(M.agentData=D);let X=await fetch(`${f}/assign`,{method:"POST",body:JSON.stringify(M),headers:v});if(!X.ok)return null;let Z=await X.json();return C.set(h,$,_({variantId:Z.variantId,assignedAt:Date.now(),segment:$,confidence:1,content:Z.content},Z.assignmentTtlMs&&Z.assignmentTtlMs>0?{ttlMs:Z.assignmentTtlMs}:{})),Z}catch(M){return null}})},async decide(h){var S,D;let ee=A.getSessionId();if(!ee)return null;let F=(S=h.slots)!=null?S:[],L={sessionId:ee};h.sections&&h.sections.length>0&&(L.sections=h.sections.map(X=>({id:X}))),L.components=(D=h.components)!=null?D:[],F.length>0&&(L.slots=F.map(mt)),h.slotsFrom==="registry"&&(L.slotsFrom="registry"),h.v&&(L.v=h.v),typeof h.pp=="number"&&(L.pp=h.pp),e.persona&&(L.persona=e.persona);let M=JSON.stringify(L);return wt(G,M,async()=>{var X,Z,ve,fe,Oe,Q;await E;try{let Le=await fetch(`${f}/decide`,{method:"POST",body:M,headers:v});if(!Le.ok)return b(F),null;let T=await Le.json(),le={};for(let W of F){let pe=(X=T.slots)==null?void 0:X[W.id];if(pe!==void 0){le[W.id]=pe,U.set(W.id,pe);continue}let Tt=U.get(W.id);if(Tt!==void 0)le[W.id]=Tt;else{let Pt=ht(W);le[W.id]=Pt,U.set(W.id,Pt)}}if(T.slots)for(let[W,pe]of Object.entries(T.slots))W in le||(le[W]=pe,U.set(W,pe));let qe=y!=null&&y.persona!=="unknown";T.persona&&!(T.persona==="unknown"&&qe)?y={persona:T.persona,confidence:(Z=T.confidence)!=null?Z:0}:y||(y={persona:"unknown",confidence:0});for(let[W,pe]of Object.entries((ve=T.assignments)!=null?ve:{}))C.set(W,$,{variantId:pe,assignedAt:Date.now(),segment:$,confidence:1});return Me(e.apiKey,_(_({v:1,persona:y.persona,band:we(y.confidence),slots:Object.fromEntries(U),layoutOrder:(fe=T.layoutOrder)!=null?fe:null,savedAt:Date.now()},T.slotConfig?{slotConfig:T.slotConfig}:{}),T.palette?{palette:T.palette}:{})),_(_(_(_({layoutOrder:(Oe=T.layoutOrder)!=null?Oe:null,assignments:(Q=T.assignments)!=null?Q:{},slots:le,persona:y.persona,confidence:y.confidence},T.slotConfig?{slotConfig:T.slotConfig}:{}),T.goals?{goals:T.goals}:{}),T.sectionMap?{sectionMap:T.sectionMap}:{}),T.palette?{palette:T.palette}:{})}catch(Le){return b(F),null}})},getSlotResult(h){var S;return(S=U.get(h))!=null?S:null},getPersona(){return y?{persona:y.persona,confidence:y.confidence,band:we(y.confidence)}:null},async fetchWeights(){var h;try{let S=await fetch(`${f}/weights`,{headers:v});return S.ok?(h=(await S.json()).components)!=null?h:[]:[]}catch(S){return[]}},getGraph(){return{pageNodes:[],capturedAt:0}},dispose(){var h;te==null||te(),ne=!0,R.destroy(),B.destroy(),((h=re.get(e.apiKey))==null?void 0:h.dispose)===ie.dispose&&re.delete(e.apiKey),e.debug&&console.log("[sentient] disposed")},destroy(){var h;te==null||te(),ne=!0,R.destroy(),B.destroy(),A.destroy(),C.clear(),((h=re.get(e.apiKey))==null?void 0:h.dispose)===ie.dispose&&re.delete(e.apiKey);try{localStorage.removeItem(Ze+e.apiKey),localStorage.removeItem(cn(e.apiKey)),localStorage.removeItem(un(e.apiKey))}catch(S){}e.debug&&console.log("[sentient] destroyed")}};if(re.set(e.apiKey,{config:e,upgrade:null,dispose:ie.dispose}),te=Vr(ie,e.apiKey,h=>{E.then(()=>{ne||gn.add(h)})}),e.debug){let h=window;h.__sentient&&(h.__sentient.client=ie)}return ie}var Xr=["data-sentient-id","data-testid","data-test","data-id","data-name","data-cy"];function xt(e){var t;return((t=e.textContent)!=null?t:"").replace(/\s+/g," ").trim()}function Zr(e){return{tag:e.tagName.toLowerCase(),text:xt(e).slice(0,40)}}function hn(e){return e.replace(/["\\\]]/g,"\\$&")}function $e(e,t){try{return e.querySelectorAll(t).length===1}catch(n){return!1}}function yn(e,t){var n;let r=e.tagName.toLowerCase();if(!r)return null;let o=((n=e.getAttribute("class"))!=null?n:"").split(/\s+/).filter(a=>/^[a-zA-Z][\w-]*$/.test(a)),l=[r,...o.map(a=>`${r}.${a}`)];for(let a of l)if($e(t,a))return a;let i=e.parentElement;if(i&&i!==t){let a=yn(i,t);if(a){for(let d of l){let g=`${a} > ${d}`;if($e(t,g))return g}let s=Array.from(i.children).filter(d=>d.tagName.toLowerCase()===r),u=s.indexOf(e),c=s.some(d=>d!==e&&xt(d)!==xt(e));if(u>=0&&c){let d=`${a} > ${r}:nth-of-type(${u+1})`;if($e(t,d))return d}}}return null}function vn(e,t){let n=Zr(e),r=e.getAttribute("id");if(r&&$e(t,`#${hn(r)}`))return{v:1,id:r,fingerprint:n};for(let l of Xr){let i=e.getAttribute(l);if(i&&$e(t,`[${l}="${hn(i)}"]`))return{v:1,dataAttr:{name:l,value:i},fingerprint:n}}let o=yn(e,t);return o?{v:1,selector:o,fingerprint:n}:null}Re();var wn=["pricing","hero","social_proof","cta","features","faq","comparison","trust","navigation","generic"],Qr={banner:"hero",navigation:"navigation",contentinfo:"footer"};function eo(e){let t=e.ariaRole?Qr[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 to(e){return e.actionCount>=1&&e.textLength>0&&e.textLength<200?"cta":"generic"}var no=[["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]],kt=[["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]],bn={navigation:"navigation",footer:"navigation",hero:"hero",cta:"cta",generic:"generic"};function ro(e){var t;let n=e.querySelector("h1, h2, h3");return((t=n==null?void 0:n.textContent)!=null?t:"").slice(0,160)}function Sn(e){var t,n;let r=eo(e);if(r)return{type:(t=bn[r])!=null?t:"generic",strength:"strong"};let o=`${e.idClass} ${e.headingText}`.toLowerCase();for(let[i,a]of no)if(a.test(o))return{type:i,strength:"strong"};for(let[i,a]of kt)if(a.test(e.bodyText))return{type:i,strength:"strong"};let l=to(e);return{type:(n=bn[l])!=null?n:"generic",strength:"weak"}}function An(e){var t,n;let r=((t=e.textContent)!=null?t:"").replace(/\s+/g," ").trim(),o=e.getAttribute("role");return _({tag:e.tagName.toLowerCase(),idClass:`${e.id} ${String((n=e.className)!=null?n:"")}`,headingText:ro(e),bodyText:r.slice(0,2e3),actionCount:e.querySelectorAll('a, button, [role="button"]').length,textLength:r.length},o?{ariaRole:o}:{})}Re();var oo="section, header, footer, nav, main > div, [data-sentient-section]",io=2e4;function ao(e){let t=Array.from(e.querySelectorAll(oo)),n=t.filter(r=>t.filter(o=>o!==r&&r.contains(o)).length<2);return n.filter(r=>!n.some(o=>o!==r&&o.contains(r)))}function so(e,t,n,r){try{fetch(`${t}/v1/section-map`,{method:"POST",keepalive:!0,headers:{"content-type":"application/json",authorization:`Bearer ${e}`},body:JSON.stringify({pageUrl:n,sections:r})}).catch(()=>{})}catch(o){}}var xn=()=>{};function kn(e,t){var n,r,o,l,i,a,s,u,c,d,g,w;let p=(n=t.doc)!=null?n:typeof document!="undefined"?document:void 0;if(!p||typeof IntersectionObserver=="undefined"||Se()||!t.apiKey||!t.apiKey.startsWith("pk_"))return xn;let m=((r=t.apiBase)!=null?r:"https://api.sentient-ui.com").replace(/\/+$/,"").replace(/\/v1$/,""),A=ao(p);if(A.length===0)return xn;let C=new Map,R=[];for(let b of A){let k=b.getAttribute("data-sentient-type"),O=k&&wn.includes(k)?k:null,E=An(b),oe=(l=O!=null?O:(o=t.typeOf)==null?void 0:o.call(t,b))!=null?l:Sn(E).type,Y=vn(b,p),te=Y?`nc-${oe}-${zt(JSON.stringify({id:(i=Y.id)!=null?i:null,dataAttr:(a=Y.dataAttr)!=null?a:null,selector:(s=Y.selector)!=null?s:null})).toString(36)}`:`nc-${oe}`;C.set(b,te);let ne=kt.filter(([,ie])=>ie.test(E.bodyText)).map(([ie])=>ie);R.push(be(_({componentId:te,semanticType:oe,source:O?"markup":"auto"},Y?{locator:Y}:{}),{observation:_(_({tag:E.tag,idClass:E.idClass.slice(0,200),headingText:E.headingText,textLength:E.textLength,actionCount:E.actionCount},E.ariaRole?{ariaRole:E.ariaRole}:{}),ne.length>0?{patternFlags:ne}:{})}))}let f=(g=(d=(c=(u=p.defaultView)!=null?u:typeof window!="undefined"?window:void 0)==null?void 0:c.location)==null?void 0:d.pathname)!=null?g:"/";so(t.apiKey,m,f,R);let v=new Map,I=b=>{let k=v.get(b);return k||(k={ms:0,scroll:0,enterAt:null,intersecting:!1},v.set(b,k)),k},B=new IntersectionObserver(b=>{for(let k of b){let O=C.get(k.target);if(!O)continue;let E=I(O);k.isIntersecting?(E.intersecting=!0,E.enterAt=Date.now(),k.intersectionRatio>E.scroll&&(E.scroll=k.intersectionRatio)):(E.intersecting=!1,E.enterAt!=null&&(E.ms+=Date.now()-E.enterAt,E.enterAt=null))}},{threshold:[0,.25,.5,.75,1]});for(let b of C.keys())B.observe(b);let x=()=>{let b=Date.now();for(let[k,O]of v)if(O.enterAt!=null&&(O.ms+=b-O.enterAt,O.enterAt=null),!(O.ms<=0)){try{e.track({projectId:t.apiKey,componentId:k,eventType:"dwell",payload:{dwell_time:Math.round(O.ms),scroll_depth:Number(O.scroll.toFixed(2))}})}catch(E){}O.ms=0}},N=()=>{if(p.hidden)x();else{let b=Date.now();for(let k of v.values())k.intersecting&&(k.enterAt=b)}},j=!1,$=b=>{if(x(),b!=null&&b.persisted){j=!0;return}try{B.disconnect()}catch(k){}},J=b=>{if(!(b!=null&&b.persisted)||!j)return;j=!1;let k=Date.now();for(let O of v.values())O.enterAt=O.intersecting&&!p.hidden?k:null};p.addEventListener("visibilitychange",N);let G=(w=p.defaultView)!=null?w:typeof window!="undefined"?window:void 0;G==null||G.addEventListener("pagehide",$),G==null||G.addEventListener("pageshow",J);let U=setInterval(()=>{if(p.hidden||j)return;x();let b=Date.now();for(let k of v.values())k.intersecting&&(k.enterAt=b)},io),y=[];return t.microSignals&&[...C.entries()].forEach(([b,k],O)=>{y.push(Be((E,oe={})=>{try{e.track({projectId:t.apiKey,componentId:k,eventType:"micro_signal",payload:_({signalType:E},oe)})}catch(Y){}},b,void 0,{tabLoss:O===0}))}),()=>{x(),clearInterval(U),p.removeEventListener("visibilitychange",N),G==null||G.removeEventListener("pagehide",$),G==null||G.removeEventListener("pageshow",J);for(let b of y)b();try{B.disconnect()}catch(b){}}}var lo=["landing","ecommerce","saas","marketplace"];function co(e){if(typeof e!="object"||e===null||Array.isArray(e))return null;let t=Object.entries(e);if(t.length<1||t.length>4)return null;let n={};for(let[r,o]of t){if(!Array.isArray(o)||o.length<2||o.length>6||!o.every(l=>typeof l=="string"))return null;n[r]=o}return n}function uo(e){return!Array.isArray(e)||e.length<2||e.length>12||!e.every(t=>typeof t=="string")?null:e}function fo(e){try{return e()}catch(t){return}}function Qe(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.apiKey!="string"||!t.apiKey.startsWith("pk_"))return null;let n=lo.includes(t.context)?t.context:"landing",r={};if(typeof t.slots=="object"&&t.slots!==null&&!Array.isArray(t.slots))for(let[i,a]of Object.entries(t.slots)){if(typeof a!="object"||a===null)continue;let s=a,u=co(s.dims);if(!u||s.target!==void 0&&typeof s.target!="string")continue;let c=s.arms!==void 0?uo(s.arms):null,d={dims:u};typeof s.target=="string"&&(d.target=s.target),c&&(d.arms=c),r[i]=d}let o={apiKey:t.apiKey,context:n,personaAttributes:t.personaAttributes===!0,slots:r};typeof t.consent=="boolean"&&(o.consent=t.consent),(t.preConsentBehavior==="statistical_winner"||t.preConsentBehavior==="control")&&(o.preConsentBehavior=t.preConsentBehavior),t.debug===!0&&(o.debug=!0),typeof t.registry=="boolean"&&(o.registry=t.registry),typeof t.editorSrc=="string"&&(o.editorSrc=t.editorSrc),typeof t.apiBase=="string"&&(o.apiBase=t.apiBase),typeof t.sectionCapture=="boolean"&&(o.sectionCapture=t.sectionCapture);let l=typeof t.persona=="function"?fo(t.persona):t.persona;if(typeof l=="string"&&l.trim()!==""&&(o.persona=l),Array.isArray(t.sections)){let i=t.sections.filter(a=>typeof a=="string"&&a.trim()!=="").slice(0,50);i.length>=2&&(o.sections=i)}return o}function et(e){var n,r,o;let t=(r=(n=e.defaultView)!=null?n:typeof window!="undefined"?window:void 0)==null?void 0:r.location;return(o=t==null?void 0:t.pathname)!=null?o:""}function po(e,t){var n;if(t.tag&&e.tagName.toLowerCase()!==t.tag.toLowerCase())return!1;if(t.text){let r=((n=e.textContent)!=null?n:"").replace(/\s+/g," ").trim().toLowerCase(),o=t.text.replace(/\s+/g," ").trim().toLowerCase();if(!(r===o||r.startsWith(o)||o.startsWith(r)))return!1}return!0}function En(e,t){return!!(e!=null&&e.urlMatch)&&!et(t).includes(e.urlMatch)}var go=/^[a-zA-Z_][-a-zA-Z0-9_]*$/;function ge(e,t){var o;if(e.urlMatch&&!et(t).includes(e.urlMatch))return null;let n=[];if(e.id){let l=t.getElementById(e.id);n=l?[l]:[]}if(n.length===0&&((o=e.dataAttr)!=null&&o.name)&&go.test(e.dataAttr.name))try{let l=e.dataAttr.value.replace(/["\\]/g,"\\$&");n=Array.from(t.querySelectorAll(`[${e.dataAttr.name}="${l}"]`))}catch(l){n=[]}if(n.length===0&&e.selector)try{n=Array.from(t.querySelectorAll(e.selector))}catch(l){n=[]}if(n.length!==1)return null;let r=n[0];return e.fingerprint&&!po(r,e.fingerprint)?null:r}var Cn={color:"color",background:"background",fontSize:"font-size",fontWeight:"font-weight",textAlign:"text-align",padding:"padding",margin:"margin",borderRadius:"border-radius",width:"width",height:"height",maxWidth:"max-width",border:"border",boxShadow:"box-shadow",opacity:"opacity",lineHeight:"line-height",letterSpacing:"letter-spacing",textTransform:"text-transform",gap:"gap",fontFamily:"font-family"},mo=/^(rgb|rgba|hsl|hsla|calc|var|min|max|clamp)$/i;function _n(e){var r;if(e.trim().length===0||/[;{}<>]/.test(e))return!1;let t=/([A-Za-z-]*)\(/g,n;for(;(n=t.exec(e))!==null;)if(!mo.test((r=n[1])!=null?r:""))return!1;return!0}var In=/^https:\/\//i,On=new Map,me=null;function ho(e){return e.replace(/["\\]/g,"\\$&")}function yo(e){var t;(!me||!me.isConnected)&&(me=e.querySelector("style[data-sentient-ops]"),me||(me=e.createElement("style"),me.setAttribute("data-sentient-ops",""),((t=e.head)!=null?t:e.documentElement).appendChild(me))),me.textContent=[...On.entries()].map(([n,r])=>`[data-snt-e="${ho(n)}"]{${r}}`).join(`
|
|
2
|
+
`)}function Ln(e,t,n,r){var a;let o=!1,l=(a=t.moveBefore)!=null?a:t.moveAfter;if(l){let s=ge(l,r);!s||s===e||s.parentElement!==e.parentElement||!e.parentElement?o=!0:t.moveBefore?e.parentElement.insertBefore(e,s):e.parentElement.insertBefore(e,s.nextSibling)}typeof t.text=="string"&&(e.textContent=t.text),typeof t.href=="string"&&In.test(t.href)&&e.setAttribute("href",t.href),typeof t.imageSrc=="string"&&In.test(t.imageSrc)&&e.setAttribute("src",t.imageSrc),typeof t.imageAlt=="string"&&e.setAttribute("alt",t.imageAlt);let i=[];if(t.hidden&&i.push("display:none !important"),t.style)for(let[s,u]of Object.entries(t.style)){let c=Cn[s];c&&typeof u=="string"&&_n(u)&&i.push(`${c}:${u.trim()} !important`)}return i.length>0&&(e.setAttribute("data-snt-e",n),On.set(n,i.join(";")),yo(r)),{anchorMiss:o}}var Ke="data-sentient-block-arm",ae=null;function je(e){ae=e!=null?e:null}var ue="data-sentient-blocks-hid",tt={none:"0",sm:"8px",md:"16px",lg:"24px"},Et={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch",between:"space-between"},Rn={sm:"0.875em",md:"1em",lg:"1.25em"},vo={sm:"1.25em",md:"1.5em",lg:"2em"},bo={sm:"6px 14px",md:"10px 20px",lg:"14px 28px"},Tn={sm:"8px",md:"16px",lg:"32px"},wo={square:"1 / 1",landscape:"4 / 3",wide:"16 / 9"},So={normal:"400",medium:"500",bold:"700"};function ce(e,t){for(let[n,r]of Object.entries(t))r!==void 0&&e.style.setProperty(n,r);return e}function Pn(e){return{opacity:e==="muted"?"0.7":void 0,"font-weight":e==="accent"?"600":void 0}}function Dn(e,t){var n,r,o,l,i,a,s,u,c,d,g,w;try{switch(e.type){case"stack":case"grid":{let p=t.createElement("div");if(e.type==="stack"){let m=e;ce(p,{display:"flex","flex-direction":m.direction,gap:(r=tt[(n=m.gap)!=null?n:"md"])!=null?r:tt.md,"align-items":m.align?Et[m.align]:void 0,"justify-content":m.justify?Et[m.justify]:void 0,"flex-wrap":m.wrap?"wrap":void 0})}else{let m=e,A=(l=tt[(o=m.gap)!=null?o:"md"])!=null?l:tt.md;ce(p,{display:"grid","grid-template-columns":`repeat(auto-fit, minmax(max(200px, calc((100% - ${m.columns-1} * ${A}) / ${m.columns})), 1fr))`,gap:A,"align-items":m.align?Et[m.align]:void 0})}for(let m of(i=e.children)!=null?i:[]){let A=Dn(m,t);A&&p.appendChild(A)}return p}case"text":{let p=t.createElement("p");return p.textContent=e.value,ce(p,H({margin:"0","font-size":e.size?Rn[e.size]:void 0,"font-weight":e.weight?So[e.weight]:void 0,"text-align":e.align},Pn(e.tone)))}case"heading":{let p=t.createElement(`h${e.level}`);return p.textContent=e.value,ce(p,{margin:"0","font-size":vo[(a=e.size)!=null?a:"md"],"text-align":e.align})}case"button":{let p=t.createElement("a");p.textContent=e.label,p.href=e.href,e.tag&&p.setAttribute("data-sentient-tag",e.tag);let m=(s=e.emphasis)!=null?s:"primary";return ce(p,{display:"inline-block",padding:bo[(u=e.size)!=null?u:"md"],"border-radius":(c=ae==null?void 0:ae.radius)!=null?c:"8px",font:"inherit","font-size":e.size?Rn[e.size]:void 0,"text-decoration":m==="ghost"?"underline":"none",cursor:"pointer",background:m==="primary"?(d=ae==null?void 0:ae.primaryBg)!=null?d:"#111827":"transparent",color:m==="primary"?(g=ae==null?void 0:ae.primaryText)!=null?g:"#ffffff":"inherit",border:m==="secondary"?"1px solid currentColor":"none"})}case"link":{let p=t.createElement("a");return p.textContent=e.label,p.href=e.href,e.tag&&p.setAttribute("data-sentient-tag",e.tag),ce(p,{color:"inherit","text-decoration":"underline"})}case"image":{let p=t.createElement("img");return p.src=e.src,p.alt=e.alt,ce(p,{display:"block","max-width":"100%","aspect-ratio":e.ratio&&e.ratio!=="auto"?wo[e.ratio]:void 0,"object-fit":e.fit,width:e.ratio&&e.ratio!=="auto"?"100%":void 0})}case"badge":{let p=t.createElement("span");return p.textContent=e.value,ce(p,H({display:"inline-block",padding:"2px 10px","border-radius":"999px","font-size":"0.75em",border:"1px solid currentColor"},Pn(e.tone)))}case"spacer":return ce(t.createElement("div"),{height:(w=Tn[e.size])!=null?w:Tn.md});default:return null}}catch(p){return null}}function Mn(e,t,n,r){try{let o=new Set;for(let i of Array.from(e.children)){let a=i.getAttribute(Ke);a!==null&&(t[a]===void 0?i.remove():o.add(a))}for(let[i,a]of Object.entries(t)){if(o.has(i))continue;let s=Dn(a,r);if(!s)continue;let u=r.createElement("div");u.setAttribute(Ke,i),u.style.display="none",u.appendChild(s),e.appendChild(u)}let l=n!==void 0&&t[n]!==void 0;for(let i of Array.from(e.children)){let a=i.getAttribute(Ke),s=i;a!==null?s.style.display=l&&a===n?"":"none":l?s.hasAttribute(ue)||(s.setAttribute(ue,s.style.display),s.style.display="none"):s.hasAttribute(ue)&&(s.style.display=s.getAttribute(ue),s.removeAttribute(ue))}}catch(o){}}function Ao(e){try{for(let t of Array.from(e.children)){let n=t;if(n.getAttribute(Ke)!==null){n.remove();continue}n.hasAttribute(ue)&&(n.style.display=n.getAttribute(ue),n.removeAttribute(ue))}}catch(t){}}function nt(e,t){try{let n=new Set;for(let r of Array.from(e.querySelectorAll(`[${Ke}]`)))r.parentElement&&n.add(r.parentElement);for(let r of Array.from(e.querySelectorAll(`[${ue}]`)))r.parentElement&&n.add(r.parentElement);for(let r of n)t.has(r)||Ao(r)}catch(n){}}function Ct(e,t){if(!e)return[t.documentElement];try{return Array.from(t.querySelectorAll(e))}catch(n){return[]}}function rt(e,t,n,r){n.documentElement.setAttribute("data-sentient-persona",e),n.documentElement.setAttribute("data-sentient-confidence",t),r==null||r(n.documentElement,"data-sentient-persona"),r==null||r(n.documentElement,"data-sentient-confidence")}function ot(e,t,n,r){var o;for(let[l,i]of Object.entries(t)){let a=e[l];if(!a||typeof a=="string")continue;let s=Ct(i.target,n);for(let u of s)for(let[c,d]of Object.entries(a))(o=i.dims[c])!=null&&o.includes(d)&&(u.setAttribute(`data-${c}`,d),r==null||r(u,`data-${c}`))}}function it(e,t,n,r){for(let[o,l]of Object.entries(t)){let i=e[o];if(typeof i!="string"||!l.arms||!l.arms.includes(i))continue;let a=Ct(l.target,n);for(let s of a)s.setAttribute("data-sentient-arm",i),r==null||r(s,"data-sentient-arm")}}function at(e,t,n,r){var a,s,u,c;let o=new Set,l=(a=r==null?void 0:r.contentAndOps)!=null?a:!0,i=[];for(let[d,g]of Object.entries(t)){if(En(g.locator,n))continue;let w;if(g.locator){let m=ge(g.locator,n);w=m?[m]:[]}else w=Ct(g.target,n);(g.locator||g.target)&&w.length===0&&i.push(d);let p=e[d];for(let m of w){if(p!==void 0)if(typeof p=="string")m.setAttribute("data-sentient-arm",p),(s=r==null?void 0:r.onAttr)==null||s.call(r,m,"data-sentient-arm"),l&&((u=r==null?void 0:r.onApplied)==null||u.call(r,d,p,m));else for(let[A,C]of Object.entries(p))m.setAttribute(`data-${A}`,C),(c=r==null?void 0:r.onAttr)==null||c.call(r,m,`data-${A}`);g.blocks&&!ko(n)&&(Mn(m,g.blocks,typeof p=="string"?p:void 0,n),o.add(m)),l&&(typeof g.content=="string"&&(m.textContent=g.content),g.ops&&Ln(m,g.ops,d,n).anchorMiss&&!i.includes(d)&&i.push(d))}}return nt(n,o),i}var xo=/bot|crawler|spider|crawling|googlebot|bingbot|duckduckbot|baiduspider|yandexbot|slurp|gptbot|claudebot|anthropic|perplexity|ccbot|applebot|headlesschrome/i;function ko(e){var t,n,r;try{let o=(n=(t=e.defaultView)!=null?t:typeof window!="undefined"?window:void 0)==null?void 0:n.navigator;return o?o.webdriver===!0?!0:xo.test((r=o.userAgent)!=null?r:""):!1}catch(o){return!1}}var Eo=800;function st(e,t,n){let r=[];return n.forEach(({slotId:o,arm:l,el:i},a)=>{r.push(Be((g,w={})=>{try{e.track({projectId:t,componentId:o,variantId:l,eventType:"micro_signal",payload:H({signalType:g},w)})}catch(p){}},i,void 0,{tabLoss:a===0}));let s=null,u=0,c=()=>{u=Date.now(),s=setTimeout(()=>{try{e.track({projectId:t,componentId:o,variantId:l,eventType:"cursor_signal",payload:{hoverDuration:Date.now()-u}})}catch(g){}s=null},Eo)},d=()=>{s!==null&&(clearTimeout(s),s=null)};i.addEventListener("mouseenter",c),i.addEventListener("mouseleave",d),r.push(()=>{i.removeEventListener("mouseenter",c),i.removeEventListener("mouseleave",d),s!==null&&clearTimeout(s)})}),()=>{for(let o of r)o()}}function Co(e,t){if(!e)return!1;if(e==="/")return t==="/";let n=e.endsWith("/")?e.slice(0,-1):e;return t===n||t.startsWith(`${n}/`)}function Nn(e){return e?`_snt_fired_goals_${e.slice(0,12)}`:"_snt_fired_goals"}var _o="_snt_fired_goals";function $n(e,t){try{e==null||e.sessionStorage.removeItem(Nn(t)),e==null||e.sessionStorage.removeItem(_o)}catch(n){}}function Bn(e){var t;return[(t=e.slotId)!=null?t:"",e.goalId,e.event,e.locator?JSON.stringify(e.locator):""].join("|")}function Io(e,t){try{let n=e==null?void 0:e.sessionStorage.getItem(t);if(!n)return new Set;let r=JSON.parse(n);return Array.isArray(r)?new Set(r.filter(o=>typeof o=="string")):new Set}catch(n){return new Set}}function Oo(e,t,n){try{e==null||e.sessionStorage.setItem(t,JSON.stringify([...n]))}catch(r){}}function lt(e,t,n,r){var C,R;let o=(C=n.defaultView)!=null?C:typeof window!="undefined"?window:null,l=Nn(r),i=Io(o,l),a=f=>{let v=Bn(f);if(!i.has(v))try{f.slotId?t.componentGoal(f.slotId,f.goalId):t.goal(f.goalId),i.add(v),Oo(o,l,i)}catch(I){}},s=e.filter(f=>f.event==="click"),u=e.filter(f=>f.event==="form_submit"),c=e.filter(f=>f.event==="url_reached"),d=e.filter(f=>f.event==="scroll_depth"),g=(f,v)=>{if(!f.locator)return!1;let I=ge(f.locator,n);return!!I&&(I===v||I.contains(v))},w=f=>{let v=f.target;if(!(!v||typeof v.closest!="function"))for(let I of s)g(I,v)&&a(I)},p=f=>{let v=f.target;if(v)for(let I of u)g(I,v)&&a(I)},m=()=>{if(c.length===0)return;let f=et(n);for(let v of c)v.urlPattern&&Co(v.urlPattern,f)&&a(v)},A=()=>{var I;let f=n.documentElement,v=f.scrollHeight>0?(f.scrollTop+f.clientHeight)/f.scrollHeight:0;for(let B of d)v>=((I=B.threshold)!=null?I:.75)&&a(B);d.every(B=>i.has(Bn(B)))&&n.removeEventListener("scroll",A)};return n.addEventListener("click",w,!0),n.addEventListener("submit",p,!0),(R=n.defaultView)==null||R.addEventListener("popstate",m),m(),d.length>0&&(n.addEventListener("scroll",A,{passive:!0}),A()),{checkUrl:m,teardown:()=>{var f;n.removeEventListener("click",w,!0),n.removeEventListener("submit",p,!0),(f=n.defaultView)==null||f.removeEventListener("popstate",m),d.length>0&&n.removeEventListener("scroll",A)}}}function ct(e,t){if(!e||e.length<2||t.size!==e.length)return null;let n=[];for(let i of e){let a=t.get(i);if(!a||n.includes(a))return null;n.push(a)}let r=n[0].parentNode;if(!r||!n.every(i=>i.parentNode===r))return null;let o=n.slice().sort((i,a)=>i.compareDocumentPosition(a)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1),l=[];for(let i=0;i<n.length;i++){let a=n[i];o[i]!==a&&(l.push({el:a,before:o[i]}),o.splice(o.indexOf(a),1),o.splice(i,0,a))}return l}var Kn="__snt_editor_token";function jn(){try{return typeof sessionStorage!="undefined"?sessionStorage.getItem(Kn):null}catch(e){return null}}function Gn(e){try{sessionStorage.setItem(Kn,e)}catch(t){}}var ze="0.24.0",ft=ze!=="0.0.0-dev"?{name:"snippet",version:ze}:void 0,Jn=5e3,Lo=50,Yn=(()=>{try{if(typeof window=="undefined")return[];let e=window.SentientSnippet;return Array.isArray(e==null?void 0:e.q)?e.q:[]}catch(e){return[]}})(),V=null,P=null,de={},ye=null,z=null,he=null,q=null,se=null,K=null,Ae=null,Un=!1,_t=null,ut=null,pt=null,Ce=!1,Ge=!1,ke=!1;function Xn(e,t){let n,r=new Promise(o=>{n=setTimeout(()=>o(null),t)});return Promise.race([e,r]).then(o=>(clearTimeout(n),o),o=>{throw clearTimeout(n),o})}function xe(e,...t){e!=null&&e.debug&&console.log("[sentient-snippet]",...t)}function _e(e,t){return V?(V.personaAttributes&&K&&rt(K.persona,K.band,e,t==null?void 0:t.onAttr),ot(de,V.slots,e,t==null?void 0:t.onAttr),it(de,V.slots,e,t==null?void 0:t.onAttr),ye?at(de,ye,e,t):(nt(e,new Set),[])):[]}function Zn(e){var n;let t=new Map;for(let r of(n=V==null?void 0:V.sections)!=null?n:[])try{let o=e.querySelectorAll(r);o.length===1&&t.set(r,o[0])}catch(o){}return t}function It(e,t){var n,r;try{if(!e||e.length<2)return;for(let o of(n=ct(e,Zn(t)))!=null?n:[])(r=o.before.parentNode)==null||r.insertBefore(o.el,o.before)}catch(o){}}function Ro(e,t,n){let r=(o,l)=>t.some(([i,a])=>i===o&&a===l);try{if(Array.isArray(e.stamped))for(let o of e.stamped){if(!Array.isArray(o))continue;let[l,i,a]=o;!l||typeof i!="string"||r(l,i)||(a==null?l.removeAttribute(i):l.setAttribute(i,a))}if(Array.isArray(e.html))for(let o of e.html)typeof o!="string"||r(n.documentElement,o)||n.documentElement.removeAttribute(o)}catch(o){}}function To(){try{let e=window.__sntPP;return e&&typeof e=="object"&&typeof e.v=="number"?e:null}catch(e){return null}}function Qn(e){return e.apiBase?`${e.apiBase.replace(/\/+$/,"")}/v1/events`:void 0}function Po(e,t){var n;if(t.length!==0)try{let r=(n=e.apiBase)!=null?n:"https://api.sentient-ui.com";fetch(`${r}/v1/locator-miss`,{method:"POST",keepalive:!0,headers:{"content-type":"application/json",authorization:`Bearer ${e.apiKey}`},body:JSON.stringify({slots:t})}).catch(()=>{})}catch(r){}}function Ie(){return!!(V&&P&&V.sectionCapture!==!1&&(V.consent!==!1||Ge)&&!Se())}function Do(){if(!P||!V||!Ie()||se)return;let e=[];_e(document,{contentAndOps:Ce,onApplied:(t,n,r)=>e.push({slotId:t,arm:n,el:r})}),Lt();try{q==null||q(),q=st(P,V.apiKey,e)}catch(t){}}function Lt(){if(typeof document=="undefined"||!Ie())return;let e;try{if(ut&&ut.length>0){let t=new Map;for(let n of ut){if(n.urlMatch!==window.location.pathname)continue;let r=ge(n.locator,document);r&&t.set(r,n.type)}t.size>0&&(e=n=>{var r;return(r=t.get(n))!=null?r:null})}}catch(t){}try{se=kn(P,H({apiKey:V.apiKey,apiBase:V.apiBase,doc:document,microSignals:!0},e?{typeOf:e}:{})),pt=window.location.pathname}catch(t){}}function Rt(){try{let e=[];if(q==null||q(),q=null,_e(document,{contentAndOps:Ce,onApplied:(t,n,r)=>e.push({slotId:t,arm:n,el:r})}),It(Ae,document),e.length>0&&Ie())try{q=st(P,V.apiKey,e)}catch(t){}try{typeof window!="undefined"&&pt!==null&&window.location.pathname!==pt&&Ie()&&(se==null||se(),se=null,Lt())}catch(t){}}catch(e){}}function zn(){_t===null&&(_t=setTimeout(()=>{_t=null,Rt();try{z==null||z.checkUrl()}catch(e){}},Lo))}function Ot(){if(!(Un||typeof window=="undefined"||typeof history=="undefined")){Un=!0;try{let e=t=>{let n=history[t];history[t]=function(r,o,l){let i=n.call(this,r,o,l!=null?l:null);return zn(),i}};e("pushState"),e("replaceState"),window.addEventListener("popstate",zn)}catch(e){}}}function dt(e){let t={};for(let[n,r]of Object.entries(e.slots))try{t[n]=r.target?document.querySelectorAll(r.target).length:1}catch(o){t[n]=0}return t}function er(e){return new URLSearchParams(e).get("sentient_editor")}function Mo(){try{let e=Array.from(document.getElementsByTagName("script")),t=/(^|\/)snippet(\.global)?\.js(\?|$)/,n=e.find(r=>t.test(r.src));if(n!=null&&n.src)return n.src.replace(t,"$1editor.global.js$3")}catch(e){}return null}function Bo(e,t){var n,r,o,l;try{window.__sentientEditor={token:t,apiBase:(n=e.apiBase)!=null?n:"https://api.sentient-ui.com"};try{let s=document.createElement("meta");s.name="referrer",s.content="no-referrer",s.setAttribute("data-sentient-editor",""),((r=document.head)!=null?r:document.documentElement).appendChild(s)}catch(s){}let i=(o=e.editorSrc)!=null?o:Mo();if(!i){Fn();return}let a=document.createElement("script");a.src=i,a.async=!0,a.onerror=()=>Fn(),((l=document.head)!=null?l:document.documentElement).appendChild(a)}catch(i){}}var qn="sentient-editor-load-notice",tr={position:"fixed",bottom:"16px",zIndex:"2147483647",background:"#111827",color:"#fff",boxShadow:"0 10px 34px rgba(0,0,0,0.45)"};function Fn(){var e,t;try{if(typeof document=="undefined"||document.getElementById(qn))return;(e=document.querySelector('meta[name="referrer"][data-sentient-editor]'))==null||e.remove();let n=document.createElement("div");n.id=qn,n.textContent="Couldn\u2019t load the editor \u2014 check your connection and reopen it from your dashboard.",Object.assign(n.style,tr,{right:"16px",maxWidth:"320px",padding:"14px 16px",borderRadius:"14px",font:"13px/1.45 system-ui, sans-serif",border:"1px solid rgba(245,158,11,0.6)",cursor:"pointer"}),n.addEventListener("click",()=>n.remove()),((t=document.body)!=null?t:document.documentElement).appendChild(n),setTimeout(()=>n.remove(),1e4)}catch(n){}}function nr(e){let t=new URLSearchParams(e).get("sentient_preview");if(!t)return null;let n={};for(let r of t.split("|")){let o=r.indexOf(":"),l=o===-1?"":r.slice(0,o),i=o===-1?"":r.slice(o+1);if(!(!l||!i))if(i.includes("=")){let a={};for(let s of i.split(",")){let[u,c]=s.split("=");u&&c&&(a[u]=c)}Object.keys(a).length&&(n[l]=a)}else n[l]=i}return Object.keys(n).length?n:null}function rr(e){try{return new URLSearchParams(e).get("sentient_persona")||null}catch(t){return null}}var Wn="sentient-persona-preview-banner";function Hn(e,t){var n;try{if(typeof document=="undefined"||document.getElementById(Wn))return;let r=e.charAt(0).toUpperCase()+e.slice(1).replace(/[_-]+/g," "),o=document.createElement("div");o.id=Wn,o.setAttribute("role","status"),Object.assign(o.style,tr,{left:"50%",transform:"translateX(-50%)",display:"flex",alignItems:"center",gap:"12px",padding:"10px 14px",borderRadius:"999px",font:"13px/1 system-ui, sans-serif",border:"1px solid rgba(255,255,255,0.14)"});let l=document.createElement("span");l.textContent=t?`\u201C${e}\u201D isn\u2019t in your personas \u2014 showing the default experience`:`Previewing as ${r}`;let i=document.createElement("button");i.type="button",i.textContent="Exit preview",Object.assign(i.style,{cursor:"pointer",border:"1px solid rgba(255,255,255,0.3)",background:"transparent",color:"#fff",font:"inherit",padding:"4px 10px",borderRadius:"999px"}),i.addEventListener("click",()=>{try{let a=new URL(window.location.href);a.searchParams.delete("sentient_persona"),window.location.href=a.pathname+a.search+a.hash}catch(a){}}),o.appendChild(l),o.appendChild(i),((n=document.body)!=null?n:document.documentElement).appendChild(o)}catch(r){}}async function No(e,t){var u,c,d,g,w,p,m,A,C,R;let n=(u=e.apiBase)!=null?u:"https://api.sentient-ui.com",o=((c=e.registry)!=null?c:Object.keys(e.slots).length===0)?{persona:t,slotsFrom:"registry"}:{persona:t,slots:Object.entries(e.slots).map(([f,v])=>({id:f,dims:v.dims}))},l=await Xn(fetch(`${n}/v1/explain`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${e.apiKey}`},body:JSON.stringify(o)}).then(f=>f.ok?f.json():null).catch(()=>null),Jn);if(!l){Ue(e),xe(e,"persona preview: explain unavailable \u2014 page left as-is");return}let i=l;de=(d=i.slots)!=null?d:{},ye=(g=i.slotConfig)!=null?g:null,je(i.palette);let a=(m=(p=(w=i.personaAttributes)==null?void 0:w.persona)!=null?p:i.persona)!=null?m:t,s=(C=(A=i.personaAttributes)==null?void 0:A.confidence)!=null?C:"high";K={persona:a,band:s},_e(document),Ce=!0,Ot(),Ue(e),i.recognized===!1?Hn(t,!0):Hn((R=i.personaDisplay)!=null?R:a)}function Ue(e){let t={goal(n,r){try{P==null||P.goal(n,r)}catch(o){}},componentGoal(n,r){try{P==null||P.componentGoal(n,r)}catch(o){}},grantConsent(){try{!P&&ke?(P=Ne(H({apiKey:e.apiKey,context:e.context,consent:!0,preConsentBehavior:e.preConsentBehavior,debug:e.debug,persona:e.persona,ingestUrl:Qn(e)},ft?{sdk:ft}:{})),he&&he.length>0&&(z==null||z.teardown(),z=lt(he,P,document,e.apiKey))):(At(e.apiKey),P&&he&&he.length>0&&(z==null||z.teardown(),z=lt(he,P,document,e.apiKey))),ke=!1}catch(n){}Ge=!0;try{Do()}catch(n){}},revokeConsent(){try{se==null||se(),se=null,pt=null,q==null||q(),q=null,z==null||z.teardown(),z=null,$n(typeof window!="undefined"?window:null,e.apiKey),Ge=!1,ke=!0,P==null||P.destroy(),P=null}catch(n){}},reapply:Rt,getState(){var n,r;try{return{apiKey:e.apiKey,persona:(n=K==null?void 0:K.persona)!=null?n:null,band:(r=K==null?void 0:K.band)!=null?r:null,slots:de,matchCounts:dt(e),consent:!ke&&(e.consent!==!1||Ge)}}catch(o){return{apiKey:e.apiKey,persona:null,band:null,slots:{},matchCounts:{},consent:!1}}}};window.SentientSnippet=t;for(let n of Yn.splice(0))try{n[0]==="goal"&&t.goal(n[1],n[2])}catch(r){}}function Vn(){var e;try{if(typeof window=="undefined")return;let t=window;if(typeof((e=t.SentientSnippet)==null?void 0:e.goal)=="function")return;let n=()=>{};t.SentientSnippet={goal:n,componentGoal:n,grantConsent:n,revokeConsent:n,reapply:n,getState:()=>({apiKey:"",persona:null,band:null,slots:{},matchCounts:{},consent:!1})},Yn.length=0}catch(t){}}async function or(){var e,t;try{let n=Qe(window.sentient);if(!n){Vn();return}V=n,Ce=!1,Ae=null,je(null),Ge=!1,ke=!1,he=null;let r=typeof window!="undefined"?er(window.location.search):null;if(r){Gn(r);try{let f=new URL(window.location.href);f.searchParams.delete("sentient_editor"),window.history.replaceState(null,"",f.pathname+f.search+f.hash)}catch(f){}}let o=r!=null?r:jn();if(o){Bo(n,o),Ue(n),xe(n,"editor mode");return}let l=typeof window!="undefined"?nr(window.location.search):null;if(l){de=l,K=null,_e(document),Ot(),Ue(n),xe(n,"preview mode",l);return}let i=typeof window!="undefined"?rr(window.location.search):null;if(i){await No(n,i),xe(n,"persona preview",i);return}let a=(e=n.registry)!=null?e:Object.keys(n.slots).length===0,s=To();try{(t=s==null?void 0:s.stop)==null||t.call(s)}catch(f){}let u=De(n.apiKey),c=[];u&&(K={persona:u.persona,band:u.band},de=u.slots,u.slotConfig&&(ye=u.slotConfig),u.palette&&je(u.palette),_e(document,H({contentAndOps:!1},s?{onAttr:(f,v)=>c.push([f,v])}:{})),u.layoutOrder&&(Ae=u.layoutOrder,It(Ae,document))),s&&Ro(s,c,document);let d=Ne(H({apiKey:n.apiKey,context:n.context,consent:n.consent,preConsentBehavior:n.preConsentBehavior,debug:n.debug,persona:n.persona,ingestUrl:Qn(n)},ft?{sdk:ft}:{}));P=d,Ue(n),Ot();let g=Object.entries(n.slots).map(([f,v])=>({id:f,dims:v.dims})),w=ze!=="0.0.0-dev"?{v:ze}:{},p={pp:s?s.v:0},m=Array.from(Zn(document).keys()),A=d.decide(H(H(H(H({slots:g},w),p),m.length>=2?{sections:m}:{}),a?{slotsFrom:"registry"}:{})),C=await Xn(A,Jn),R=f=>{var B,x,N,j,$,J;let v=d.getPersona();v?K={persona:v.persona,band:v.band}:f.persona&&(K={persona:f.persona,band:"low"}),de=f.slots,a?ye=(B=f.slotConfig)!=null?B:null:f.slotConfig&&(ye=f.slotConfig),f.palette&&je(f.palette),Ae=(x=f.layoutOrder)!=null?x:Ae;let I=()=>{let G=[];if(Po(n,_e(document,{onApplied:(U,y,b)=>G.push({slotId:U,arm:y,el:b})})),It(Ae,document),Ce=!0,Ie())try{q==null||q(),q=st(P,n.apiKey,G)}catch(U){}};if(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",I,{once:!0}):I(),he=(N=f.goals)!=null?N:null,f.goals&&f.goals.length>0&&n.consent!==!1&&P)try{z==null||z.teardown(),z=lt(f.goals,P,document,n.apiKey)}catch(G){}ut=(j=f.sectionMap)!=null?j:null,Ie()&&Lt(),xe(n,"applied",{persona:K,slots:de,matches:dt(n)}),!ke&&Me(n.apiKey,H(H({v:1,persona:($=K==null?void 0:K.persona)!=null?$:f.persona,band:(J=K==null?void 0:K.band)!=null?J:"low",slots:f.slots,layoutOrder:f.layoutOrder,savedAt:Date.now()},ye?{slotConfig:ye}:{}),f.palette?{palette:f.palette}:{}))};if(!C){xe(n,"decide timeout/null \u2014 snapshot state stands",dt(n)),A.then(f=>{!f||Ce||ke||P!==d||(R(f),xe(n,"late decide applied",dt(n)))}).catch(()=>{});return}R(C)}catch(n){Vn()}}if(typeof window!="undefined"&&window.sentient){let e=window;e.__sentientInitialized||(e.__sentientInitialized=!0,Promise.resolve().then(()=>{or()}))}return cr($o);})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentientui/snippet",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "SentientUI Style-rung snippet for non-React sites — persona attributes and adaptive style tokens from one script tag",
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,6 +13,20 @@
|
|
|
13
13
|
"bugs": "https://github.com/SentientUI/sdk/issues",
|
|
14
14
|
"type": "module",
|
|
15
15
|
"main": "./dist/snippet.global.js",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": "./dist/snippet.global.js",
|
|
18
|
+
"./install": {
|
|
19
|
+
"import": {
|
|
20
|
+
"types": "./dist/install.d.ts",
|
|
21
|
+
"default": "./dist/install.js"
|
|
22
|
+
},
|
|
23
|
+
"require": {
|
|
24
|
+
"types": "./dist/install.d.cts",
|
|
25
|
+
"default": "./dist/install.cjs"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"./package.json": "./package.json"
|
|
29
|
+
},
|
|
16
30
|
"files": [
|
|
17
31
|
"dist",
|
|
18
32
|
"README.md"
|