@tinkerlandai/indiana-sdk 0.0.1 → 0.2.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/CHANGELOG.md +17 -0
- package/README.md +52 -264
- package/dist/{api-DDlcUvTv.d.ts → ai-usage-CO0lDavO.d.ts} +3163 -660
- package/dist/chunk-EZFAY4ZL.js +1 -0
- package/dist/chunk-ULRVTA45.js +1 -0
- package/dist/chunk-YOH6DIUN.js +27 -0
- package/dist/{coupon-gncDkBtm.d.ts → customer-page-aZb5Twue.d.ts} +122 -3
- package/dist/funnel-runtime-host-OJJSHKUD.js +1 -0
- package/dist/funnel-runtime-start-DvrWekm0.d.ts +9330 -0
- package/dist/index.d.ts +8677 -1611
- package/dist/index.js +1 -1
- package/dist/native-shell.js +1 -1
- package/dist/openrouter.d.ts +3 -3
- package/dist/openrouter.js +1 -1
- package/dist/paywall-HCADUT22.js +1 -0
- package/dist/popup.d.ts +19 -123
- package/dist/popup.js +5 -4
- package/dist/{funnel-runtime-C05ZECiP.d.ts → screen-DfuSw6Tz.d.ts} +320 -2419
- package/dist/server.d.ts +4 -765
- package/dist/server.js +1 -1
- package/dist/src-3GT6E6XD.js +1 -0
- package/package.json +3 -3
- package/dist/ai-usage-CzA11PV5.d.ts +0 -235
- package/dist/chunk-IUDHYOKC.js +0 -21
- package/dist/chunk-OIWEFX7U.js +0 -1
- package/dist/chunk-TDSKWZTO.js +0 -1
- package/dist/feature-client-CyYevYy2.d.ts +0 -450
- package/dist/funnel-runtime-host-DWRQK5U2.js +0 -4
- package/dist/src-MCXYJ2QR.js +0 -1
package/dist/popup.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as Z}from"./chunk-6X42DWOM.js";import{a as gt}from"./chunk-EZFAY4ZL.js";import{Uf as ot,Xf as dt,Ze as it,cf as Oe,cg as Be,df as st,dg as Ue,ff as Fe,fg as me,gg as ct,hg as We,jf as ve,vi as lt,wi as pt,zi as ut}from"./chunk-YOH6DIUN.js";function ft(g){let m=new Intl.Locale(g);if(m.language==="zh")return m.maximize().script==="Hant"?"\u95DC\u9589\u5F48\u7A97":"\u5173\u95ED\u5F39\u7A97";let A={en:"Close popup",ja:"\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u9589\u3058\u308B",ko:"\uD31D\uC5C5 \uB2EB\uAE30",es:"Cerrar ventana emergente",fr:"Fermer la fen\xEAtre contextuelle",de:"Popup schlie\xDFen",pt:"Fechar janela pop-up",it:"Chiudi popup",ru:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0432\u0441\u043F\u043B\u044B\u0432\u0430\u044E\u0449\u0435\u0435 \u043E\u043A\u043D\u043E",vi:"\u0110\xF3ng c\u1EEDa s\u1ED5 b\u1EADt l\xEAn",th:"\u0E1B\u0E34\u0E14\u0E2B\u0E19\u0E49\u0E32\u0E15\u0E48\u0E32\u0E07\u0E1B\u0E4A\u0E2D\u0E1B\u0E2D\u0E31\u0E1B",id:"Tutup pop-up",ar:"\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u0646\u0628\u062B\u0642\u0629",he:"\u05E1\u05D2\u05D9\u05E8\u05EA \u05D4\u05D7\u05DC\u05D5\u05DF \u05D4\u05E7\u05D5\u05E4\u05E5",fa:"\u0628\u0633\u062A\u0646 \u067E\u0646\u062C\u0631\u0647\u0654 \u0628\u0627\u0632\u0634\u0648",ur:"\u067E\u0627\u067E \u0627\u067E \u0628\u0646\u062F \u06A9\u0631\u06CC\u06BA"};return A[m.language]??A.en}import Lt from"dompurify";import{parse as Rt,generate as _t,walk as Dt}from"css-tree";function Tt(g,m,A,I){return{html:Te(g,A,I),css:qe(m)}}function qe(g){if(!g.trim())return"";if(/[\\<]/.test(g))throw new Error("CSS \u6682\u4E0D\u652F\u6301\u53CD\u659C\u6760\u8F6C\u4E49\u6216 HTML \u6807\u7B7E\u3002");let m=Rt(g,{onParseError:I=>{throw Object.assign(new Error("CSS \u683C\u5F0F\u4E0D\u6B63\u786E\u3002"),{offset:I.offset})}}),A=0;return Dt(m,I=>{if(++A>5e3)throw new Error("CSS \u8FC7\u4E8E\u590D\u6742\u3002");if(I.type==="Raw"||I.type==="Url"||I.type==="Atrule"&&!["media","supports","keyframes"].includes(I.name.toLowerCase())||I.type==="Function"&&["image-set","-webkit-image-set","image","src","paint"].includes(I.name.toLowerCase()))throw new Error("CSS \u4E0D\u652F\u6301\u5916\u90E8\u8D44\u6E90\u3001\u5BFC\u5165\u6216\u672A\u77E5\u8BED\u6CD5\uFF1B\u56FE\u7247\u8BF7\u4F7F\u7528 HTML img \u6807\u7B7E\u3002")}),_t(m)}function Te(g,m,A,I){if(!g.trim())return"";let x=Fe(g);if(x.length)throw new Error(x[0]);let M=Lt(A),$=M.sanitize(g,{ALLOWED_TAGS:["main","section","article","header","footer","div","span","p","h1","h2","h3","h4","strong","em","b","i","small","br","hr","ul","ol","li","button","img"],ALLOWED_ATTR:["class","alt","src","width","height","title","type","disabled","data-grow-action","aria-label"],ALLOW_DATA_ATTR:!1,ALLOW_ARIA_ATTR:!1,ADD_URI_SAFE_ATTR:["data-grow-action"],ALLOWED_URI_REGEXP:/^https:\/\//i,RETURN_DOM:!0});if(!($ instanceof A.Element))throw new Error("\u65E0\u6CD5\u89E3\u6790 HTML\u3002");if(I){let k=new Set;for(let L of M.removed){let z="element"in L?L.element.nodeName.toLowerCase():void 0,B="attribute"in L?L.attribute?.name:void 0;if(!z&&!B)continue;let G=B?/<[^>]+>/g:new RegExp(`<\\s*${z}\\b[^>]*>`,"gi"),T=[...g.matchAll(G)].find(N=>!k.has(`${B??z}:${N.index}`)&&(!B||new RegExp(`\\b${B}\\s*=`,"i").test(N[0])));if(!T)continue;let P=T.index;k.add(`${B??z}:${P}`);let S=B==="style"?"\u5185\u8054\u6837\u5F0F\u4E0D\u4FDD\u7559\uFF0C\u8BF7\u5199\u5728 CSS \u4E2D\u3002":B?.startsWith("on")?"\u811A\u672C\u4E8B\u4EF6\u4E0D\u5141\u8BB8\uFF0C\u8BF7\u4F7F\u7528\u52A8\u4F5C\u6309\u94AE\u3002":B==="src"?"\u56FE\u7247\u53EA\u652F\u6301 https \u5730\u5740\u3002":"\u8FD9\u4E2A\u5C5E\u6027\u4E0D\u5728\u5141\u8BB8\u7684\u5E03\u5C40\u3001\u56FE\u7247\u4E0E\u52A8\u4F5C\u5C5E\u6027\u4E2D\u3002";I.push({language:"html",from:P,to:P+T[0].length,severity:"warning",message:B?`\u5DF2\u79FB\u9664\u5C5E\u6027 ${B}\uFF1A${S}`:`\u5DF2\u79FB\u9664 <${z}>\uFF1A\u8FD9\u4E2A\u6807\u7B7E\u4E0D\u5728\u5141\u8BB8\u7684\u6392\u7248\u6807\u7B7E\u4E2D\u3002`})}}let _=Fe($.innerHTML);if(_.length)throw new Error(_[0]);if($.querySelectorAll("*").length>500)throw new Error("HTML \u6700\u591A\u652F\u6301 500 \u4E2A\u5143\u7D20\u3002");for(let k of $.querySelectorAll("[data-grow-action]")){let L=k.getAttribute("data-grow-action");if(k.tagName!=="BUTTON"||!m.includes(L))throw new Error(`\u81EA\u5B9A\u4E49 HTML \u91CC\u7684\u6309\u94AE ${L.slice(0,64)} \u6CA1\u6709\u5BF9\u5E94\u7684\u52A8\u4F5C\uFF0C\u8BF7\u5148\u5728\u300C\u70B9\u51FB\u52A8\u4F5C\u300D\u91CC\u6DFB\u52A0\uFF0C\u5E76\u4F7F\u7528 button \u5143\u7D20\u3002`)}if(!$.textContent?.trim()&&!$.querySelector("img"))throw new Error("\u81EA\u5B9A\u4E49 HTML \u6E05\u6D17\u540E\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5185\u5BB9\u3002");return $.innerHTML}function Nt(g,m,A,I){let x=[],M="",$="";for(let _ of["html","css"])try{_==="html"?M=Te(g,A,I,x):$=qe(m)}catch(k){let L=_==="html"?g:m,z=_==="html"?/\{\{|data-grow-action/:/@import\b|url\s*\(|image-set\s*\(|[\\<]/i,B=k instanceof Error?k.message:"\u5185\u5BB9\u65E0\u6CD5\u89E3\u6790",G=_==="html"?B.match(/未知变量:(.+)/)?.[1]:void 0,T=G?L.indexOf(G):-1,P=typeof k=="object"&&k!==null&&"offset"in k&&typeof k.offset=="number"?k.offset:T>=0?L.lastIndexOf("{{",T):L.search(z);x.push({language:_,from:Math.max(0,P),to:Math.min(L.length,Math.max(0,P)+2),severity:"error",message:B})}return{html:M,css:$,diagnostics:x,valid:!x.some(_=>_.severity==="error")}}function Ae(g,m,A){if(!g)return;let I={},x=m.actions.map(M=>M.id);for(let[M,$]of Object.entries(g.nodes)){let _=k=>{if(k.html===void 0)return k;if(me(m,M)?.type!=="custom_html")throw new Error("HTML \u5546\u54C1\u6570\u636E\u53EA\u80FD\u7528\u4E8E\u81EA\u5B9A\u4E49 HTML \u7EC4\u4EF6");return{...k,html:Te(k.html,x,A)}};I[M]={...$,base:_($.base),...$.byPlan?{byPlan:Object.fromEntries(Object.entries($.byPlan).map(([k,L])=>[k,_(L)]))}:{}}}return{...g,nodes:I}}var mt=new WeakMap;function Ne(g,m){let A=dt.parse(g),I=JSON.stringify(A),x=mt.get(m);x||(x=new Map,mt.set(m,x));let M=Date.now();for(let[P,S]of x)S.expires<=M&&x.delete(P);let $=x.get(I);if($)return x.delete(I),x.set(I,$),JSON.parse($.json);let _=A.actions.map(P=>P.id),k=P=>{if(P.type==="stack")return{...P,children:P.children.map(k)};if(P.type!=="custom_html")return P;let S={};for(let[N,K]of Object.entries(P.html))S[N]=Te(K,_,m);return{...P,html:S,css:qe(P.css)}},L={...A,pages:A.pages.map(P=>({...P,root:k(P.root)}))},z=JSON.stringify(L),B=new TextEncoder,G=B.encode(z).length;if(G>ve.documentBytes)throw new Error(`\u754C\u9762\u5185\u5BB9\u8FC7\u5927\uFF08\u4E0A\u9650 ${ve.documentBytes/1e3} KB\uFF09\u3002`);let T=B.encode(I).length;if(T<=ve.documentBytes){x.set(I,{json:z,bytes:T+G,expires:M+6e4});let P=[...x.values()].reduce((S,N)=>S+N.bytes,0);for(;x.size>16||P>2*1024*1024;){let[S,N]=x.entries().next().value;x.delete(S),P-=N.bytes}}return L}function ht(g){function m(e){return e.type==="stack"&&e.interaction?.type==="select"&&e.interaction.purpose==="product"&&!!e.interaction.pickerId}function A(e){let a={};function t(n){if(m(n)){let i=a[n.interaction.pickerId]??={ids:[],defaultId:null};for(let r of n.children){let c=r.type==="stack"?r.bind?.plan:void 0;c&&!i.ids.includes(c)&&i.ids.push(c)}let s=n.children[n.interaction.defaultIndex];!i.defaultId&&s?.type==="stack"&&(i.defaultId=s.bind?.plan??null)}n.type==="stack"&&n.children.forEach(t)}return e.pages.forEach(n=>t(n.root)),a}function I(e,a,t){let n={};function i(d){if(d.hidden||d.type!=="stack")return;let p=d.children.filter(o=>!o.hidden),b=d.interaction;if(m(d)){let o=n[d.interaction.pickerId]??={ids:[],defaults:[],remembered:[]},h=t.pickers[d.interaction.pickerId]?.options??[];for(let w of p){let D=w.type==="stack"?w.bind?.plan:void 0;D&&h.includes(D)&&!o.ids.includes(D)&&o.ids.push(D),D&&w.id===a[d.id]&&o.remembered.push(D)}let y=d.children[d.interaction.defaultIndex];y?.type==="stack"&&!y.hidden&&y.bind?.plan&&o.defaults.push(y.bind.plan)}if(b?.type==="tabs"){let o=p.find(h=>h.id===a[d.id])??d.children[b.defaultIndex];o&&i(o)}else if(b?.type==="toggle"){let o=typeof a[d.id]=="boolean"?a[d.id]:b.defaultEnabled,h=d.children[o?0:1];h&&i(h)}else p.forEach(i)}let s=typeof a.__page=="string"?a.__page:e.initialPageId??e.pages[0]?.id,r=e.pages.find(d=>d.id===s);r&&i(r.root);let c={};for(let[d,p]of Object.entries(n)){let b=a[d],o=p.remembered[0]??(p.ids.includes(t.pickers[d]?.selected??"")?t.pickers[d]?.selected:p.defaults[0]);c[d]=typeof b=="string"?p.ids.includes(b)?b:"":o&&p.ids.includes(o)?o:""}for(let d of Object.keys(A(e)))c[d]??="";return c}let x=window;for(let e=0;e<g.hostDepth;e++)x=x.parent;let M=window,$={none:0,xs:4,sm:8,md:12,lg:20,xl:32},_={none:0,sm:4,md:8,lg:14,full:9999},k={system:'system-ui,-apple-system,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif',serif:'Georgia,"Times New Roman","Songti SC","Noto Serif CJK SC",serif',rounded:'ui-rounded,"SF Pro Rounded","Hiragino Maru Gothic ProN",system-ui,sans-serif',mono:"ui-monospace,SFMono-Regular,Menlo,Consolas,monospace"},L={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch"},z={start:"flex-start",center:"center",end:"flex-end",between:"space-between"},B={start:"start",center:"center",end:"end",between:"stretch"},G={start:"start",center:"center",end:"end",stretch:"stretch"},T={"1:1":"1 / 1","4:3":"4 / 3","16:9":"16 / 9","3:1":"3 / 1"},P=`
|
|
2
2
|
*,*::before,*::after{box-sizing:border-box}
|
|
3
3
|
html,body{margin:0;padding:0;background:transparent}
|
|
4
4
|
body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
|
|
@@ -20,6 +20,7 @@ body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antial
|
|
|
20
20
|
.g-caption{font-size:12px;line-height:1.5;letter-spacing:.02em}
|
|
21
21
|
.g-btn{appearance:none;border:0;margin:0;font:inherit;font-size:15px;font-weight:600;line-height:1.25;padding:12px 18px;border-radius:var(--g-radius);cursor:pointer;min-height:44px;text-align:center;overflow-wrap:anywhere}
|
|
22
22
|
.g-btn-primary{background:var(--g-primary);color:var(--g-on-primary)}
|
|
23
|
+
.g-btn.g-stack .g-text{color:inherit}
|
|
23
24
|
.g-btn-primary:hover{filter:brightness(1.06)}
|
|
24
25
|
.g-btn-secondary{background:transparent;color:var(--g-text);box-shadow:inset 0 0 0 1px var(--g-border)}
|
|
25
26
|
.g-btn-secondary:hover{background:var(--g-surface)}
|
|
@@ -166,13 +167,13 @@ body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antial
|
|
|
166
167
|
@media(max-width:560px){.g-data[data-source=credit_transactions][data-layout=compact] .g-data-row{grid-template-columns:minmax(0,1fr) minmax(95px,.45fr);gap:12px}.g-data[data-source=credit_transactions][data-layout=compact] .g-data-row-status{grid-column:1;grid-row:2;margin-inline-start:46px;justify-self:start}.g-data[data-source=credit_transactions][data-layout=compact] .g-data-row-extra{grid-column:2;grid-row:1/3}}
|
|
167
168
|
@media(max-width:560px){.g-data[data-source=membership] .g-data-row-no-value .g-data-row-status{grid-column:2;grid-row:1;align-self:start;justify-self:end}}
|
|
168
169
|
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
169
|
-
`,T=null,S,_=new Set,M,z,Z=[],te={},I=Object.create(null),Q=Object.create(null),U="",re=!1,R=-1,d=!1,y="",O=null,V=null,ae=null,J=document.createElement("div");J.id="g-card";let de=document.createElement("div"),ee=document.createElement("div");de.className=ee.className="g-box",ee.dataset.kind="select",de.append(document.createElement("span")),ee.append(document.createElement("span"));function j(e){let a={...e,channel:c.channel};try{x.webkit?.messageHandlers?.grow?x.webkit.messageHandlers.grow.postMessage(a):x.GrowAndroid?x.GrowAndroid.postMessage(JSON.stringify(a)):p.postMessage(a,c.parentOrigin)}catch{}}function le(e){let a=parseInt(e.slice(1),16);return[a>>16&255,a>>8&255,a&255]}function ye(e,a,t){let r=le(e),o=le(a),i=r.map((n,u)=>Math.round(n*t+o[u]*(1-t)));return`rgb(${i[0]},${i[1]},${i[2]})`}function pt(e){let[a,t,r]=le(e).map(o=>{let i=o/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4});return .2126*a+.7152*t+.0722*r}function pe(e){return typeof e!="string"?"":e.startsWith("#")?e:`var(--g-${e==="background"?"bg":e})`}function ut(e){let a=e.theme,t=document.documentElement.style,r=pt(a.primary),o=(r+.05)/.05>1.05/(r+.05)?"#111318":"#FFFFFF";t.setProperty("--g-primary",a.primary),t.setProperty("--g-on-primary",o),t.setProperty("--g-bg",a.background),t.setProperty("--g-text",a.text),t.setProperty("--g-muted",ye(a.text,a.background,.62)),t.setProperty("--g-surface",ye(a.text,a.background,.05)),t.setProperty("--g-border",ye(a.text,a.background,.16)),t.setProperty("--g-focus",ye(a.primary,a.background,.45)),t.setProperty("--g-radius",`${h[a.radius]??8}px`),t.setProperty("--g-font",D[a.font]??D.system),t.setProperty("--g-edit","#2C3C96")}function G(e){let a=T?.strings.locales[U]?.[e];return a&&a.trim()?{value:a,missing:!1}:{value:T?.strings.locales[T.strings.defaultLocale]?.[e]??"",missing:!0}}function me(e){let a=M?.nodes[e];if(!a)return;let t=a.picker?I[a.picker]??M?.pickers[a.picker]?.selected:void 0;return typeof t=="string"?a.byPlan?.[t]??a.base:a.base}function gt(){return Object.fromEntries(Object.entries(I).filter(e=>!Array.isArray(e[1])))}function Ee(e,a,t){let r=me(e.id),o=r?.[a],i=o!==void 0?{value:o,missing:!!r?.missing?.length}:G(t);if(c.mode==="live"&&S){let n=!1,u=i.value.replace(/\{\{\s*(input|params)\.([a-zA-Z][a-zA-Z0-9_.-]{0,63})\s*\}\}/g,(g,s,C)=>{let m=s==="params"?te[C]:S?.answers[C];return m==null||m===""||Array.isArray(m)&&!m.length?(n=!0,""):Array.isArray(m)?m.join(", "):String(m)});if(n)return{value:e.fallback?G(e.fallback).value:"",missing:!0};if(!u.includes("{{"))return{value:u,missing:i.missing}}return o!==void 0?i:i.value.includes("{{")&&c.mode==="live"?{value:e.fallback?G(e.fallback).value:"",missing:!0}:{value:i.value,missing:i.missing||i.value.includes("{{")}}function mt(e){if(e.name)return e.name;let a=c.editorMessages?.nodeTypes?.[e.type];return c.mode==="editor"&&typeof a=="string"?a:{stack:"\u5BB9\u5668",text:"\u6587\u672C",image:"\u56FE\u7247",button:"\u6309\u94AE",divider:"\u5206\u9694\u7EBF",spacer:"\u7559\u767D",custom_html:"\u81EA\u5B9A\u4E49 HTML",price:"\u4EF7\u683C",coupon_code:"\u4F18\u60E0\u7801",countdown:"\u5012\u8BA1\u65F6",plan_picker:"\u771F\u5B9E\u5957\u9910\u9009\u62E9"}[e.type]??e.type}function ft(e,a){if(a.type==="color")e.background="none",e.backgroundColor=pe(a.color);else if(a.type==="linear"){let t=a.stops.map(r=>`${pe(r.color)} ${Number(r.at)}%`).join(",");e.backgroundColor="transparent",e.backgroundImage=`linear-gradient(${Number(a.angle)}deg,${t})`}else if(a.type==="image"&&typeof a.src=="string"){let t=/^data:image\/(?:svg\+xml|jpeg|png);base64,[A-Za-z0-9+/]+={0,2}$/.test(a.src)?a.src:a.src.replace(/[^A-Za-z0-9\-._~:/?#[\]@!$&*+;=%]/gu,o=>o.length===1&&o.charCodeAt(0)<128?`%${o.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`:encodeURIComponent(o));e.backgroundImage=`url("${t}")`;let r=a.position;e.backgroundPosition=r?`${r.x}% ${r.y}%`:"center",e.backgroundSize=a.fit==="contain"?"contain":"cover",e.backgroundRepeat="no-repeat"}}function Fe(e){return`${Number(e.top)}px ${Number(e.right)}px ${Number(e.bottom)}px ${Number(e.left)}px`}function je(e,a,t,r,o){if(a===void 0)return;let i=r?.direction??"vertical",n=i!=="overlay"&&t==="width"==(i==="horizontal"),u=t==="width"?"minWidth":"minHeight";a==="fill"?i==="overlay"?(e.style[t]="100%",e.style[t==="width"?"justifySelf":"alignSelf"]="stretch"):n?(e.style.flex="1 1 0",e.style[u]="0"):(e.style.alignSelf="stretch",e.style[t]="auto"):a==="fit"?(e.style[t]="fit-content",t==="width"&&(e.style.maxWidth="100%"),!n&&i!=="overlay"&&(!r||r.align==="stretch")&&(e.style.alignSelf=o==="center"?"center":o==="end"?"flex-end":"flex-start")):typeof a=="number"&&(e.style[t]=`${a}px`,t==="width"&&(e.style.maxWidth="100%"),n&&(e.style.flex="0 0 auto"))}function fe(e,a,t){let r=a.style,o=r.text??{},i=e.style;if(a.type==="customer_data"&&(o.font&&i.setProperty("--g-data-display-font",D[String(o.font)]??D.system),a.data.source==="membership"&&(typeof o.size=="number"&&i.setProperty("--g-data-display-size",`clamp(${Math.min(o.size,28)}px, ${o.size/12}vw, ${o.size}px)`),typeof o.weight=="number"&&i.setProperty("--g-data-display-weight",String(o.weight)))),a.type==="customer_data"&&a.data.source==="credit_balance"&&(typeof o.size=="number"&&i.setProperty("--g-data-number-size",`clamp(${Math.min(o.size,48)}px, ${o.size/10}vw, ${o.size}px)`),o.font&&i.setProperty("--g-data-number-font",D[String(o.font)]??D.system),typeof o.weight=="number"&&i.setProperty("--g-data-number-weight",String(o.weight))),a.type==="customer_data"&&o.color){let s=pe(o.color);i.setProperty("--g-data-ink",s),i.setProperty("--g-data-muted",`color-mix(in srgb, ${s} 72%, transparent)`),i.setProperty("--g-data-line",`color-mix(in srgb, ${s} 20%, transparent)`),i.setProperty("--g-data-surface",`color-mix(in srgb, ${s} 8%, transparent)`)}r.padding&&(i.padding=Fe(r.padding)),r.margin&&(i.margin=Fe(r.margin)),typeof r.gap=="number"&&a.type==="stack"&&(i.gap=`${r.gap}px`),r.background&&ft(i,r.background),typeof r.opacity=="number"&&(i.opacity=String(r.opacity));let n=r.shape;if(n?.type==="pill")i.borderRadius="9999px";else if(n?.type==="rect"){let s=n.radius;i.borderRadius=typeof s=="number"?`${s}px`:`${Number(s.topLeft)}px ${Number(s.topRight)}px ${Number(s.bottomRight)}px ${Number(s.bottomLeft)}px`}(r.clipContent===!0||r.clipContent!==!1&&n&&(r.background||a.type==="image"))&&(i.overflow="hidden");let u=r.border;u&&(i.border=Number(u.width)>0?`${Number(u.width)}px ${u.style==="dashed"?"dashed":"solid"} ${pe(u.color)}`:"0");let g=r.shadow;g&&(i.boxShadow=`${Number(g.x)}px ${Number(g.y)}px ${Number(g.blur)}px ${Number(g.spread)}px ${pe(g.color)}`),["text","button","price","coupon_code","countdown","plan_picker"].includes(a.type)&&(o.font&&(i.fontFamily=D[String(o.font)]??""),typeof o.size=="number"&&(i.fontSize=`${o.size}px`),typeof o.weight=="number"&&(i.fontWeight=String(o.weight)),typeof o.lineHeight=="number"&&(i.lineHeight=String(o.lineHeight)),typeof o.letterSpacing=="number"&&(i.letterSpacing=`${o.letterSpacing}px`),o.color&&(i.color=pe(o.color)),o.align&&(i.textAlign=String(o.align)),o.italic&&(i.fontStyle="italic"),o.decoration&&(i.textDecoration=String(o.decoration)),o.transform&&(i.textTransform=String(o.transform))),je(e,r.width,"width",t,o.align),je(e,r.height,"height",t,o.align),t?.direction==="horizontal"&&r.grow!==void 0&&(i.flexGrow=String(r.grow===!0?1:r.grow===!1?0:r.grow))}function be(e,a){if(S){let t=S.bindings.find(r=>r.componentId===e);if(!t)return;S.answers[t.key]=a,_.add(e),j({type:"answers",answers:Oe()});return}}function Oe(){let e={};for(let a of S?.bindings??[]){let t=I[a.componentId];t!==void 0&&(e[a.key]=t)}return e}function ht(e){let a=document.createElement("section");a.className="g-data",a.dataset.layout=e.data.layout,a.dataset.source=e.data.source;let t=z?.nodes[e.id];a.dataset.status=t?.status??"idle",a.dataset.preview=String(!!t?.preview);let r=t?.status==="loading",o=U.startsWith("zh"),i=(l,b)=>o?l:b;a.setAttribute("aria-busy",String(!!r));let n=(l,b,B)=>{let A=document.createElement(l);return A.className=b,B!==void 0&&(A.textContent=B),A},u=l=>{let b=document.createElementNS("http://www.w3.org/2000/svg","svg");b.setAttribute("viewBox","0 0 24 24"),b.setAttribute("fill","none"),b.setAttribute("stroke","currentColor"),b.setAttribute("stroke-width","1.7"),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round"),b.setAttribute("aria-hidden","true"),b.classList.add("g-data-icon");let B={refresh:["M20 7v5h-5","M4 17v-5h5","M6.1 7a7 7 0 0 1 11.5-1.5L20 8M4 16l2.4 2.5A7 7 0 0 0 18 17"],down:["M7 7l10 10M7 17h10V7"],up:["M7 17L17 7M7 7h10v10"],chevron:["M6 9l6 6 6-6"],empty:["M4 8l8-4 8 4v10l-8 4-8-4V8Z","M4 8l8 4 8-4M12 12v10"],credit:["M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z","M12 7v10M8 12h8"]};for(let A of B[l]){let $=document.createElementNS("http://www.w3.org/2000/svg","path");$.setAttribute("d",A),b.append($)}return b},g=(l,b,B,A=!1,$=b)=>{let Y=n("button","g-data-button",l);return Y.type="button",Y.disabled=A||!!r&&b!=="refresh"||!!t?.preview||c.mode!=="live",r&&b==="refresh"&&Y.setAttribute("aria-disabled","true"),Y.dataset.gDataFocus=`${e.id}:${$}:${B??""}`,Y.addEventListener("click",X=>{!X.isTrusted||Y.disabled||r||j({type:"customer-data-intent",intent:{nodeId:e.id,action:b,...B?{value:B}:{}}})}),Y},s=n("div","g-data-header"),C=n("h2","g-data-heading",G(e.title).value);C.id=`g-data-title-${e.id}`,a.setAttribute("aria-labelledby",C.id);let m=n("div","g-data-controls"),f=[],v=l=>{l.hidden||(l.type==="customer_data"&&f.push(l),l.type==="stack"&&l.children.forEach(v))},F=T?.pages[0];F&&v(F.root);let xt=f.every(l=>z?.nodes[l.id]?.preview),vt=f.find(l=>l.data.source==="credit_balance")??f[0];t?.preview&&(!xt||vt?.id===e.id)&&m.append(n("span","g-data-preview",i("\u793A\u4F8B\u6570\u636E","Sample data")));let Ce=r?i("\u66F4\u65B0\u4E2D\u2026","Updating\u2026"):i("\u5237\u65B0","Refresh"),ue=g(Ce,"refresh");if(ue.replaceChildren(u("refresh")),ue.setAttribute("aria-label",Ce),ue.title=Ce,ue.classList.add("g-data-refresh"),r&&ue.classList.add("g-data-refreshing"),m.append(ue),e.data.source==="billing"&&e.data.outputs?.billing_portal&&m.append(g(t?.billingBusy?i("\u6B63\u5728\u51C6\u5907\u2026","Preparing\u2026"):i("\u7BA1\u7406\u652F\u4ED8\u65B9\u5F0F","Manage payment method"),"billing_portal",void 0,!!t?.billingBusy||t?.status!=="ready")),e.data.source==="credit_balance"&&(C.prepend(u("credit")),t?.resources.length===1&&C.append(n("span","g-data-resource-label",t.resources[0].name)),t?.updatedAt)){let l=n("time","g-data-updated",`${i("\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(U,{timeStyle:"short"}).format(new Date(t.updatedAt))}`);l.dateTime=t.updatedAt,l.title=new Intl.DateTimeFormat(U,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt)),m.prepend(l)}if(s.append(C,m),a.append(s),!t||t.source!==e.data.source)return a.append(n("p","g-data-empty",i("\u8FDE\u63A5\u5BA2\u6237\u6570\u636E\u540E\u663E\u793A\u6B64\u5185\u5BB9\u3002","Connect customer data to display this content."))),a;if(t.errorMessage){let l=n("div","g-data-error",t.errorMessage);l.setAttribute("role","alert"),a.append(l);let b=n("div","g-data-recovery");b.append(g(i("\u91CD\u8BD5","Retry"),"refresh")),a.append(b)}if(t.membershipResult){let l=n("p","g-data-note",t.membershipResult);l.setAttribute("role","status"),a.append(l)}if(t.membershipReview){let l=t.membershipReview,b=n("section","g-data-resource");b.dataset.gDataReview="",b.setAttribute("aria-label",l.title),b.setAttribute("aria-busy",String(!!t.membershipBusy));let B=n("h3","g-data-row-label",l.title);B.tabIndex=-1,b.append(B);let A=n("dl","g-data-facts");for(let Y of l.facts){let X=n("div","");X.append(n("dt","",Y.label),n("dd","",Y.value)),A.append(X)}b.append(A,n("p","g-data-note",l.note));let $=n("div","g-data-controls");$.append(g(i("\u8FD4\u56DE","Back"),"membership_dismiss",void 0,!!t.membershipBusy),g(t.membershipBusy?i("\u6B63\u5728\u5904\u7406\u2026","Processing\u2026"):i("\u786E\u8BA4","Confirm"),"membership_confirm",void 0,!!t.membershipBusy)),b.append($),a.append(b)}if(t.stale&&(t.resources.length||t.rows.length)&&a.append(n("p",r?"g-data-live-status":"g-data-note",r?i("\u6B63\u5728\u66F4\u65B0\u8D26\u6237\u6570\u636E\u3002","Updating account data."):i("\u663E\u793A\u4E0A\u6B21\u8BFB\u53D6\u7684\u7ED3\u679C\uFF0C\u6B63\u5728\u7B49\u5F85\u66F4\u65B0\u3002","Showing the last result while awaiting an update."))),r&&!t.resources.length&&!t.rows.length){let l=n("div","g-data-skeleton");if(l.setAttribute("aria-hidden","true"),e.data.source==="credit_balance")l.append(n("span","g-data-skeleton-line g-data-skeleton-value"),n("span","g-data-skeleton-line g-data-skeleton-meta"));else{let B=Math.min(e.data.pageSize,e.data.layout==="compact"?2:4);for(let A=0;A<B;A++){let $=n("div","g-data-skeleton-row");$.append(n("span","g-data-skeleton-line"),n("span","g-data-skeleton-line")),l.append($)}}let b=n("p","g-data-live-status",i("\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u6570\u636E\u2026","Loading account data\u2026"));return b.setAttribute("role","status"),a.append(l,b),a}let Ve={credit_transactions:[["all","\u5168\u90E8\u8BB0\u5F55","All activity"],["consume","\u6D88\u8D39","Usage"],["reserve","\u9884\u6263","Reserved"],["confirm","\u786E\u8BA4\u6263\u8D39","Confirmed"],["release","\u91CA\u653E","Released"],["refund","\u9000\u56DE","Refund"]],credit_pack_orders:[["all","\u5168\u90E8\u8BA2\u5355","All orders"],["pending","\u7B49\u5F85\u4ED8\u6B3E","Pending"],["paid","\u5DF2\u4ED8\u6B3E","Paid"],["expired","\u5DF2\u8FC7\u671F","Expired"],["refunded","\u5DF2\u9000\u6B3E","Refunded"],["disputed","\u4E89\u8BAE\u4E2D","Disputed"]],offer_history:[["all","\u5168\u90E8\u8BB0\u5F55","All offers"],["issued","\u53EF\u7528","Available"],["redeemed","\u5DF2\u4F7F\u7528","Redeemed"],["expired","\u5DF2\u5230\u671F","Expired"],["revoked","\u5DF2\u64A4\u9500","Revoked"]]};if(Ve[e.data.source]){let l=n("select","g-data-select");l.setAttribute("aria-label",i("\u7B5B\u9009\u8BB0\u5F55","Filter records")),l.dataset.gDataFocus=`${e.id}:filter`,l.disabled=!!r||t.preview||c.mode!=="live";for(let[b,B,A]of Ve[e.data.source]){let $=document.createElement("option");$.value=b,$.textContent=i(B,A),l.append($)}l.value=t.filter,l.addEventListener("change",()=>{!l.disabled&&c.mode==="live"&&j({type:"customer-data-intent",intent:{nodeId:e.id,action:"filter",value:l.value}})}),m.prepend(l)}let Ge=(l,b=!1)=>{let B=n("ul","g-data-list");if(e.data.source==="credit_transactions"&&l.length&&!b){let A=n("div","g-data-table-head");A.setAttribute("aria-hidden","true"),A.append(n("span","",i("\u8BB0\u5F55","Record")),n("span","",i("\u7C7B\u578B","Type")),n("span","",i("\u79EF\u5206","Credits"))),a.append(A)}for(let A of l){let $=n("li","g-data-row"),Y=n("div","g-data-row-main"),X=n("div","g-data-row-copy");X.append(n("p","g-data-row-label",A.label));for(let W of A.detail)W!==A.status&&X.append(n("div","g-data-row-detail",W));if(e.data.source==="credit_transactions"&&!b){let W=n("span","g-data-row-mark");W.append(u(["Refund","\u9000\u56DE"].includes(A.status??"")?"up":"down")),Y.append(W)}if(Y.append(X),$.append(Y),A.status?$.append(n("div","g-data-row-status",A.status)):$.classList.add("g-data-row-no-status"),A.value?$.append(n("div","g-data-row-value",A.value)):$.classList.add("g-data-row-no-value"),A.facts.length||A.purchaseId||A.membershipActions?.length||A.billingActions?.length){let W=n("div","g-data-row-extra"),ne=n("div","g-data-facts"),oe=(K,ve)=>{for(let Ze of K){let Ye=n("span","",Ze.label);Ye.append(n("strong","",Ze.value)),ve.append(Ye)}};if(oe(A.facts.slice(0,3),ne),A.facts.length>3){let K=n("details","g-data-sources");K.dataset.gDataSources=`facts:${A.id}`,K.append(n("summary","",`${e.data.source==="billing"?i("\u8D26\u5355\u8BE6\u60C5","Invoice details"):i("\u5168\u90E8\u6263\u8D39\u660E\u7EC6","All allocations")} \xB7 ${A.facts.length}`));let ve=n("div","g-data-facts");oe(A.facts.slice(3),ve),K.append(ve),ne.append(K)}if(W.append(ne),!b)for(let K of A.billingActions??[])W.append(g(K.label,K.action,A.id,!!t.billingBusy));if(A.purchaseId&&e.data.allowPurchase&&!b){let K=g(t.buyingId===A.purchaseId?i("\u6B63\u5728\u51C6\u5907\u2026","Preparing\u2026"):i("\u8D2D\u4E70\u79EF\u5206","Buy credits"),"buy_pack",A.purchaseId,!!t.preview||!!t.buyingId);K.classList.add("g-data-buy"),W.append(K)}if(e.data.allowPurchase&&!b)for(let K of A.membershipActions??[])W.append(g(K.label,"membership_preview",K.value,!!t.preview||!!t.membershipBusy||!!t.membershipReview));$.append(W)}B.append($)}return B};for(let l of t.resources){let b=n("article","g-data-resource");b.setAttribute("aria-label",l.name),t.resources.length>1&&b.append(n("p","g-data-name",l.name));let B=n("div","g-data-balance"),A=new Intl.NumberFormat(U).formatToParts(1.1).find(W=>W.type==="decimal")?.value??".",$=l.spendable.lastIndexOf(A),Y=n("strong","g-data-number",$<0?l.spendable:l.spendable.slice(0,$));$>=0&&Y.append(n("span","g-data-fraction",l.spendable.slice($))),B.append(Y,n("span","g-data-unit",i("\u53EF\u7528\u79EF\u5206","Spendable credits"))),b.append(B);let X=n("div","g-data-facts");for(let[W,ne]of[[i("\u4F59\u989D","Balance"),l.available],[i("\u51BB\u7ED3","Reserved"),l.reserved]]){let oe=n("span","",W);oe.append(n("strong","",ne)),X.append(oe)}if(l.expiry&&X.append(n("span","g-data-expiry",`${i("\u6700\u8FD1\u5230\u671F","Next expiry")} \xB7 ${l.expiry}`)),b.append(X),e.data.showSources&&l.sourceCount){let W=n("details","g-data-sources");if(W.dataset.gDataSources=l.key,W.append(n("summary","",`${i("\u79EF\u5206\u6765\u6E90","Credit sources")} \xB7 ${l.sourceCount}`),Ge(l.sources,!0)),W.querySelector("summary")?.append(u("chevron")),l.hasNextSources||l.hasPreviousSources){let ne=n("div","g-data-footer");ne.append(n("span","",`${i("\u7B2C","Page")} ${l.sourcePage}`));let oe=n("div","g-data-controls");oe.append(g(i("\u4E0A\u4E00\u9875","Previous"),"sources_previous",l.key,!l.hasPreviousSources),g(i("\u4E0B\u4E00\u9875","Next"),"sources_next",l.key,!l.hasNextSources)),ne.append(oe),W.append(ne)}b.append(W)}a.append(b)}if(t.rows.length&&a.append(Ge(t.rows)),e.data.source==="billing_controls"&&(e.data.outputs?.billing_authorization||e.data.outputs?.billing_adjustment)){let l=n("div","g-data-controls");e.data.outputs?.billing_authorization&&l.append(g(i("\u8BBE\u7F6E\u81EA\u52A8\u4ED8\u6B3E\u6388\u6743","Set up payment authorization"),"billing_authorization")),e.data.outputs?.billing_adjustment&&l.append(g(i("\u67E5\u770B\u5F85\u786E\u8BA4\u8865\u6B3E","Review pending adjustment"),"billing_adjustment")),a.append(l)}if(!t.rows.length&&!t.resources.length&&t.status!=="error"){let l=n("p","g-data-empty",r?i("\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u6570\u636E\u2026","Loading account data\u2026"):t.status==="idle"?i("\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u8D26\u6237\u6570\u636E\u3002","Sign in to view your account data."):t.filter!=="all"?i("\u6CA1\u6709\u7B26\u5408\u7B5B\u9009\u6761\u4EF6\u7684\u8BB0\u5F55\u3002","No records match this filter."):e.data.source==="credit_pack_orders"?i("\u6682\u65E0\u8D2D\u4E70\u8BB0\u5F55","No purchases yet"):e.data.source==="credit_balance"?i("\u6682\u65E0\u79EF\u5206\u6765\u6E90","No credit balances yet"):e.data.source==="membership"?i("\u6682\u65E0\u4F1A\u5458\u65B9\u6848","No memberships yet"):e.data.source==="customer_plans"?i("\u6682\u65E0\u53EF\u9009\u5957\u9910","No plans available"):e.data.source==="credit_packs"?i("\u6682\u65E0\u53EF\u8D2D\u4E70\u7684\u79EF\u5206\u5305","No credit packs available"):e.data.source==="billing_controls"?i("\u5C1A\u672A\u8BBE\u7F6E\u7528\u91CF\u9650\u5236\u6216\u81EA\u52A8\u4ED8\u6B3E\u6388\u6743","No usage limits or payment authorizations configured"):e.data.source==="offer_history"?i("\u6682\u65E0\u4F18\u60E0\u8BB0\u5F55","No offers yet"):e.data.source==="billing"?i("\u6682\u65E0\u8D26\u5355","No invoices yet"):i("\u8FD9\u91CC\u8FD8\u6CA1\u6709\u8BB0\u5F55\u3002","There are no records yet."));l.prepend(u("empty")),l.setAttribute("role","status"),a.append(l)}if(t.hasNext||t.hasPrevious){let l=n("div","g-data-footer");l.append(n("span","",`${i("\u7B2C","Page")} ${t.page}`));let b=n("div","g-data-controls");b.append(g(i("\u4E0A\u4E00\u9875","Previous"),"previous",void 0,!t.hasPrevious),g(i("\u4E0B\u4E00\u9875","Next"),"next",void 0,!t.hasNext)),l.append(b),a.append(l)}return t.updatedAt&&e.data.source!=="credit_balance"&&a.append(n("p","g-data-note g-data-updated",`${i("\u6570\u636E\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(U,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt))}`)),a}let ce=new Map,Ae=new Map,Be=e=>{let a=e.target;for(let t of ce.keys())a&&!we(t)?.contains(a)&&ce.delete(t)};document.addEventListener("focusin",Be),document.addEventListener("pointerdown",Be);function yt(e){let a=z;if(z=e,!T)return;let t=(r,o)=>{if(r.type==="stack"){r.children.forEach(v=>t(v,r));return}if(r.type!=="customer_data"||JSON.stringify(a?.nodes[r.id])===JSON.stringify(e.nodes[r.id]))return;let i=we(r.id);if(!i)return;let n=document.activeElement;n&&i.contains(n)&&n.dataset.gDataFocus&&ce.set(r.id,n.dataset.gDataFocus);let u=new Set([...i.querySelectorAll("details[data-g-data-sources]")].filter(v=>v.open).map(v=>v.dataset.gDataSources)),g=Le(r,o);if(!g)return;for(let v of g.querySelectorAll("details[data-g-data-sources]"))v.open=u.has(v.dataset.gDataSources);let s=i.scrollTop;i.replaceWith(g),g.scrollTop=s;let C=!!e.nodes[r.id]?.membershipReview&&!a?.nodes[r.id]?.membershipReview,m=!e.nodes[r.id]?.membershipReview&&!!a?.nodes[r.id]?.membershipReview;C&&ce.get(r.id)&&Ae.set(r.id,ce.get(r.id));let f=m?Ae.get(r.id):ce.get(r.id);f&&[...g.querySelectorAll("[data-g-data-focus]")].find(v=>v.dataset.gDataFocus===f)?.focus({preventScroll:!0}),C&&g.querySelector("[data-g-data-review] h3")?.focus({preventScroll:!0}),m&&Ae.delete(r.id),g.animate&&e.nodes[r.id]?.status==="ready"&&!window.matchMedia("(prefers-reduced-motion:reduce)").matches&&g.animate([{opacity:.7},{opacity:1}],{duration:140,easing:"ease-out"})};t(T.pages[0].root,null),ie()}function Le(e,a){if(e.hidden)return null;let t;if(e.type==="customer_data")t=ht(e);else if(e.type==="stack"){t=document.createElement("div"),t.className=`g-stack ${e.direction==="horizontal"?"g-h":e.direction==="overlay"?"g-o":"g-v"}`,e.direction==="overlay"?(t.style.alignItems=E[e.align]??"stretch",t.style.justifyItems=w[e.justify]??"stretch"):(t.style.alignItems=N[e.align]??"stretch",t.style.justifyContent=L[e.justify]??"flex-start");for(let r of e.children){let o=Le(r,e);o&&t.append(o)}e.interaction&&bt(t,e),c.mode==="editor"&&!t.childElementCount&&(t.classList.add("g-empty"),t.dataset.gEditorPlaceholder=c.editorMessages?.emptyContainer??"\u62D6\u5165\u7EC4\u4EF6")}else if(e.type==="text"){let r=e.variant==="title"?"h1":e.variant==="heading"?"h2":"p";t=document.createElement(r),t.className=`g-text g-${e.variant}`;let o=Ee(e,"text",e.text);t.textContent=o.value,o.missing&&c.mode==="editor"&&t.classList.add("g-missing")}else if(e.type==="button"){t=document.createElement("button"),t.type="button",t.className=`g-btn g-btn-${e.variant}`;let r=Ee(e,"label",e.label);t.textContent=r.value,r.missing&&c.mode==="editor"&&t.classList.add("g-missing"),t.dataset.gAction=e.action,c.mode==="editor"&&(t.tabIndex=-1)}else if(e.type==="image"){t=document.createElement("div"),t.className="g-img",P[e.aspect]&&(t.dataset.aspect=e.aspect,t.style.aspectRatio=P[e.aspect]);let r=document.createElement("img");r.src=e.localizedSrc?.[U]??e.localizedSrc?.[T.strings.defaultLocale]??e.src,r.alt=Ee(e,"alt",e.alt).value,r.referrerPolicy="no-referrer",r.decoding="async",r.style.objectFit=e.fit,e.position&&(r.style.objectPosition=`${e.position.x}% ${e.position.y}%`),r.addEventListener("load",ie),t.append(r)}else if(e.type==="price"){t=document.createElement("div"),t.className="g-price",t.style.cssText="display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-variant-numeric:tabular-nums";let r=me(e.id);if(!r?.price)t.textContent=r?.text??G(e.fallback).value,c.mode==="editor"&&t.classList.add("g-missing");else for(let o of["current","original","period"]){let i=r.price[o];if(!i)continue;let n=document.createElement(o==="original"?"s":"span");n.textContent=i,o==="original"&&(n.style.opacity=".6"),e.parts?.[o]&&fe(n,{type:"text",id:e.id,text:e.fallback,variant:"body",style:e.parts[o]},null),t.append(n)}}else if(e.type==="coupon_code"){t=document.createElement("div"),t.style.cssText="display:flex;align-items:center;gap:12px;flex-wrap:wrap";let r=me(e.id);if(r?.code){let o=document.createElement("code");o.textContent=r.code;let i=document.createElement("button");i.type="button",i.className="g-btn g-btn-secondary",i.textContent=G(e.label).value,i.addEventListener("click",n=>{c.mode!=="editor"&&(n.stopPropagation(),j({type:"copy",nodeId:e.id}))}),t.append(o,i)}else t.textContent=r?.text??G(e.fallback).value,c.mode==="editor"&&t.classList.add("g-missing")}else if(e.type==="countdown"){t=document.createElement("span"),t.setAttribute("role","timer"),t.style.fontVariantNumeric="tabular-nums";let r=me(e.id),o=r?.countdownAt?Date.parse(r.countdownAt):NaN;!Number.isFinite(o)&&c.mode==="editor"&&t.classList.add("g-missing");let i=()=>{if(!Number.isFinite(o)){t.textContent=r?.text??G(e.fallback).value;return}let n=Math.max(0,Math.ceil((o-Date.now())/1e3));if(!n){t.textContent=G(e.expired).value;return}let u=e.granularity,g=u==="day"?86400:u==="hour"?3600:u==="minute"?60:1;u!=="second"?t.textContent=new Intl.NumberFormat(U,{style:"unit",unit:u,unitDisplay:"short"}).format(Math.ceil(n/g)):t.textContent=[Math.floor(n/86400),Math.floor(n/3600)%24,Math.floor(n/60)%60,n%60].map(s=>String(s).padStart(2,"0")).join(":")};i(),Number.isFinite(o)&&Z.push(setInterval(i,1e3))}else if(e.type==="plan_picker"){t=document.createElement("div"),t.setAttribute("role","radiogroup"),t.setAttribute("aria-label",G(e.label).value),t.style.cssText="display:flex;flex-direction:column;gap:8px";let r=M?.pickers[e.id];if(!r?.options.length)t.textContent=G(e.fallback).value,c.mode==="editor"&&t.classList.add("g-missing");else{let o=typeof I[e.id]=="string"?String(I[e.id]):r.selected;I[e.id]=o??"";let i=n=>{I[e.id]=n,De(),we(e.id)?.querySelector(`[data-plan-id="${n}"]`)?.focus()};for(let[n,u]of r.options.entries()){let g=M.plans[u];if(!g)continue;let s=document.createElement("button");s.type="button",s.className="g-btn g-btn-secondary",s.style.cssText="width:100%;text-align:start",s.setAttribute("role","radio"),s.setAttribute("aria-checked",String(u===o)),s.tabIndex=c.mode==="editor"?-1:u===o?0:-1,s.dataset.planId=u;let C=M.nodes[e.id]?.byPlan?.[u]?.price;s.textContent=`${g.name} \xB7 ${C?.current??g.price}${C?.period??g.period}`,u===o&&(s.style.borderColor="var(--g-primary)",s.style.boxShadow="inset 0 0 0 1px var(--g-primary)",e.states?.selected&&fe(s,{type:"text",id:e.id,text:e.label,variant:"body",style:e.states.selected},null)),s.addEventListener("click",m=>{c.mode!=="editor"&&(m.stopPropagation(),i(u))}),s.addEventListener("keydown",m=>{if(c.mode==="editor")return;let f;["ArrowRight","ArrowDown"].includes(m.key)?f=(n+1)%r.options.length:["ArrowLeft","ArrowUp"].includes(m.key)?f=(n-1+r.options.length)%r.options.length:m.key==="Home"?f=0:m.key==="End"&&(f=r.options.length-1),f!==void 0&&(m.preventDefault(),i(r.options[f]))}),t.append(s)}}}else if(e.type==="divider")t=document.createElement("hr"),t.className="g-divider";else if(e.type==="spacer")t=document.createElement("div"),t.setAttribute("aria-hidden","true"),t.style.flex="0 0 auto",t.style.width=t.style.height=`${k[e.size]??0}px`;else if(e.type==="custom_html"){t=document.createElement("div"),t.className="g-custom";let r=t.attachShadow({mode:"open"}),o=e.html[U],i=o&&o.trim()?o:e.html[T?.strings.defaultLocale??""]??"",n=me(e.id);n?.html!==void 0?i=n.html:i.includes("{{")&&c.mode==="live"&&(i=G(e.fallback??"").value.replace(/[&<>"']/g,C=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[C])),(n?.missing?.length||!n&&i.includes("{{"))&&c.mode==="editor"&&t.classList.add("g-missing"),!(o&&o.trim())&&c.mode==="editor"&&t.classList.add("g-missing");let u=document.createElement("style");u.textContent=`:host{display:block}${e.css}`;let g=document.createElement("div");g.innerHTML=i,r.append(u,g);for(let s of g.querySelectorAll("img"))s.addEventListener("load",ie)}else return null;return e.style&&fe(t,e,a),t.dataset.gNode=e.id,t.dataset.gLabel=mt(e),t}function bt(e,a){let t=a.interaction,r=[...e.children];e.setAttribute("aria-label",G(t.label).value);let o=S?.bindings.find(n=>n.componentId===a.id),i=o?{id:o.key,source:o.componentId,required:o.required}:void 0;if(i){let n=document.createElement("p");n.className="g-text g-body",n.textContent=G(t.label).value+(i.required?" *":""),e.prepend(n),i.required&&e.setAttribute("aria-required","true")}if(t.type==="input"){let n=document.createElement("input");n.type=t.keyboard,n.maxLength=t.maxLength,n.autocomplete="off",n.setAttribute("aria-label",G(t.label).value),n.setAttribute("aria-required",String(!!i?.required)),n.value=typeof I[a.id]=="string"?String(I[a.id]):"",n.style.cssText="box-sizing:border-box;width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-surface);color:var(--g-text);font:inherit",n.disabled=c.mode!=="live",n.addEventListener("input",()=>{I[a.id]=n.value,be(a.id,n.value)}),e.append(n);return}if(!(c.mode!=="live"||!r.length&&t.type!=="toggle")){if(t.type==="multiselect"){e.setAttribute("role","group"),e.dataset.gMin=String(t.min);let n=a.children.filter(s=>!s.hidden),u=new Set(Array.isArray(I[a.id])?I[a.id]:[]),g=()=>r.forEach((s,C)=>{let m=u.has(n[C].id);s.setAttribute("aria-checked",String(m)),s.setAttribute("aria-disabled",String(!m&&u.size>=t.max)),s.style.outline=m?"2px solid var(--g-primary)":"",s.style.outlineOffset="-2px"});r.forEach((s,C)=>{s.setAttribute("role","checkbox"),s.tabIndex=0,s.setAttribute("aria-label",s.textContent?.trim()||String(C+1)),s.style.cursor="pointer";let m=()=>{let f=n[C].id;if(u.has(f))u.delete(f);else if(u.size<t.max)u.add(f);else return;let v=n.filter(F=>u.has(F.id)).map(F=>F.id);I[a.id]=v,g(),be(a.id,v)};s.addEventListener("click",f=>{f.stopPropagation(),m()}),s.addEventListener("keydown",f=>{[" ","Enter"].includes(f.key)&&(f.preventDefault(),f.stopPropagation(),m())})}),g();return}if(t.type==="select"){e.setAttribute("role","radiogroup");let n=a.children.filter(s=>!s.hidden),u=n.findIndex(s=>s.id===I[a.id]);u<0&&!i?.required&&(u=Math.min(t.defaultIndex,r.length-1));let g=(s,C=!1,m=!0)=>{u=s,s>=0&&(I[a.id]=n[s].id),m&&s>=0&&be(a.id,n[s].id),r.forEach((f,v)=>{f.setAttribute("aria-checked",String(v===s)),f.tabIndex=v===(s<0?0:s)?0:-1,f.style.cssText="";let F=n[v];F.type==="stack"&&(f.style.alignItems=N[F.align]??"stretch",f.style.justifyContent=L[F.justify]??"flex-start"),F.style&&fe(f,F,a),v===s&&(t.selectedStyle&&fe(f,{...F,style:t.selectedStyle},a),t.selectedStyle?.border||(f.style.outline="2px solid var(--g-primary)",f.style.outlineOffset="-2px")),f.style.cursor="pointer"}),C&&s>=0&&r[s].focus()};r.forEach((s,C)=>{s.setAttribute("role","radio"),s.setAttribute("aria-label",s.textContent?.trim()||String(C+1)),s.addEventListener("click",m=>{m.stopPropagation(),g(C)}),s.addEventListener("keydown",m=>{let f=m.key;if(!["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"," ","Enter"].includes(f))return;m.preventDefault(),m.stopPropagation();let v=u<0?C:u;g(f==="Home"?0:f==="End"?r.length-1:f==="ArrowRight"||f==="ArrowDown"?(v+1)%r.length:f==="ArrowLeft"||f==="ArrowUp"?(v+r.length-1)%r.length:C,!0)})}),g(u,!1,!1)}else if(t.type==="tabs"){let n=a.children.filter(m=>!m.hidden),u=document.createElement("div");u.setAttribute("role","tablist"),u.setAttribute("aria-label",G(t.label).value),u.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:12px";let g=r.map((m,f)=>{let v=document.createElement("button");return v.type="button",v.setAttribute("role","tab"),v.textContent=Re(n[f])||String(f+1),v.style.cssText="flex:1;min-width:0;min-height:44px;padding:8px 16px;border:0;border-radius:8px;font:inherit;cursor:pointer",m.id=`g-${a.id}-${n[f].id}`,m.setAttribute("role","tabpanel"),v.setAttribute("aria-controls",m.id),u.append(v),v}),s=(m,f=!1)=>{I[a.id]=n[m].id,r.forEach((v,F)=>{v.hidden=F!==m,g[F].setAttribute("aria-selected",String(F===m)),g[F].tabIndex=F===m?0:-1,g[F].style.background=F===m?"var(--g-primary)":"transparent",g[F].style.color=F===m?"var(--g-on-primary)":"var(--g-text)"}),f&&g[m].focus(),ie()};g.forEach((m,f)=>{m.addEventListener("click",v=>{v.stopPropagation(),s(f)}),m.addEventListener("keydown",v=>{["ArrowLeft","ArrowRight","Home","End"].includes(v.key)&&(v.preventDefault(),v.stopPropagation(),s(v.key==="Home"?0:v.key==="End"?r.length-1:(f+(v.key==="ArrowRight"?1:r.length-1))%r.length,!0))})}),e.prepend(u);let C=n.findIndex(m=>m.id===I[a.id]);s(C>=0?C:Math.min(t.defaultIndex,r.length-1))}else if(t.type==="toggle"){let n=document.createElement("button");n.type="button",n.setAttribute("role","switch"),n.className="g-btn g-btn-secondary",n.style.cssText="display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--g-text)";let u=document.createElement("span");u.textContent=G(t.label).value;let g=document.createElement("span");g.setAttribute("aria-hidden","true"),g.style.cssText="position:relative;display:block;flex:none;width:44px;height:24px;border-radius:12px;background:var(--g-border)";let s=document.createElement("span");s.style.cssText="position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003",g.append(s),n.append(u,g);let C=m=>{I[a.id]=m,n.setAttribute("aria-checked",String(m)),g.style.background=m?"var(--g-primary)":"var(--g-border)",s.style.left=m?"23px":"3px",s.style.background=m?"var(--g-on-primary)":"#FFFFFF",r.forEach((f,v)=>f.hidden=v!==(m?0:1)),ie()};n.addEventListener("click",m=>{m.stopPropagation(),C(!I[a.id]),be(a.id,!!I[a.id])}),e.prepend(n),C(typeof I[a.id]=="boolean"?I[a.id]:t.defaultEnabled)}else{e.setAttribute("role","region"),e.setAttribute("aria-roledescription","carousel");let n=document.createElement("div");n.style.cssText="display:flex;align-items:center;justify-content:center;gap:10px";let u=document.createElement("button"),g=document.createElement("button"),s=document.createElement("span"),C=U.startsWith("zh");u.textContent="\u2190",g.textContent="\u2192",u.setAttribute("aria-label",C?"\u4E0A\u4E00\u6761\u8BC4\u4EF7":"Previous review"),g.setAttribute("aria-label",C?"\u4E0B\u4E00\u6761\u8BC4\u4EF7":"Next review");for(let f of[u,g])f.type="button",f.className="g-btn g-btn-secondary",f.style.color="var(--g-text)";s.setAttribute("aria-live","polite");let m=f=>{Q[a.id]=f,r.forEach((v,F)=>v.hidden=F!==f),s.textContent=`${f+1} / ${r.length}`,ie()};u.addEventListener("click",f=>{f.stopPropagation(),m((Q[a.id]+r.length-1)%r.length)}),g.addEventListener("click",f=>{f.stopPropagation(),m((Q[a.id]+1)%r.length)}),n.append(u,s,g),e.append(n),m(Q[a.id]??0)}}}function Re(e){if(e.hidden)return"";if(e.type==="text"&&(e.variant==="title"||e.variant==="heading"))return G(e.text).value;if(e.type==="stack")for(let a of e.children){let t=Re(a);if(t)return t}return""}function De(){if(Z.forEach(clearInterval),Z=[],!T)return;J.style.cssText="";let e=T.pages[0];ut(e.theme?{...T,theme:e.theme}:T);let a=U.split("-")[0];document.documentElement.lang=U,document.documentElement.dir=["ar","he","fa","ur"].includes(a)?"rtl":"ltr",J.dataset.gPresentation=T.presentation.type;let t=Le(e.root,null);J.replaceChildren(...t?[t]:[]),J.dataset.gPage=e.id,c.mode==="live"&&j({type:"page",pageId:e.id}),_e(),Ie();let r=Math.ceil(J.getBoundingClientRect().height);re?ie():(re=!0,R=r,j({type:"rendered",height:r,label:Re(e.root)||T.name}))}function ie(){let e=Math.ceil(J.getBoundingClientRect().height);e!==R&&(R=e,j({type:"resize",height:e})),_e(),Ie()}function We(){d||(d=!0,window.requestAnimationFrame(()=>{d=!1,ie()}))}function Ie(){if(c.mode!=="editor")return;let e=[];for(let t of J.querySelectorAll("[data-g-node]")){let r=t.getBoundingClientRect();!r.width||!r.height||e.push({id:t.dataset.gNode,x:r.x,y:r.y,width:r.width,height:r.height})}let a=JSON.stringify(e);a!==y&&(y=a,j({type:"layout",nodes:e}))}function we(e){return!e||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(e)?null:J.querySelector(`[data-g-node="${e}"]`)}function Ue(e,a){let t=we(a);if(!t){e.style.display="none";return}let r=t.getBoundingClientRect();e.style.display="block",e.style.left=`${r.left+window.scrollX}px`,e.style.top=`${r.top+window.scrollY}px`,e.style.width=`${r.width}px`,e.style.height=`${r.height}px`,e.toggleAttribute("data-below",r.top<20),e.firstChild.textContent=t.dataset.gLabel??""}function _e(){c.mode==="editor"&&(Ue(ee,V),Ue(de,O&&O!==V?O:null))}function xe(e){for(let a of e.composedPath()){if(a instanceof HTMLElement&&a.dataset.gNode)return a.dataset.gNode;if(a===J)break}return null}function wt(e){if(e.isTrusted){if(c.mode==="editor"){e.preventDefault(),e.stopPropagation(),j({type:"select",id:xe(e)});return}for(let a of e.composedPath()){if(!(a instanceof HTMLElement))continue;let t=a.dataset.gAction??(a.tagName==="BUTTON"?a.getAttribute("data-grow-action"):null);if(t&&!a.disabled){e.preventDefault(),j({type:"action",actionId:t,nodeId:xe(e)??void 0,...Object.keys(I).length?{selection:gt()}:{},...S?{answers:Oe()}:{}});return}if(a===J)return}}}function Je(e){let a=e;if(!(!a||a.channel!==c.channel))try{if(a.type==="render"){let t=a.doc;if(!t||t.kind!=="screen"||t.schemaVersion!==3||Object.hasOwn(t,"funnel")||t.pages?.length!==1||t.pages.some(r=>Object.hasOwn(r,"source"))||t.actions?.some(r=>!["event","close","open_url","claim_offer"].includes(r.type)))throw new Error("Unsupported screen document; use the current Funnel runtime for flows");T=t,U=String(a.locale),_=new Set,te=a.parameters??{},S=a.serverInput,I=Object.create(null),M=a.capabilities,z=a.customerData,ce.clear();for(let[r,o]of Object.entries(M?.pickers??{}))o.selected&&(I[r]=o.selected);for(let r of S?.bindings??[])Object.hasOwn(S.answers,r.key)&&(I[r.componentId]=S.answers[r.key],_.add(r.componentId));Q=Object.create(null),U=String(a.locale),De()}else if(a.type==="capabilities"){M=a.capabilities;for(let[t,r]of Object.entries(M.pickers))r.options.includes(String(I[t]))||(I[t]=r.selected??"");{let t=document.activeElement,r=t?.closest("[data-g-node]")?.dataset.gNode,o=t instanceof HTMLInputElement?{start:t.selectionStart,end:t.selectionEnd}:void 0,i=t?.getAttribute("role"),n=t?.getAttribute("data-plan-id");if(De(),r){let u=J.querySelector(`[data-g-node="${r}"]`),g=i==="radio"&&n?u?.querySelector(`[data-plan-id="${n}"]`):u?.matches("button,[tabindex],a")?u:u?.querySelector("input,button,[tabindex],a");g?.focus({preventScroll:!0}),o&&g instanceof HTMLInputElement&&g.type==="text"&&g.setSelectionRange(o.start,o.end)}}}else a.type==="customer-data"?yt(a.data):a.type==="restore-action-focus"&&c.mode==="live"?[...J.querySelectorAll("button[data-g-node]")].find(t=>t.dataset.gNode===a.nodeId&&!t.disabled)?.focus({preventScroll:!0}):a.type==="highlight"&&c.mode==="editor"&&(O=a.hoverId??null,V=a.selectedId??null,_e())}catch(t){j({type:"error",message:t instanceof Error?t.message:"render failed"})}}let qe=document.createElement("style");qe.textContent=H,document.head.append(qe),document.body.append(J),c.mode==="editor"&&(document.body.dataset.gEditor="",document.body.append(de,ee),document.addEventListener("mouseover",e=>{let a=xe(e);a!==ae&&(ae=a,j({type:"hover",id:a}))}),document.documentElement.addEventListener("mouseleave",()=>{ae!==null&&(ae=null,j({type:"hover",id:null}))}),document.addEventListener("dblclick",e=>{let a=xe(e);a&&e.isTrusted&&j({type:"edit",id:a})}),document.addEventListener("click",e=>{J.contains(e.target)||j({type:"select",id:null})})),J.addEventListener("click",wt),document.addEventListener("keydown",e=>{e.key==="Escape"&&e.isTrusted&&j({type:"escape"})}),typeof ResizeObserver=="function"&&new ResizeObserver(We).observe(J),window.addEventListener("resize",We),c.mode==="editor"&&window.addEventListener("scroll",Ie),window.addEventListener("message",e=>{e.source===p&&Je(e.data)}),x.__growReceive=Je,j({type:"ready"})}var Dt=`(${dt.toString()})(JSON.parse(document.getElementById("grow-renderer-boot").textContent))`;function lt(c,p){let x=JSON.stringify(c).replace(/</g,"\\u003c");return`<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'nonce-${p}'; style-src 'unsafe-inline'; img-src https: data:; connect-src 'none'; font-src 'none'; media-src 'none'; frame-src 'none'; base-uri 'none'; form-action 'none'"></head><body><script type="application/json" id="grow-renderer-boot">${x}<\/script><script nonce="${p}">${Dt}<\/script></body></html>`}function It(){return`(() => {
|
|
170
|
+
`,S=null,N,K=new Set,F,te,oe=[],le={},ae=null,f=Object.create(null),l=Object.create(null),v=Object.create(null),H="",Y=!1,de=-1,be=!1,ke="",se=null,ie=null,pe=null,W=document.createElement("div");W.id="g-card";let Ie=document.createElement("div"),Se=document.createElement("div");Ie.className=Se.className="g-box",Se.dataset.kind="select",Ie.append(document.createElement("span")),Se.append(document.createElement("span"));function X(e){let a={...e,channel:g.channel};try{x.postMessage(a,g.parentOrigin)}catch{}}function Pe(e){let a=parseInt(e.slice(1),16);return[a>>16&255,a>>8&255,a&255]}function Le(e,a,t){let n=Pe(e),i=Pe(a),s=n.map((r,c)=>Math.round(r*t+i[c]*(1-t)));return`rgb(${s[0]},${s[1]},${s[2]})`}function wt(e){let[a,t,n]=Pe(e).map(i=>{let s=i/255;return s<=.03928?s/12.92:((s+.055)/1.055)**2.4});return .2126*a+.7152*t+.0722*n}function we(e){return typeof e!="string"?"":e.startsWith("#")?e:`var(--g-${e==="background"?"bg":e})`}function xt(e){let a=e.theme,t=document.documentElement.style,n=wt(a.primary),i=(n+.05)/.05>1.05/(n+.05)?"#111318":"#FFFFFF";t.setProperty("--g-primary",a.primary),t.setProperty("--g-on-primary",i),t.setProperty("--g-bg",a.background),t.setProperty("--g-text",a.text),t.setProperty("--g-muted",Le(a.text,a.background,.62)),t.setProperty("--g-surface",Le(a.text,a.background,.05)),t.setProperty("--g-border",Le(a.text,a.background,.16)),t.setProperty("--g-focus",Le(a.primary,a.background,.45)),t.setProperty("--g-radius",`${_[a.radius]??8}px`),t.setProperty("--g-font",k[a.font]??k.system),t.setProperty("--g-edit","#2C3C96")}function U(e){let a=S?.strings.locales[H]?.[e];return a&&a.trim()?{value:a,missing:!1}:{value:S?.strings.locales[S.strings.defaultLocale]?.[e]??"",missing:!0}}function he(e){let a=F?.nodes[e];if(!a)return;let t=a.picker?f[a.picker]??F?.pickers[a.picker]?.selected:void 0;if(!(a.picker&&t===""))return typeof t=="string"?a.byPlan?.[t]??a.base:a.base}function Je(){return{...S?.surface==="paywall"&&ae?{__page:ae}:{},...Object.fromEntries(Object.entries(f).filter(e=>!Array.isArray(e[1])))}}function Ce(e,a,t){let n=he(e.id),i=n?.[a],s=i!==void 0?{value:i,missing:!!n?.missing?.length}:U(t);if(g.mode==="live"&&N){let r=!1,c=s.value.replace(/\{\{\s*(input|params)\.([a-zA-Z][a-zA-Z0-9_.-]{0,63})\s*\}\}/g,(d,p,b)=>{let o=p==="params"?le[b]:N?.answers[b];return o==null||o===""||Array.isArray(o)&&!o.length?(r=!0,""):Array.isArray(o)?o.join(", "):String(o)});if(r)return{value:e.fallback?U(e.fallback).value:"",missing:!0};if(!c.includes("{{"))return{value:c,missing:s.missing}}return i!==void 0?s:s.value.includes("{{")&&g.mode==="live"?{value:e.fallback?U(e.fallback).value:"",missing:!0}:{value:s.value,missing:s.missing||s.value.includes("{{")}}function vt(e){if(e.name)return e.name;let a=g.editorMessages?.nodeTypes?.[e.type];return g.mode==="editor"&&typeof a=="string"?a:{stack:"\u5BB9\u5668",text:"\u6587\u672C",image:"\u56FE\u7247",button:"\u6309\u94AE",divider:"\u5206\u9694\u7EBF",spacer:"\u7559\u767D",custom_html:"\u81EA\u5B9A\u4E49 HTML",price:"\u4EF7\u683C",coupon_code:"\u4F18\u60E0\u7801",countdown:"\u5012\u8BA1\u65F6",plan_picker:"\u771F\u5B9E\u5957\u9910\u9009\u62E9"}[e.type]??e.type}function kt(e,a){if(a.type==="color")e.background="none",e.backgroundColor=we(a.color);else if(a.type==="linear"){let t=a.stops.map(n=>`${we(n.color)} ${Number(n.at)}%`).join(",");e.backgroundColor="transparent",e.backgroundImage=`linear-gradient(${Number(a.angle)}deg,${t})`}else if(a.type==="image"&&typeof a.src=="string"){let t=/^data:image\/(?:svg\+xml|jpeg|png);base64,[A-Za-z0-9+/]+={0,2}$/.test(a.src)?a.src:a.src.replace(/[^A-Za-z0-9\-._~:/?#[\]@!$&*+;=%]/gu,i=>i.length===1&&i.charCodeAt(0)<128?`%${i.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`:encodeURIComponent(i));e.backgroundImage=`url("${t}")`;let n=a.position;e.backgroundPosition=n?`${n.x}% ${n.y}%`:"center",e.backgroundSize=a.fit==="contain"?"contain":"cover",e.backgroundRepeat="no-repeat"}}function Ze(e){return`${Number(e.top)}px ${Number(e.right)}px ${Number(e.bottom)}px ${Number(e.left)}px`}function Ye(e,a,t,n,i){if(a===void 0)return;let s=n?.direction??"vertical",r=s!=="overlay"&&t==="width"==(s==="horizontal"),c=t==="width"?"minWidth":"minHeight";a==="fill"?s==="overlay"?(e.style[t]="100%",e.style[t==="width"?"justifySelf":"alignSelf"]="stretch"):r?(e.style.flex="1 1 0",e.style[c]="0"):(e.style.alignSelf="stretch",e.style[t]="auto"):a==="fit"?(e.style[t]="fit-content",t==="width"&&(e.style.maxWidth="100%"),!r&&s!=="overlay"&&(!n||n.align==="stretch")&&(e.style.alignSelf=i==="center"?"center":i==="end"?"flex-end":"flex-start")):typeof a=="number"&&(e.style[t]=`${a}px`,t==="width"&&(e.style.maxWidth="100%"),r&&(e.style.flex="0 0 auto"))}function xe(e,a,t){let n=a.style,i=n.text??{},s=e.style;if(a.type==="customer_data"&&(i.font&&s.setProperty("--g-data-display-font",k[String(i.font)]??k.system),a.data.source==="membership"&&(typeof i.size=="number"&&s.setProperty("--g-data-display-size",`clamp(${Math.min(i.size,28)}px, ${i.size/12}vw, ${i.size}px)`),typeof i.weight=="number"&&s.setProperty("--g-data-display-weight",String(i.weight)))),a.type==="customer_data"&&a.data.source==="credit_balance"&&(typeof i.size=="number"&&s.setProperty("--g-data-number-size",`clamp(${Math.min(i.size,48)}px, ${i.size/10}vw, ${i.size}px)`),i.font&&s.setProperty("--g-data-number-font",k[String(i.font)]??k.system),typeof i.weight=="number"&&s.setProperty("--g-data-number-weight",String(i.weight))),a.type==="customer_data"&&i.color){let p=we(i.color);s.setProperty("--g-data-ink",p),s.setProperty("--g-data-muted",`color-mix(in srgb, ${p} 72%, transparent)`),s.setProperty("--g-data-line",`color-mix(in srgb, ${p} 20%, transparent)`),s.setProperty("--g-data-surface",`color-mix(in srgb, ${p} 8%, transparent)`)}n.padding&&(s.padding=Ze(n.padding)),n.margin&&(s.margin=Ze(n.margin)),typeof n.gap=="number"&&a.type==="stack"&&(s.gap=`${n.gap}px`),n.background&&kt(s,n.background),typeof n.opacity=="number"&&(s.opacity=String(n.opacity));let r=n.shape;if(r?.type==="pill")s.borderRadius="9999px";else if(r?.type==="rect"){let p=r.radius;s.borderRadius=typeof p=="number"?`${p}px`:`${Number(p.topLeft)}px ${Number(p.topRight)}px ${Number(p.bottomRight)}px ${Number(p.bottomLeft)}px`}(n.clipContent===!0||n.clipContent!==!1&&r&&(n.background||a.type==="image"))&&(s.overflow="hidden");let c=n.border;c&&(s.border=Number(c.width)>0?`${Number(c.width)}px ${c.style==="dashed"?"dashed":"solid"} ${we(c.color)}`:"0");let d=n.shadow;d&&(s.boxShadow=`${Number(d.x)}px ${Number(d.y)}px ${Number(d.blur)}px ${Number(d.spread)}px ${we(d.color)}`),["text","button","price","coupon_code","countdown","plan_picker"].includes(a.type)&&(i.font&&(s.fontFamily=k[String(i.font)]??""),typeof i.size=="number"&&(s.fontSize=`${i.size}px`),typeof i.weight=="number"&&(s.fontWeight=String(i.weight)),typeof i.lineHeight=="number"&&(s.lineHeight=String(i.lineHeight)),typeof i.letterSpacing=="number"&&(s.letterSpacing=`${i.letterSpacing}px`),i.color&&(s.color=we(i.color)),i.align&&(s.textAlign=String(i.align)),i.italic&&(s.fontStyle="italic"),i.decoration&&(s.textDecoration=String(i.decoration)),i.transform&&(s.textTransform=String(i.transform))),Ye(e,n.width,"width",t,i.align),Ye(e,n.height,"height",t,i.align),t?.direction==="horizontal"&&n.grow!==void 0&&(s.flexGrow=String(n.grow===!0?1:n.grow===!1?0:n.grow))}function Re(e,a){if(N){let t=N.bindings.find(n=>n.componentId===e);if(!t)return;N.answers[t.key]=a,K.add(e),X({type:"answers",answers:Ge()});return}}function Ge(){let e={};for(let a of N?.bindings??[]){let t=f[a.componentId];t!==void 0&&(e[a.key]=t)}return e}function St(e){let a=document.createElement("section");a.className="g-data",a.dataset.layout=e.data.layout,a.dataset.source=e.data.source;let t=te?.nodes[e.id];a.dataset.status=t?.status??"idle",a.dataset.preview=String(!!t?.preview);let n=t?.status==="loading",i=H.startsWith("zh"),s=(u,E)=>i?u:E;a.setAttribute("aria-busy",String(!!n));let r=(u,E,q)=>{let R=document.createElement(u);return R.className=E,q!==void 0&&(R.textContent=q),R},c=u=>{let E=document.createElementNS("http://www.w3.org/2000/svg","svg");E.setAttribute("viewBox","0 0 24 24"),E.setAttribute("fill","none"),E.setAttribute("stroke","currentColor"),E.setAttribute("stroke-width","1.7"),E.setAttribute("stroke-linecap","round"),E.setAttribute("stroke-linejoin","round"),E.setAttribute("aria-hidden","true"),E.classList.add("g-data-icon");let q={refresh:["M20 7v5h-5","M4 17v-5h5","M6.1 7a7 7 0 0 1 11.5-1.5L20 8M4 16l2.4 2.5A7 7 0 0 0 18 17"],down:["M7 7l10 10M7 17h10V7"],up:["M7 17L17 7M7 7h10v10"],chevron:["M6 9l6 6 6-6"],empty:["M4 8l8-4 8 4v10l-8 4-8-4V8Z","M4 8l8 4 8-4M12 12v10"],credit:["M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18Z","M12 7v10M8 12h8"]};for(let R of q[u]){let O=document.createElementNS("http://www.w3.org/2000/svg","path");O.setAttribute("d",R),E.append(O)}return E},d=(u,E,q,R=!1,O=E)=>{let Q=r("button","g-data-button",u);return Q.type="button",Q.disabled=R||!!n&&E!=="refresh"||!!t?.preview||g.mode!=="live",n&&E==="refresh"&&Q.setAttribute("aria-disabled","true"),Q.dataset.gDataFocus=`${e.id}:${O}:${q??""}`,Q.addEventListener("click",ne=>{!ne.isTrusted||Q.disabled||n||X({type:"customer-data-intent",intent:{nodeId:e.id,action:E,...q?{value:q}:{}}})}),Q},p=r("div","g-data-header"),b=r("h2","g-data-heading",U(e.title).value);b.id=`g-data-title-${e.id}`,a.setAttribute("aria-labelledby",b.id);let o=r("div","g-data-controls"),h=[],y=u=>{u.hidden||(u.type==="customer_data"&&h.push(u),u.type==="stack"&&u.children.forEach(y))},w=S?.pages[0];w&&y(w.root);let D=h.every(u=>te?.nodes[u.id]?.preview),j=h.find(u=>u.data.source==="credit_balance")??h[0];t?.preview&&(!D||j?.id===e.id)&&o.append(r("span","g-data-preview",s("\u793A\u4F8B\u6570\u636E","Sample data")));let C=n?s("\u66F4\u65B0\u4E2D\u2026","Updating\u2026"):s("\u5237\u65B0","Refresh"),J=d(C,"refresh");if(J.replaceChildren(c("refresh")),J.setAttribute("aria-label",C),J.title=C,J.classList.add("g-data-refresh"),n&&J.classList.add("g-data-refreshing"),o.append(J),e.data.source==="billing"&&e.data.outputs?.billing_portal&&o.append(d(t?.billingBusy?s("\u6B63\u5728\u51C6\u5907\u2026","Preparing\u2026"):s("\u7BA1\u7406\u652F\u4ED8\u65B9\u5F0F","Manage payment method"),"billing_portal",void 0,!!t?.billingBusy||t?.status!=="ready")),e.data.source==="credit_balance"&&(b.prepend(c("credit")),t?.resources.length===1&&b.append(r("span","g-data-resource-label",t.resources[0].name)),t?.updatedAt)){let u=r("time","g-data-updated",`${s("\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(H,{timeStyle:"short"}).format(new Date(t.updatedAt))}`);u.dateTime=t.updatedAt,u.title=new Intl.DateTimeFormat(H,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt)),o.prepend(u)}if(p.append(b,o),a.append(p),!t||t.source!==e.data.source)return a.append(r("p","g-data-empty",s("\u8FDE\u63A5\u5BA2\u6237\u6570\u636E\u540E\u663E\u793A\u6B64\u5185\u5BB9\u3002","Connect customer data to display this content."))),a;if(t.errorMessage){let u=r("div","g-data-error",t.errorMessage);u.setAttribute("role","alert"),a.append(u);let E=r("div","g-data-recovery");E.append(d(s("\u91CD\u8BD5","Retry"),"refresh")),a.append(E)}if(t.membershipResult){let u=r("p","g-data-note",t.membershipResult);u.setAttribute("role","status"),a.append(u)}if(t.membershipReview){let u=t.membershipReview,E=r("section","g-data-resource");E.dataset.gDataReview="",E.setAttribute("aria-label",u.title),E.setAttribute("aria-busy",String(!!t.membershipBusy));let q=r("h3","g-data-row-label",u.title);q.tabIndex=-1,E.append(q);let R=r("dl","g-data-facts");for(let Q of u.facts){let ne=r("div","");ne.append(r("dt","",Q.label),r("dd","",Q.value)),R.append(ne)}E.append(R,r("p","g-data-note",u.note));let O=r("div","g-data-controls");O.append(d(s("\u8FD4\u56DE","Back"),"membership_dismiss",void 0,!!t.membershipBusy),d(t.membershipBusy?s("\u6B63\u5728\u5904\u7406\u2026","Processing\u2026"):s("\u786E\u8BA4","Confirm"),"membership_confirm",void 0,!!t.membershipBusy)),E.append(O),a.append(E)}if(t.stale&&(t.resources.length||t.rows.length)&&a.append(r("p",n?"g-data-live-status":"g-data-note",n?s("\u6B63\u5728\u66F4\u65B0\u8D26\u6237\u6570\u636E\u3002","Updating account data."):s("\u663E\u793A\u4E0A\u6B21\u8BFB\u53D6\u7684\u7ED3\u679C\uFF0C\u6B63\u5728\u7B49\u5F85\u66F4\u65B0\u3002","Showing the last result while awaiting an update."))),n&&!t.resources.length&&!t.rows.length){let u=r("div","g-data-skeleton");if(u.setAttribute("aria-hidden","true"),e.data.source==="credit_balance")u.append(r("span","g-data-skeleton-line g-data-skeleton-value"),r("span","g-data-skeleton-line g-data-skeleton-meta"));else{let q=Math.min(e.data.pageSize,e.data.layout==="compact"?2:4);for(let R=0;R<q;R++){let O=r("div","g-data-skeleton-row");O.append(r("span","g-data-skeleton-line"),r("span","g-data-skeleton-line")),u.append(O)}}let E=r("p","g-data-live-status",s("\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u6570\u636E\u2026","Loading account data\u2026"));return E.setAttribute("role","status"),a.append(u,E),a}let ee={credit_transactions:[["all","\u5168\u90E8\u8BB0\u5F55","All activity"],["consume","\u6D88\u8D39","Usage"],["reserve","\u9884\u6263","Reserved"],["confirm","\u786E\u8BA4\u6263\u8D39","Confirmed"],["release","\u91CA\u653E","Released"],["refund","\u9000\u56DE","Refund"]],credit_pack_orders:[["all","\u5168\u90E8\u8BA2\u5355","All orders"],["pending","\u7B49\u5F85\u4ED8\u6B3E","Pending"],["paid","\u5DF2\u4ED8\u6B3E","Paid"],["expired","\u5DF2\u8FC7\u671F","Expired"],["refunded","\u5DF2\u9000\u6B3E","Refunded"],["disputed","\u4E89\u8BAE\u4E2D","Disputed"]],offer_history:[["all","\u5168\u90E8\u8BB0\u5F55","All offers"],["issued","\u53EF\u7528","Available"],["redeemed","\u5DF2\u4F7F\u7528","Redeemed"],["expired","\u5DF2\u5230\u671F","Expired"],["revoked","\u5DF2\u64A4\u9500","Revoked"]]};if(ee[e.data.source]){let u=r("select","g-data-select");u.setAttribute("aria-label",s("\u7B5B\u9009\u8BB0\u5F55","Filter records")),u.dataset.gDataFocus=`${e.id}:filter`,u.disabled=!!n||t.preview||g.mode!=="live";for(let[E,q,R]of ee[e.data.source]){let O=document.createElement("option");O.value=E,O.textContent=s(q,R),u.append(O)}u.value=t.filter,u.addEventListener("change",()=>{!u.disabled&&g.mode==="live"&&X({type:"customer-data-intent",intent:{nodeId:e.id,action:"filter",value:u.value}})}),o.prepend(u)}let at=(u,E=!1)=>{let q=r("ul","g-data-list");if(e.data.source==="credit_transactions"&&u.length&&!E){let R=r("div","g-data-table-head");R.setAttribute("aria-hidden","true"),R.append(r("span","",s("\u8BB0\u5F55","Record")),r("span","",s("\u7C7B\u578B","Type")),r("span","",s("\u79EF\u5206","Credits"))),a.append(R)}for(let R of u){let O=r("li","g-data-row"),Q=r("div","g-data-row-main"),ne=r("div","g-data-row-copy");ne.append(r("p","g-data-row-label",R.label));for(let V of R.detail)V!==R.status&&ne.append(r("div","g-data-row-detail",V));if(e.data.source==="credit_transactions"&&!E){let V=r("span","g-data-row-mark");V.append(c(["Refund","\u9000\u56DE"].includes(R.status??"")?"up":"down")),Q.append(V)}if(Q.append(ne),O.append(Q),R.status?O.append(r("div","g-data-row-status",R.status)):O.classList.add("g-data-row-no-status"),R.value?O.append(r("div","g-data-row-value",R.value)):O.classList.add("g-data-row-no-value"),R.facts.length||R.purchaseId||R.membershipActions?.length||R.billingActions?.length){let V=r("div","g-data-row-extra"),ce=r("div","g-data-facts"),fe=(re,De)=>{for(let rt of re){let nt=r("span","",rt.label);nt.append(r("strong","",rt.value)),De.append(nt)}};if(fe(R.facts.slice(0,3),ce),R.facts.length>3){let re=r("details","g-data-sources");re.dataset.gDataSources=`facts:${R.id}`,re.append(r("summary","",`${e.data.source==="billing"?s("\u8D26\u5355\u8BE6\u60C5","Invoice details"):s("\u5168\u90E8\u6263\u8D39\u660E\u7EC6","All allocations")} \xB7 ${R.facts.length}`));let De=r("div","g-data-facts");fe(R.facts.slice(3),De),re.append(De),ce.append(re)}if(V.append(ce),!E)for(let re of R.billingActions??[])V.append(d(re.label,re.action,R.id,!!t.billingBusy));if(R.purchaseId&&e.data.allowPurchase&&!E){let re=d(t.buyingId===R.purchaseId?s("\u6B63\u5728\u51C6\u5907\u2026","Preparing\u2026"):s("\u8D2D\u4E70\u79EF\u5206","Buy credits"),"buy_pack",R.purchaseId,!!t.preview||!!t.buyingId);re.classList.add("g-data-buy"),V.append(re)}if(e.data.allowPurchase&&!E)for(let re of R.membershipActions??[])V.append(d(re.label,"membership_preview",re.value,!!t.preview||!!t.membershipBusy||!!t.membershipReview));O.append(V)}q.append(O)}return q};for(let u of t.resources){let E=r("article","g-data-resource");E.setAttribute("aria-label",u.name),t.resources.length>1&&E.append(r("p","g-data-name",u.name));let q=r("div","g-data-balance"),R=new Intl.NumberFormat(H).formatToParts(1.1).find(V=>V.type==="decimal")?.value??".",O=u.spendable.lastIndexOf(R),Q=r("strong","g-data-number",O<0?u.spendable:u.spendable.slice(0,O));O>=0&&Q.append(r("span","g-data-fraction",u.spendable.slice(O))),q.append(Q,r("span","g-data-unit",s("\u53EF\u7528\u79EF\u5206","Spendable credits"))),E.append(q);let ne=r("div","g-data-facts");for(let[V,ce]of[[s("\u4F59\u989D","Balance"),u.available],[s("\u51BB\u7ED3","Reserved"),u.reserved]]){let fe=r("span","",V);fe.append(r("strong","",ce)),ne.append(fe)}if(u.expiry&&ne.append(r("span","g-data-expiry",`${s("\u6700\u8FD1\u5230\u671F","Next expiry")} \xB7 ${u.expiry}`)),E.append(ne),e.data.showSources&&u.sourceCount){let V=r("details","g-data-sources");if(V.dataset.gDataSources=u.key,V.append(r("summary","",`${s("\u79EF\u5206\u6765\u6E90","Credit sources")} \xB7 ${u.sourceCount}`),at(u.sources,!0)),V.querySelector("summary")?.append(c("chevron")),u.hasNextSources||u.hasPreviousSources){let ce=r("div","g-data-footer");ce.append(r("span","",`${s("\u7B2C","Page")} ${u.sourcePage}`));let fe=r("div","g-data-controls");fe.append(d(s("\u4E0A\u4E00\u9875","Previous"),"sources_previous",u.key,!u.hasPreviousSources),d(s("\u4E0B\u4E00\u9875","Next"),"sources_next",u.key,!u.hasNextSources)),ce.append(fe),V.append(ce)}E.append(V)}a.append(E)}if(t.rows.length&&a.append(at(t.rows)),e.data.source==="billing_controls"&&(e.data.outputs?.billing_authorization||e.data.outputs?.billing_adjustment)){let u=r("div","g-data-controls");e.data.outputs?.billing_authorization&&u.append(d(s("\u8BBE\u7F6E\u81EA\u52A8\u4ED8\u6B3E\u6388\u6743","Set up payment authorization"),"billing_authorization")),e.data.outputs?.billing_adjustment&&u.append(d(s("\u67E5\u770B\u5F85\u786E\u8BA4\u8865\u6B3E","Review pending adjustment"),"billing_adjustment")),a.append(u)}if(!t.rows.length&&!t.resources.length&&t.status!=="error"){let u=r("p","g-data-empty",n?s("\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u6570\u636E\u2026","Loading account data\u2026"):t.status==="idle"?s("\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u8D26\u6237\u6570\u636E\u3002","Sign in to view your account data."):t.filter!=="all"?s("\u6CA1\u6709\u7B26\u5408\u7B5B\u9009\u6761\u4EF6\u7684\u8BB0\u5F55\u3002","No records match this filter."):e.data.source==="credit_pack_orders"?s("\u6682\u65E0\u8D2D\u4E70\u8BB0\u5F55","No purchases yet"):e.data.source==="credit_balance"?s("\u6682\u65E0\u79EF\u5206\u6765\u6E90","No credit balances yet"):e.data.source==="membership"?s("\u6682\u65E0\u4F1A\u5458\u65B9\u6848","No memberships yet"):e.data.source==="customer_plans"?s("\u6682\u65E0\u53EF\u9009\u5957\u9910","No plans available"):e.data.source==="credit_packs"?s("\u6682\u65E0\u53EF\u8D2D\u4E70\u7684\u79EF\u5206\u5305","No credit packs available"):e.data.source==="billing_controls"?s("\u5C1A\u672A\u8BBE\u7F6E\u7528\u91CF\u9650\u5236\u6216\u81EA\u52A8\u4ED8\u6B3E\u6388\u6743","No usage limits or payment authorizations configured"):e.data.source==="offer_history"?s("\u6682\u65E0\u4F18\u60E0\u8BB0\u5F55","No offers yet"):e.data.source==="billing"?s("\u6682\u65E0\u8D26\u5355","No invoices yet"):s("\u8FD9\u91CC\u8FD8\u6CA1\u6709\u8BB0\u5F55\u3002","There are no records yet."));u.prepend(c("empty")),u.setAttribute("role","status"),a.append(u)}if(t.hasNext||t.hasPrevious){let u=r("div","g-data-footer");u.append(r("span","",`${s("\u7B2C","Page")} ${t.page}`));let E=r("div","g-data-controls");E.append(d(s("\u4E0A\u4E00\u9875","Previous"),"previous",void 0,!t.hasPrevious),d(s("\u4E0B\u4E00\u9875","Next"),"next",void 0,!t.hasNext)),u.append(E),a.append(u)}return t.updatedAt&&e.data.source!=="credit_balance"&&a.append(r("p","g-data-note g-data-updated",`${s("\u6570\u636E\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(H,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt))}`)),a}let ye=new Map,Me=new Map,Ke=e=>{let a=e.target;for(let t of ye.keys())a&&!Ee(t)?.contains(a)&&ye.delete(t)};document.addEventListener("focusin",Ke),document.addEventListener("pointerdown",Ke);function Et(e){let a=te;if(te=e,!S)return;let t=(i,s)=>{if(i.type==="stack"){i.children.forEach(w=>t(w,i));return}if(i.type!=="customer_data"||JSON.stringify(a?.nodes[i.id])===JSON.stringify(e.nodes[i.id]))return;let r=Ee(i.id);if(!r)return;let c=document.activeElement;c&&r.contains(c)&&c.dataset.gDataFocus&&ye.set(i.id,c.dataset.gDataFocus);let d=new Set([...r.querySelectorAll("details[data-g-data-sources]")].filter(w=>w.open).map(w=>w.dataset.gDataSources)),p=$e(i,s);if(!p)return;for(let w of p.querySelectorAll("details[data-g-data-sources]"))w.open=d.has(w.dataset.gDataSources);let b=r.scrollTop;r.replaceWith(p),p.scrollTop=b;let o=!!e.nodes[i.id]?.membershipReview&&!a?.nodes[i.id]?.membershipReview,h=!e.nodes[i.id]?.membershipReview&&!!a?.nodes[i.id]?.membershipReview;o&&ye.get(i.id)&&Me.set(i.id,ye.get(i.id));let y=h?Me.get(i.id):ye.get(i.id);y&&[...p.querySelectorAll("[data-g-data-focus]")].find(w=>w.dataset.gDataFocus===y)?.focus({preventScroll:!0}),o&&p.querySelector("[data-g-data-review] h3")?.focus({preventScroll:!0}),h&&Me.delete(i.id),p.animate&&e.nodes[i.id]?.status==="ready"&&!window.matchMedia("(prefers-reduced-motion:reduce)").matches&&p.animate([{opacity:.7},{opacity:1}],{duration:140,easing:"ease-out"})},n=S.pages.find(i=>i.id===ae)??S.pages[0];t(n.root,null),ge()}function $e(e,a){if(e.hidden)return null;let t;if(e.type==="customer_data")t=St(e);else if(e.type==="stack"){t=document.createElement(e.purchaseAction?"button":"div"),e.purchaseAction&&(t.type="button",t.dataset.gAction=e.purchaseAction),t.className=`${e.purchaseAction?`g-btn g-btn-${e.buttonVariant??"primary"} `:""}g-stack ${e.direction==="horizontal"?"g-h":e.direction==="overlay"?"g-o":"g-v"}`,e.direction==="overlay"?(t.style.alignItems=G[e.align]??"stretch",t.style.justifyItems=B[e.justify]??"stretch"):(t.style.alignItems=L[e.align]??"stretch",t.style.justifyContent=z[e.justify]??"flex-start");for(let n of e.children){let i=$e(n,e);i&&t.append(i)}if(e.interaction&&At(t,e),e.purchaseAction&&g.mode==="live"){let n=F?.nodes[e.id],i=n?.picker;i&&(t.disabled=!F?.pickers[i]?.options.includes(String(f[i]??""))),he(e.id)?.unavailable&&(t.disabled=!0)}g.mode==="editor"&&!t.childElementCount&&(t.classList.add("g-empty"),t.dataset.gEditorPlaceholder=g.editorMessages?.emptyContainer??"\u62D6\u5165\u7EC4\u4EF6")}else if(e.type==="text"){let n=e.variant==="title"?"h1":e.variant==="heading"?"h2":"p";t=document.createElement(n),t.className=`g-text g-${e.variant}`;let i=Ce(e,"text",e.text);t.textContent=i.value,i.missing&&g.mode==="editor"&&t.classList.add("g-missing")}else if(e.type==="button"){t=document.createElement("button"),t.type="button",t.className=`g-btn g-btn-${e.variant}`;let n=Ce(e,"label",e.label);t.textContent=n.value,n.missing&&g.mode==="editor"&&t.classList.add("g-missing"),t.dataset.gAction=e.action;let i=F?.nodes[e.id]?.picker;if(i&&g.mode==="live"){let s=i,r=F?.pickers[s],c=f[s]??r?.selected;t.disabled=!r?.options.includes(String(c)),t.disabled&&t.setAttribute("aria-disabled","true")}g.mode==="live"&&he(e.id)?.unavailable&&(t.disabled=!0,t.setAttribute("aria-disabled","true")),g.mode==="editor"&&(t.tabIndex=-1)}else if(e.type==="image"){t=document.createElement("div"),t.className="g-img",T[e.aspect]&&(t.dataset.aspect=e.aspect,t.style.aspectRatio=T[e.aspect]);let n=document.createElement("img");n.src=e.localizedSrc?.[H]??e.localizedSrc?.[S.strings.defaultLocale]??e.src,n.alt=Ce(e,"alt",e.alt).value,n.referrerPolicy="no-referrer",n.decoding="async",n.style.objectFit=e.fit,e.position&&(n.style.objectPosition=`${e.position.x}% ${e.position.y}%`),n.addEventListener("load",ge),t.append(n)}else if(e.type==="price"){t=document.createElement("div"),t.className="g-price",t.style.cssText="display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-variant-numeric:tabular-nums";let n=he(e.id);if(!n?.price)t.textContent=n?.text??U(e.fallback).value,g.mode==="editor"&&t.classList.add("g-missing");else for(let i of["current","original","period"]){let s=n.price[i];if(!s)continue;let r=document.createElement(i==="original"?"s":"span");r.textContent=s,i==="original"&&(r.style.opacity=".6"),e.parts?.[i]&&xe(r,{type:"text",id:e.id,text:e.fallback,variant:"body",style:e.parts[i]},null),t.append(r)}}else if(e.type==="coupon_code"){t=document.createElement("div"),t.style.cssText="display:flex;align-items:center;gap:12px;flex-wrap:wrap";let n=he(e.id);if(n?.code){let i=document.createElement("code");i.textContent=n.code;let s=document.createElement("button");s.type="button",s.className="g-btn g-btn-secondary",s.textContent=U(e.label).value,s.addEventListener("click",r=>{g.mode!=="editor"&&(r.stopPropagation(),X({type:"copy",nodeId:e.id}))}),t.append(i,s)}else t.textContent=n?.text??U(e.fallback).value,g.mode==="editor"&&t.classList.add("g-missing")}else if(e.type==="countdown"){t=document.createElement("span"),t.setAttribute("role","timer"),t.style.fontVariantNumeric="tabular-nums";let n=he(e.id),i=n?.countdownAt?Date.parse(n.countdownAt):NaN;!Number.isFinite(i)&&g.mode==="editor"&&t.classList.add("g-missing");let s=()=>{if(!Number.isFinite(i)){t.textContent=n?.text??U(e.fallback).value;return}let r=Math.max(0,Math.ceil((i-Date.now())/1e3));if(!r){t.textContent=U(e.expired).value;return}let c=e.granularity,d=c==="day"?86400:c==="hour"?3600:c==="minute"?60:1;c!=="second"?t.textContent=new Intl.NumberFormat(H,{style:"unit",unit:c,unitDisplay:"short"}).format(Math.ceil(r/d)):t.textContent=[Math.floor(r/86400),Math.floor(r/3600)%24,Math.floor(r/60)%60,r%60].map(p=>String(p).padStart(2,"0")).join(":")};s(),Number.isFinite(i)&&oe.push(setInterval(s,1e3))}else if(e.type==="plan_picker"){t=document.createElement("div"),t.setAttribute("role",e.grouping?"group":"radiogroup"),t.setAttribute("aria-label",U(e.label).value),t.style.cssText="display:flex;flex-direction:column;gap:8px";let n=F?.pickers[e.id],i=e.grouping;if(!n?.options.length)f[e.id]="",t.textContent=U(e.fallback).value,g.mode==="editor"&&t.classList.add("g-missing");else{let s=typeof f[e.id]=="string"?String(f[e.id]):n.selected,r=v[e.id];if(i){if(!r){let j=i.assignments.find(C=>C.productVersionId===s);r={period:j?.period??"month",tierId:j?.tierId??i.tiers[0].id},v[e.id]=r}let o=i.assignments.find(j=>j.tierId===r.tierId&&j.period===r.period);s=o&&n.options.includes(o.productVersionId)?o.productVersionId:"";let h=document.createElement("div");h.setAttribute("role","radiogroup"),h.setAttribute("aria-label",`${U(i.monthLabel).value} / ${U(i.yearLabel).value}`),h.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:10px";let y=["month","year"],w=y.filter(j=>i.assignments.some(C=>C.period===j&&n.options.includes(C.productVersionId))),D=j=>{r.period=j;let C=i.assignments.find(J=>J.tierId===r.tierId&&J.period===j);f[e.id]=C&&n.options.includes(C.productVersionId)?C.productVersionId:"",ue(),Ee(e.id)?.querySelector(`[data-product-period="${j}"]`)?.focus()};for(let j of y){let C=document.createElement("button");C.type="button",C.className=`g-btn g-btn-${j===r.period?"primary":"secondary"}`,C.style.cssText="flex:1;min-width:0;min-height:40px",C.dataset.productPeriod=j,C.setAttribute("role","radio"),C.setAttribute("aria-checked",String(j===r.period)),C.textContent=U(j==="month"?i.monthLabel:i.yearLabel).value,C.disabled=!w.includes(j),C.tabIndex=g.mode==="editor"||C.disabled?-1:j===r.period||!w.includes(r.period)&&j===w[0]?0:-1,C.addEventListener("click",J=>{g.mode!=="editor"&&(J.stopPropagation(),D(j))}),C.addEventListener("keydown",J=>{if(g.mode==="editor"||!w.length)return;let ee;["ArrowRight","ArrowDown"].includes(J.key)?ee=(w.indexOf(j)+1)%w.length:["ArrowLeft","ArrowUp"].includes(J.key)?ee=(w.indexOf(j)-1+w.length)%w.length:J.key==="Home"?ee=0:J.key==="End"&&(ee=w.length-1),ee!==void 0&&(J.preventDefault(),D(w[ee]))}),h.append(C)}t.append(h)}f[e.id]=s??"";let c=i?i.tiers.map(o=>({tier:o,id:i.assignments.find(h=>h.tierId===o.id&&h.period===r.period)?.productVersionId})):n.options.map(o=>({id:o,tier:void 0})),d=c.filter(o=>o.id&&n.options.includes(o.id)),p=i?document.createElement("div"):t;i&&(p.setAttribute("role","radiogroup"),p.setAttribute("aria-label",U(e.label).value),p.style.cssText="display:flex;flex-direction:column;gap:8px",t.append(p));let b=o=>{!o.id||!n.options.includes(o.id)||(i&&o.tier&&(r.tierId=o.tier.id),f[e.id]=o.id,ue(),Ee(e.id)?.querySelector(`[data-plan-id="${o.id}"]`)?.focus())};for(let o of c){let h=o.id?F.plans[o.id]:void 0,y=!!h&&n.options.includes(o.id),w=document.createElement("button");w.type="button",w.className="g-btn g-btn-secondary",w.style.cssText="width:100%;text-align:start;min-height:44px",w.setAttribute("role","radio");let D=i?o.tier?.id===r.tierId:o.id===s;w.setAttribute("aria-checked",String(D)),w.disabled=!y,w.tabIndex=g.mode==="editor"||!y?-1:D||!s&&o===d[0]?0:-1,o.id&&(w.dataset.planId=o.id),o.tier&&(w.dataset.productTier=o.tier.id);let j=o.id?F.nodes[e.id]?.byPlan?.[o.id]?.price:void 0;w.textContent=y?`${o.tier?.name??h.name} \xB7 ${j?.current??h.price}${j?.period??h.period}`:`${o.tier?.name??""} \xB7 ${U(i?.unavailableLabel??e.fallback).value}`,D&&(w.style.borderColor="var(--g-primary)",w.style.boxShadow="inset 0 0 0 1px var(--g-primary)",e.states?.selected&&xe(w,{type:"text",id:e.id,text:e.label,variant:"body",style:e.states.selected},null)),w.addEventListener("click",C=>{g.mode==="editor"||!y||(C.stopPropagation(),b(o))}),w.addEventListener("keydown",C=>{if(g.mode==="editor"||!d.length)return;let J=d.indexOf(o),ee;["ArrowRight","ArrowDown"].includes(C.key)?ee=(J+1)%d.length:["ArrowLeft","ArrowUp"].includes(C.key)?ee=(J-1+d.length)%d.length:C.key==="Home"?ee=0:C.key==="End"&&(ee=d.length-1),ee!==void 0&&(C.preventDefault(),b(d[ee]))}),p.append(w)}if(i&&!s){let o=document.createElement("p");o.setAttribute("role","status"),o.textContent=U(i.unavailableLabel).value,t.append(o)}}}else if(e.type==="divider")t=document.createElement("hr"),t.className="g-divider";else if(e.type==="spacer")t=document.createElement("div"),t.setAttribute("aria-hidden","true"),t.style.flex="0 0 auto",t.style.width=t.style.height=`${$[e.size]??0}px`;else if(e.type==="custom_html"){t=document.createElement("div"),t.className="g-custom";let n=t.attachShadow({mode:"open"}),i=e.html[H],s=i&&i.trim()?i:e.html[S?.strings.defaultLocale??""]??"",r=he(e.id);r?.html!==void 0?s=r.html:s.includes("{{")&&g.mode==="live"&&(s=U(e.fallback??"").value.replace(/[&<>"']/g,b=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[b])),(r?.missing?.length||!r&&s.includes("{{"))&&g.mode==="editor"&&t.classList.add("g-missing"),!(i&&i.trim())&&g.mode==="editor"&&t.classList.add("g-missing");let c=document.createElement("style");c.textContent=`:host{display:block}${e.css}`;let d=document.createElement("div");d.innerHTML=s,n.append(c,d);for(let p of d.querySelectorAll("img"))p.addEventListener("load",ge)}else return null;return e.style&&xe(t,e,a),t.dataset.gNode=e.id,t.dataset.gLabel=vt(e),t}function At(e,a){let t=a.interaction,n=[...e.children];e.setAttribute("aria-label",U(t.label).value);let i=N?.bindings.find(r=>r.componentId===a.id),s=i?{id:i.key,source:i.componentId,required:i.required}:void 0;if(s){let r=document.createElement("p");r.className="g-text g-body",r.textContent=U(t.label).value+(s.required?" *":""),e.prepend(r),s.required&&e.setAttribute("aria-required","true")}if(t.type==="input"){let r=document.createElement("input");r.type=t.keyboard,r.maxLength=t.maxLength,r.autocomplete="off",r.setAttribute("aria-label",U(t.label).value),r.setAttribute("aria-required",String(!!s?.required)),r.value=typeof f[a.id]=="string"?String(f[a.id]):"",r.style.cssText="box-sizing:border-box;width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-surface);color:var(--g-text);font:inherit",r.disabled=g.mode!=="live",r.addEventListener("input",()=>{f[a.id]=r.value,Re(a.id,r.value)}),e.append(r);return}if(!(g.mode!=="live"||!n.length&&t.type!=="toggle")){if(t.type==="multiselect"){e.setAttribute("role","group"),e.dataset.gMin=String(t.min);let r=a.children.filter(p=>!p.hidden),c=new Set(Array.isArray(f[a.id])?f[a.id]:[]),d=()=>n.forEach((p,b)=>{let o=c.has(r[b].id);p.setAttribute("aria-checked",String(o)),p.setAttribute("aria-disabled",String(!o&&c.size>=t.max)),p.style.outline=o?"2px solid var(--g-primary)":"",p.style.outlineOffset="-2px"});n.forEach((p,b)=>{p.setAttribute("role","checkbox"),p.tabIndex=0,p.setAttribute("aria-label",p.textContent?.trim()||String(b+1)),p.style.cursor="pointer";let o=()=>{let h=r[b].id;if(c.has(h))c.delete(h);else if(c.size<t.max)c.add(h);else return;let y=r.filter(w=>c.has(w.id)).map(w=>w.id);f[a.id]=y,d(),Re(a.id,y)};p.addEventListener("click",h=>{h.stopPropagation(),o()}),p.addEventListener("keydown",h=>{[" ","Enter"].includes(h.key)&&(h.preventDefault(),h.stopPropagation(),o())})}),d();return}if(t.type==="select"){e.setAttribute("role","radiogroup");let r=a.children.filter(b=>!b.hidden),c=m(a)?a.interaction.pickerId:void 0,d=r.findIndex(b=>c?b.type==="stack"&&b.bind?.plan===f[c]:b.id===f[a.id]);!c&&d<0&&!s?.required&&(d=Math.min(t.defaultIndex,n.length-1));let p=(b,o=!1,h=!0)=>{if(c&&h&&b>=0){let y=r[b],w=y.type==="stack"?y.bind?.plan:void 0;if(!w||!F?.pickers[c]?.options.includes(w))return;f[a.id]=y.id,f[c]=w,ue(),o&&W.querySelector(`[data-g-node="${y.id}"]`)?.focus({preventScroll:!0});return}d=b,b>=0&&(f[a.id]=r[b].id),h&&b>=0&&Re(a.id,r[b].id),n.forEach((y,w)=>{y.setAttribute("aria-checked",String(w===b)),y.tabIndex=w===(b<0?0:b)?0:-1,y.style.cssText="";let D=r[w];D.type==="stack"&&(y.style.alignItems=L[D.align]??"stretch",y.style.justifyContent=z[D.justify]??"flex-start"),D.style&&xe(y,D,a),w===b&&(t.selectedStyle&&xe(y,{...D,style:t.selectedStyle},a),D.type==="stack"&&D.states?.selected&&xe(y,{...D,style:D.states.selected},a),!t.selectedStyle?.border&&!(D.type==="stack"&&D.states?.selected?.border)&&(y.style.outline="2px solid var(--g-primary)",y.style.outlineOffset="-2px")),y.style.cursor="pointer"}),o&&b>=0&&n[b].focus()};n.forEach((b,o)=>{if(b.setAttribute("role","radio"),c){let h=r[o],y=h.type==="stack"?h.bind?.plan:void 0;b.setAttribute("aria-disabled",String(!y||!F?.pickers[c]?.options.includes(y)))}b.setAttribute("aria-label",b.textContent?.trim()||String(o+1)),b.addEventListener("click",h=>{h.stopPropagation(),p(o)}),b.addEventListener("keydown",h=>{let y=h.key;if(!["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"," ","Enter"].includes(y))return;h.preventDefault(),h.stopPropagation();let w=d<0?o:d;p(y==="Home"?0:y==="End"?n.length-1:y==="ArrowRight"||y==="ArrowDown"?(w+1)%n.length:y==="ArrowLeft"||y==="ArrowUp"?(w+n.length-1)%n.length:o,!0)})}),p(d,!1,!1)}else if(t.type==="tabs"){let r=a.children.filter(o=>!o.hidden),c=document.createElement("div");c.setAttribute("role","tablist"),c.setAttribute("aria-label",U(t.label).value),c.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:12px";let d=n.map((o,h)=>{let y=document.createElement("button");return y.type="button",y.setAttribute("role","tab"),y.textContent=ze(r[h])||String(h+1),y.style.cssText="flex:1;min-width:0;min-height:44px;padding:8px 16px;border:0;border-radius:8px;font:inherit;cursor:pointer",o.id=`g-${a.id}-${r[h].id}`,o.setAttribute("role","tabpanel"),y.setAttribute("aria-controls",o.id),c.append(y),y}),p=(o,h=!1,y=!1)=>{if(f[a.id]=r[o].id,y&&S&&Object.keys(A(S)).length){for(let w of Object.keys(A(S)))delete f[w];ue(),h&&W.querySelector(`[data-g-node="${a.id}"] [role="tab"][aria-selected="true"]`)?.focus({preventScroll:!0});return}n.forEach((w,D)=>{w.hidden=D!==o,d[D].setAttribute("aria-selected",String(D===o)),d[D].tabIndex=D===o?0:-1,d[D].style.background=D===o?"var(--g-primary)":"transparent",d[D].style.color=D===o?"var(--g-on-primary)":"var(--g-text)"}),h&&d[o].focus(),ge()};d.forEach((o,h)=>{o.addEventListener("click",y=>{y.stopPropagation(),p(h,!1,!0)}),o.addEventListener("keydown",y=>{["ArrowLeft","ArrowRight","Home","End"].includes(y.key)&&(y.preventDefault(),y.stopPropagation(),p(y.key==="Home"?0:y.key==="End"?n.length-1:(h+(y.key==="ArrowRight"?1:n.length-1))%n.length,!0,!0))})}),e.prepend(c);let b=r.findIndex(o=>o.id===f[a.id]);p(b>=0?b:Math.min(t.defaultIndex,n.length-1))}else if(t.type==="toggle"){let r=document.createElement("button");r.type="button",r.setAttribute("role","switch"),r.className="g-btn g-btn-secondary",r.style.cssText="display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--g-text)";let c=document.createElement("span");c.textContent=U(t.label).value;let d=document.createElement("span");d.setAttribute("aria-hidden","true"),d.style.cssText="position:relative;display:block;flex:none;width:44px;height:24px;border-radius:12px;background:var(--g-border)";let p=document.createElement("span");p.style.cssText="position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003",d.append(p),r.append(c,d);let b=(o,h=!1)=>{if(f[a.id]=o,h&&S&&Object.keys(A(S)).length){for(let y of Object.keys(A(S)))delete f[y];ue(),W.querySelector(`[data-g-node="${a.id}"] [role="switch"]`)?.focus({preventScroll:!0});return}r.setAttribute("aria-checked",String(o)),d.style.background=o?"var(--g-primary)":"var(--g-border)",p.style.left=o?"23px":"3px",p.style.background=o?"var(--g-on-primary)":"#FFFFFF",n.forEach((y,w)=>y.hidden=w!==(o?0:1)),ge()};r.addEventListener("click",o=>{o.stopPropagation(),b(!f[a.id],!0),Re(a.id,!!f[a.id])}),e.prepend(r),b(typeof f[a.id]=="boolean"?f[a.id]:t.defaultEnabled)}else{e.setAttribute("role","region"),e.setAttribute("aria-roledescription","carousel");let r=document.createElement("div");r.style.cssText="display:flex;align-items:center;justify-content:center;gap:10px";let c=document.createElement("button"),d=document.createElement("button"),p=document.createElement("span"),b=H.startsWith("zh");c.textContent="\u2190",d.textContent="\u2192",c.setAttribute("aria-label",b?"\u4E0A\u4E00\u6761\u8BC4\u4EF7":"Previous review"),d.setAttribute("aria-label",b?"\u4E0B\u4E00\u6761\u8BC4\u4EF7":"Next review");for(let h of[c,d])h.type="button",h.className="g-btn g-btn-secondary",h.style.color="var(--g-text)";p.setAttribute("aria-live","polite");let o=h=>{l[a.id]=h,n.forEach((y,w)=>y.hidden=w!==h),p.textContent=`${h+1} / ${n.length}`,ge()};c.addEventListener("click",h=>{h.stopPropagation(),o((l[a.id]+n.length-1)%n.length)}),d.addEventListener("click",h=>{h.stopPropagation(),o((l[a.id]+1)%n.length)}),r.append(c,p,d),e.append(r),o(l[a.id]??0)}}}function ze(e){if(e.hidden)return"";if(e.type==="text"&&(e.variant==="title"||e.variant==="heading"))return U(e.text).value;if(e.type==="stack")for(let a of e.children){let t=ze(a);if(t)return t}return""}function ue(){if(oe.forEach(clearInterval),oe=[],!S)return;W.style.cssText="";let e=S.pages.find(s=>s.id===(ae??S.initialPageId))??S.pages[0];ae=e.id,F&&Object.assign(f,I({...S,pages:[e]},Je(),F));let a=s=>{if(s.type==="stack"&&s.children.forEach(a),s.type!=="plan_picker"||!s.grouping)return;let r=s.grouping,c=F?.pickers[s.id],d=v[s.id];if(!d){let b=r.assignments.find(o=>o.productVersionId===(f[s.id]??c?.selected));d={period:b?.period??"month",tierId:b?.tierId??r.tiers[0].id},v[s.id]=d}let p=r.assignments.find(b=>b.tierId===d.tierId&&b.period===d.period);f[s.id]=p&&c?.options.includes(p.productVersionId)?p.productVersionId:""};a(e.root),xt(e.theme?{...S,theme:e.theme}:S);let t=H.split("-")[0];document.documentElement.lang=H,document.documentElement.dir=["ar","he","fa","ur"].includes(t)?"rtl":"ltr",W.dataset.gPresentation=S.presentation.type;let n=$e(e.root,null);W.replaceChildren(...n?[n]:[]),W.dataset.gPage=e.id,g.mode==="live"&&X({type:"page",pageId:e.id}),je(),He();let i=Math.ceil(W.getBoundingClientRect().height);Y?ge():(Y=!0,de=i,X({type:"rendered",height:i,label:ze(e.root)||S.name}))}function ge(){let e=Math.ceil(W.getBoundingClientRect().height);e!==de&&(de=e,X({type:"resize",height:e})),je(),He()}function Xe(){be||(be=!0,window.requestAnimationFrame(()=>{be=!1,ge()}))}function He(){if(g.mode!=="editor")return;let e=[];for(let t of W.querySelectorAll("[data-g-node]")){let n=t.getBoundingClientRect();!n.width||!n.height||e.push({id:t.dataset.gNode,x:n.x,y:n.y,width:n.width,height:n.height})}let a=JSON.stringify(e);a!==ke&&(ke=a,X({type:"layout",nodes:e}))}function Ee(e){return!e||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(e)?null:W.querySelector(`[data-g-node="${e}"]`)}function Qe(e,a){let t=Ee(a);if(!t){e.style.display="none";return}let n=t.getBoundingClientRect();e.style.display="block",e.style.left=`${n.left+window.scrollX}px`,e.style.top=`${n.top+window.scrollY}px`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.toggleAttribute("data-below",n.top<20),e.firstChild.textContent=t.dataset.gLabel??""}function je(){g.mode==="editor"&&(Qe(Se,ie),Qe(Ie,se&&se!==ie?se:null))}function _e(e){for(let a of e.composedPath()){if(a instanceof HTMLElement&&a.dataset.gNode)return a.dataset.gNode;if(a===W)break}return null}function It(e){if(e.isTrusted){if(g.mode==="editor"){e.preventDefault(),e.stopPropagation(),X({type:"select",id:_e(e)});return}for(let a of e.composedPath()){if(!(a instanceof HTMLElement))continue;let t=a.dataset.gAction??(a.tagName==="BUTTON"?a.getAttribute("data-grow-action"):null);if(t&&!a.disabled){e.preventDefault();let n=S?.actions.find(i=>i.id===t);if(n?.type==="navigate"){if(ae=n.pageId,S)for(let i of Object.keys(A(S)))delete f[i];ue(),W.querySelector("h1,h2")?.focus({preventScroll:!0});return}X({type:"action",actionId:t,nodeId:_e(e)??void 0,...Object.keys(f).length?{selection:Je()}:{},...N?{answers:Ge()}:{}});return}if(a===W)return}}}function et(e){let a=e;if(!(!a||a.channel!==g.channel))try{if(a.type==="render"){let t=a.doc;if(!t||t.kind!=="screen"||t.schemaVersion!==4||Object.hasOwn(t,"funnel")||!t.pages?.length||t.pages.length>(t.surface==="paywall"?10:1)||t.pages.some(n=>Object.hasOwn(n,"source"))||t.actions?.some(n=>!["event","close","open_url","claim_offer",...t.surface==="paywall"?["navigate"]:[]].includes(n.type)))throw new Error("Unsupported screen document; use the current Funnel runtime for flows");S=t,ae=null,H=String(a.locale),K=new Set,le=a.parameters??{},N=a.serverInput,f=Object.create(null),v=Object.create(null),F=a.capabilities,te=a.customerData,ye.clear();for(let[n,i]of Object.entries(F?.pickers??{}))i.selected&&(f[n]=i.selected);if(a.selection&&typeof a.selection=="object"&&!Array.isArray(a.selection)){let n=a.selection,i=r=>{let c=n[r.id];if(r.type==="plan_picker"&&typeof c=="string"&&r.planIds?.includes(c)&&(f[r.id]=c),r.type==="stack"){if(r.interaction?.type==="toggle"&&typeof c=="boolean"&&(f[r.id]=c),r.interaction&&["select","tabs"].includes(r.interaction.type)&&typeof c=="string"&&r.children.some(d=>d.id===c)&&(f[r.id]=c),m(r)){let d=n[r.interaction.pickerId];typeof d=="string"&&r.children.some(p=>p.type==="stack"&&p.bind?.plan===d)&&(f[r.interaction.pickerId]=d)}r.children.forEach(i)}};S.pages.forEach(r=>i(r.root));let s=n.__page;typeof s=="string"&&S.pages.some(r=>r.id===s)&&(ae=s)}for(let n of N?.bindings??[])Object.hasOwn(N.answers,n.key)&&(f[n.componentId]=N.answers[n.key],K.add(n.componentId));l=Object.create(null),H=String(a.locale),ue()}else if(a.type==="capabilities"){F=a.capabilities;for(let[t,n]of Object.entries(F.pickers))!v[t]&&f[t]===void 0&&(f[t]=n.selected??"");{let t=document.activeElement,n=t?.closest("[data-g-node]")?.dataset.gNode,i=t instanceof HTMLInputElement?{start:t.selectionStart,end:t.selectionEnd}:void 0,s=t?.getAttribute("role"),r=t?.getAttribute("data-plan-id");if(ue(),n){let c=W.querySelector(`[data-g-node="${n}"]`),d=s==="radio"&&r?c?.querySelector(`[data-plan-id="${r}"]`):c?.matches("button,[tabindex],a")?c:c?.querySelector("input,button,[tabindex],a");d?.focus({preventScroll:!0}),i&&d instanceof HTMLInputElement&&d.type==="text"&&d.setSelectionRange(i.start,i.end)}}}else a.type==="customer-data"?Et(a.data):a.type==="restore-action-focus"&&g.mode==="live"?[...W.querySelectorAll("button[data-g-node]")].find(t=>t.dataset.gNode===a.nodeId&&!t.disabled)?.focus({preventScroll:!0}):a.type==="highlight"&&g.mode==="editor"&&(se=a.hoverId??null,ie=a.selectedId??null,je())}catch(t){X({type:"error",message:t instanceof Error?t.message:"render failed"})}}let tt=document.createElement("style");tt.textContent=P,document.head.append(tt),document.body.append(W),g.mode==="editor"&&(document.body.dataset.gEditor="",document.body.append(Ie,Se),document.addEventListener("mouseover",e=>{let a=_e(e);a!==pe&&(pe=a,X({type:"hover",id:a}))}),document.documentElement.addEventListener("mouseleave",()=>{pe!==null&&(pe=null,X({type:"hover",id:null}))}),document.addEventListener("dblclick",e=>{let a=_e(e);a&&e.isTrusted&&X({type:"edit",id:a})}),document.addEventListener("click",e=>{W.contains(e.target)||X({type:"select",id:null})})),W.addEventListener("click",It),document.addEventListener("keydown",e=>{e.key==="Escape"&&e.isTrusted&&X({type:"escape"})}),typeof ResizeObserver=="function"&&new ResizeObserver(Xe).observe(W),window.addEventListener("resize",Xe),g.mode==="editor"&&window.addEventListener("scroll",He),window.addEventListener("message",e=>{e.source===x&&et(e.data)}),M.__indianaReceive=et,X({type:"ready"})}var Pt=`(${ht.toString()})(JSON.parse(document.getElementById("grow-renderer-boot").textContent))`;function yt(g,m){let A=JSON.stringify(g).replace(/</g,"\\u003c");return`<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'nonce-${m}'; style-src 'unsafe-inline'; img-src https: data:; connect-src 'none'; font-src 'none'; media-src 'none'; frame-src 'none'; base-uri 'none'; form-action 'none'"></head><body><script type="application/json" id="grow-renderer-boot">${A}<\/script><script nonce="${m}">${Pt}<\/script></body></html>`}function Ct(){return`(() => {
|
|
170
171
|
try {
|
|
171
172
|
const input = JSON.parse(decodeURIComponent(location.hash.slice(1)));
|
|
172
173
|
if (!input || !/^[a-f0-9-]{36}$/.test(input.channel) || input.mode !== "live" || !Number.isInteger(input.hostDepth) || input.hostDepth < 1 || input.hostDepth > 16) return;
|
|
173
174
|
const origin = new URL(input.parentOrigin);
|
|
174
175
|
if (!["https:", "http:"].includes(origin.protocol) || origin.origin !== input.parentOrigin) return;
|
|
175
176
|
const boot = { channel: input.channel, parentOrigin: origin.origin, hostDepth: input.hostDepth, mode: "live" };
|
|
176
|
-
(${
|
|
177
|
+
(${ht.toString()})(boot);
|
|
177
178
|
} catch { /* No valid host bridge: leave the public shell empty. */ }
|
|
178
|
-
})();`}function _t(c,p){if(!/^(0|[1-9]\d*)(\.\d{1,12})?$/.test(c))throw new it("INVALID_RESPONSE","Invalid credit amount");let[x,k]=c.split("."),h=new Intl.NumberFormat(p),D=h.formatToParts(1.1).find(L=>L.type==="decimal")?.value??".",N=Array.from({length:10},(L,w)=>new Intl.NumberFormat(p,{useGrouping:!1}).format(w));return h.format(BigInt(x))+(k?D+k.replace(/\d/g,L=>N[Number(L)]):"")}var He=new WeakMap,Ct=new WeakMap;function Nt(c){let p=window.open("about:blank","_blank");if(!p)throw new Error("External URL window was blocked");try{p.opener=null;let x=p.document.createElement("a");x.href=c,x.target="_self",x.rel="noopener noreferrer",x.referrerPolicy="no-referrer",p.document.body.append(x),x.click()}catch(x){throw p.close(),x}}function Pt(){return typeof navigator>"u"?[]:[...navigator.languages??[],navigator.language].filter(Boolean)}function ct(c,p,x,k,h=document){let D=crypto.randomUUID(),N=crypto.randomUUID().replaceAll("-",""),L=h.createElement("iframe");L.title=p,L.setAttribute("sandbox","allow-scripts"),L.referrerPolicy="no-referrer";let w=h.defaultView,E=1;for(;w!==window&&E<16;)w=w.parent,E++;if(w!==window)throw new Error("Renderer container must belong to this host or a descendant window");let P={channel:D,parentOrigin:window.origin,hostDepth:E,mode:c,...c==="editor"?{editorMessages:x}:{}};if(k){if(c!=="live")throw new Error("Hosted Web Views only support live rendering");let S=new URL(k);if(S.username||S.password||S.search||S.hash||!/^\/web-view\/renderer\/[a-f0-9]{64}$/.test(S.pathname)||S.protocol!=="https:"&&!(S.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(S.hostname)))throw new Error("Invalid hosted renderer URL");S.hash=encodeURIComponent(JSON.stringify(P)),L.src=S.href}else L.srcdoc=lt(P,N);return{frame:L,post:S=>L.contentWindow?.postMessage({...S,channel:D},"*"),accept:S=>S.source===L.contentWindow&&S.origin==="null"&&S.data&&S.data.channel===D?S.data:null}}function Vt(c,p={}){let x=Se(c,window);p.capabilities=he(p.capabilities,x,window);let k=Te(x,[p.locale,...Pt()]),h=Me(x,k);if(He.has(document))throw new Error("\u5DF2\u6709\u5F39\u7A97\u6B63\u5728\u5C55\u793A\uFF0C\u8BF7\u5148\u5173\u95ED\u3002");if(!document.body||!["https:","http:"].includes(location.protocol))throw new Error("\u5F39\u7A97\u9700\u8981 HTTP(S) \u9875\u9762\u3002");let D=document.activeElement,N=document.createElement("div");N.dataset.growPopup="";let L=N.attachShadow({mode:"open"}),w=document.createElement("style");w.textContent=":host{all:initial;position:fixed!important;inset:0!important;z-index:2147483647!important;font-family:system-ui,sans-serif;pointer-events:none} dialog{pointer-events:auto;box-sizing:border-box;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:14px;background:white;box-shadow:0 24px 80px #0003;overflow:hidden}dialog::backdrop{background:#16142577}button{position:absolute;z-index:1;inset-inline-end:8px;top:8px;width:30px;height:30px;border:1px solid #e5e5eb;border-radius:50%;background:#fff;color:#383344;font-size:20px;line-height:1;cursor:pointer}button:focus-visible{outline:3px solid #635bdf}iframe{display:block;border:0;width:100%;height:100%}";let E=document.createElement("dialog");E.lang=k,E.dir=tt(k)?"rtl":"ltr",E.setAttribute("aria-label",h.name),E.dataset.presentation=h.presentation.type,E.style.width=h.presentation.type==="fullscreen"?"100vw":`${Qe[h.presentation.size]}px`,h.presentation.type==="fullscreen"?E.style.cssText+=";max-width:100vw;max-height:100dvh;height:100dvh;margin:0;border-radius:0":h.presentation.type==="sheet"&&(E.style.cssText+=";margin:auto auto 0;max-width:100vw;max-height:100dvh;border-radius:14px 14px 0 0"),E.style.background=h.theme.background;let P=document.createElement("button");P.type="button",P.textContent="\xD7",P.setAttribute("aria-label",ot(k));let{frame:H,post:T,accept:S}=ct("live",h.name,void 0,p.rendererUrl),_=!1,M=!1,z=R=>{h.presentation.type!=="fullscreen"&&(E.style.height=`min(${Math.max(R,40)}px, calc(100dvh - ${h.presentation.type==="sheet"?0:32}px))`)};function Z(R){try{Promise.resolve(p.onEvent?.(R)).catch(d=>q(p.onError,d))}catch(d){q(p.onError,d)}}function te(){return _?!1:(_=!0,clearTimeout(U),window.removeEventListener("message",Q),E.close(),N.remove(),He.delete(document),D instanceof HTMLElement&&D.isConnected&&D.focus({preventScroll:!0}),!0)}function I(R){te()&&Z({type:"closed",reason:R})}function Q(R){let d=_?null:S(R);if(d){if(d.type==="ready")T({type:"render",doc:h,locale:k,capabilities:p.capabilities});else if(d.type==="rendered"&&!M)M=!0,clearTimeout(U),z(d.height),d.label&&E.setAttribute("aria-label",d.label),E.showModal(),P.focus(),Z({type:"shown"});else if(d.type==="resize"&&M)z(d.height);else if(d.type==="copy"&&M){let y=se(h,d.nodeId),O=Ke(p.capabilities,d.nodeId);y?.type==="coupon_code"&&O?.code&&navigator.clipboard?.writeText(O.code).catch(()=>{})}else if(d.type==="escape"&&M)I("escape");else if(d.type==="action"&&M&&typeof d.actionId=="string"){let y=h.actions.find(O=>O.id===d.actionId);if(!y)return;if(y.close&&te(),Z({type:"action",actionId:y.id,...typeof d.nodeId=="string"&&se(h,d.nodeId)?{nodeId:d.nodeId}:{},name:y.event,properties:{...y.properties},...d.selection?{selection:ze(h,d.selection,p.capabilities)}:{}}),y.type==="open_url")try{Nt(y.url)}catch(O){q(p.onError,O)}y.close&&Z({type:"closed",reason:"action"})}}}let U=setTimeout(()=>{q(p.onError,new Error("Web View renderer did not start")),I("timeout")},5e3),re={destroy:()=>I("destroy"),updateCapabilities:R=>{let d=he(R,h,window);p.capabilities=d,T({type:"capabilities",capabilities:d})}};return Ct.set(re,R=>{_||T({type:"restore-action-focus",nodeId:R})}),P.addEventListener("click",()=>I("close_button")),E.addEventListener("cancel",R=>{R.preventDefault(),I("escape")}),E.append(P,H),L.append(w,E),window.addEventListener("message",Q),He.set(document,re),document.body.append(N),re}function Gt(c,p={}){let x=(()=>{let R=c.ownerDocument.defaultView;if(!R)throw new Error("Preview container has no browser window");return R})(),k=p.mode??"editor",{frame:h,post:D,accept:N}=ct(k,p.title??"\u5F39\u7A97\u9884\u89C8",p.editorMessages,p.rendererUrl,c.ownerDocument);h.style.cssText="display:block;border:0;width:100%;height:0";let L=!1,w=null,E=null,P=!1,H,T,S=new Promise((R,d)=>{H=R,T=d});S.catch(()=>{});let _=setTimeout(()=>{if(P||L)return;let R=new Error("Web View renderer did not start");T(R),q(p.onError,R.message),M()},5e3);function M(){P||(P=!0,clearTimeout(_),L||T(new Error("Web View mount cancelled")),window.removeEventListener("message",re),L=!1,w=null,E=null,z=null,Z=void 0,I.clear(),h.remove(),h.removeAttribute("srcdoc"),h.removeAttribute("src"))}let z=null,Z,te="modal",I=new Set,Q=R=>{let d=p.viewportHeight,y=d?te==="fullscreen"?d:Math.min(R,d-(te==="sheet"?0:32)):R;h.style.height=`${y}px`,q(p.onResize,y)};function U(R){if(!Z)return;let d=at.safeParse(R);if(!d.success||Object.keys(d.data).some(y=>!Z.bindings.some(O=>O.key===y))){q(p.onError,"Invalid current-screen answers");return}return d.data}function re(R){let d=P?null:N(R);if(d)if(d.type==="ready")L=!0,clearTimeout(_),H(),w&&D(w),E&&D(E);else if(d.type==="rendered"||d.type==="resize")Q(d.height),d.type==="rendered"&&q(p.onRendered);else if(d.type==="layout"&&k==="editor")Array.isArray(d.nodes)&&d.nodes.length<=(z?ge.nodes:0)&&d.nodes.every(y=>y&&typeof y.id=="string"&&/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(y.id)&&[y.x,y.y,y.width,y.height].every(O=>typeof O=="number"&&Number.isFinite(O))&&y.width>0&&y.height>0)&&q(p.onLayout,d.nodes);else if(d.type==="page"&&k==="live"&&I.has(d.pageId))q(p.onPageChange,d.pageId);else if(d.type==="escape"&&k==="live")q(p.onEscape);else if(d.type==="hover")q(p.onHover,d.id);else if(d.type==="select")q(p.onSelect,d.id);else if(d.type==="edit")q(p.onEdit,d.id);else if(d.type==="customer-data-intent"&&k==="live"&&z){let y=Xe.safeParse(d.intent);y.success&&se(z,y.data.nodeId)?.type==="customer_data"&&q(p.onCustomerDataIntent,y.data)}else if(d.type==="answers"&&k==="live"&&Z){let y=U(d.answers);y&&q(p.onAnswers,y)}else if(d.type==="action"&&z?.actions.some(y=>y.id===d.actionId)){let y=U(d.answers);if(Z&&!y)return;q(p.onAction,d.actionId,ze(z,d.selection,w?.type==="render"?w.capabilities:void 0),y)}else d.type==="error"&&q(p.onError,d.message)}return window.addEventListener("message",re),c.append(h),{ready:S,updateCustomerData(R){if(P||!z)return;let d=Ne.parse(R),y={nodes:Object.fromEntries(Object.entries(d.nodes).filter(([O,V])=>{let ae=se(z,O);return ae?.type==="customer_data"&&ae.data.source===V.source}))};w?.type==="render"&&(w.customerData=y),L&&D({type:"customer-data",data:y})},updateCapabilities(R){if(P||!z)return;let d=he(R,z,x);d&&(w?.type==="render"&&JSON.stringify(w.capabilities)===JSON.stringify(d)||(w?.type==="render"&&(w.capabilities=d),L&&D({type:"capabilities",capabilities:d})))},update(R,d,y){if(P)return;let O;try{let V=Se(R,x),ae=k==="live"&&!!y?.serverInput,J=ae?Te(V,[d]):d,de=ae?Me(V,J):V,ee=y?.serverInput?nt.parse(y.serverInput):void 0;if(ee&&(V.pages.length!==1||V.actions.some(j=>j.type!=="event"||j.close)||ee.bindings.some(j=>{let le=se(V,j.componentId);return le?.type!=="stack"||!le.interaction||!["input","multiselect","select","tabs","toggle"].includes(le.interaction.type)})))throw new Error("Current Funnel input requires one screen with bound interactive controls and output actions");z=de,Z=ee,te=V.presentation.type,I=new Set(V.pages.map(j=>j.id)),O={type:"render",doc:de,...ee?{serverInput:ee}:{},locale:J,parameters:rt.parse(y?.parameters??{}),capabilities:he(y?.capabilities,V,x),customerData:y?.customerData?Ne.parse(y.customerData):void 0},te==="fullscreen"&&p.viewportHeight&&Q(p.viewportHeight)}catch(V){q(p.onError,V instanceof Error?V.message:"\u5185\u5BB9\u4E0D\u6B63\u786E");return}w=O,L&&D(O)},highlight(R,d){P||(E={type:"highlight",hoverId:R,selectedId:d},L&&D(E))},destroy:M}}export{_t as formatCustomerDecimal,It as hostedRendererScript,Rt as inspectCustomHtml,Gt as mountScreenPreview,Se as prepareScreen,Lt as sanitizeCustomHtml,Vt as showPopup};
|
|
179
|
+
})();`}function Mt(g,m){if(!/^(0|[1-9]\d*)(\.\d{1,12})?$/.test(g))throw new gt("INVALID_RESPONSE","Invalid credit amount");let[A,I]=g.split("."),x=new Intl.NumberFormat(m),M=x.formatToParts(1.1).find(_=>_.type==="decimal")?.value??".",$=Array.from({length:10},(_,k)=>new Intl.NumberFormat(m,{useGrouping:!1}).format(k));return x.format(BigInt(A))+(I?M+I.replace(/\d/g,_=>$[Number(_)]):"")}var Ve=new WeakMap,$t=new WeakMap;function zt(g){let m=window.open("about:blank","_blank");if(!m)throw new Error("External URL window was blocked");try{m.opener=null;let A=m.document.createElement("a");A.href=g,A.target="_self",A.rel="noopener noreferrer",A.referrerPolicy="no-referrer",m.document.body.append(A),A.click()}catch(A){throw m.close(),A}}function Ht(){return typeof navigator>"u"?[]:[...navigator.languages??[],navigator.language].filter(Boolean)}function bt(g,m,A,I,x=document){let M=crypto.randomUUID(),$=crypto.randomUUID().replaceAll("-",""),_=x.createElement("iframe");_.title=m,_.setAttribute("sandbox","allow-scripts"),_.referrerPolicy="no-referrer";let k=x.defaultView,L=1;for(;k!==window&&L<16;)k=k.parent,L++;if(k!==window)throw new Error("Renderer container must belong to this host or a descendant window");let z={channel:M,parentOrigin:window.origin,hostDepth:L,mode:g,...g==="editor"?{editorMessages:A}:{}};if(I){if(g!=="live")throw new Error("Hosted Web Views only support live rendering");let T=new URL(I);if(T.username||T.password||T.search||T.hash||!/^\/web-view\/renderer\/[a-f0-9]{64}$/.test(T.pathname)||T.protocol!=="https:"&&!(T.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(T.hostname)))throw new Error("Invalid hosted renderer URL");T.hash=encodeURIComponent(JSON.stringify(z)),_.src=T.href}else _.srcdoc=yt(z,$);return{frame:_,post:T=>_.contentWindow?.postMessage({...T,channel:M},"*"),accept:T=>T.source===_.contentWindow&&T.origin==="null"&&T.data&&T.data.channel===M?T.data:null}}function Xt(g,m={}){let A=Ne(g,window);m.capabilities=Ae(m.capabilities,A,window);let I=Be(A,[m.locale,...Ht()]),x=Ue(A,I);if(Ve.has(document))throw new Error("\u5DF2\u6709\u5F39\u7A97\u6B63\u5728\u5C55\u793A\uFF0C\u8BF7\u5148\u5173\u95ED\u3002");if(!document.body||!["https:","http:"].includes(location.protocol))throw new Error("\u5F39\u7A97\u9700\u8981 HTTP(S) \u9875\u9762\u3002");let M=document.activeElement,$=document.createElement("div");$.dataset.indianaPopup="";let _=$.attachShadow({mode:"open"}),k=document.createElement("style");k.textContent=":host{all:initial;position:fixed!important;inset:0!important;z-index:2147483647!important;font-family:system-ui,sans-serif;pointer-events:none} dialog{pointer-events:auto;box-sizing:border-box;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:14px;background:white;box-shadow:0 24px 80px #0003;overflow:hidden}dialog::backdrop{background:#16142577}button{position:absolute;z-index:1;inset-inline-end:8px;top:8px;width:30px;height:30px;border:1px solid #e5e5eb;border-radius:50%;background:#fff;color:#383344;font-size:20px;line-height:1;cursor:pointer}button:focus-visible{outline:3px solid #635bdf}iframe{display:block;border:0;width:100%;height:100%}";let L=document.createElement("dialog");L.lang=I,L.dir=ct(I)?"rtl":"ltr",L.setAttribute("aria-label",x.name),L.dataset.presentation=x.presentation.type,L.style.width=x.presentation.type==="fullscreen"?"100vw":`${ot[x.presentation.size]}px`,x.presentation.type==="fullscreen"?L.style.cssText+=";max-width:100vw;max-height:100dvh;height:100dvh;margin:0;border-radius:0":x.presentation.type==="sheet"&&(L.style.cssText+=";margin:auto auto 0;max-width:100vw;max-height:100dvh;border-radius:14px 14px 0 0"),L.style.background=x.theme.background;let z=document.createElement("button");z.type="button",z.textContent="\xD7",z.setAttribute("aria-label",ft(I));let{frame:B,post:G,accept:T}=bt("live",x.name,void 0,m.rendererUrl),P=!1,S=!1,N=f=>{x.presentation.type!=="fullscreen"&&(L.style.height=`min(${Math.max(f,40)}px, calc(100dvh - ${x.presentation.type==="sheet"?0:32}px))`)};function K(f){try{Promise.resolve(m.onEvent?.(f)).catch(l=>Z(m.onError,l))}catch(l){Z(m.onError,l)}}function F(){return P?!1:(P=!0,clearTimeout(le),window.removeEventListener("message",oe),L.close(),$.remove(),Ve.delete(document),M instanceof HTMLElement&&M.isConnected&&M.focus({preventScroll:!0}),!0)}function te(f){F()&&K({type:"closed",reason:f})}function oe(f){let l=P?null:T(f);if(l){if(l.type==="ready")G({type:"render",doc:x,locale:I,capabilities:m.capabilities});else if(l.type==="rendered"&&!S)S=!0,clearTimeout(le),N(l.height),l.label&&L.setAttribute("aria-label",l.label),L.showModal(),z.focus(),K({type:"shown"});else if(l.type==="resize"&&S)N(l.height);else if(l.type==="copy"&&S){let v=me(x,l.nodeId),H=it(m.capabilities,l.nodeId);v?.type==="coupon_code"&&H?.code&&navigator.clipboard?.writeText(H.code).catch(()=>{})}else if(l.type==="escape"&&S)te("escape");else if(l.type==="action"&&S&&typeof l.actionId=="string"){let v=x.actions.find(H=>H.id===l.actionId);if(!v)return;if(v.close&&F(),K({type:"action",actionId:v.id,...typeof l.nodeId=="string"&&me(x,l.nodeId)?{nodeId:l.nodeId}:{},name:v.event,properties:{...v.properties},...l.selection?{selection:We(x,l.selection,m.capabilities)}:{}}),v.type==="open_url")try{zt(v.url)}catch(H){Z(m.onError,H)}v.close&&K({type:"closed",reason:"action"})}}}let le=setTimeout(()=>{Z(m.onError,new Error("Web View renderer did not start")),te("timeout")},5e3),ae={destroy:()=>te("destroy"),updateCapabilities:f=>{let l=Ae(f,x,window);m.capabilities=l,G({type:"capabilities",capabilities:l})}};return $t.set(ae,f=>{P||G({type:"restore-action-focus",nodeId:f})}),z.addEventListener("click",()=>te("close_button")),L.addEventListener("cancel",f=>{f.preventDefault(),te("escape")}),L.append(z,B),_.append(k,L),window.addEventListener("message",oe),Ve.set(document,ae),document.body.append($),ae}function Qt(g,m={}){let A=(()=>{let f=g.ownerDocument.defaultView;if(!f)throw new Error("Preview container has no browser window");return f})(),I=m.mode??"editor",{frame:x,post:M,accept:$}=bt(I,m.title??"\u5F39\u7A97\u9884\u89C8",m.editorMessages,m.rendererUrl,g.ownerDocument);x.style.cssText="display:block;border:0;width:100%;height:0";let _=!1,k=null,L=null,z=!1,B,G,T=new Promise((f,l)=>{B=f,G=l});T.catch(()=>{});let P=setTimeout(()=>{if(z||_)return;let f=new Error("Web View renderer did not start");G(f),Z(m.onError,f.message),S()},5e3);function S(){z||(z=!0,clearTimeout(P),_||G(new Error("Web View mount cancelled")),window.removeEventListener("message",ae),_=!1,k=null,L=null,N=null,K=void 0,te.clear(),x.remove(),x.removeAttribute("srcdoc"),x.removeAttribute("src"))}let N=null,K,F="modal",te=new Set,oe=f=>{let l=m.viewportHeight,v=l?F==="fullscreen"?l:Math.min(f,l-(F==="sheet"?0:32)):f;x.style.height=`${v}px`,Z(m.onResize,v)};function le(f){if(!K)return;let l=lt.safeParse(f);if(!l.success||Object.keys(l.data).some(v=>!K.bindings.some(H=>H.key===v))){Z(m.onError,"Invalid current-screen answers");return}return l.data}function ae(f){let l=z?null:$(f);if(l)if(l.type==="ready")_=!0,clearTimeout(P),B(),k&&M(k),L&&M(L);else if(l.type==="rendered"||l.type==="resize")oe(l.height),l.type==="rendered"&&Z(m.onRendered);else if(l.type==="layout"&&I==="editor")Array.isArray(l.nodes)&&l.nodes.length<=(N?ve.nodes:0)&&l.nodes.every(v=>v&&typeof v.id=="string"&&/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(v.id)&&[v.x,v.y,v.width,v.height].every(H=>typeof H=="number"&&Number.isFinite(H))&&v.width>0&&v.height>0)&&Z(m.onLayout,l.nodes);else if(l.type==="page"&&I==="live"&&te.has(l.pageId))Z(m.onPageChange,l.pageId);else if(l.type==="escape"&&I==="live")Z(m.onEscape);else if(l.type==="hover")Z(m.onHover,l.id);else if(l.type==="select")Z(m.onSelect,l.id);else if(l.type==="edit")Z(m.onEdit,l.id);else if(l.type==="customer-data-intent"&&I==="live"&&N){let v=st.safeParse(l.intent);v.success&&me(N,v.data.nodeId)?.type==="customer_data"&&Z(m.onCustomerDataIntent,v.data)}else if(l.type==="answers"&&I==="live"&&K){let v=le(l.answers);v&&Z(m.onAnswers,v)}else if(l.type==="action"&&N?.actions.some(v=>v.id===l.actionId)){let v=le(l.answers);if(K&&!v)return;Z(m.onAction,l.actionId,We(N,l.selection,k?.type==="render"?k.capabilities:void 0),v)}else l.type==="error"&&Z(m.onError,l.message)}return window.addEventListener("message",ae),g.append(x),{ready:T,updateCustomerData(f){if(z||!N)return;let l=Oe.parse(f),v={nodes:Object.fromEntries(Object.entries(l.nodes).filter(([H,Y])=>{let de=me(N,H);return de?.type==="customer_data"&&de.data.source===Y.source}))};k?.type==="render"&&(k.customerData=v),_&&M({type:"customer-data",data:v})},updateCapabilities(f){if(z||!N)return;let l=Ae(f,N,A);l&&(k?.type==="render"&&JSON.stringify(k.capabilities)===JSON.stringify(l)||(k?.type==="render"&&(k.capabilities=l),_&&M({type:"capabilities",capabilities:l})))},update(f,l,v){if(z)return;let H;try{let Y=Ne(f,A),de=I==="live"&&!!v?.serverInput,be=de?Be(Y,[l]):l,ke=de?Ue(Y,be):Y,se=v?.serverInput?ut.parse(v.serverInput):void 0;if(se&&(Y.surface!=="paywall"&&Y.pages.length!==1||Y.actions.some(ie=>ie.type!=="event"&&!(Y.surface==="paywall"&&ie.type==="navigate")||ie.close)||se.bindings.some(ie=>{let pe=me(Y,ie.componentId);return pe?.type!=="stack"||!pe.interaction||!["input","multiselect","select","tabs","toggle"].includes(pe.interaction.type)})))throw new Error("Current Funnel input requires one screen with bound interactive controls and output actions");N=ke,K=se,F=Y.presentation.type,te=new Set(Y.pages.map(ie=>ie.id)),H={type:"render",doc:ke,...se?{serverInput:se}:{},locale:be,parameters:pt.parse(v?.parameters??{}),capabilities:Ae(v?.capabilities,Y,A),...v?.selection?{selection:v.selection}:{},customerData:v?.customerData?Oe.parse(v.customerData):void 0},F==="fullscreen"&&m.viewportHeight&&oe(m.viewportHeight)}catch(Y){Z(m.onError,Y instanceof Error?Y.message:"\u5185\u5BB9\u4E0D\u6B63\u786E");return}k=H,_&&M(H)},highlight(f,l){z||(L={type:"highlight",hoverId:f,selectedId:l},_&&M(L))},destroy:S}}export{Mt as formatCustomerDecimal,Ct as hostedRendererScript,Nt as inspectCustomHtml,Qt as mountScreenPreview,Ne as prepareScreen,Tt as sanitizeCustomHtml,Xt as showPopup};
|