@tinkerlandai/indiana-sdk 0.1.0 → 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 +7 -0
- package/README.md +10 -6
- package/dist/{ai-usage-DX99gvfl.d.ts → ai-usage-CO0lDavO.d.ts} +210 -62
- package/dist/{chunk-2HEB2TPD.js → chunk-EZFAY4ZL.js} +1 -1
- package/dist/chunk-ULRVTA45.js +1 -0
- package/dist/chunk-YOH6DIUN.js +27 -0
- package/dist/funnel-runtime-host-OJJSHKUD.js +1 -0
- package/dist/{funnel-runtime-start-CcuXliU_.d.ts → funnel-runtime-start-DvrWekm0.d.ts} +1631 -135
- package/dist/index.d.ts +624 -40
- package/dist/index.js +1 -1
- package/dist/native-shell.js +1 -1
- package/dist/openrouter.d.ts +1 -1
- package/dist/openrouter.js +1 -1
- package/dist/paywall-HCADUT22.js +1 -0
- package/dist/popup.js +3 -3
- package/dist/server.d.ts +2 -2
- package/dist/server.js +1 -1
- package/dist/src-3GT6E6XD.js +1 -0
- package/package.json +1 -1
- package/dist/chunk-FMAMDKAV.js +0 -27
- package/dist/chunk-Y7LNDG3O.js +0 -1
- package/dist/funnel-runtime-host-QIYKF5KH.js +0 -1
- package/dist/paywall-6HHA4OJV.js +0 -1
- package/dist/src-G7U7DUQR.js +0 -1
package/dist/openrouter.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OpenRouter } from '@openrouter/sdk';
|
|
2
2
|
import { ChatUsage } from '@openrouter/sdk/models';
|
|
3
|
-
import { c as createAiPricing, F as FoundationApi, a as AiUsageContext, b as AiTokenUsage, d as AiTokenQuote } from './ai-usage-
|
|
3
|
+
import { c as createAiPricing, F as FoundationApi, a as AiUsageContext, b as AiTokenUsage, d as AiTokenQuote } from './ai-usage-CO0lDavO.js';
|
|
4
4
|
import '@ai-sdk/provider';
|
|
5
5
|
import './screen-DfuSw6Tz.js';
|
|
6
6
|
import 'zod';
|
package/dist/openrouter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as i}from"./chunk-
|
|
1
|
+
import{a as i}from"./chunk-EZFAY4ZL.js";import"./chunk-YOH6DIUN.js";import{z as R}from"zod";var c=R.number().int().min(0).max(1e9);function k(e,o){let a=c.parse(e.promptTokens),p=c.parse(e.completionTokens),s=c.parse(e.promptTokensDetails?.cachedTokens??0),t=c.parse(e.promptTokensDetails?.cacheWriteTokens??0),r=c.parse(e.promptTokensDetails?.audioTokens??0),l=c.parse(e.completionTokensDetails?.audioTokens??0),n=c.parse(e.completionTokensDetails?.reasoningTokens??0);if(c.parse(e.totalTokens)!==a+p||s+t+r>a||n+l>p||(e.promptTokensDetails?.videoTokens??0)>0)throw new i("AI_USAGE_UNAVAILABLE","Token pools must conserve usage; video needs an explicit token mapper");return{input:a-s-t-r,output:p-l-(o==="separate"?n:0),cache_read:s,cache_write:t,input_audio:r,output_audio:l,reasoning:o==="separate"?n:0}}function I(e){if(!Number.isFinite(e)||e<0)throw new i("AI_USAGE_UNAVAILABLE","Provider cost must be a nonnegative USD amount");let o=String(e),a=o.includes("e")?e.toFixed(18).replace(/0+$/,"").replace(/\.$/,""):o;if(!/^(0|[1-9]\d{0,11})(\.\d{1,18})?$/.test(a)||Number(a)!==e)throw new i("AI_USAGE_UNAVAILABLE","Provider cost exceeds the supported precision");return a}async function h(e){if(typeof window<"u")throw new i("SERVER_ONLY","OpenRouter accounting requires your backend");if(!["output","separate"].includes(e.reasoning)||!e.modelId||!e.generationId)throw new i("INVALID_REQUEST","Actual model, generation ID and reasoning pricing are required");let o={context:e.context,generationId:e.generationId,modelId:`openrouter/${e.modelId}`,usage:e.usage,tokens:null,quote:null,receipt:null,phase:"captured"};await e.persist(o);let a=e.mapTokens?e.mapTokens(e.usage):k(e.usage,e.reasoning),p=e.usage.cost==null?void 0:I(e.usage.cost),s=e.quote??await e.pricing.quoteTokens({modelId:o.modelId,tokens:a});if(s.pricing.modelId!==o.modelId||Object.keys(a).some(l=>a[l]!==s.tokens[l]))throw new i("INVALID_REQUEST","Saved quote must match the provider model and token pools");await e.persist({...o,tokens:a,quote:s,phase:"quoted"});let t=await e.pricing.trackTokens(e.client,{...e.context,quote:s,providerCostUsd:p,generationId:e.generationId});if(!t.receipt.accepted)throw new i("AI_BALANCE_REJECTED","OpenRouter usage was saved but the balance request was rejected");let r={...o,tokens:a,quote:s,receipt:t,phase:"settled"};return await e.persist(r),r}function T(e){if(typeof window<"u")throw new i("SERVER_ONLY","OpenRouter accounting requires your backend");if(!["output","separate"].includes(e.reasoning))throw new i("INVALID_REQUEST","Reasoning pricing is required");let o=e.openRouter.chat;async function a(t){if(!t.usage||!t.modelId||!t.generationId)throw new i("AI_USAGE_UNAVAILABLE","OpenRouter did not return final usage and the actual model");await h({...e,context:t.context,generationId:t.generationId,modelId:t.modelId.slice(11),usage:t.usage})}let p=async(t,r)=>{let n={context:await e.context(),generationId:null,modelId:null,usage:null,tokens:null,quote:null,receipt:null,phase:"incomplete"},d;try{d=await o.send(t,r)}catch(g){throw await e.persist(n),g}if(!(d instanceof ReadableStream)){if(n={...n,generationId:d.id,modelId:d.model?`openrouter/${d.model}`:null,usage:d.usage??null},!n.usage||!n.modelId)throw await e.persist(n),new i("AI_USAGE_UNAVAILABLE","OpenRouter omitted final accounting");return await a(n),d}let w=d.getReader(),m=!1;return new ReadableStream({async pull(g){try{let{value:u,done:A}=await w.read();if(A){if(m=!0,!n.usage||!n.modelId)throw await e.persist(n),new i("AI_USAGE_UNAVAILABLE","OpenRouter stream ended without final accounting");await a(n),g.close();return}if(u.error)throw new i("AI_PROVIDER_ERROR",u.error.message);u.usage&&(n={...n,generationId:u.id,modelId:u.model?`openrouter/${u.model}`:null,usage:u.usage}),g.enqueue(u)}catch(u){m||(m=!0,await e.persist(n)),await w.cancel(u),g.error(u)}},async cancel(g){m||(m=!0,await e.persist(n)),await w.cancel(g)}})},s=new Proxy(o,{get(t,r){return r==="send"?p:Reflect.get(t,r,t)}});return new Proxy(e.openRouter,{get(t,r){return r==="chat"?s:Reflect.get(t,r,t)}})}export{T as createOpenRouterUsageClient,h as trackOpenRouterUsage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as H}from"./chunk-6X42DWOM.js";import{a as m}from"./chunk-EZFAY4ZL.js";import{Oe as V,cl as B,ne as U,y as M}from"./chunk-YOH6DIUN.js";async function F(y,t,d){if(t.status!=="complete")throw new m("INVALID_RESPONSE","A verified completed purchase is required");if(await d.onComplete?.(t),!y||!d.check)return;let a=U.parse(await d.check());if(a.internal_feature_id!==y.internal_feature_id||a.quantity!==y.quantity)throw new m("INVALID_RESPONSE","The access requirement changed");a.allowed&&await d.onAccessGranted?.(a)}async function re(y,t){let d=t.check?U.parse(await t.check()):null;if(d?.allowed)return await t.onAccessGranted?.(d),{check:d,host:null};let a=await t.start(),p=a.view;if(!p)throw new m("INVALID_RESPONSE","Paywall presentation is missing");let{mountScreenPreview:j}=await import("./popup.js"),n=y.ownerDocument,A=new AbortController,E=n.createElement("section"),$=n.createElement("div"),I=n.createElement("div"),g=n.createElement("p"),v=n.createElement("button"),D=n.createElement("button"),f=n.createElement("dialog"),L=n.activeElement,w=p.document.screen.strings.defaultLocale.startsWith("zh");E.dataset.indianaPaywall="",E.setAttribute("aria-label",p.document.name),E.style.cssText="width:100%;box-sizing:border-box;background:#fff;color:#172033;font:14px/1.5 system-ui,sans-serif",I.style.cssText="display:flex;gap:12px;padding:12px 20px;align-items:center;flex-wrap:wrap",g.setAttribute("role","status"),D.textContent=w?"\u5173\u95ED":"Close",v.textContent=w?"\u91CD\u8BD5":"Retry",v.hidden=!0,I.append(g,v,D),E.append($,I);let N=p.document.presentation;if(N.type==="inline")y.append(E);else{let e={sm:420,md:640,lg:900};f.style.cssText=`padding:0;border:0;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto;width:${"size"in N?e[N.size]+"px":"100vw"}`,f.setAttribute("aria-label",p.document.name),f.append(E),y.append(f),f.showModal()}let u=!1,_=!1,l=null,T=!1,i=null,P=null,R=e=>{g.textContent=e instanceof Error?e.message:w?"\u8BF7\u6C42\u5931\u8D25":"Request failed",H(t.onError,e),v.hidden=i===null};async function b(e){if(!(_||u)){_=!0,v.hidden=!0,g.textContent="";try{await e()}catch(o){u||R(o)}finally{_=!1}}}async function W(e){await F(d,e,t)}async function S(e){if(u)return;if(g.textContent=e.status,e.status==="complete"){i=null,await W(e);return}if(e.status!=="pending"){i=null,l=null;return}let o=Date.now()+6e5,c=2e3;for(;!u&&Date.now()<o;){if(await new Promise(h=>{let x=()=>{clearTimeout(C),h()},C=setTimeout(()=>{A.signal.removeEventListener("abort",x),h()},c);A.signal.addEventListener("abort",x,{once:!0})}),u)return;let r=await a.read();if(r.status!=="pending"){await S(r);return}c=Math.min(c*1.5,3e4)}i=async()=>S(await a.read()),v.hidden=!1}async function z(){P?.remove(),P=null,i=z;let e=await a.confirm();if(e.status==="pending"){if(e.checkoutUrl)t.onCheckoutUrl?await t.onCheckoutUrl(e.checkoutUrl):n.defaultView?.location.assign(e.checkoutUrl);else if(e.execution||e.nativePurchase){if(!t.onPurchase)throw new m("PURCHASE_HANDLER_REQUIRED","Provide the merchant or native purchase handler");await t.onPurchase({operation:e,signal:A.signal})}}i=async()=>S(await a.read()),await S(e)}function J(e){P?.remove();let o=n.createElement("div"),c=n.createElement("button"),r=n.createElement("button"),h=n.createElement("p");h.textContent=e.lines.map(s=>s.productName).join(", ")+" \xB7 "+M(e.charge?.totalMinor??e.catalogAmountMinor-(e.discount?.amountMinor??0),e.currency),c.textContent=w?"\u786E\u8BA4\u8D2D\u4E70":"Confirm purchase",r.textContent=w?"\u53D6\u6D88":"Cancel",c.onclick=()=>{b(z)};let x=async()=>{await a.cancel(),!u&&(l=null,i=null,o.remove(),P=null)};r.onclick=()=>{i=x,b(x)};let C=n.createElement("div");for(let s of e.lines){let q=n.createElement("p");if(q.textContent=`${s.productName} \xB7 ${M(s.catalogAmountMinor,e.currency)}${B(s.interval,w?"zh-CN":"en",s.intervalCount??1)}`,C.append(q),s.trial){let G=n.createElement("p");G.textContent=w?`\u8BD5\u7528 ${s.trial.days} \u5929\uFF1B${s.trial.cardRequired?"\u9700\u8981\u63D0\u4F9B\u4ED8\u6B3E\u65B9\u5F0F":"\u65E0\u9700\u63D0\u4F9B\u4ED8\u6B3E\u65B9\u5F0F"}`:`Trial days: ${s.trial.days}; ${s.trial.cardRequired?"a payment method is required":"no payment method is required"}`,C.append(G)}}if(!e.charge){let s=n.createElement("p");s.textContent=w?"\u76EE\u5F55\u4EF7\u683C\uFF1B\u6700\u7EC8\u91D1\u989D\u4EE5\u7ED3\u8D26\u65F6\u7A0E\u8D39\u548C\u8BD5\u7528\u89C4\u5219\u4E3A\u51C6\u3002":"Catalog price; the final charge depends on checkout taxes and trial terms.",C.append(s)}o.append(h,C,c,r),I.prepend(o),P=o,i=null}async function Q(){if(!l)return;if(i=Q,!T){let o=a.view,c=o?.document.buttons[l.actionId],r=o&&c?.type==="checkout"?V(c.product,l.selection,o.capabilities):null;if(!r)throw new m("PRODUCT_UNAVAILABLE","Choose an available Product in this purchase area");let h=await t.resolveOfferId?.({actionId:l.actionId,productVersionId:r});if(u)return;h!==void 0&&(l.offerId=h),T=!0}let e=await a.preview(l);u||J(e)}let O=j($,{mode:"live",rendererUrl:a.webViewUrl,title:p.document.name,onAction(e,o={}){let c=a.view,r=c?.document.buttons[e];if(r){if(r.type==="close"){b(async()=>{await t.onAction?.(e),k(t.onAction?"action":"dismiss")});return}if(r.type==="action"){i=async()=>{if(r.action.type==="event"){if(!t.onEvent)throw new m("EVENT_HANDLER_REQUIRED","Provide the event handler");await t.onEvent(r.action.event)}else t.onOpenUrl?await t.onOpenUrl(r.action.url):n.defaultView?.location.assign(r.action.url);await t.onAction?.(e),i=null},b(i);return}if(!c||!V(r.product,o,c.capabilities)){R(new m("PRODUCT_UNAVAILABLE","Choose an available Product in this purchase area"));return}if(l&&l.actionId!==e){R(new m("COMMAND_PENDING","Finish the current purchase"));return}l||(l={requestId:crypto.randomUUID(),actionId:e,selection:o},T=!1),b(Q)}},onEscape:()=>k("dismiss"),onError:e=>R(new Error(e))});O.update(p.document.screen,p.document.screen.strings.defaultLocale,{capabilities:p.capabilities,serverInput:{bindings:[],answers:{}}});try{await O.ready}catch(e){throw k(),e}function k(e="destroy"){u||(u=!0,A.abort(),O.destroy(),a.destroy(),f.open&&f.close(),f.remove(),E.remove(),L instanceof HTMLElement&&L.isConnected&&L.focus(),e==="dismiss"&&H(t.onDismiss))}return D.onclick=()=>k("dismiss"),f.addEventListener("cancel",e=>{e.preventDefault(),k("dismiss")}),v.onclick=()=>{i&&b(i)},{check:d,host:{destroy:k,refresh:async()=>{let e=await a.refresh();return u||O.updateCapabilities(e.capabilities),e}}}}export{re as showPaywall};
|
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}
|
|
@@ -167,7 +167,7 @@ body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antial
|
|
|
167
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}}
|
|
168
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}}
|
|
169
169
|
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
170
|
-
`,S=null,P,K=new Set,F,te,oe=[],le={},ae=null,f=Object.create(null),l=Object.create(null),v=Object.create(null),H="",Z=!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{T.webkit?.messageHandlers?.grow?T.webkit.messageHandlers.grow.postMessage(a):T.GrowAndroid?T.GrowAndroid.postMessage(JSON.stringify(a)):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 Ve(){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"&&P){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]:P?.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 Ge(e){return`${Number(e.top)}px ${Number(e.right)}px ${Number(e.bottom)}px ${Number(e.left)}px`}function Ze(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=Ge(n.padding)),n.margin&&(s.margin=Ge(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))),Ze(e,n.width,"width",t,i.align),Ze(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(P){let t=P.bindings.find(n=>n.componentId===e);if(!t)return;P.answers[t.key]=a,K.add(e),X({type:"answers",answers:Ye()});return}}function Ye(){let e={};for(let a of P?.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 M=n?s("\u66F4\u65B0\u4E2D\u2026","Updating\u2026"):s("\u5237\u65B0","Refresh"),V=d(M,"refresh");if(V.replaceChildren(c("refresh")),V.setAttribute("aria-label",M),V.title=M,V.classList.add("g-data-refresh"),n&&V.classList.add("g-data-refreshing"),o.append(V),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 J of R.detail)J!==R.status&&ne.append(r("div","g-data-row-detail",J));if(e.data.source==="credit_transactions"&&!E){let J=r("span","g-data-row-mark");J.append(c(["Refund","\u9000\u56DE"].includes(R.status??"")?"up":"down")),Q.append(J)}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 J=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(J.append(ce),!E)for(let re of R.billingActions??[])J.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"),J.append(re)}if(e.data.allowPurchase&&!E)for(let re of R.membershipActions??[])J.append(d(re.label,"membership_preview",re.value,!!t.preview||!!t.membershipBusy||!!t.membershipReview));O.append(J)}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(J=>J.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[J,ce]of[[s("\u4F59\u989D","Balance"),u.available],[s("\u51BB\u7ED3","Reserved"),u.reserved]]){let fe=r("span","",J);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 J=r("details","g-data-sources");if(J.dataset.gDataSources=u.key,J.append(r("summary","",`${s("\u79EF\u5206\u6765\u6E90","Credit sources")} \xB7 ${u.sourceCount}`),at(u.sources,!0)),J.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),J.append(ce)}E.append(J)}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=Y[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",N[e.aspect]&&(t.dataset.aspect=e.aspect,t.style.aspectRatio=N[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(M=>M.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(M=>M.period===j&&n.options.includes(M.productVersionId))),D=j=>{r.period=j;let M=i.assignments.find(V=>V.tierId===r.tierId&&V.period===j);f[e.id]=M&&n.options.includes(M.productVersionId)?M.productVersionId:"",ue(),Ee(e.id)?.querySelector(`[data-product-period="${j}"]`)?.focus()};for(let j of y){let M=document.createElement("button");M.type="button",M.className=`g-btn g-btn-${j===r.period?"primary":"secondary"}`,M.style.cssText="flex:1;min-width:0;min-height:40px",M.dataset.productPeriod=j,M.setAttribute("role","radio"),M.setAttribute("aria-checked",String(j===r.period)),M.textContent=U(j==="month"?i.monthLabel:i.yearLabel).value,M.disabled=!w.includes(j),M.tabIndex=g.mode==="editor"||M.disabled?-1:j===r.period||!w.includes(r.period)&&j===w[0]?0:-1,M.addEventListener("click",V=>{g.mode!=="editor"&&(V.stopPropagation(),D(j))}),M.addEventListener("keydown",V=>{if(g.mode==="editor"||!w.length)return;let ee;["ArrowRight","ArrowDown"].includes(V.key)?ee=(w.indexOf(j)+1)%w.length:["ArrowLeft","ArrowUp"].includes(V.key)?ee=(w.indexOf(j)-1+w.length)%w.length:V.key==="Home"?ee=0:V.key==="End"&&(ee=w.length-1),ee!==void 0&&(V.preventDefault(),D(w[ee]))}),h.append(M)}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",M=>{g.mode==="editor"||!y||(M.stopPropagation(),b(o))}),w.addEventListener("keydown",M=>{if(g.mode==="editor"||!d.length)return;let V=d.indexOf(o),ee;["ArrowRight","ArrowDown"].includes(M.key)?ee=(V+1)%d.length:["ArrowLeft","ArrowUp"].includes(M.key)?ee=(V-1+d.length)%d.length:M.key==="Home"?ee=0:M.key==="End"&&(ee=d.length-1),ee!==void 0&&(M.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=P?.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]},Ve(),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);Z?ge():(Z=!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:Ve()}:{},...P?{answers:Ye()}:{}});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??{},P=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 P?.bindings??[])Object.hasOwn(P.answers,n.key)&&(f[n.componentId]=P.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=C,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)}),T.__growReceive=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
|
+
`,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`(() => {
|
|
171
171
|
try {
|
|
172
172
|
const input = JSON.parse(decodeURIComponent(location.hash.slice(1)));
|
|
173
173
|
if (!input || !/^[a-f0-9-]{36}$/.test(input.channel) || input.mode !== "live" || !Number.isInteger(input.hostDepth) || input.hostDepth < 1 || input.hostDepth > 16) return;
|
|
@@ -176,4 +176,4 @@ body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antial
|
|
|
176
176
|
const boot = { channel: input.channel, parentOrigin: origin.origin, hostDepth: input.hostDepth, mode: "live" };
|
|
177
177
|
(${ht.toString()})(boot);
|
|
178
178
|
} catch { /* No valid host bridge: leave the public shell empty. */ }
|
|
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),T=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?T+I.replace(/\d/g,_=>$[Number(_)]):"")}var Je=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 T=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:T,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 N=new URL(I);if(N.username||N.password||N.search||N.hash||!/^\/web-view\/renderer\/[a-f0-9]{64}$/.test(N.pathname)||N.protocol!=="https:"&&!(N.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(N.hostname)))throw new Error("Invalid hosted renderer URL");N.hash=encodeURIComponent(JSON.stringify(z)),_.src=N.href}else _.srcdoc=yt(z,$);return{frame:_,post:N=>_.contentWindow?.postMessage({...N,channel:T},"*"),accept:N=>N.source===_.contentWindow&&N.origin==="null"&&N.data&&N.data.channel===T?N.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(Je.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 T=document.activeElement,$=document.createElement("div");$.dataset.growPopup="";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:Y,accept:N}=bt("live",x.name,void 0,m.rendererUrl),C=!1,S=!1,P=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=>G(m.onError,l))}catch(l){G(m.onError,l)}}function F(){return C?!1:(C=!0,clearTimeout(le),window.removeEventListener("message",oe),L.close(),$.remove(),Je.delete(document),T instanceof HTMLElement&&T.isConnected&&T.focus({preventScroll:!0}),!0)}function te(f){F()&&K({type:"closed",reason:f})}function oe(f){let l=C?null:N(f);if(l){if(l.type==="ready")Y({type:"render",doc:x,locale:I,capabilities:m.capabilities});else if(l.type==="rendered"&&!S)S=!0,clearTimeout(le),P(l.height),l.label&&L.setAttribute("aria-label",l.label),L.showModal(),z.focus(),K({type:"shown"});else if(l.type==="resize"&&S)P(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){G(m.onError,H)}v.close&&K({type:"closed",reason:"action"})}}}let le=setTimeout(()=>{G(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,Y({type:"capabilities",capabilities:l})}};return $t.set(ae,f=>{C||Y({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),Je.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:T,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,Y,N=new Promise((f,l)=>{B=f,Y=l});N.catch(()=>{});let C=setTimeout(()=>{if(z||_)return;let f=new Error("Web View renderer did not start");Y(f),G(m.onError,f.message),S()},5e3);function S(){z||(z=!0,clearTimeout(C),_||Y(new Error("Web View mount cancelled")),window.removeEventListener("message",ae),_=!1,k=null,L=null,P=null,K=void 0,te.clear(),x.remove(),x.removeAttribute("srcdoc"),x.removeAttribute("src"))}let P=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`,G(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))){G(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(C),B(),k&&T(k),L&&T(L);else if(l.type==="rendered"||l.type==="resize")oe(l.height),l.type==="rendered"&&G(m.onRendered);else if(l.type==="layout"&&I==="editor")Array.isArray(l.nodes)&&l.nodes.length<=(P?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)&&G(m.onLayout,l.nodes);else if(l.type==="page"&&I==="live"&&te.has(l.pageId))G(m.onPageChange,l.pageId);else if(l.type==="escape"&&I==="live")G(m.onEscape);else if(l.type==="hover")G(m.onHover,l.id);else if(l.type==="select")G(m.onSelect,l.id);else if(l.type==="edit")G(m.onEdit,l.id);else if(l.type==="customer-data-intent"&&I==="live"&&P){let v=st.safeParse(l.intent);v.success&&me(P,v.data.nodeId)?.type==="customer_data"&&G(m.onCustomerDataIntent,v.data)}else if(l.type==="answers"&&I==="live"&&K){let v=le(l.answers);v&&G(m.onAnswers,v)}else if(l.type==="action"&&P?.actions.some(v=>v.id===l.actionId)){let v=le(l.answers);if(K&&!v)return;G(m.onAction,l.actionId,We(P,l.selection,k?.type==="render"?k.capabilities:void 0),v)}else l.type==="error"&&G(m.onError,l.message)}return window.addEventListener("message",ae),g.append(x),{ready:N,updateCustomerData(f){if(z||!P)return;let l=Oe.parse(f),v={nodes:Object.fromEntries(Object.entries(l.nodes).filter(([H,Z])=>{let de=me(P,H);return de?.type==="customer_data"&&de.data.source===Z.source}))};k?.type==="render"&&(k.customerData=v),_&&T({type:"customer-data",data:v})},updateCapabilities(f){if(z||!P)return;let l=Ae(f,P,A);l&&(k?.type==="render"&&JSON.stringify(k.capabilities)===JSON.stringify(l)||(k?.type==="render"&&(k.capabilities=l),_&&T({type:"capabilities",capabilities:l})))},update(f,l,v){if(z)return;let H;try{let Z=Ne(f,A),de=I==="live"&&!!v?.serverInput,be=de?Be(Z,[l]):l,ke=de?Ue(Z,be):Z,se=v?.serverInput?ut.parse(v.serverInput):void 0;if(se&&(Z.surface!=="paywall"&&Z.pages.length!==1||Z.actions.some(ie=>ie.type!=="event"&&!(Z.surface==="paywall"&&ie.type==="navigate")||ie.close)||se.bindings.some(ie=>{let pe=me(Z,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");P=ke,K=se,F=Z.presentation.type,te=new Set(Z.pages.map(ie=>ie.id)),H={type:"render",doc:ke,...se?{serverInput:se}:{},locale:be,parameters:pt.parse(v?.parameters??{}),capabilities:Ae(v?.capabilities,Z,A),...v?.selection?{selection:v.selection}:{},customerData:v?.customerData?Oe.parse(v.customerData):void 0},F==="fullscreen"&&m.viewportHeight&&oe(m.viewportHeight)}catch(Z){G(m.onError,Z instanceof Error?Z.message:"\u5185\u5BB9\u4E0D\u6B63\u786E");return}k=H,_&&T(H)},highlight(f,l){z||(L={type:"highlight",hoverId:f,selectedId:l},_&&T(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};
|
|
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};
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'zod';
|
|
2
|
-
export { e as FeatureClient, f as FeatureClientOptions, n as FunnelDecisionInput, o as FunnelDecisionTimeoutError, p as FunnelDecisionUsedInput, g as FunnelNodeEvaluationContext, q as FunnelSignalInput, d as FunnelStartInput, h as IndianaError, r as IndianaServerOptions, k as createFeatureClient, s as
|
|
3
|
-
export { e as AiPricingOptions, d as AiTokenQuote, b as AiTokenUsage, a as AiUsageContext, f as AiUsageMiddlewareOptions, g as AiUsageRecord, h as aiPriceSnapshotSchema, i as aiTokenQuoteSchema, c as createAiPricing, j as createAiUsageMiddleware, k as createConfiguredAiPricing } from './ai-usage-
|
|
2
|
+
export { e as FeatureClient, f as FeatureClientOptions, n as FunnelDecisionInput, o as FunnelDecisionTimeoutError, p as FunnelDecisionUsedInput, g as FunnelNodeEvaluationContext, q as FunnelSignalInput, d as FunnelStartInput, h as IndianaError, r as IndianaServerOptions, k as createFeatureClient, s as createFunnelCampaignClient, t as createFunnelDecisionClient, u as createFunnelOrchestrationClient, v as createFunnelStartClient, w as createGuestToken, x as createIndianaServer, y as createNativeReceiptClient, z as createPaywallStartClient, m as evaluateFunnelNode, A as renewFunnelRun } from './funnel-runtime-start-DvrWekm0.js';
|
|
3
|
+
export { e as AiPricingOptions, d as AiTokenQuote, b as AiTokenUsage, a as AiUsageContext, f as AiUsageMiddlewareOptions, g as AiUsageRecord, h as aiPriceSnapshotSchema, i as aiTokenQuoteSchema, c as createAiPricing, j as createAiUsageMiddleware, k as createConfiguredAiPricing } from './ai-usage-CO0lDavO.js';
|
|
4
4
|
import './screen-DfuSw6Tz.js';
|
|
5
5
|
import '@ai-sdk/provider';
|