@tinkerlandai/indiana-sdk 0.5.0 → 0.6.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 +22 -1
- package/README.md +177 -8
- package/README.zh-CN.md +94 -6
- package/dist/{ai-usage-BzydP8eN.d.ts → ai-usage-B4W5m4Ie.d.ts} +21 -4
- package/dist/chunk-4JBIKJMU.js +4 -0
- package/dist/chunk-5TEZEOHX.js +1 -0
- package/dist/chunk-5WY3AXSS.js +1 -0
- package/dist/chunk-HU2HIDVT.js +11 -0
- package/dist/chunk-OHDY27EI.js +1 -0
- package/dist/chunk-OK2Q6IJD.js +1 -0
- package/dist/chunk-PCVQHHEE.js +1 -0
- package/dist/chunk-RMJJOSVZ.js +1 -0
- package/dist/chunk-S2MSIA57.js +17 -0
- package/dist/chunk-S5TVMQRC.js +1 -0
- package/dist/configuration-sync-Bnu8s4pc.d.ts +1314 -0
- package/dist/{customer-page-aZb5Twue.d.ts → customer-page-B4FGCVpt.d.ts} +3 -0
- package/dist/funnel-runtime-host-L3WILUHK.js +1 -0
- package/dist/funnel-runtime-start-Zbd5ro5r.d.ts +30920 -0
- package/dist/{growth-rules-D64pEvg9.d.ts → growth-rules-B4YYy64R.d.ts} +8 -1
- package/dist/index.d.ts +14950 -5193
- 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/page.d.ts +6 -8
- package/dist/page.js +1 -1
- package/dist/paywall-TCE5DE5T.js +1 -0
- package/dist/popup.d.ts +5 -2
- package/dist/popup.js +6 -6
- package/dist/server.d.ts +4 -3
- package/dist/server.js +1 -1
- package/dist/src-VGIVVM27.js +1 -0
- package/dist/{visual-editor-agent-FDCV3BXP.js → visual-editor-agent-WW65CMKW.js} +1 -1
- package/dist/visual.d.ts +4 -2
- package/dist/visual.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3OSMEG44.js +0 -17
- package/dist/chunk-GA6X57BO.js +0 -1
- package/dist/chunk-GTBD4BJ4.js +0 -11
- package/dist/chunk-QUW4UOKZ.js +0 -4
- package/dist/chunk-RMFH5TWV.js +0 -1
- package/dist/chunk-YNUVRZRQ.js +0 -1
- package/dist/funnel-runtime-host-RZRB2CY6.js +0 -1
- package/dist/funnel-runtime-start-JHA9ES24.d.ts +0 -9199
- package/dist/paywall-MYBEOVTQ.js +0 -1
- package/dist/src-E2GXK6WA.js +0 -1
- /package/dist/{chunk-ZT523F45.js → chunk-BIFEEVQO.js} +0 -0
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-B4W5m4Ie.js';
|
|
4
4
|
import '@ai-sdk/provider';
|
|
5
5
|
import './screen-16d-xADb.js';
|
|
6
6
|
import 'zod';
|
package/dist/openrouter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-
|
|
1
|
+
import"./chunk-PCVQHHEE.js";import"./chunk-OK2Q6IJD.js";import{a as i}from"./chunk-5TEZEOHX.js";import"./chunk-S5TVMQRC.js";import"./chunk-HU2HIDVT.js";import"./chunk-RMJJOSVZ.js";import"./chunk-OHDY27EI.js";import"./chunk-S2MSIA57.js";import{z as k}from"zod";var c=k.number().int().min(0).max(1e9);function R(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):R(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};
|
package/dist/page.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as ConfigurationSync } from './configuration-sync-Bnu8s4pc.js';
|
|
2
|
+
import { J as JsonValue, R as Result } from './growth-rules-B4YYy64R.js';
|
|
2
3
|
import { z } from 'zod';
|
|
4
|
+
import './screen-16d-xADb.js';
|
|
3
5
|
|
|
4
6
|
/** GET /api/v1/page-experiments/{environmentId}: page experiments and the saved groups they reference only. */
|
|
5
7
|
declare const pageExperimentPayloadSchema: z.ZodObject<{
|
|
@@ -67,21 +69,17 @@ declare const pageExperimentPayloadSchema: z.ZodObject<{
|
|
|
67
69
|
}, z.core.$strict>;
|
|
68
70
|
type PageExperimentPayload = z.infer<typeof pageExperimentPayloadSchema>;
|
|
69
71
|
|
|
70
|
-
/*!
|
|
71
|
-
Portions ported from GrowthBook sdk-js @ ed29827 (GrowthBook.ts auto experiments, util.ts mergeQueryStrings,
|
|
72
|
-
plugins/auto-attributes.ts). Copyright (c) GrowthBook, Inc. MIT License.
|
|
73
|
-
*/
|
|
74
|
-
|
|
75
72
|
/**
|
|
76
73
|
* Page experiments for anonymous merchant pages (docs/growthbook-sdk-delivery.md): URL redirect experiments delivered
|
|
77
74
|
* by a public App environment ID. Assignment, URL targeting and query-string overrides use the vendored GrowthBook
|
|
78
75
|
* engine; the exposure is sent before navigating. The environment ID is public and never authenticates anything.
|
|
79
76
|
*/
|
|
80
77
|
type PageExperimentsOptions = {
|
|
78
|
+
configuration?: ConfigurationSync;
|
|
81
79
|
/** The public App environment ID shown in the console. */
|
|
82
80
|
environmentId: string;
|
|
83
|
-
/** Indiana origin
|
|
84
|
-
baseUrl
|
|
81
|
+
/** Indiana API origin; defaults to https://api.tinker.cash. */
|
|
82
|
+
baseUrl?: string;
|
|
85
83
|
/** Extra targeting attributes; they win over the automatic ones. */
|
|
86
84
|
attributes?: Record<string, JsonValue>;
|
|
87
85
|
/** Override navigation (default `location.replace`). */
|
package/dist/page.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as a,h as b,i as c,j as d}from"./chunk-
|
|
1
|
+
import{g as a,h as b,i as c,j as d}from"./chunk-4JBIKJMU.js";import"./chunk-S5TVMQRC.js";import"./chunk-OHDY27EI.js";import"./chunk-S2MSIA57.js";export{d as createPageExperiments,a as mergeQueryStrings,b as pageAttributes,c as readPayload};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as z}from"./chunk-6X42DWOM.js";import"./chunk-OK2Q6IJD.js";import{a as w}from"./chunk-5TEZEOHX.js";import"./chunk-S5TVMQRC.js";import{Gd as q,Wj as j}from"./chunk-HU2HIDVT.js";import{f as $,ja as N}from"./chunk-RMJJOSVZ.js";import"./chunk-OHDY27EI.js";import"./chunk-S2MSIA57.js";async function W(b,n,h){if(n.status!=="complete")throw new w("INVALID_RESPONSE","A verified completed purchase is required");if(await h.onComplete?.(n),!b||!h.check)return;let t=N.parse(await h.check());if(t.internal_feature_id!==b.internal_feature_id||t.quantity!==b.quantity)throw new w("INVALID_RESPONSE","The access requirement changed");t.allowed&&await h.onAccessGranted?.(t)}async function ie(b,n){let h=n.check?N.parse(await n.check()):null;if(h?.allowed)return await n.onAccessGranted?.(h),{check:h,host:null};let t=await n.start(),y=t.view;if(!y)throw new w("INVALID_RESPONSE","Paywall presentation is missing");let{mountScreenPreview:J}=await import("./popup.js"),a=b.ownerDocument,S=new AbortController,v=a.createElement("section"),Q=a.createElement("div"),O=a.createElement("div"),P=a.createElement("p"),c=a.createElement("button"),L=a.createElement("button"),u=a.createElement("dialog"),_=a.activeElement,p=y.document.screen.strings.defaultLocale.startsWith("zh");v.dataset.indianaPaywall="",v.setAttribute("aria-label",y.document.name),v.style.cssText="width:100%;box-sizing:border-box;background:#fff;color:#172033;font:14px/1.5 system-ui,sans-serif",O.style.cssText="display:flex;gap:12px;padding:12px 20px;align-items:center;flex-wrap:wrap",P.setAttribute("role","status"),L.textContent=p?"\u5173\u95ED":"Close",c.textContent=p?"\u91CD\u8BD5":"Retry",c.hidden=!0,O.append(P,c,L),v.append(Q,O);let D=y.document.presentation,A,d=!1,T=!1,f=null,G=!1,m=()=>!G&&n.canInteract?.()!==!1,M=!1,r=null,I=null,U=e=>{P.textContent=e instanceof Error?e.message:p?"\u8BF7\u6C42\u5931\u8D25":"Request failed",z(n.onError,e),c.hidden=r===null};async function k(e){if(!(T||d||!m())){T=!0,c.hidden=!0,P.textContent="";try{await e()}catch(s){d||U(s)}finally{T=!1}}}async function K(e){await W(h,e,n)}async function E(e){if(d)return;if(!m()){r=async()=>E(await t.read()),c.hidden=!1;return}if(P.textContent=e.status,e.status==="complete"){r=null,await K(e);return}if(e.status!=="pending"){if(t.canReselect===!1){P.textContent=p?"\u6B63\u5728\u6838\u5BF9\u539F\u8D2D\u4E70\u7ED3\u679C":"Checking the original purchase result",c.textContent=p?"\u67E5\u8BE2\u7ED3\u679C":"Check result",r=async()=>E(await t.read()),c.hidden=!1;return}c.textContent=p?"\u91CD\u8BD5":"Retry",r=null,f=null;return}let s=Date.now()+6e5,l=2e3;for(;!d&&Date.now()<s;){if(await new Promise(C=>{let R=()=>{clearTimeout(x),C()},x=setTimeout(()=>{S.signal.removeEventListener("abort",R),C()},l);S.signal.addEventListener("abort",R,{once:!0})}),d)return;if(!m()){r=async()=>E(await t.read()),c.hidden=!1;return}let i=await t.read();if(i.status!=="pending"){await E(i);return}l=Math.min(l*1.5,3e4)}r=async()=>E(await t.read()),c.hidden=!1}async function V(){I?.remove(),I=null,r=V;let e=await t.confirm();if(!m()){r=V,c.hidden=!1;return}if(e.status==="pending"){if(e.checkoutUrl)n.onCheckoutUrl?await n.onCheckoutUrl(e.checkoutUrl):a.defaultView?.location.assign(e.checkoutUrl);else if(e.execution||e.nativePurchase){if(!n.onPurchase)throw new w("PURCHASE_HANDLER_REQUIRED","Provide the merchant or native purchase handler");await n.onPurchase({operation:e,signal:S.signal})}}r=async()=>E(await t.read()),await E(e)}function X(e){I?.remove();let s=a.createElement("div"),l=a.createElement("button"),i=a.createElement("button"),C=a.createElement("p");C.textContent=e.lines.map(o=>o.productName).join(", ")+" \xB7 "+$(e.charge?.totalMinor??e.catalogAmountMinor-(e.discount?.amountMinor??0),e.currency),l.textContent=p?"\u786E\u8BA4\u8D2D\u4E70":"Confirm purchase",i.textContent=p?"\u53D6\u6D88":"Cancel",l.onclick=()=>{k(V)};let R=async()=>{let o=await t.cancel();d||(s.remove(),I=null,await E(o))};i.onclick=()=>{r=R,k(R)};let x=a.createElement("div");for(let o of e.lines){let B=a.createElement("p");if(B.textContent=`${o.productName} \xB7 ${$(o.catalogAmountMinor,e.currency)}${j(o.interval,p?"zh-CN":"en",o.intervalCount??1)}`,x.append(B),o.trial){let F=a.createElement("p");F.textContent=p?`\u8BD5\u7528 ${o.trial.days} \u5929\uFF1B${o.trial.cardRequired?"\u9700\u8981\u63D0\u4F9B\u4ED8\u6B3E\u65B9\u5F0F":"\u65E0\u9700\u63D0\u4F9B\u4ED8\u6B3E\u65B9\u5F0F"}`:`Trial days: ${o.trial.days}; ${o.trial.cardRequired?"a payment method is required":"no payment method is required"}`,x.append(F)}}if(!e.charge){let o=a.createElement("p");o.textContent=p?"\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.",x.append(o)}s.append(C,x,l,i),O.prepend(s),I=s,r=null}async function H(){if(!f)return;if(r=H,!M){let s=t.view,l=s?.document.buttons[f.actionId],i=s&&l?.type==="checkout"?q(l.product,f.selection,s.capabilities):null;if(!i)throw new w("PRODUCT_UNAVAILABLE","Choose an available Product in this purchase area");let C=await n.resolveOfferId?.({actionId:f.actionId,productVersionId:i});if(d)return;C!==void 0&&(f.offerId=C),M=!0}if(!m()){c.hidden=!1;return}let e=await t.preview(f);d||X(e)}function g(e="destroy"){d||(d=!0,S.abort(),A?.destroy(),t.destroy(),u.open&&u.close(),u.remove(),v.remove(),_ instanceof HTMLElement&&_.isConnected&&_.focus(),e==="dismiss"&&z(n.onDismiss))}L.onclick=()=>{m()&&g("dismiss")},u.addEventListener("cancel",e=>{e.preventDefault(),m()&&g("dismiss")}),c.onclick=()=>{r&&k(r)};try{if(D.type==="inline")b.append(v);else{let e={sm:420,md:640,lg:900};u.style.cssText=`padding:0;border:0;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto;width:${"size"in D?e[D.size]+"px":"100vw"}`,u.setAttribute("aria-label",y.document.name),u.append(v),b.append(u),m()&&u.showModal()}A=J(Q,{mode:"live",rendererUrl:t.webViewUrl,title:y.document.name,onAction(e,s={}){if(!m())return;let l=t.view,i=l?.document.buttons[e];if(i){if(i.type==="close"){k(async()=>{await n.onAction?.(e),g(n.onAction?"action":"dismiss")});return}if(i.type==="action"){r=async()=>{if(i.action.type==="event"){if(!n.onEvent)throw new w("EVENT_HANDLER_REQUIRED","Provide the event handler");await n.onEvent(i.action.event)}else n.onOpenUrl?await n.onOpenUrl(i.action.url):a.defaultView?.location.assign(i.action.url);await n.onAction?.(e),r=null},k(r);return}if((t.quote||f)&&t.canReselect===!1){r=t.quote?async()=>E(await t.read()):H,k(r);return}if(!l||!q(i.product,s,l.capabilities)){U(new w("PRODUCT_UNAVAILABLE","Choose an available Product in this purchase area"));return}if(f&&f.actionId!==e){U(new w("COMMAND_PENDING","Finish the current purchase"));return}f||(f={requestId:crypto.randomUUID(),actionId:e,selection:s},M=!1),k(H)}},onEscape:()=>{m()&&g("dismiss")},onError:e=>U(new Error(e))}),A.update(y.document.screen,y.document.screen.strings.defaultLocale,{capabilities:y.capabilities,serverInput:{bindings:[],answers:{}}}),await A.ready}catch(e){throw g(),e}return{check:h,host:{setSuspended(e){G=e,v.hidden=e,e&&u.open?u.close():!e&&!d&&D.type!=="inline"&&!u.open&&u.showModal()},destroy:g,refresh:async()=>{if(!m()){if(t.view)return t.view;throw new w("PRECONDITION_FAILED","Paywall presentation is suspended")}let e=await t.refresh();return d||A?.updateCapabilities(e.capabilities),e}}}}export{ie as showPaywall};
|
package/dist/popup.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as ScreenAction, b as ScreenNode, c as ScreenDocument } from './screen-16d-xADb.js';
|
|
2
|
-
import { O as Offer, b as OfferUnavailableReason, c as CustomerPageData, a as CustomerDataIntent } from './customer-page-
|
|
2
|
+
import { O as Offer, b as OfferUnavailableReason, c as CustomerPageData, a as CustomerDataIntent } from './customer-page-B4FGCVpt.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { WindowLike } from 'dompurify';
|
|
5
5
|
|
|
@@ -283,11 +283,12 @@ type ScreenParameters = z.infer<typeof screenParametersSchema>;
|
|
|
283
283
|
type ScreenAnswers = z.infer<typeof screenAnswersSchema>;
|
|
284
284
|
declare const screenRendererInputSchema: z.ZodObject<{
|
|
285
285
|
bindings: z.ZodArray<z.ZodObject<{
|
|
286
|
-
|
|
286
|
+
variable: z.ZodString;
|
|
287
287
|
componentId: z.ZodString;
|
|
288
288
|
required: z.ZodBoolean;
|
|
289
289
|
}, z.core.$strict>>;
|
|
290
290
|
answers: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
|
|
291
|
+
values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
|
|
291
292
|
}, z.core.$strict>;
|
|
292
293
|
type ScreenRendererInput = z.infer<typeof screenRendererInputSchema>;
|
|
293
294
|
|
|
@@ -397,6 +398,8 @@ type ScreenPreviewHandle = {
|
|
|
397
398
|
customerData?: CustomerPageData;
|
|
398
399
|
serverInput?: ScreenRendererInput;
|
|
399
400
|
selection?: Record<string, string | boolean>;
|
|
401
|
+
/** Explicitly restart a live page even when its design and input are unchanged. */
|
|
402
|
+
reset?: boolean;
|
|
400
403
|
}): void;
|
|
401
404
|
updateCustomerData(data: CustomerPageData): void;
|
|
402
405
|
updateCapabilities(data: SurfaceData): void;
|
package/dist/popup.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as K}from"./chunk-6X42DWOM.js";import{a as At}from"./chunk-YNUVRZRQ.js";import{Hi as vt,Zf as wt,ag as _e,cf as yt,hf as We,if as bt,ig as Je,jg as Ve,kf as qe,lg as ve,mg as xt,ng as Ke,of as Re,rj as kt,sj as St,vj as Et}from"./chunk-GTBD4BJ4.js";import"./chunk-3OSMEG44.js";function It(c){let p=new Intl.Locale(c);if(p.language==="zh")return p.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[p.language]??A.en}import Kt from"dompurify";import{parse as qt,generate as Jt,walk as Vt}from"css-tree";function Lt(c){if(!c.trim())return"";if(/[\\<]/.test(c))throw new Error("CSS \u6682\u4E0D\u652F\u6301\u53CD\u659C\u6760\u8F6C\u4E49\u6216 HTML \u6807\u7B7E\u3002");let p=qt(c,{onParseError:I=>{throw Object.assign(new Error("CSS \u683C\u5F0F\u4E0D\u6B63\u786E\u3002"),{offset:I.offset})}}),A=0;return Vt(p,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")}),Jt(p)}import{parse as Zt,walk as Gt}from"css-tree";function Yt(c,p,A,I){return{html:He(c,A,I),css:Ze(p)}}function Ze(c){return Lt(c)}function He(c,p,A,I){if(!c.trim())return"";let h=qe(c);if(h.length)throw new Error(h[0]);let z=Kt(A),T=z.sanitize(c,{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(!(T instanceof A.Element))throw new Error("\u65E0\u6CD5\u89E3\u6790 HTML\u3002");if(I){let S=new Set;for(let f of z.removed){let M="element"in f?f.element.nodeName.toLowerCase():void 0,R="attribute"in f?f.attribute?.name:void 0;if(!M&&!R)continue;let F=R?/<[^>]+>/g:new RegExp(`<\\s*${M}\\b[^>]*>`,"gi"),B=[...c.matchAll(F)].find(D=>!S.has(`${R??M}:${D.index}`)&&(!R||new RegExp(`\\b${R}\\s*=`,"i").test(D[0])));if(!B)continue;let m=B.index;S.add(`${R??M}:${m}`);let C=R==="style"?"\u5185\u8054\u6837\u5F0F\u4E0D\u4FDD\u7559\uFF0C\u8BF7\u5199\u5728 CSS \u4E2D\u3002":R?.startsWith("on")?"\u811A\u672C\u4E8B\u4EF6\u4E0D\u5141\u8BB8\uFF0C\u8BF7\u4F7F\u7528\u52A8\u4F5C\u6309\u94AE\u3002":R==="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:m,to:m+B[0].length,severity:"warning",message:R?`\u5DF2\u79FB\u9664\u5C5E\u6027 ${R}\uFF1A${C}`:`\u5DF2\u79FB\u9664 <${M}>\uFF1A\u8FD9\u4E2A\u6807\u7B7E\u4E0D\u5728\u5141\u8BB8\u7684\u6392\u7248\u6807\u7B7E\u4E2D\u3002`})}}let P=qe(T.innerHTML);if(P.length)throw new Error(P[0]);if(T.querySelectorAll("*").length>500)throw new Error("HTML \u6700\u591A\u652F\u6301 500 \u4E2A\u5143\u7D20\u3002");for(let S of T.querySelectorAll("[data-grow-action]")){let f=S.getAttribute("data-grow-action");if(S.tagName!=="BUTTON"||!p.includes(f))throw new Error(`\u81EA\u5B9A\u4E49 HTML \u91CC\u7684\u6309\u94AE ${f.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(!T.textContent?.trim()&&!T.querySelector("img"))throw new Error("\u81EA\u5B9A\u4E49 HTML \u6E05\u6D17\u540E\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5185\u5BB9\u3002");return T.innerHTML}var Dt=2e3,Rt=1e4,_t=new WeakMap;function Pt(c,p,A){let I=A.document;if(!I)throw new Error("A content document is required");let h=_t.get(A)??new Map;_t.set(A,h);let z=(S,f)=>{let M=h.get(S);if(M!==void 0)return M;let R=f();h.set(S,R);let F=[...h.keys()].reduce((B,m)=>B+m.length,0);for(;h.size>64||F>256e3;){let B=h.keys().next().value;h.delete(B),F-=B.length}return R},T=S=>z(`html:${S}`,()=>{let f=I.createElement("div");return f.innerHTML=S,f.querySelectorAll("*").length}),P=S=>z(`css:${S}`,()=>{let f=0;return S.trim()&&Gt(Zt(S),()=>{f++}),f});for(let S of c.pages){let f=0,M=0,R=F=>{if(F.hidden||(F.type==="stack"&&F.children.forEach(R),F.type!=="custom_html"))return;let B=p?.nodes[F.id],m=[...Object.values(F.html),B?.base.html??"",...Object.values(B?.byPlan??{}).map(C=>C.html??"")];if(f+=Math.max(0,...m.map(T)),M+=P(F.css),f>Dt)throw new Error(`Page custom HTML exceeds ${Dt} elements`);if(M>Rt)throw new Error(`Page custom CSS exceeds ${Rt} syntax nodes`)};R(S.root)}}function Xt(c,p,A,I){let h=[],z="",T="";for(let P of["html","css"])try{P==="html"?z=He(c,A,I,h):T=Ze(p)}catch(S){let f=P==="html"?c:p,M=P==="html"?/\{\{|data-grow-action/:/@import\b|url\s*\(|image-set\s*\(|[\\<]/i,R=S instanceof Error?S.message:"\u5185\u5BB9\u65E0\u6CD5\u89E3\u6790",F=P==="html"?R.match(/未知变量:(.+)/)?.[1]:void 0,B=F?f.indexOf(F):-1,m=typeof S=="object"&&S!==null&&"offset"in S&&typeof S.offset=="number"?S.offset:B>=0?f.lastIndexOf("{{",B):f.search(M);h.push({language:P,from:Math.max(0,m),to:Math.min(f.length,Math.max(0,m)+2),severity:"error",message:R})}return{html:z,css:T,diagnostics:h,valid:!h.some(P=>P.severity==="error")}}function Ne(c,p,A){if(!c)return;let I={},h=p.actions.map(T=>T.id);for(let[T,P]of Object.entries(c.nodes)){let S=f=>{if(f.html===void 0)return f;if(ve(p,T)?.type!=="custom_html")throw new Error("HTML \u5546\u54C1\u6570\u636E\u53EA\u80FD\u7528\u4E8E\u81EA\u5B9A\u4E49 HTML \u7EC4\u4EF6");return{...f,html:He(f.html,h,A)}};I[T]={...P,base:S(P.base),...P.byPlan?{byPlan:Object.fromEntries(Object.entries(P.byPlan).map(([f,M])=>[f,S(M)]))}:{}}}let z={...c,nodes:I};return Pt(p,z,A),z}var Nt=new WeakMap;function Pe(c,p){let A=_e.parse(c),I=JSON.stringify(A),h=Nt.get(p);h||(h=new Map,Nt.set(p,h));let z=Date.now();for(let[m,C]of h)C.expires<=z&&h.delete(m);let T=h.get(I);if(T)return h.delete(I),h.set(I,T),_e.parse(JSON.parse(T.json));let P=A.actions.map(m=>m.id),S=m=>{if(m.type==="stack")return{...m,children:m.children.map(S)};if(m.type!=="custom_html")return m;let C={};for(let[D,U]of Object.entries(m.html))C[D]=He(U,P,p);return{...m,html:C,css:Ze(m.css)}},f={...A,pages:A.pages.map(m=>({...m,root:S(m.root)}))};Pt(f,void 0,p);let M=JSON.stringify(f),R=new TextEncoder,F=R.encode(M).length;if(F>Re.documentBytes)throw new Error(`\u754C\u9762\u5185\u5BB9\u8FC7\u5927\uFF08\u4E0A\u9650 ${Re.documentBytes/1e3} KB\uFF09\u3002`);let B=R.encode(I).length;if(B<=Re.documentBytes){h.set(I,{json:M,bytes:B+F,expires:z+6e4});let m=[...h.values()].reduce((C,D)=>C+D.bytes,0);for(;h.size>16||m>2*1024*1024;){let[C,D]=h.entries().next().value;h.delete(C),m-=D.bytes}}return f}function Ge(c){function p(e){return e.type==="stack"&&e.interaction?.type==="select"&&e.interaction.purpose==="product"&&!!e.interaction.pickerId}function A(e){let a={};function t(r){if(p(r)){let i=a[r.interaction.pickerId]??={ids:[],defaultId:null};for(let n of r.children){let l=n.type==="stack"?n.bind?.plan:void 0;l&&!i.ids.includes(l)&&i.ids.push(l)}let s=r.children[r.interaction.defaultIndex];!i.defaultId&&s?.type==="stack"&&(i.defaultId=s.bind?.plan??null)}r.type==="stack"&&r.children.forEach(t)}return e.pages.forEach(r=>t(r.root)),a}function I(e,a,t){let r={};function i(d){if(d.hidden||d.type!=="stack")return;let u=d.children.filter(o=>!o.hidden),w=d.interaction;if(p(d)){let o=r[d.interaction.pickerId]??={ids:[],defaults:[],remembered:[]},y=t.pickers[d.interaction.pickerId]?.options??[];for(let x of u){let $=x.type==="stack"?x.bind?.plan:void 0;$&&y.includes($)&&!o.ids.includes($)&&o.ids.push($),$&&x.id===a[d.id]&&o.remembered.push($)}let b=d.children[d.interaction.defaultIndex];b?.type==="stack"&&!b.hidden&&b.bind?.plan&&o.defaults.push(b.bind.plan)}if(w?.type==="tabs"){let o=u.find(y=>y.id===a[d.id])??d.children[w.defaultIndex];o&&i(o)}else if(w?.type==="toggle"){let o=typeof a[d.id]=="boolean"?a[d.id]:w.defaultEnabled,y=d.children[o?0:1];y&&i(y)}else u.forEach(i)}let s=typeof a.__page=="string"?a.__page:e.initialPageId??e.pages[0]?.id,n=e.pages.find(d=>d.id===s);n&&i(n.root);let l={};for(let[d,u]of Object.entries(r)){let w=a[d],o=u.remembered[0]??(u.ids.includes(t.pickers[d]?.selected??"")?t.pickers[d]?.selected:u.defaults[0]);l[d]=typeof w=="string"?u.ids.includes(w)?w:"":o&&u.ids.includes(o)?o:""}for(let d of Object.keys(A(e)))l[d]??="";return l}let h=window;for(let e=0;e<c.hostDepth;e++)h=h.parent;let z=window,T={none:0,xs:4,sm:8,md:12,lg:20,xl:32},P={none:0,sm:4,md:8,lg:14,full:9999},S={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"},f={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch"},M={start:"flex-start",center:"center",end:"flex-end",between:"space-between"},R={start:"start",center:"center",end:"end",between:"stretch"},F={start:"start",center:"center",end:"end",stretch:"stretch"},B={"1:1":"1 / 1","4:3":"4 / 3","16:9":"16 / 9","3:1":"3 / 1"},m=`
|
|
1
|
+
import{a as Y}from"./chunk-6X42DWOM.js";import{a as Dt}from"./chunk-5TEZEOHX.js";import{Ca as je,Da as Ze,Db as Ue,Eb as We,Fa as Fe,Gb as we,Hb as Qe,Ib as Be,Ja as Le,Nb as et,Qb as tt,Rb as rt,Ub as at,sb as Xe,vb as Ce,xa as Ye}from"./chunk-RMJJOSVZ.js";import"./chunk-S2MSIA57.js";function Rt(d){let c=new Intl.Locale(d);if(c.language==="zh")return c.maximize().script==="Hant"?"\u95DC\u9589\u5F48\u7A97":"\u5173\u95ED\u5F39\u7A97";let S={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 S[c.language]??S.en}import Xt from"dompurify";import Nt from"css-tree/parser";import Zt from"css-tree/generator";import _t from"css-tree/walker";function Pt(d){let c=0;return d.trim()&&_t(Nt(d),()=>{c++}),c}function Ct(d){if(!d.trim())return"";if(/[\\<]/.test(d))throw new Error("CSS \u6682\u4E0D\u652F\u6301\u53CD\u659C\u6760\u8F6C\u4E49\u6216 HTML \u6807\u7B7E\u3002");let c=Nt(d,{onParseError:I=>{throw Object.assign(new Error("CSS \u683C\u5F0F\u4E0D\u6B63\u786E\u3002"),{offset:I.offset})}}),S=0;return _t(c,I=>{if(++S>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")}),Zt(c)}function Qt(d,c,S,I){return{html:Ht(d,S,I),css:it(c)}}function it(d){return Ct(d)}function Ht(d,c,S,I){return st(d,c,S,I).html}function st(d,c,S,I){if(!d.trim())return{html:"",elements:0};let A=Fe(d);if(A.length)throw new Error(A[0]);let E=Xt(S),D=E.sanitize(d,{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(!(D instanceof S.Element))throw new Error("\u65E0\u6CD5\u89E3\u6790 HTML\u3002");if(I){let M=new Set;for(let m of E.removed){let P="element"in m?m.element.nodeName.toLowerCase():void 0,T="attribute"in m?m.attribute?.name:void 0;if(!P&&!T)continue;let F=T?/<[^>]+>/g:new RegExp(`<\\s*${P}\\b[^>]*>`,"gi"),b=[...d.matchAll(F)].find(U=>!M.has(`${T??P}:${U.index}`)&&(!T||new RegExp(`\\b${T}\\s*=`,"i").test(U[0])));if(!b)continue;let $=b.index;M.add(`${T??P}:${$}`);let R=T==="style"?"\u5185\u8054\u6837\u5F0F\u4E0D\u4FDD\u7559\uFF0C\u8BF7\u5199\u5728 CSS \u4E2D\u3002":T?.startsWith("on")?"\u811A\u672C\u4E8B\u4EF6\u4E0D\u5141\u8BB8\uFF0C\u8BF7\u4F7F\u7528\u52A8\u4F5C\u6309\u94AE\u3002":T==="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:$,to:$+b[0].length,severity:"warning",message:T?`\u5DF2\u79FB\u9664\u5C5E\u6027 ${T}\uFF1A${R}`:`\u5DF2\u79FB\u9664 <${P}>\uFF1A\u8FD9\u4E2A\u6807\u7B7E\u4E0D\u5728\u5141\u8BB8\u7684\u6392\u7248\u6807\u7B7E\u4E2D\u3002`})}}let j=Fe(D.innerHTML);if(j.length)throw new Error(j[0]);let L=D.querySelectorAll("*").length;if(L>500)throw new Error("HTML \u6700\u591A\u652F\u6301 500 \u4E2A\u5143\u7D20\u3002");for(let M of D.querySelectorAll("[data-grow-action]")){let m=M.getAttribute("data-grow-action");if(M.tagName!=="BUTTON"||!c.includes(m))throw new Error(`\u81EA\u5B9A\u4E49 HTML \u91CC\u7684\u6309\u94AE ${m.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(!D.textContent?.trim()&&!D.querySelector("img"))throw new Error("\u81EA\u5B9A\u4E49 HTML \u6E05\u6D17\u540E\u6CA1\u6709\u53EF\u663E\u793A\u7684\u5185\u5BB9\u3002");return{html:D.innerHTML,elements:L}}var Mt=2e3,Tt=1e4,$t=new WeakMap;function Ot(d,c,S,I){let A=S.document;if(!A)throw new Error("A content document is required");let E=$t.get(S)??new Map;$t.set(S,E);let D=(M,m)=>{let P=E.get(M);if(P!==void 0)return P;let T=m();E.set(M,T);let F=[...E.keys()].reduce((b,$)=>b+$.length,0);for(;E.size>64||F>256e3;){let b=E.keys().next().value;E.delete(b),F-=b.length}return T},j=M=>{let m=I?.get(M);return m!==void 0&&c?m:D(`html:${M}`,()=>{if(m!==void 0)return m;let P=A.createElement("div");return P.innerHTML=M,P.querySelectorAll("*").length})},L=M=>D(`css:${M}`,()=>Pt(M));for(let M of d.pages){let m=0,P=0,T=F=>{if(F.hidden||(F.type==="stack"&&F.children.forEach(T),F.type!=="custom_html"))return;let b=c?.nodes[F.id],$=[...Object.values(F.html),b?.base.html??"",...Object.values(b?.byPlan??{}).map(R=>R.html??"")];if(m+=Math.max(0,...$.map(j)),P+=L(F.css),m>Mt)throw new Error(`Page custom HTML exceeds ${Mt} elements`);if(P>Tt)throw new Error(`Page custom CSS exceeds ${Tt} syntax nodes`)};T(M.root)}}function er(d,c,S,I){let A=[],E="",D="";for(let j of["html","css"])try{j==="html"?E=Ht(d,S,I,A):D=it(c)}catch(L){let M=j==="html"?d:c,m=j==="html"?/\{\{|data-grow-action/:/@import\b|url\s*\(|image-set\s*\(|[\\<]/i,P=L instanceof Error?L.message:"\u5185\u5BB9\u65E0\u6CD5\u89E3\u6790",T=j==="html"?P.match(/未知变量:(.+)/)?.[1]:void 0,F=T?M.indexOf(T):-1,b=typeof L=="object"&&L!==null&&"offset"in L&&typeof L.offset=="number"?L.offset:F>=0?M.lastIndexOf("{{",F):M.search(m);A.push({language:j,from:Math.max(0,b),to:Math.min(M.length,Math.max(0,b)+2),severity:"error",message:P})}return{html:E,css:D,diagnostics:A,valid:!A.some(j=>j.severity==="error")}}var nt=new WeakMap;function tr(d,c,S){let I=nt.get(c);I||nt.set(c,I=new WeakMap);let A=JSON.stringify(S),E=I.get(d);return(!E||E.actions!==A)&&(E={actions:A,entries:new Map,characters:0},I.set(d,E)),E}function ot(d){let c={};return{prepare:(S,I)=>rr(S,I,d,c),destroy:()=>nt.get(d)?.delete(c)}}function rr(d,c,S,I=c){if(!d)return;let A={},E=c.actions.map(m=>m.id),D=tr(I,S,E),j=new Map,L=Date.now();for(let[m,P]of D.entries)P.expires>L||(D.entries.delete(m),D.characters-=m.length+P.html.length);for(let[m,P]of Object.entries(d.nodes)){let T,F=b=>{if(b.html===void 0)return b;if(T??=we(c,m)?.type==="custom_html",!T)throw new Error("HTML \u5546\u54C1\u6570\u636E\u53EA\u80FD\u7528\u4E8E\u81EA\u5B9A\u4E49 HTML \u7EC4\u4EF6");let $=D.entries.get(b.html);if($)D.entries.delete(b.html),D.entries.set(b.html,$);else{let{html:R,elements:U}=st(b.html,E,S);$={html:R,elements:U,expires:L+6e4};let C=b.html.length+R.length;if(C<=1e6)for(D.entries.set(b.html,$),D.characters+=C;D.entries.size>128||D.characters>1e6;){let[N,J]=D.entries.entries().next().value;D.entries.delete(N),D.characters-=N.length+J.html.length}}return j.set($.html,$.elements),{...b,html:$.html}};A[m]={...P,base:F(P.base),...P.byPlan?{byPlan:Object.fromEntries(Object.entries(P.byPlan).map(([b,$])=>[b,F($)]))}:{}}}let M={...d,nodes:A};return Ot(c,M,S,j),M}var zt=new WeakMap;function Me(d,c){let S=Ce.parse(d),I=JSON.stringify(S),A=zt.get(c);A||(A=new Map,zt.set(c,A));let E=Date.now();for(let[C,N]of A)N.expires<=E&&A.delete(C);let D=A.get(I);if(D)return A.delete(I),A.set(I,D),JSON.parse(D.json);let j=S.actions.map(C=>C.id),L=new Map,M=new Map,m=new Map,P=C=>{let N=L.get(C);if(N===void 0){let J=st(C,j,c);N=J.html,M.set(N,J.elements),L.set(C,N)}return N},T=C=>{if(C.type==="stack")return{...C,children:C.children.map(T)};if(C.type!=="custom_html")return C;let N={};for(let[ne,ce]of Object.entries(C.html))N[ne]=P(ce);let J=m.get(C.css);return J===void 0&&(J=it(C.css),m.set(C.css,J)),{...C,html:N,css:J}},F={...S,pages:S.pages.map(C=>({...C,root:T(C.root)}))};Ot(F,void 0,c,M);let b=JSON.stringify(F),$=new TextEncoder,R=$.encode(b).length;if(R>Le.documentBytes)throw new Error(`\u754C\u9762\u5185\u5BB9\u8FC7\u5927\uFF08\u4E0A\u9650 ${Le.documentBytes/1e3} KB\uFF09\u3002`);let U=$.encode(I).length;if(U<=Le.documentBytes){A.set(I,{json:b,bytes:U+R,expires:E+6e4});let C=[...A.values()].reduce((N,J)=>N+J.bytes,0);for(;A.size>16||C>2*1024*1024;){let[N,J]=A.entries().next().value;A.delete(N),C-=J.bytes}}return F}function dt(d){function c(e){return e.type==="stack"&&e.interaction?.type==="select"&&e.interaction.purpose==="product"&&!!e.interaction.pickerId}function S(e){let r={};function t(a){if(c(a)){let i=r[a.interaction.pickerId]??={ids:[],defaultId:null};for(let n of a.children){let p=n.type==="stack"?n.bind?.plan:void 0;p&&!i.ids.includes(p)&&i.ids.push(p)}let s=a.children[a.interaction.defaultIndex];!i.defaultId&&s?.type==="stack"&&(i.defaultId=s.bind?.plan??null)}a.type==="stack"&&a.children.forEach(t)}return e.pages.forEach(a=>t(a.root)),r}function I(e,r,t){let a={};function i(l){if(l.hidden||l.type!=="stack")return;let u=l.children.filter(o=>!o.hidden),h=l.interaction;if(c(l)){let o=a[l.interaction.pickerId]??={ids:[],defaults:[],remembered:[]},f=t.pickers[l.interaction.pickerId]?.options??[];for(let x of u){let O=x.type==="stack"?x.bind?.plan:void 0;O&&f.includes(O)&&!o.ids.includes(O)&&o.ids.push(O),O&&x.id===r[l.id]&&o.remembered.push(O)}let y=l.children[l.interaction.defaultIndex];y?.type==="stack"&&!y.hidden&&y.bind?.plan&&o.defaults.push(y.bind.plan)}if(h?.type==="tabs"){let o=u.find(f=>f.id===r[l.id])??l.children[h.defaultIndex];o&&i(o)}else if(h?.type==="toggle"){let o=typeof r[l.id]=="boolean"?r[l.id]:h.defaultEnabled,f=l.children[o?0:1];f&&i(f)}else u.forEach(i)}let s=typeof r.__page=="string"?r.__page:e.initialPageId??e.pages[0]?.id,n=e.pages.find(l=>l.id===s);n&&i(n.root);let p={};for(let[l,u]of Object.entries(a)){let h=r[l],o=u.remembered[0]??(u.ids.includes(t.pickers[l]?.selected??"")?t.pickers[l]?.selected:u.defaults[0]);p[l]=typeof h=="string"?u.ids.includes(h)?h:"":o&&u.ids.includes(o)?o:""}for(let l of Object.keys(S(e)))p[l]??="";return p}let A=window;for(let e=0;e<d.hostDepth;e++)A=A.parent;let E=window,D={none:0,xs:4,sm:8,md:12,lg:20,xl:32},j={none:0,sm:4,md:8,lg:14,full:9999},L={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"},M={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch"},m={start:"flex-start",center:"center",end:"flex-end",between:"space-between"},P={start:"start",center:"center",end:"end",between:"stretch"},T={start:"start",center:"center",end:"end",stretch:"stretch"},F={"1:1":"1 / 1","4:3":"4 / 3","16:9":"16 / 9","3:1":"3 / 1"},b=`
|
|
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}
|
|
@@ -168,7 +168,7 @@ body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antial
|
|
|
168
168
|
@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}}
|
|
169
169
|
@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}}
|
|
170
170
|
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
171
|
-
`;function C(){return Object.create(null)}let D=null,U,de=new Set,H,se,ne=new Map,pe=new Map,Z,O={},G=null,E=C(),fe=C(),ue=C(),_="",v=!1,k=-1,ae=!1,he="",X=null,Ae=null,ke=null,J=document.createElement("div");J.id="g-card";let ge=document.createElement("div"),ce=document.createElement("div");ge.className=ce.className="g-box",ce.dataset.kind="select",ge.append(document.createElement("span")),ce.append(document.createElement("span"));function Y(e){let a={...e,channel:c.channel};try{h.postMessage(a,c.parentOrigin)}catch{}}function Oe(e){let a=parseInt(e.slice(1),16);return[a>>16&255,a>>8&255,a&255]}function Me(e,a,t){let r=Oe(e),i=Oe(a),s=r.map((n,l)=>Math.round(n*t+i[l]*(1-t)));return`rgb(${s[0]},${s[1]},${s[2]})`}function Ct(e){let[a,t,r]=Oe(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*r}function Ie(e){return typeof e!="string"?"":e.startsWith("#")?e:`var(--g-${e==="background"?"bg":e})`}function $t(e){let a=e.theme,t=document.documentElement.style,r=Ct(a.primary),i=(r+.05)/.05>1.05/(r+.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",Me(a.text,a.background,.62)),t.setProperty("--g-surface",Me(a.text,a.background,.05)),t.setProperty("--g-border",Me(a.text,a.background,.16)),t.setProperty("--g-focus",Me(a.primary,a.background,.45)),t.setProperty("--g-radius",`${P[a.radius]??8}px`),t.setProperty("--g-font",S[a.font]??S.system),t.setProperty("--g-edit","#2C3C96")}function V(e){let a=D?.strings.locales[_]?.[e];return a&&a.trim()?{value:a,missing:!1}:{value:D?.strings.locales[D.strings.defaultLocale]?.[e]??"",missing:!0}}function ye(e){let a=H?.nodes[e];if(!a)return;let t=a.picker?E[a.picker]??H?.pickers[a.picker]?.selected:void 0;if(!(a.picker&&t===""))return typeof t=="string"?a.byPlan?.[t]??a.base:a.base}function et(){return{...D?.surface==="paywall"&&G?{__page:G}:{},...Object.fromEntries(Object.entries(E).filter(e=>!Array.isArray(e[1])))}}function Le(e,a,t){let r=ye(e.id),i=r?.[a],s=i!==void 0?{value:i,missing:!!r?.missing?.length}:V(t);if(c.mode==="live"&&U){let n=!1,l=s.value.replace(/\{\{\s*(input|params)\.([a-zA-Z][a-zA-Z0-9_.-]{0,63})\s*\}\}/g,(d,u,w)=>{let o=u==="params"?O[w]:U?.answers[w];return o==null||o===""||Array.isArray(o)&&!o.length?(n=!0,""):Array.isArray(o)?o.join(", "):String(o)});if(n)return{value:e.fallback?V(e.fallback).value:"",missing:!0};if(!l.includes("{{"))return{value:l,missing:s.missing}}return i!==void 0?s:s.value.includes("{{")&&c.mode==="live"?{value:e.fallback?V(e.fallback).value:"",missing:!0}:{value:s.value,missing:s.missing||s.value.includes("{{")}}function zt(e){if(e.name)return e.name;let a=c.editorMessages?.nodeTypes?.[e.type];return c.mode==="editor"&&typeof a=="string"?a:{stack:"\u5BB9\u5668",text:"\u6587\u672C",image:"\u56FE\u7247",button:"\u6309\u94AE",divider:"\u5206\u9694\u7EBF",spacer:"\u7559\u767D",custom_html:"\u81EA\u5B9A\u4E49 HTML",price:"\u4EF7\u683C",coupon_code:"\u4F18\u60E0\u7801",countdown:"\u5012\u8BA1\u65F6",plan_picker:"\u771F\u5B9E\u5957\u9910\u9009\u62E9"}[e.type]??e.type}function Ht(e,a){if(a.type==="color")e.background="none",e.backgroundColor=Ie(a.color);else if(a.type==="linear"){let t=a.stops.map(r=>`${Ie(r.color)} ${Number(r.at)}%`).join(",");e.backgroundColor="transparent",e.backgroundImage=`linear-gradient(${Number(a.angle)}deg,${t})`}else if(a.type==="image"&&typeof a.src=="string"){let t=/^data:image\/(?:svg\+xml|jpeg|png);base64,[A-Za-z0-9+/]+={0,2}$/.test(a.src)?a.src:a.src.replace(/[^A-Za-z0-9\-._~:/?#[\]@!$&*+;=%]/gu,i=>i.length===1&&i.charCodeAt(0)<128?`%${i.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`:encodeURIComponent(i));e.backgroundImage=`url("${t}")`;let r=a.position;e.backgroundPosition=r?`${r.x}% ${r.y}%`:"center",e.backgroundSize=a.fit==="contain"?"contain":"cover",e.backgroundRepeat="no-repeat"}}function tt(e){return`${Number(e.top)}px ${Number(e.right)}px ${Number(e.bottom)}px ${Number(e.left)}px`}function at(e,a,t,r,i){if(a===void 0)return;let s=r?.direction??"vertical",n=s!=="overlay"&&t==="width"==(s==="horizontal"),l=t==="width"?"minWidth":"minHeight";a==="fill"?s==="overlay"?(e.style[t]="100%",e.style[t==="width"?"justifySelf":"alignSelf"]="stretch"):n?(e.style.flex="1 1 0",e.style[l]="0"):(e.style.alignSelf="stretch",e.style[t]="auto"):a==="fit"?(e.style[t]="fit-content",t==="width"&&(e.style.maxWidth="100%"),!n&&s!=="overlay"&&(!r||r.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%"),n&&(e.style.flex="0 0 auto"))}function De(e,a,t){let r=a.style,i=r.text??{},s=e.style;if(a.type==="customer_data"&&(i.font&&s.setProperty("--g-data-display-font",S[String(i.font)]??S.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",S[String(i.font)]??S.system),typeof i.weight=="number"&&s.setProperty("--g-data-number-weight",String(i.weight))),a.type==="customer_data"&&i.color){let u=Ie(i.color);s.setProperty("--g-data-ink",u),s.setProperty("--g-data-muted",`color-mix(in srgb, ${u} 72%, transparent)`),s.setProperty("--g-data-line",`color-mix(in srgb, ${u} 20%, transparent)`),s.setProperty("--g-data-surface",`color-mix(in srgb, ${u} 8%, transparent)`)}r.padding&&(s.padding=tt(r.padding)),r.margin&&(s.margin=tt(r.margin)),typeof r.gap=="number"&&a.type==="stack"&&(s.gap=`${r.gap}px`),r.background&&Ht(s,r.background),typeof r.opacity=="number"&&(s.opacity=String(r.opacity));let n=r.shape;if(n?.type==="pill")s.borderRadius="9999px";else if(n?.type==="rect"){let u=n.radius;s.borderRadius=typeof u=="number"?`${u}px`:`${Number(u.topLeft)}px ${Number(u.topRight)}px ${Number(u.bottomRight)}px ${Number(u.bottomLeft)}px`}(r.clipContent===!0||r.clipContent!==!1&&n&&(r.background||a.type==="image"))&&(s.overflow="hidden");let l=r.border;l&&(s.border=Number(l.width)>0?`${Number(l.width)}px ${l.style==="dashed"?"dashed":"solid"} ${Ie(l.color)}`:"0");let d=r.shadow;d&&(s.boxShadow=`${Number(d.x)}px ${Number(d.y)}px ${Number(d.blur)}px ${Number(d.spread)}px ${Ie(d.color)}`),["text","button","price","coupon_code","countdown","plan_picker"].includes(a.type)&&(i.font&&(s.fontFamily=S[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=Ie(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))),at(e,r.width,"width",t,i.align),at(e,r.height,"height",t,i.align),t?.direction==="horizontal"&&r.grow!==void 0&&(s.flexGrow=String(r.grow===!0?1:r.grow===!1?0:r.grow))}function Te(e,a){if(U){let t=U.bindings.find(r=>r.componentId===e);if(!t)return;U.answers[t.key]=a,de.add(e),Y({type:"answers",answers:rt()});return}}function rt(){let e={};for(let a of U?.bindings??[]){let t=E[a.componentId];t!==void 0&&(e[a.key]=t)}return e}function Ot(e){let a=document.createElement("section");a.className="g-data",a.dataset.layout=e.data.layout,a.dataset.source=e.data.source;let t=se?.nodes[e.id];a.dataset.status=t?.status??"idle",a.dataset.preview=String(!!t?.preview);let r=t?.status==="loading",i=_.startsWith("zh"),s=(g,L)=>i?g:L;a.setAttribute("aria-busy",String(!!r));let n=(g,L,Q)=>{let N=document.createElement(g);return N.className=L,Q!==void 0&&(N.textContent=Q),N},l=g=>{let L=document.createElementNS("http://www.w3.org/2000/svg","svg");L.setAttribute("viewBox","0 0 24 24"),L.setAttribute("fill","none"),L.setAttribute("stroke","currentColor"),L.setAttribute("stroke-width","1.7"),L.setAttribute("stroke-linecap","round"),L.setAttribute("stroke-linejoin","round"),L.setAttribute("aria-hidden","true"),L.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 N of Q[g]){let q=document.createElementNS("http://www.w3.org/2000/svg","path");q.setAttribute("d",N),L.append(q)}return L},d=(g,L,Q,N=!1,q=L)=>{let re=n("button","g-data-button",g);return re.type="button",re.disabled=N||!!r&&L!=="refresh"||!!t?.preview||c.mode!=="live",r&&L==="refresh"&&re.setAttribute("aria-disabled","true"),re.dataset.gDataFocus=`${e.id}:${q}:${Q??""}`,re.addEventListener("click",le=>{!le.isTrusted||re.disabled||r||Y({type:"customer-data-intent",intent:{nodeId:e.id,action:L,...Q?{value:Q}:{}}})}),re},u=n("div","g-data-header"),w=n("h2","g-data-heading",V(e.title).value);w.id=`g-data-title-${e.id}`,a.setAttribute("aria-labelledby",w.id);let o=n("div","g-data-controls"),y=[],b=g=>{g.hidden||(g.type==="customer_data"&&y.push(g),g.type==="stack"&&g.children.forEach(b))},x=D?.pages[0];x&&b(x.root);let $=y.every(g=>se?.nodes[g.id]?.preview),W=y.find(g=>g.data.source==="credit_balance")??y[0];t?.preview&&(!$||W?.id===e.id)&&o.append(n("span","g-data-preview",s("\u793A\u4F8B\u6570\u636E","Sample data")));let j=r?s("\u66F4\u65B0\u4E2D\u2026","Updating\u2026"):s("\u5237\u65B0","Refresh"),te=d(j,"refresh");if(te.replaceChildren(l("refresh")),te.setAttribute("aria-label",j),te.title=j,te.classList.add("g-data-refresh"),r&&te.classList.add("g-data-refreshing"),o.append(te),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"&&(w.prepend(l("credit")),t?.resources.length===1&&w.append(n("span","g-data-resource-label",t.resources[0].name)),t?.updatedAt)){let g=n("time","g-data-updated",`${s("\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(_,{timeStyle:"short"}).format(new Date(t.updatedAt))}`);g.dateTime=t.updatedAt,g.title=new Intl.DateTimeFormat(_,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt)),o.prepend(g)}if(u.append(w,o),a.append(u),!t||t.source!==e.data.source)return a.append(n("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 g=n("div","g-data-error",t.errorMessage);g.setAttribute("role","alert"),a.append(g);let L=n("div","g-data-recovery");L.append(d(s("\u91CD\u8BD5","Retry"),"refresh")),a.append(L)}if(t.membershipResult){let g=n("p","g-data-note",t.membershipResult);g.setAttribute("role","status"),a.append(g)}if(t.membershipReview){let g=t.membershipReview,L=n("section","g-data-resource");L.dataset.gDataReview="",L.setAttribute("aria-label",g.title),L.setAttribute("aria-busy",String(!!t.membershipBusy));let Q=n("h3","g-data-row-label",g.title);Q.tabIndex=-1,L.append(Q);let N=n("dl","g-data-facts");for(let re of g.facts){let le=n("div","");le.append(n("dt","",re.label),n("dd","",re.value)),N.append(le)}L.append(N,n("p","g-data-note",g.note));let q=n("div","g-data-controls");q.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)),L.append(q),a.append(L)}if(t.stale&&(t.resources.length||t.rows.length)&&a.append(n("p",r?"g-data-live-status":"g-data-note",r?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."))),r&&!t.resources.length&&!t.rows.length){let g=n("div","g-data-skeleton");if(g.setAttribute("aria-hidden","true"),e.data.source==="credit_balance")g.append(n("span","g-data-skeleton-line g-data-skeleton-value"),n("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 N=0;N<Q;N++){let q=n("div","g-data-skeleton-row");q.append(n("span","g-data-skeleton-line"),n("span","g-data-skeleton-line")),g.append(q)}}let L=n("p","g-data-live-status",s("\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u6570\u636E\u2026","Loading account data\u2026"));return L.setAttribute("role","status"),a.append(g,L),a}let ie={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","\u672A\u4F7F\u7528","Unused"],["reserved","\u4ED8\u6B3E\u5904\u7406\u4E2D","Payment pending"],["redeemed","\u5DF2\u4F7F\u7528","Redeemed"],["expired","\u5DF2\u5230\u671F","Expired"],["revoked","\u5DF2\u4F5C\u5E9F","Revoked"]]};if(ie[e.data.source]){let g=n("select","g-data-select");g.setAttribute("aria-label",s("\u7B5B\u9009\u8BB0\u5F55","Filter records")),g.dataset.gDataFocus=`${e.id}:filter`,g.disabled=!!r||t.preview||c.mode!=="live";for(let[L,Q,N]of ie[e.data.source]){let q=document.createElement("option");q.value=L,q.textContent=s(Q,N),g.append(q)}g.value=t.filter,g.addEventListener("change",()=>{!g.disabled&&c.mode==="live"&&Y({type:"customer-data-intent",intent:{nodeId:e.id,action:"filter",value:g.value}})}),o.prepend(g)}let ft=(g,L=!1)=>{let Q=n("ul","g-data-list");if(e.data.source==="credit_transactions"&&g.length&&!L){let N=n("div","g-data-table-head");N.setAttribute("aria-hidden","true"),N.append(n("span","",s("\u8BB0\u5F55","Record")),n("span","",s("\u7C7B\u578B","Type")),n("span","",s("\u79EF\u5206","Credits"))),a.append(N)}for(let N of g){let q=n("li","g-data-row"),re=n("div","g-data-row-main"),le=n("div","g-data-row-copy");le.append(n("p","g-data-row-label",N.label));for(let ee of N.detail)ee!==N.status&&le.append(n("div","g-data-row-detail",ee));if(e.data.source==="credit_transactions"&&!L){let ee=n("span","g-data-row-mark");ee.append(l(["Refund","\u9000\u56DE"].includes(N.status??"")?"up":"down")),re.append(ee)}if(re.append(le),q.append(re),N.status?q.append(n("div","g-data-row-status",N.status)):q.classList.add("g-data-row-no-status"),N.value?q.append(n("div","g-data-row-value",N.value)):q.classList.add("g-data-row-no-value"),N.facts.length||N.purchaseId||N.membershipActions?.length||N.billingActions?.length){let ee=n("div","g-data-row-extra"),me=n("div","g-data-facts"),xe=(oe,ze)=>{for(let mt of oe){let ht=n("span","",mt.label);ht.append(n("strong","",mt.value)),ze.append(ht)}};if(xe(N.facts.slice(0,3),me),N.facts.length>3){let oe=n("details","g-data-sources");oe.dataset.gDataSources=`facts:${N.id}`,oe.append(n("summary","",`${e.data.source==="billing"?s("\u8D26\u5355\u8BE6\u60C5","Invoice details"):e.data.source==="offer_history"?s("\u4F18\u60E0\u5238\u660E\u7EC6","Coupon details"):s("\u5168\u90E8\u6263\u8D39\u660E\u7EC6","All allocations")} \xB7 ${N.facts.length}`));let ze=n("div","g-data-facts");xe(N.facts.slice(3),ze),oe.append(ze),me.append(oe)}if(ee.append(me),!L)for(let oe of N.billingActions??[])ee.append(d(oe.label,oe.action,N.id,!!t.billingBusy));if(N.purchaseId&&e.data.allowPurchase&&!L){let oe=d(t.buyingId===N.purchaseId?s("\u6B63\u5728\u51C6\u5907\u2026","Preparing\u2026"):s("\u8D2D\u4E70\u79EF\u5206","Buy credits"),"buy_pack",N.purchaseId,!!t.preview||!!t.buyingId);oe.classList.add("g-data-buy"),ee.append(oe)}if(e.data.allowPurchase&&!L)for(let oe of N.membershipActions??[])ee.append(d(oe.label,"membership_preview",oe.value,!!t.preview||!!t.membershipBusy||!!t.membershipReview));q.append(ee)}Q.append(q)}return Q};for(let g of t.resources){let L=n("article","g-data-resource");L.setAttribute("aria-label",g.name),t.resources.length>1&&L.append(n("p","g-data-name",g.name));let Q=n("div","g-data-balance"),N=new Intl.NumberFormat(_).formatToParts(1.1).find(ee=>ee.type==="decimal")?.value??".",q=g.spendable.lastIndexOf(N),re=n("strong","g-data-number",q<0?g.spendable:g.spendable.slice(0,q));q>=0&&re.append(n("span","g-data-fraction",g.spendable.slice(q))),Q.append(re,n("span","g-data-unit",s("\u53EF\u7528\u79EF\u5206","Spendable credits"))),L.append(Q);let le=n("div","g-data-facts");for(let[ee,me]of[[s("\u4F59\u989D","Balance"),g.available],[s("\u51BB\u7ED3","Reserved"),g.reserved]]){let xe=n("span","",ee);xe.append(n("strong","",me)),le.append(xe)}if(g.expiry&&le.append(n("span","g-data-expiry",`${s("\u6700\u8FD1\u5230\u671F","Next expiry")} \xB7 ${g.expiry}`)),L.append(le),e.data.showSources&&g.sourceCount){let ee=n("details","g-data-sources");if(ee.dataset.gDataSources=g.key,ee.append(n("summary","",`${s("\u79EF\u5206\u6765\u6E90","Credit sources")} \xB7 ${g.sourceCount}`),ft(g.sources,!0)),ee.querySelector("summary")?.append(l("chevron")),g.hasNextSources||g.hasPreviousSources){let me=n("div","g-data-footer");me.append(n("span","",`${s("\u7B2C","Page")} ${g.sourcePage}`));let xe=n("div","g-data-controls");xe.append(d(s("\u4E0A\u4E00\u9875","Previous"),"sources_previous",g.key,!g.hasPreviousSources),d(s("\u4E0B\u4E00\u9875","Next"),"sources_next",g.key,!g.hasNextSources)),me.append(xe),ee.append(me)}L.append(ee)}a.append(L)}if(t.rows.length&&a.append(ft(t.rows)),e.data.source==="billing_controls"&&(e.data.outputs?.billing_authorization||e.data.outputs?.billing_adjustment)){let g=n("div","g-data-controls");e.data.outputs?.billing_authorization&&g.append(d(s("\u8BBE\u7F6E\u81EA\u52A8\u4ED8\u6B3E\u6388\u6743","Set up payment authorization"),"billing_authorization")),e.data.outputs?.billing_adjustment&&g.append(d(s("\u67E5\u770B\u5F85\u786E\u8BA4\u8865\u6B3E","Review pending adjustment"),"billing_adjustment")),a.append(g)}if(!t.rows.length&&!t.resources.length&&t.status!=="error"){let g=n("p","g-data-empty",r?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."));g.prepend(l("empty")),g.setAttribute("role","status"),a.append(g)}if(t.hasNext||t.hasPrevious){let g=n("div","g-data-footer");g.append(n("span","",`${s("\u7B2C","Page")} ${t.page}`));let L=n("div","g-data-controls");L.append(d(s("\u4E0A\u4E00\u9875","Previous"),"previous",void 0,!t.hasPrevious),d(s("\u4E0B\u4E00\u9875","Next"),"next",void 0,!t.hasNext)),g.append(L),a.append(g)}return t.updatedAt&&e.data.source!=="credit_balance"&&a.append(n("p","g-data-note g-data-updated",`${s("\u6570\u636E\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(_,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt))}`)),a}let Se=new Map,je=new Map,nt=e=>{let a=e.target;for(let t of Se.keys())a&&!Ee(t)?.contains(a)&&Se.delete(t)};document.addEventListener("focusin",nt),document.addEventListener("pointerdown",nt);function jt(e){let a=se;if(se=e,!D)return;let t=(i,s)=>{if(i.type==="stack"){i.children.forEach(x=>t(x,i));return}if(i.type!=="customer_data"||JSON.stringify(a?.nodes[i.id])===JSON.stringify(e.nodes[i.id]))return;let n=Ee(i.id);if(!n)return;let l=document.activeElement;l&&n.contains(l)&&l.dataset.gDataFocus&&Se.set(i.id,l.dataset.gDataFocus);let d=new Set([...n.querySelectorAll("details[data-g-data-sources]")].filter(x=>x.open).map(x=>x.dataset.gDataSources)),u=Ce(i,s);if(!u)return;for(let x of u.querySelectorAll("details[data-g-data-sources]"))x.open=d.has(x.dataset.gDataSources);let w=n.scrollTop;n.replaceWith(u),u.scrollTop=w;let o=!!e.nodes[i.id]?.membershipReview&&!a?.nodes[i.id]?.membershipReview,y=!e.nodes[i.id]?.membershipReview&&!!a?.nodes[i.id]?.membershipReview;o&&Se.get(i.id)&&je.set(i.id,Se.get(i.id));let b=y?je.get(i.id):Se.get(i.id);b&&[...u.querySelectorAll("[data-g-data-focus]")].find(x=>x.dataset.gDataFocus===b)?.focus({preventScroll:!0}),o&&u.querySelector("[data-g-data-review] h3")?.focus({preventScroll:!0}),y&&je.delete(i.id),u.animate&&e.nodes[i.id]?.status==="ready"&&!window.matchMedia("(prefers-reduced-motion:reduce)").matches&&u.animate([{opacity:.7},{opacity:1}],{duration:140,easing:"ease-out"})},r=D.pages.find(i=>i.id===G)??D.pages[0];t(r.root,null),we()}function Ce(e,a){if(e.hidden)return null;let t;if(e.type==="customer_data")t=Ot(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=F[e.align]??"stretch",t.style.justifyItems=R[e.justify]??"stretch"):(t.style.alignItems=f[e.align]??"stretch",t.style.justifyContent=M[e.justify]??"flex-start");for(let r of e.children){let i=Ce(r,e);i&&t.append(i)}if(e.interaction&&Ft(t,e),e.purchaseAction&&c.mode==="live"){let r=H?.nodes[e.id],i=r?.picker;i&&(t.disabled=!H?.pickers[i]?.options.includes(String(E[i]??""))),ye(e.id)?.unavailable&&(t.disabled=!0)}c.mode==="editor"&&!t.childElementCount&&(t.classList.add("g-empty"),t.dataset.gEditorPlaceholder=c.editorMessages?.emptyContainer??"\u62D6\u5165\u7EC4\u4EF6")}else if(e.type==="text"){let r=e.variant==="title"?"h1":e.variant==="heading"?"h2":"p";t=document.createElement(r),t.className=`g-text g-${e.variant}`;let i=Le(e,"text",e.text);t.textContent=i.value,i.missing&&c.mode==="editor"&&t.classList.add("g-missing")}else if(e.type==="button"){t=document.createElement("button"),t.type="button",t.className=`g-btn g-btn-${e.variant}`;let r=Le(e,"label",e.label);t.textContent=r.value,r.missing&&c.mode==="editor"&&t.classList.add("g-missing"),t.dataset.gAction=e.action;let i=H?.nodes[e.id]?.picker;if(i&&c.mode==="live"){let s=i,n=H?.pickers[s],l=E[s]??n?.selected;t.disabled=!n?.options.includes(String(l)),t.disabled&&t.setAttribute("aria-disabled","true")}c.mode==="live"&&ye(e.id)?.unavailable&&(t.disabled=!0,t.setAttribute("aria-disabled","true")),c.mode==="editor"&&(t.tabIndex=-1)}else if(e.type==="image"){t=document.createElement("div"),t.className="g-img",B[e.aspect]&&(t.dataset.aspect=e.aspect,t.style.aspectRatio=B[e.aspect]);let r=document.createElement("img");r.src=e.localizedSrc?.[_]??e.localizedSrc?.[D.strings.defaultLocale]??e.src,r.alt=Le(e,"alt",e.alt).value,r.referrerPolicy="no-referrer",r.decoding="async",r.style.objectFit=e.fit,e.position&&(r.style.objectPosition=`${e.position.x}% ${e.position.y}%`),r.addEventListener("load",we),t.append(r)}else if(e.type==="price"){t=document.createElement("div"),t.className="g-price",t.style.cssText="display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-variant-numeric:tabular-nums";let r=ye(e.id);if(!r?.price)t.textContent=r?.text??V(e.fallback).value,c.mode==="editor"&&t.classList.add("g-missing");else for(let i of["current","original","period"]){let s=r.price[i];if(!s)continue;let n=document.createElement(i==="original"?"s":"span");n.textContent=s,i==="original"&&(n.style.opacity=".6"),e.parts?.[i]&&De(n,{type:"text",id:e.id,text:e.fallback,variant:"body",style:e.parts[i]},null),t.append(n)}}else if(e.type==="coupon_code"){t=document.createElement("div"),t.style.cssText="display:flex;align-items:center;gap:12px;flex-wrap:wrap";let r=ye(e.id);if(r?.code){let i=document.createElement("code");i.textContent=r.code;let s=document.createElement("button");s.type="button",s.className="g-btn g-btn-secondary",s.textContent=V(e.label).value,s.addEventListener("click",n=>{c.mode!=="editor"&&(n.stopPropagation(),Y({type:"copy",nodeId:e.id}))}),t.append(i,s)}else t.textContent=r?.text??V(e.fallback).value,c.mode==="editor"&&t.classList.add("g-missing")}else if(e.type==="countdown"){t=document.createElement("span"),t.setAttribute("role","timer"),t.style.fontVariantNumeric="tabular-nums";let r=ye(e.id),i=r?.countdownAt?Date.parse(r.countdownAt):NaN;!Number.isFinite(i)&&c.mode==="editor"&&t.classList.add("g-missing");let s=()=>{if(!Number.isFinite(i)){t.textContent=r?.text??V(e.fallback).value;return}let n=Math.max(0,Math.ceil((i-Date.now())/1e3));if(!n){t.textContent=V(e.expired).value;let u=ne.get(e.id);u!==void 0&&clearInterval(u),ne.delete(e.id);return}let l=e.granularity,d=l==="day"?86400:l==="hour"?3600:l==="minute"?60:1;l!=="second"?t.textContent=new Intl.NumberFormat(_,{style:"unit",unit:l,unitDisplay:"short"}).format(Math.ceil(n/d)):t.textContent=[Math.floor(n/86400),Math.floor(n/3600)%24,Math.floor(n/60)%60,n%60].map(u=>String(u).padStart(2,"0")).join(":")};s(),Number.isFinite(i)&&i>Date.now()&&ne.set(e.id,setInterval(s,1e3))}else if(e.type==="plan_picker"){t=document.createElement("div"),t.setAttribute("role",e.grouping?"group":"radiogroup"),t.setAttribute("aria-label",V(e.label).value),t.style.cssText="display:flex;flex-direction:column;gap:8px";let r=H?.pickers[e.id],i=e.grouping;if(!r?.options.length)E[e.id]="",t.textContent=V(e.fallback).value,c.mode==="editor"&&t.classList.add("g-missing");else{let s=typeof E[e.id]=="string"?String(E[e.id]):r.selected,n=ue[e.id];if(i){if(!n){let W=i.assignments.find(j=>j.productVersionId===s);n={period:W?.period??"month",tierId:W?.tierId??i.tiers[0].id},ue[e.id]=n}let o=i.assignments.find(W=>W.tierId===n.tierId&&W.period===n.period);s=o&&r.options.includes(o.productVersionId)?o.productVersionId:"";let y=document.createElement("div");y.setAttribute("role","radiogroup"),y.setAttribute("aria-label",`${V(i.monthLabel).value} / ${V(i.yearLabel).value}`),y.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:10px";let b=["month","year"],x=b.filter(W=>i.assignments.some(j=>j.period===W&&r.options.includes(j.productVersionId))),$=W=>{n.period=W;let j=i.assignments.find(te=>te.tierId===n.tierId&&te.period===W);E[e.id]=j&&r.options.includes(j.productVersionId)?j.productVersionId:"",be(),Ee(e.id)?.querySelector(`[data-product-period="${W}"]`)?.focus()};for(let W of b){let j=document.createElement("button");j.type="button",j.className=`g-btn g-btn-${W===n.period?"primary":"secondary"}`,j.style.cssText="flex:1;min-width:0;min-height:40px",j.dataset.productPeriod=W,j.setAttribute("role","radio"),j.setAttribute("aria-checked",String(W===n.period)),j.textContent=V(W==="month"?i.monthLabel:i.yearLabel).value,j.disabled=!x.includes(W),j.tabIndex=c.mode==="editor"||j.disabled?-1:W===n.period||!x.includes(n.period)&&W===x[0]?0:-1,j.addEventListener("click",te=>{c.mode!=="editor"&&(te.stopPropagation(),$(W))}),j.addEventListener("keydown",te=>{if(c.mode==="editor"||!x.length)return;let ie;["ArrowRight","ArrowDown"].includes(te.key)?ie=(x.indexOf(W)+1)%x.length:["ArrowLeft","ArrowUp"].includes(te.key)?ie=(x.indexOf(W)-1+x.length)%x.length:te.key==="Home"?ie=0:te.key==="End"&&(ie=x.length-1),ie!==void 0&&(te.preventDefault(),$(x[ie]))}),y.append(j)}t.append(y)}E[e.id]=s??"";let l=i?i.tiers.map(o=>({tier:o,id:i.assignments.find(y=>y.tierId===o.id&&y.period===n.period)?.productVersionId})):r.options.map(o=>({id:o,tier:void 0})),d=l.filter(o=>o.id&&r.options.includes(o.id)),u=i?document.createElement("div"):t;i&&(u.setAttribute("role","radiogroup"),u.setAttribute("aria-label",V(e.label).value),u.style.cssText="display:flex;flex-direction:column;gap:8px",t.append(u));let w=o=>{!o.id||!r.options.includes(o.id)||(i&&o.tier&&(n.tierId=o.tier.id),E[e.id]=o.id,be(),Ee(e.id)?.querySelector(`[data-plan-id="${o.id}"]`)?.focus())};for(let o of l){let y=o.id?H.plans[o.id]:void 0,b=!!y&&r.options.includes(o.id),x=document.createElement("button");x.type="button",x.className="g-btn g-btn-secondary",x.style.cssText="width:100%;text-align:start;min-height:44px",x.setAttribute("role","radio");let $=i?o.tier?.id===n.tierId:o.id===s;x.setAttribute("aria-checked",String($)),x.disabled=!b,x.tabIndex=c.mode==="editor"||!b?-1:$||!s&&o===d[0]?0:-1,o.id&&(x.dataset.planId=o.id),o.tier&&(x.dataset.productTier=o.tier.id);let W=o.id?H.nodes[e.id]?.byPlan?.[o.id]?.price:void 0;x.textContent=b?`${o.tier?.name??y.name} \xB7 ${W?.current??y.price}${W?.period??y.period}`:`${o.tier?.name??""} \xB7 ${V(i?.unavailableLabel??e.fallback).value}`,$&&(x.style.borderColor="var(--g-primary)",x.style.boxShadow="inset 0 0 0 1px var(--g-primary)",e.states?.selected&&De(x,{type:"text",id:e.id,text:e.label,variant:"body",style:e.states.selected},null)),x.addEventListener("click",j=>{c.mode==="editor"||!b||(j.stopPropagation(),w(o))}),x.addEventListener("keydown",j=>{if(c.mode==="editor"||!d.length)return;let te=d.indexOf(o),ie;["ArrowRight","ArrowDown"].includes(j.key)?ie=(te+1)%d.length:["ArrowLeft","ArrowUp"].includes(j.key)?ie=(te-1+d.length)%d.length:j.key==="Home"?ie=0:j.key==="End"&&(ie=d.length-1),ie!==void 0&&(j.preventDefault(),w(d[ie]))}),u.append(x)}if(i&&!s){let o=document.createElement("p");o.setAttribute("role","status"),o.textContent=V(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=`${T[e.size]??0}px`;else if(e.type==="custom_html"){t=document.createElement("div"),t.className="g-custom";let r=t.attachShadow({mode:"open"}),i=e.html[_],s=i&&i.trim()?i:e.html[D?.strings.defaultLocale??""]??"",n=ye(e.id);n?.html!==void 0?s=n.html:s.includes("{{")&&c.mode==="live"&&(s=V(e.fallback??"").value.replace(/[&<>"']/g,o=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[o])),(n?.missing?.length||!n&&s.includes("{{"))&&c.mode==="editor"&&t.classList.add("g-missing"),!(i&&i.trim())&&c.mode==="editor"&&t.classList.add("g-missing");let l=document.createElement("style"),d="@media(prefers-reduced-motion:reduce){:host,:host::before,:host::after,*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}";l.textContent=`:host{display:block}${d}@layer indiana-accessibility{${d}}${e.css}`;let u=document.createElement("div");u.innerHTML=s,r.append(l,u);for(let w of u.querySelectorAll("img"))w.addEventListener("load",we)}else return null;return e.style&&De(t,e,a),t.dataset.gNode=e.id,t.dataset.gLabel=zt(e),t}function Ft(e,a){let t=a.interaction,r=[...e.children];e.setAttribute("aria-label",V(t.label).value);let i=U?.bindings.find(n=>n.componentId===a.id),s=i?{id:i.key,source:i.componentId,required:i.required}:void 0;if(s){let n=document.createElement("p");n.className="g-text g-body",n.textContent=V(t.label).value+(s.required?" *":""),e.prepend(n),s.required&&e.setAttribute("aria-required","true")}if(t.type==="input"){let n=document.createElement("input");n.type=t.keyboard,n.maxLength=t.maxLength,n.autocomplete="off",n.setAttribute("aria-label",V(t.label).value),n.setAttribute("aria-required",String(!!s?.required)),n.value=typeof E[a.id]=="string"?String(E[a.id]):"",n.style.cssText="box-sizing:border-box;width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-surface);color:var(--g-text);font:inherit",n.disabled=c.mode!=="live",n.addEventListener("input",()=>{E[a.id]=n.value,Te(a.id,n.value)}),e.append(n);return}if(!(c.mode!=="live"||!r.length&&t.type!=="toggle")){if(t.type==="multiselect"){e.setAttribute("role","group"),e.dataset.gMin=String(t.min);let n=a.children.filter(u=>!u.hidden),l=new Set(Array.isArray(E[a.id])?E[a.id]:[]),d=()=>r.forEach((u,w)=>{let o=l.has(n[w].id);u.setAttribute("aria-checked",String(o)),u.setAttribute("aria-disabled",String(!o&&l.size>=t.max)),u.style.outline=o?"2px solid var(--g-primary)":"",u.style.outlineOffset="-2px"});r.forEach((u,w)=>{u.setAttribute("role","checkbox"),u.tabIndex=0,u.setAttribute("aria-label",u.textContent?.trim()||String(w+1)),u.style.cursor="pointer";let o=()=>{let y=n[w].id;if(l.has(y))l.delete(y);else if(l.size<t.max)l.add(y);else return;let b=n.filter(x=>l.has(x.id)).map(x=>x.id);E[a.id]=b,d(),Te(a.id,b)};u.addEventListener("click",y=>{y.stopPropagation(),o()}),u.addEventListener("keydown",y=>{[" ","Enter"].includes(y.key)&&(y.preventDefault(),y.stopPropagation(),o())})}),d();return}if(t.type==="select"){e.setAttribute("role","radiogroup");let n=a.children.filter(w=>!w.hidden),l=p(a)?a.interaction.pickerId:void 0,d=n.findIndex(w=>l?w.type==="stack"&&w.bind?.plan===E[l]:w.id===E[a.id]);!l&&d<0&&!s?.required&&(d=Math.min(t.defaultIndex,r.length-1));let u=(w,o=!1,y=!0)=>{if(l&&y&&w>=0){let b=n[w],x=b.type==="stack"?b.bind?.plan:void 0;if(!x||!H?.pickers[l]?.options.includes(x))return;E[a.id]=b.id,E[l]=x,be(),o&&J.querySelector(`[data-g-node="${b.id}"]`)?.focus({preventScroll:!0});return}d=w,w>=0&&(E[a.id]=n[w].id),y&&w>=0&&Te(a.id,n[w].id),r.forEach((b,x)=>{b.setAttribute("aria-checked",String(x===w)),b.tabIndex=x===(w<0?0:w)?0:-1,b.style.cssText="";let $=n[x];$.type==="stack"&&(b.style.alignItems=f[$.align]??"stretch",b.style.justifyContent=M[$.justify]??"flex-start"),$.style&&De(b,$,a),x===w&&(t.selectedStyle&&De(b,{...$,style:t.selectedStyle},a),$.type==="stack"&&$.states?.selected&&De(b,{...$,style:$.states.selected},a),!t.selectedStyle?.border&&!($.type==="stack"&&$.states?.selected?.border)&&(b.style.outline="2px solid var(--g-primary)",b.style.outlineOffset="-2px")),b.style.cursor="pointer"}),o&&w>=0&&r[w].focus()};r.forEach((w,o)=>{if(w.setAttribute("role","radio"),l){let y=n[o],b=y.type==="stack"?y.bind?.plan:void 0;w.setAttribute("aria-disabled",String(!b||!H?.pickers[l]?.options.includes(b)))}w.setAttribute("aria-label",w.textContent?.trim()||String(o+1)),w.addEventListener("click",y=>{y.stopPropagation(),u(o)}),w.addEventListener("keydown",y=>{let b=y.key;if(!["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"," ","Enter"].includes(b))return;y.preventDefault(),y.stopPropagation();let x=d<0?o:d;u(b==="Home"?0:b==="End"?r.length-1:b==="ArrowRight"||b==="ArrowDown"?(x+1)%r.length:b==="ArrowLeft"||b==="ArrowUp"?(x+r.length-1)%r.length:o,!0)})}),u(d,!1,!1)}else if(t.type==="tabs"){let n=a.children.filter(o=>!o.hidden),l=document.createElement("div");l.setAttribute("role","tablist"),l.setAttribute("aria-label",V(t.label).value),l.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:12px";let d=r.map((o,y)=>{let b=document.createElement("button");return b.type="button",b.setAttribute("role","tab"),b.textContent=Fe(n[y])||String(y+1),b.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}-${n[y].id}`,o.setAttribute("role","tabpanel"),b.setAttribute("aria-controls",o.id),l.append(b),b}),u=(o,y=!1,b=!1)=>{if(E[a.id]=n[o].id,b&&D&&Object.keys(A(D)).length){for(let x of Object.keys(A(D)))delete E[x];be(),y&&J.querySelector(`[data-g-node="${a.id}"] [role="tab"][aria-selected="true"]`)?.focus({preventScroll:!0});return}r.forEach((x,$)=>{x.hidden=$!==o,d[$].setAttribute("aria-selected",String($===o)),d[$].tabIndex=$===o?0:-1,d[$].style.background=$===o?"var(--g-primary)":"transparent",d[$].style.color=$===o?"var(--g-on-primary)":"var(--g-text)"}),y&&d[o].focus(),we()};d.forEach((o,y)=>{o.addEventListener("click",b=>{b.stopPropagation(),u(y,!1,!0)}),o.addEventListener("keydown",b=>{["ArrowLeft","ArrowRight","Home","End"].includes(b.key)&&(b.preventDefault(),b.stopPropagation(),u(b.key==="Home"?0:b.key==="End"?r.length-1:(y+(b.key==="ArrowRight"?1:r.length-1))%r.length,!0,!0))})}),e.prepend(l);let w=n.findIndex(o=>o.id===E[a.id]);u(w>=0?w:Math.min(t.defaultIndex,r.length-1))}else if(t.type==="toggle"){let n=document.createElement("button");n.type="button",n.setAttribute("role","switch"),n.className="g-btn g-btn-secondary",n.style.cssText="display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--g-text)";let l=document.createElement("span");l.textContent=V(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 u=document.createElement("span");u.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(u),n.append(l,d);let w=(o,y=!1)=>{if(E[a.id]=o,y&&D&&Object.keys(A(D)).length){for(let b of Object.keys(A(D)))delete E[b];be(),J.querySelector(`[data-g-node="${a.id}"] [role="switch"]`)?.focus({preventScroll:!0});return}n.setAttribute("aria-checked",String(o)),d.style.background=o?"var(--g-primary)":"var(--g-border)",u.style.left=o?"23px":"3px",u.style.background=o?"var(--g-on-primary)":"#FFFFFF",r.forEach((b,x)=>b.hidden=x!==(o?0:1)),we()};n.addEventListener("click",o=>{o.stopPropagation(),w(!E[a.id],!0),Te(a.id,!!E[a.id])}),e.prepend(n),w(typeof E[a.id]=="boolean"?E[a.id]:t.defaultEnabled)}else{e.setAttribute("role","region"),e.setAttribute("aria-roledescription","carousel");let n=document.createElement("div");n.style.cssText="display:flex;align-items:center;justify-content:center;gap:10px";let l=document.createElement("button"),d=document.createElement("button"),u=document.createElement("span"),w=_.startsWith("zh");l.textContent="\u2190",d.textContent="\u2192",l.setAttribute("aria-label",w?"\u4E0A\u4E00\u6761\u8BC4\u4EF7":"Previous review"),d.setAttribute("aria-label",w?"\u4E0B\u4E00\u6761\u8BC4\u4EF7":"Next review");for(let y of[l,d])y.type="button",y.className="g-btn g-btn-secondary",y.style.color="var(--g-text)";u.setAttribute("aria-live","polite");let o=y=>{fe[a.id]=y,r.forEach((b,x)=>b.hidden=x!==y),u.textContent=`${y+1} / ${r.length}`,we()};l.addEventListener("click",y=>{y.stopPropagation(),o((fe[a.id]+r.length-1)%r.length)}),d.addEventListener("click",y=>{y.stopPropagation(),o((fe[a.id]+1)%r.length)}),n.append(l,u,d),e.append(n),o(fe[a.id]??0)}}}function Fe(e){if(e.hidden)return"";if(e.type==="text"&&(e.variant==="title"||e.variant==="heading"))return V(e.text).value;if(e.type==="stack")for(let a of e.children){let t=Fe(a);if(t)return t}return""}function it(e){return e.type==="stack"&&!e.interaction&&!e.purchaseAction}function st(e){let a=[],t=r=>{let i=H?.nodes[r.id];if(a.push(r.id,ye(r.id)),i?.picker&&a.push(E[i.picker],H?.pickers[i.picker]),r.type==="text")a.push(Le(r,"text",r.text));else if(r.type==="button")a.push(Le(r,"label",r.label));else if(r.type==="image")a.push(Le(r,"alt",r.alt));else if(r.type==="custom_html")a.push(O,U?.answers);else if(r.type==="customer_data")a.push(se?.nodes[r.id]);else if(r.type==="plan_picker"){let s=H?.pickers[r.id];a.push(E[r.id],ue[r.id],s,i,s?.options.map(n=>H?.plans[n]))}else r.type==="stack"&&(r.interaction?.type!=="input"&&a.push(E[r.id],fe[r.id]),p(r)&&a.push(E[r.interaction.pickerId],H?.pickers[r.interaction.pickerId]),r.children.forEach(t))};return t(e),JSON.stringify(a)}function ot(e){e.hidden||(it(e)?e.children.forEach(ot):pe.set(e.id,st(e)))}function dt(e){let a=ne.get(e.id);a!==void 0&&clearInterval(a),ne.delete(e.id),e.type==="stack"&&e.children.forEach(dt)}function ct(e,a){if(e.hidden)return;if(it(e)){e.children.forEach(i=>ct(i,e));return}if(pe.get(e.id)===st(e))return;let t=Ee(e.id);if(!t)return;dt(e);let r=Ce(e,a);r&&t.replaceWith(r)}function Ut(){let e=document.activeElement;if(!(e instanceof HTMLElement)||!J.contains(e))return;let a=e.closest("[data-g-node]");if(!a)return;let t=[];for(let r=e;r!==a;){let i=r.parentElement;if(!i)return;t.unshift(Array.prototype.indexOf.call(i.children,r)),r=i}return{active:e,nodeId:a.dataset.gNode,path:t,identity:["productPeriod","planId","productTier","gDataFocus"].map(r=>[r,e.dataset[r]]).find(([,r])=>r!==void 0),selection:e instanceof HTMLInputElement&&e.selectionStart!==null?{start:e.selectionStart,end:e.selectionEnd,direction:e.selectionDirection}:void 0}}function Bt(e){if(!e||e.active.isConnected)return;let a=Ee(e.nodeId);if(!a)return;let t=a;if(e.identity){let[r,i]=e.identity;t=[...a.querySelectorAll("*")].find(s=>s.dataset[r]===i)}else for(let r of e.path)t=t?.children[r];!t||t.hasAttribute("disabled")||(t.focus({preventScroll:!0}),e.selection&&t instanceof HTMLInputElement&&["text","search","tel","url","password"].includes(t.type)&&t.setSelectionRange(e.selection.start,e.selection.end,e.selection.direction??void 0))}function be(e=!1){if(!D)return;let a=e?void 0:Ut(),t=D.pages.find(s=>s.id===(G??D.initialPageId))??D.pages[0];G=t.id,H&&Object.assign(E,I({...D,pages:[t]},et(),H));let r=s=>{if(s.type==="stack"&&s.children.forEach(r),s.type!=="plan_picker"||!s.grouping)return;let n=s.grouping,l=H?.pickers[s.id],d=ue[s.id];if(!d){let w=n.assignments.find(o=>o.productVersionId===(E[s.id]??l?.selected));d={period:w?.period??"month",tierId:w?.tierId??n.tiers[0].id},ue[s.id]=d}let u=n.assignments.find(w=>w.tierId===d.tierId&&w.period===d.period);E[s.id]=u&&l?.options.includes(u.productVersionId)?u.productVersionId:""};if(r(t.root),e||Z!==t){ne.forEach(l=>clearInterval(l)),ne.clear(),pe.clear(),J.style.cssText="",$t(t.theme?{...D,theme:t.theme}:D);let s=_.split("-")[0];document.documentElement.lang=_,document.documentElement.dir=["ar","he","fa","ur"].includes(s)?"rtl":"ltr",J.dataset.gPresentation=D.presentation.type;let n=Ce(t.root,null);J.replaceChildren(...n?[n]:[]),Z=t}else ct(t.root,null);ot(t.root),Bt(a),J.dataset.gPage=t.id,c.mode==="live"&&Y({type:"page",pageId:t.id}),Be(),Ue();let i=Math.ceil(J.getBoundingClientRect().height);v?we():(v=!0,k=i,Y({type:"rendered",height:i,label:Fe(t.root)||D.name}))}function we(){let e=Math.ceil(J.getBoundingClientRect().height);e!==k&&(k=e,Y({type:"resize",height:e})),Be(),Ue()}function lt(){ae||(ae=!0,window.requestAnimationFrame(()=>{ae=!1,we()}))}function Ue(){if(c.mode!=="editor")return;let e=[];for(let t of J.querySelectorAll("[data-g-node]")){let r=t.getBoundingClientRect();!r.width||!r.height||e.push({id:t.dataset.gNode,x:r.x,y:r.y,width:r.width,height:r.height})}let a=JSON.stringify(e);a!==he&&(he=a,Y({type:"layout",nodes:e}))}function Ee(e){return!e||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(e)?null:J.querySelector(`[data-g-node="${e}"]`)}function pt(e,a){let t=Ee(a);if(!t){e.style.display="none";return}let r=t.getBoundingClientRect();e.style.display="block",e.style.left=`${r.left+window.scrollX}px`,e.style.top=`${r.top+window.scrollY}px`,e.style.width=`${r.width}px`,e.style.height=`${r.height}px`,e.toggleAttribute("data-below",r.top<20),e.firstChild.textContent=t.dataset.gLabel??""}function Be(){c.mode==="editor"&&(pt(ce,Ae),pt(ge,X&&X!==Ae?X:null))}function $e(e){for(let a of e.composedPath()){if(a instanceof HTMLElement&&a.dataset.gNode)return a.dataset.gNode;if(a===J)break}return null}function Wt(e){if(e.isTrusted){if(c.mode==="editor"){e.preventDefault(),e.stopPropagation(),Y({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 r=D?.actions.find(i=>i.id===t);if(r?.type==="navigate"){if(G=r.pageId,D)for(let i of Object.keys(A(D)))delete E[i];be(),J.querySelector("h1,h2")?.focus({preventScroll:!0});return}Y({type:"action",actionId:t,nodeId:$e(e)??void 0,...Object.keys(E).length?{selection:et()}:{},...U?{answers:rt()}:{}});return}if(a===J)return}}}function ut(e){let a=e;if(!(!a||a.channel!==c.channel))try{if(a.type==="render"){let t=c.document??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(r=>Object.hasOwn(r,"source"))||t.actions?.some(r=>!["event","close","open_url","claim_offer",...t.surface==="paywall"?["navigate"]:[]].includes(r.type)))throw new Error("Unsupported screen document; use the current Funnel runtime for flows");D=t,G=null,_=String(a.locale),de=new Set,O=a.parameters??{},U=a.serverInput,E=C(),ue=C(),H=a.capabilities,se=a.customerData,Se.clear();for(let[r,i]of Object.entries(H?.pickers??{}))i.selected&&(E[r]=i.selected);if(a.selection&&typeof a.selection=="object"&&!Array.isArray(a.selection)){let r=a.selection,i=n=>{let l=r[n.id];if(n.type==="plan_picker"&&typeof l=="string"&&n.planIds?.includes(l)&&(E[n.id]=l),n.type==="stack"){if(n.interaction?.type==="toggle"&&typeof l=="boolean"&&(E[n.id]=l),n.interaction&&["select","tabs"].includes(n.interaction.type)&&typeof l=="string"&&n.children.some(d=>d.id===l)&&(E[n.id]=l),p(n)){let d=r[n.interaction.pickerId];typeof d=="string"&&n.children.some(u=>u.type==="stack"&&u.bind?.plan===d)&&(E[n.interaction.pickerId]=d)}n.children.forEach(i)}};D.pages.forEach(n=>i(n.root));let s=r.__page;typeof s=="string"&&D.pages.some(n=>n.id===s)&&(G=s)}for(let r of U?.bindings??[])Object.hasOwn(U.answers,r.key)&&(E[r.componentId]=U.answers[r.key],de.add(r.componentId));fe=C(),_=String(a.locale),be(!0)}else if(a.type==="capabilities"){H=a.capabilities;for(let[t,r]of Object.entries(H.pickers))!ue[t]&&E[t]===void 0&&(E[t]=r.selected??"");be()}else a.type==="customer-data"?jt(a.data):a.type==="restore-action-focus"&&c.mode==="live"?[...J.querySelectorAll("button[data-g-node]")].find(t=>t.dataset.gNode===a.nodeId&&!t.disabled)?.focus({preventScroll:!0}):a.type==="highlight"&&c.mode==="editor"&&(X=a.hoverId??null,Ae=a.selectedId??null,Be())}catch(t){Y({type:"error",message:t instanceof Error?t.message:"render failed"})}}let gt=document.createElement("style");if(gt.textContent=m,document.head.append(gt),document.body.append(J),c.mode==="editor"){document.body.dataset.gEditor="",document.body.append(ge,ce),document.addEventListener("mouseover",a=>{let t=$e(a);t!==ke&&(ke=t,Y({type:"hover",id:t}))}),document.documentElement.addEventListener("mouseleave",()=>{ke!==null&&(ke=null,Y({type:"hover",id:null}))}),document.addEventListener("dblclick",a=>{let t=$e(a);t&&a.isTrusted&&Y({type:"edit",id:t})}),document.addEventListener("click",a=>{J.contains(a.target)||Y({type:"select",id:null})});let e=(a,t)=>{if(!a.isTrusted)return;let r=a.metaKey||a.ctrlKey,i=a.key;(i===" "||t==="down"&&(["Delete","Backspace","Escape"].includes(i)||r&&/^[zysdcvg0=+-]$/i.test(i)))&&((r||i===" ")&&a.preventDefault(),Y({type:"key",key:{key:i,phase:t,meta:a.metaKey,ctrl:a.ctrlKey,shift:a.shiftKey,alt:a.altKey}}))};document.addEventListener("keydown",a=>e(a,"down")),document.addEventListener("keyup",a=>e(a,"up")),document.addEventListener("wheel",a=>{!a.isTrusted||!(a.ctrlKey||a.metaKey)||(a.preventDefault(),Y({type:"zoom",delta:a.deltaY}))},{passive:!1})}J.addEventListener("click",Wt),document.addEventListener("keydown",e=>{e.key==="Escape"&&e.isTrusted&&Y({type:"escape"})}),typeof ResizeObserver=="function"&&new ResizeObserver(lt).observe(J),window.addEventListener("resize",lt),c.mode==="editor"&&window.addEventListener("scroll",Ue),window.addEventListener("message",e=>{e.source===h&&ut(e.data)}),z.__indianaReceive=ut,Y(c.document?{type:"ready",document:c.document}:{type:"ready"})}var Qt=`(${Ge.toString()})(JSON.parse(document.getElementById("grow-renderer-boot").textContent))`;function Mt(c,p){let A=JSON.stringify(c).replace(/</g,"\\u003c");return`<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'nonce-${p}'; style-src 'unsafe-inline'; img-src https: data:; connect-src 'none'; font-src 'none'; media-src 'none'; frame-src 'none'; base-uri 'none'; form-action 'none'"></head><body><script type="application/json" id="grow-renderer-boot">${A}<\/script><script nonce="${p}">${Qt}<\/script></body></html>`}function ea(){return`(() => {
|
|
171
|
+
`;function $(){return Object.create(null)}let R=null,U,C=new Set,N,J,ne=new Map,ce=new Map,fe=new Map,Z,H=null,k=$(),se=$(),me=$(),ae="",B=!1,v=-1,w=!1,oe="",he=null,Q=null,Ee=null,K=document.createElement("div");K.id="g-card";let xe=document.createElement("div"),pe=document.createElement("div");xe.className=pe.className="g-box",pe.dataset.kind="select",xe.append(document.createElement("span")),pe.append(document.createElement("span"));function X(e){let r={...e,channel:d.channel};try{A.postMessage(r,d.parentOrigin)}catch{}}function ve(e){let r=parseInt(e.slice(1),16);return[r>>16&255,r>>8&255,r&255]}function ue(e,r,t){let a=ve(e),i=ve(r),s=a.map((n,p)=>Math.round(n*t+i[p]*(1-t)));return`rgb(${s[0]},${s[1]},${s[2]})`}function Pe(e){let[r,t,a]=ve(e).map(i=>{let s=i/255;return s<=.03928?s/12.92:((s+.055)/1.055)**2.4});return .2126*r+.7152*t+.0722*a}function De(e){return typeof e!="string"?"":e.startsWith("#")?e:`var(--g-${e==="background"?"bg":e})`}function Ut(e){let r=e.theme,t=document.documentElement.style,a=Pe(r.primary),i=(a+.05)/.05>1.05/(a+.05)?"#111318":"#FFFFFF";t.setProperty("--g-primary",r.primary),t.setProperty("--g-on-primary",i),t.setProperty("--g-bg",r.background),t.setProperty("--g-text",r.text),t.setProperty("--g-muted",ue(r.text,r.background,.62)),t.setProperty("--g-surface",ue(r.text,r.background,.05)),t.setProperty("--g-border",ue(r.text,r.background,.16)),t.setProperty("--g-focus",ue(r.primary,r.background,.45)),t.setProperty("--g-radius",`${j[r.radius]??8}px`),t.setProperty("--g-font",L[r.font]??L.system),t.setProperty("--g-edit","#2C3C96")}function G(e){let r=R?.strings.locales[ae]?.[e];return r&&r.trim()?{value:r,missing:!1}:{value:R?.strings.locales[R.strings.defaultLocale]?.[e]??"",missing:!0}}function Se(e){let r=N?.nodes[e];if(!r)return;let t=r.picker?k[r.picker]??N?.pickers[r.picker]?.selected:void 0;if(!(r.picker&&t===""))return typeof t=="string"?r.byPlan?.[t]??r.base:r.base}function ut(){return{...R?.surface==="paywall"&&H?{__page:H}:{},...Object.fromEntries(Object.entries(k).filter(e=>!Array.isArray(e[1])))}}function gt(e){return U&&Object.hasOwn(U.answers,e)&&U.bindings.some(r=>r.variable===e)?U.answers[e]:U?.values?.[e]}function Re(e,r,t){let a=Se(e.id),i=a?.[r],s=i!==void 0?{value:i,missing:!!a?.missing?.length}:G(t);if(d.mode==="live"&&U){let n=!1,p=s.value.replace(/\{\{\s*variables\.([^{}]+?)\s*\}\}/g,(l,u)=>{u=u.trim();let h=gt(u);return h==null||h===""||Array.isArray(h)&&!h.length?(n=!0,""):Array.isArray(h)?h.join(", "):String(h)});if(n)return{value:e.fallback?G(e.fallback).value:"",missing:!0};if(!p.includes("{{"))return{value:p,missing:s.missing}}return i!==void 0?s:s.value.includes("{{")&&d.mode==="live"?{value:e.fallback?G(e.fallback).value:"",missing:!0}:{value:s.value,missing:s.missing||s.value.includes("{{")}}function Wt(e){if(e.name)return e.name;let r=d.editorMessages?.nodeTypes?.[e.type];return d.mode==="editor"&&typeof r=="string"?r:{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 Bt(e,r){if(r.type==="color")e.background="none",e.backgroundColor=De(r.color);else if(r.type==="linear"){let t=r.stops.map(a=>`${De(a.color)} ${Number(a.at)}%`).join(",");e.backgroundColor="transparent",e.backgroundImage=`linear-gradient(${Number(r.angle)}deg,${t})`}else if(r.type==="image"&&typeof r.src=="string"){let t=/^data:image\/(?:svg\+xml|jpeg|png);base64,[A-Za-z0-9+/]+={0,2}$/.test(r.src)?r.src:r.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 a=r.position;e.backgroundPosition=a?`${a.x}% ${a.y}%`:"center",e.backgroundSize=r.fit==="contain"?"contain":"cover",e.backgroundRepeat="no-repeat"}}function ft(e){return`${Number(e.top)}px ${Number(e.right)}px ${Number(e.bottom)}px ${Number(e.left)}px`}function mt(e,r,t,a,i){if(r===void 0)return;let s=a?.direction??"vertical",n=s!=="overlay"&&t==="width"==(s==="horizontal"),p=t==="width"?"minWidth":"minHeight";r==="fill"?s==="overlay"?(e.style[t]="100%",e.style[t==="width"?"justifySelf":"alignSelf"]="stretch"):n?(e.style.flex="1 1 0",e.style[p]="0"):(e.style.alignSelf="stretch",e.style[t]="auto"):r==="fit"?(e.style[t]="fit-content",t==="width"&&(e.style.maxWidth="100%"),!n&&s!=="overlay"&&(!a||a.align==="stretch")&&(e.style.alignSelf=i==="center"?"center":i==="end"?"flex-end":"flex-start")):typeof r=="number"&&(e.style[t]=`${r}px`,t==="width"&&(e.style.maxWidth="100%"),n&&(e.style.flex="0 0 auto"))}function Ne(e,r,t){let a=r.style,i=a.text??{},s=e.style;if(r.type==="customer_data"&&(i.font&&s.setProperty("--g-data-display-font",L[String(i.font)]??L.system),r.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)))),r.type==="customer_data"&&r.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",L[String(i.font)]??L.system),typeof i.weight=="number"&&s.setProperty("--g-data-number-weight",String(i.weight))),r.type==="customer_data"&&i.color){let u=De(i.color);s.setProperty("--g-data-ink",u),s.setProperty("--g-data-muted",`color-mix(in srgb, ${u} 72%, transparent)`),s.setProperty("--g-data-line",`color-mix(in srgb, ${u} 20%, transparent)`),s.setProperty("--g-data-surface",`color-mix(in srgb, ${u} 8%, transparent)`)}a.padding&&(s.padding=ft(a.padding)),a.margin&&(s.margin=ft(a.margin)),typeof a.gap=="number"&&r.type==="stack"&&(s.gap=`${a.gap}px`),a.background&&Bt(s,a.background),typeof a.opacity=="number"&&(s.opacity=String(a.opacity));let n=a.shape;if(n?.type==="pill")s.borderRadius="9999px";else if(n?.type==="rect"){let u=n.radius;s.borderRadius=typeof u=="number"?`${u}px`:`${Number(u.topLeft)}px ${Number(u.topRight)}px ${Number(u.bottomRight)}px ${Number(u.bottomLeft)}px`}(a.clipContent===!0||a.clipContent!==!1&&n&&(a.background||r.type==="image"))&&(s.overflow="hidden");let p=a.border;p&&(s.border=Number(p.width)>0?`${Number(p.width)}px ${p.style==="dashed"?"dashed":"solid"} ${De(p.color)}`:"0");let l=a.shadow;l&&(s.boxShadow=`${Number(l.x)}px ${Number(l.y)}px ${Number(l.blur)}px ${Number(l.spread)}px ${De(l.color)}`),["text","button","price","coupon_code","countdown","plan_picker"].includes(r.type)&&(i.font&&(s.fontFamily=L[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=De(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))),mt(e,a.width,"width",t,i.align),mt(e,a.height,"height",t,i.align),t?.direction==="horizontal"&&a.grow!==void 0&&(s.flexGrow=String(a.grow===!0?1:a.grow===!1?0:a.grow))}function Te(e,r){if(U){let t=U.bindings.find(a=>a.componentId===e);if(!t)return;U.answers[t.variable]=r,C.add(e),X({type:"answers",answers:ht()}),ye();return}}function ht(){let e={};for(let r of U?.bindings??[]){let t=k[r.componentId];t!==void 0&&(e[r.variable]=t)}return e}function Jt(e){let r=document.createElement("section");r.className="g-data",r.dataset.layout=e.data.layout,r.dataset.source=e.data.source;let t=J?.nodes[e.id];r.dataset.status=t?.status??"idle",r.dataset.preview=String(!!t?.preview);let a=t?.status==="loading",i=ae.startsWith("zh"),s=(g,_)=>i?g:_;r.setAttribute("aria-busy",String(!!a));let n=(g,_,ee)=>{let z=document.createElement(g);return z.className=_,ee!==void 0&&(z.textContent=ee),z},p=g=>{let _=document.createElementNS("http://www.w3.org/2000/svg","svg");_.setAttribute("viewBox","0 0 24 24"),_.setAttribute("fill","none"),_.setAttribute("stroke","currentColor"),_.setAttribute("stroke-width","1.7"),_.setAttribute("stroke-linecap","round"),_.setAttribute("stroke-linejoin","round"),_.setAttribute("aria-hidden","true"),_.classList.add("g-data-icon");let ee={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 z of ee[g]){let q=document.createElementNS("http://www.w3.org/2000/svg","path");q.setAttribute("d",z),_.append(q)}return _},l=(g,_,ee,z=!1,q=_)=>{let ie=n("button","g-data-button",g);return ie.type="button",ie.disabled=z||!!a&&_!=="refresh"||!!t?.preview||d.mode!=="live",a&&_==="refresh"&&ie.setAttribute("aria-disabled","true"),ie.dataset.gDataFocus=`${e.id}:${q}:${ee??""}`,ie.addEventListener("click",ge=>{!ge.isTrusted||ie.disabled||a||X({type:"customer-data-intent",intent:{nodeId:e.id,action:_,...ee?{value:ee}:{}}})}),ie},u=n("div","g-data-header"),h=n("h2","g-data-heading",G(e.title).value);h.id=`g-data-title-${e.id}`,r.setAttribute("aria-labelledby",h.id);let o=n("div","g-data-controls"),f=[],y=g=>{g.hidden||(g.type==="customer_data"&&f.push(g),g.type==="stack"&&g.children.forEach(y))},x=R?.pages[0];x&&y(x.root);let O=f.every(g=>J?.nodes[g.id]?.preview),V=f.find(g=>g.data.source==="credit_balance")??f[0];t?.preview&&(!O||V?.id===e.id)&&o.append(n("span","g-data-preview",s("\u793A\u4F8B\u6570\u636E","Sample data")));let W=a?s("\u66F4\u65B0\u4E2D\u2026","Updating\u2026"):s("\u5237\u65B0","Refresh"),re=l(W,"refresh");if(re.replaceChildren(p("refresh")),re.setAttribute("aria-label",W),re.title=W,re.classList.add("g-data-refresh"),a&&re.classList.add("g-data-refreshing"),o.append(re),e.data.source==="billing"&&e.data.outputs?.billing_portal&&o.append(l(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"&&(h.prepend(p("credit")),t?.resources.length===1&&h.append(n("span","g-data-resource-label",t.resources[0].name)),t?.updatedAt)){let g=n("time","g-data-updated",`${s("\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(ae,{timeStyle:"short"}).format(new Date(t.updatedAt))}`);g.dateTime=t.updatedAt,g.title=new Intl.DateTimeFormat(ae,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt)),o.prepend(g)}if(u.append(h,o),r.append(u),!t||t.source!==e.data.source)return r.append(n("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."))),r;if(t.errorMessage){let g=n("div","g-data-error",t.errorMessage);g.setAttribute("role","alert"),r.append(g);let _=n("div","g-data-recovery");_.append(l(s("\u91CD\u8BD5","Retry"),"refresh")),r.append(_)}if(t.membershipResult){let g=n("p","g-data-note",t.membershipResult);g.setAttribute("role","status"),r.append(g)}if(t.membershipReview){let g=t.membershipReview,_=n("section","g-data-resource");_.dataset.gDataReview="",_.setAttribute("aria-label",g.title),_.setAttribute("aria-busy",String(!!t.membershipBusy));let ee=n("h3","g-data-row-label",g.title);ee.tabIndex=-1,_.append(ee);let z=n("dl","g-data-facts");for(let ie of g.facts){let ge=n("div","");ge.append(n("dt","",ie.label),n("dd","",ie.value)),z.append(ge)}_.append(z,n("p","g-data-note",g.note));let q=n("div","g-data-controls");q.append(l(s("\u8FD4\u56DE","Back"),"membership_dismiss",void 0,!!t.membershipBusy),l(t.membershipBusy?s("\u6B63\u5728\u5904\u7406\u2026","Processing\u2026"):s("\u786E\u8BA4","Confirm"),"membership_confirm",void 0,!!t.membershipBusy)),_.append(q),r.append(_)}if(t.stale&&(t.resources.length||t.rows.length)&&r.append(n("p",a?"g-data-live-status":"g-data-note",a?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."))),a&&!t.resources.length&&!t.rows.length){let g=n("div","g-data-skeleton");if(g.setAttribute("aria-hidden","true"),e.data.source==="credit_balance")g.append(n("span","g-data-skeleton-line g-data-skeleton-value"),n("span","g-data-skeleton-line g-data-skeleton-meta"));else{let ee=Math.min(e.data.pageSize,e.data.layout==="compact"?2:4);for(let z=0;z<ee;z++){let q=n("div","g-data-skeleton-row");q.append(n("span","g-data-skeleton-line"),n("span","g-data-skeleton-line")),g.append(q)}}let _=n("p","g-data-live-status",s("\u6B63\u5728\u8BFB\u53D6\u8D26\u6237\u6570\u636E\u2026","Loading account data\u2026"));return _.setAttribute("role","status"),r.append(g,_),r}let de={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","\u672A\u4F7F\u7528","Unused"],["reserved","\u4ED8\u6B3E\u5904\u7406\u4E2D","Payment pending"],["redeemed","\u5DF2\u4F7F\u7528","Redeemed"],["expired","\u5DF2\u5230\u671F","Expired"],["revoked","\u5DF2\u4F5C\u5E9F","Revoked"]]};if(de[e.data.source]){let g=n("select","g-data-select");g.setAttribute("aria-label",s("\u7B5B\u9009\u8BB0\u5F55","Filter records")),g.dataset.gDataFocus=`${e.id}:filter`,g.disabled=!!a||t.preview||d.mode!=="live";for(let[_,ee,z]of de[e.data.source]){let q=document.createElement("option");q.value=_,q.textContent=s(ee,z),g.append(q)}g.value=t.filter,g.addEventListener("change",()=>{!g.disabled&&d.mode==="live"&&X({type:"customer-data-intent",intent:{nodeId:e.id,action:"filter",value:g.value}})}),o.prepend(g)}let It=(g,_=!1)=>{let ee=n("ul","g-data-list");if(e.data.source==="credit_transactions"&&g.length&&!_){let z=n("div","g-data-table-head");z.setAttribute("aria-hidden","true"),z.append(n("span","",s("\u8BB0\u5F55","Record")),n("span","",s("\u7C7B\u578B","Type")),n("span","",s("\u79EF\u5206","Credits"))),r.append(z)}for(let z of g){let q=n("li","g-data-row"),ie=n("div","g-data-row-main"),ge=n("div","g-data-row-copy");ge.append(n("p","g-data-row-label",z.label));for(let te of z.detail)te!==z.status&&ge.append(n("div","g-data-row-detail",te));if(e.data.source==="credit_transactions"&&!_){let te=n("span","g-data-row-mark");te.append(p(["Refund","\u9000\u56DE"].includes(z.status??"")?"up":"down")),ie.append(te)}if(ie.append(ge),q.append(ie),z.status?q.append(n("div","g-data-row-status",z.status)):q.classList.add("g-data-row-no-status"),z.value?q.append(n("div","g-data-row-value",z.value)):q.classList.add("g-data-row-no-value"),z.facts.length||z.purchaseId||z.membershipActions?.length||z.billingActions?.length){let te=n("div","g-data-row-extra"),be=n("div","g-data-facts"),ke=(le,Oe)=>{for(let At of le){let Lt=n("span","",At.label);Lt.append(n("strong","",At.value)),Oe.append(Lt)}};if(ke(z.facts.slice(0,3),be),z.facts.length>3){let le=n("details","g-data-sources");le.dataset.gDataSources=`facts:${z.id}`,le.append(n("summary","",`${e.data.source==="billing"?s("\u8D26\u5355\u8BE6\u60C5","Invoice details"):e.data.source==="offer_history"?s("\u4F18\u60E0\u5238\u660E\u7EC6","Coupon details"):s("\u5168\u90E8\u6263\u8D39\u660E\u7EC6","All allocations")} \xB7 ${z.facts.length}`));let Oe=n("div","g-data-facts");ke(z.facts.slice(3),Oe),le.append(Oe),be.append(le)}if(te.append(be),!_)for(let le of z.billingActions??[])te.append(l(le.label,le.action,z.id,!!t.billingBusy));if(z.purchaseId&&e.data.allowPurchase&&!_){let le=l(t.buyingId===z.purchaseId?s("\u6B63\u5728\u51C6\u5907\u2026","Preparing\u2026"):s("\u8D2D\u4E70\u79EF\u5206","Buy credits"),"buy_pack",z.purchaseId,!!t.preview||!!t.buyingId);le.classList.add("g-data-buy"),te.append(le)}if(e.data.allowPurchase&&!_)for(let le of z.membershipActions??[])te.append(l(le.label,"membership_preview",le.value,!!t.preview||!!t.membershipBusy||!!t.membershipReview));q.append(te)}ee.append(q)}return ee};for(let g of t.resources){let _=n("article","g-data-resource");_.setAttribute("aria-label",g.name),t.resources.length>1&&_.append(n("p","g-data-name",g.name));let ee=n("div","g-data-balance"),z=new Intl.NumberFormat(ae).formatToParts(1.1).find(te=>te.type==="decimal")?.value??".",q=g.spendable.lastIndexOf(z),ie=n("strong","g-data-number",q<0?g.spendable:g.spendable.slice(0,q));q>=0&&ie.append(n("span","g-data-fraction",g.spendable.slice(q))),ee.append(ie,n("span","g-data-unit",s("\u53EF\u7528\u79EF\u5206","Spendable credits"))),_.append(ee);let ge=n("div","g-data-facts");for(let[te,be]of[[s("\u4F59\u989D","Balance"),g.available],[s("\u51BB\u7ED3","Reserved"),g.reserved]]){let ke=n("span","",te);ke.append(n("strong","",be)),ge.append(ke)}if(g.expiry&&ge.append(n("span","g-data-expiry",`${s("\u6700\u8FD1\u5230\u671F","Next expiry")} \xB7 ${g.expiry}`)),_.append(ge),e.data.showSources&&g.sourceCount){let te=n("details","g-data-sources");if(te.dataset.gDataSources=g.key,te.append(n("summary","",`${s("\u79EF\u5206\u6765\u6E90","Credit sources")} \xB7 ${g.sourceCount}`),It(g.sources,!0)),te.querySelector("summary")?.append(p("chevron")),g.hasNextSources||g.hasPreviousSources){let be=n("div","g-data-footer");be.append(n("span","",`${s("\u7B2C","Page")} ${g.sourcePage}`));let ke=n("div","g-data-controls");ke.append(l(s("\u4E0A\u4E00\u9875","Previous"),"sources_previous",g.key,!g.hasPreviousSources),l(s("\u4E0B\u4E00\u9875","Next"),"sources_next",g.key,!g.hasNextSources)),be.append(ke),te.append(be)}_.append(te)}r.append(_)}if(t.rows.length&&r.append(It(t.rows)),e.data.source==="billing_controls"&&(e.data.outputs?.billing_authorization||e.data.outputs?.billing_adjustment)){let g=n("div","g-data-controls");e.data.outputs?.billing_authorization&&g.append(l(s("\u8BBE\u7F6E\u81EA\u52A8\u4ED8\u6B3E\u6388\u6743","Set up payment authorization"),"billing_authorization")),e.data.outputs?.billing_adjustment&&g.append(l(s("\u67E5\u770B\u5F85\u786E\u8BA4\u8865\u6B3E","Review pending adjustment"),"billing_adjustment")),r.append(g)}if(!t.rows.length&&!t.resources.length&&t.status!=="error"){let g=n("p","g-data-empty",a?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."));g.prepend(p("empty")),g.setAttribute("role","status"),r.append(g)}if(t.hasNext||t.hasPrevious){let g=n("div","g-data-footer");g.append(n("span","",`${s("\u7B2C","Page")} ${t.page}`));let _=n("div","g-data-controls");_.append(l(s("\u4E0A\u4E00\u9875","Previous"),"previous",void 0,!t.hasPrevious),l(s("\u4E0B\u4E00\u9875","Next"),"next",void 0,!t.hasNext)),g.append(_),r.append(g)}return t.updatedAt&&e.data.source!=="credit_balance"&&r.append(n("p","g-data-note g-data-updated",`${s("\u6570\u636E\u66F4\u65B0\u4E8E","Updated")} ${new Intl.DateTimeFormat(ae,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t.updatedAt))}`)),r}let Ie=new Map,Je=new Map,yt=e=>{let r=e.target;for(let t of Ie.keys())r&&!Ae(t)?.contains(r)&&Ie.delete(t)};document.addEventListener("focusin",yt),document.addEventListener("pointerdown",yt);function Vt(e){let r=J;if(J=e,!R)return;let t=(i,s)=>{if(i.type==="stack"){i.children.forEach(x=>t(x,i));return}if(i.type!=="customer_data"||JSON.stringify(r?.nodes[i.id])===JSON.stringify(e.nodes[i.id]))return;let n=Ae(i.id);if(!n)return;let p=document.activeElement;p&&n.contains(p)&&p.dataset.gDataFocus&&Ie.set(i.id,p.dataset.gDataFocus);let l=new Set([...n.querySelectorAll("details[data-g-data-sources]")].filter(x=>x.open).map(x=>x.dataset.gDataSources)),u=$e(i,s);if(!u)return;for(let x of u.querySelectorAll("details[data-g-data-sources]"))x.open=l.has(x.dataset.gDataSources);let h=n.scrollTop;n.replaceWith(u),u.scrollTop=h;let o=!!e.nodes[i.id]?.membershipReview&&!r?.nodes[i.id]?.membershipReview,f=!e.nodes[i.id]?.membershipReview&&!!r?.nodes[i.id]?.membershipReview;o&&Ie.get(i.id)&&Je.set(i.id,Ie.get(i.id));let y=f?Je.get(i.id):Ie.get(i.id);y&&[...u.querySelectorAll("[data-g-data-focus]")].find(x=>x.dataset.gDataFocus===y)?.focus({preventScroll:!0}),o&&u.querySelector("[data-g-data-review] h3")?.focus({preventScroll:!0}),f&&Je.delete(i.id),u.animate&&e.nodes[i.id]?.status==="ready"&&!window.matchMedia("(prefers-reduced-motion:reduce)").matches&&u.animate([{opacity:.7},{opacity:1}],{duration:140,easing:"ease-out"})},a=R.pages.find(i=>i.id===H)??R.pages[0];t(a.root,null),_e()}function $e(e,r){if(e.hidden)return null;let t;if(e.type==="customer_data")t=Jt(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=T[e.align]??"stretch",t.style.justifyItems=P[e.justify]??"stretch"):(t.style.alignItems=M[e.align]??"stretch",t.style.justifyContent=m[e.justify]??"flex-start");for(let a of e.children){let i=$e(a,e);i&&t.append(i)}if(e.interaction&&qt(t,e),e.purchaseAction&&d.mode==="live"){let a=N?.nodes[e.id],i=a?.picker;i&&(t.disabled=!N?.pickers[i]?.options.includes(String(k[i]??""))),Se(e.id)?.unavailable&&(t.disabled=!0)}d.mode==="editor"&&!t.childElementCount&&(t.classList.add("g-empty"),t.dataset.gEditorPlaceholder=d.editorMessages?.emptyContainer??"\u62D6\u5165\u7EC4\u4EF6")}else if(e.type==="text"){let a=e.variant==="title"?"h1":e.variant==="heading"?"h2":"p";t=document.createElement(a),t.className=`g-text g-${e.variant}`;let i=Re(e,"text",e.text);t.textContent=i.value,i.missing&&d.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 a=Re(e,"label",e.label);t.textContent=a.value,a.missing&&d.mode==="editor"&&t.classList.add("g-missing"),t.dataset.gAction=e.action;let i=N?.nodes[e.id]?.picker;if(i&&d.mode==="live"){let s=i,n=N?.pickers[s],p=k[s]??n?.selected;t.disabled=!n?.options.includes(String(p)),t.disabled&&t.setAttribute("aria-disabled","true")}d.mode==="live"&&Se(e.id)?.unavailable&&(t.disabled=!0,t.setAttribute("aria-disabled","true")),d.mode==="editor"&&(t.tabIndex=-1)}else if(e.type==="image"){t=document.createElement("div"),t.className="g-img",F[e.aspect]&&(t.dataset.aspect=e.aspect,t.style.aspectRatio=F[e.aspect]);let a=document.createElement("img");a.src=e.localizedSrc?.[ae]??e.localizedSrc?.[R.strings.defaultLocale]??e.src,a.alt=Re(e,"alt",e.alt).value,a.referrerPolicy="no-referrer",a.decoding="async",a.style.objectFit=e.fit,e.position&&(a.style.objectPosition=`${e.position.x}% ${e.position.y}%`),a.addEventListener("load",ze),t.append(a)}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 a=Se(e.id);if(!a?.price)t.textContent=a?.text??G(e.fallback).value,d.mode==="editor"&&t.classList.add("g-missing");else for(let i of["current","original","period"]){let s=a.price[i];if(!s)continue;let n=document.createElement(i==="original"?"s":"span");n.textContent=s,i==="original"&&(n.style.opacity=".6"),e.parts?.[i]&&Ne(n,{type:"text",id:e.id,text:e.fallback,variant:"body",style:e.parts[i]},null),t.append(n)}}else if(e.type==="coupon_code"){t=document.createElement("div"),t.style.cssText="display:flex;align-items:center;gap:12px;flex-wrap:wrap";let a=Se(e.id);if(a?.code){let i=document.createElement("code");i.textContent=a.code;let s=document.createElement("button");s.type="button",s.className="g-btn g-btn-secondary",s.textContent=G(e.label).value,s.addEventListener("click",n=>{d.mode!=="editor"&&(n.stopPropagation(),X({type:"copy",nodeId:e.id}))}),t.append(i,s)}else t.textContent=a?.text??G(e.fallback).value,d.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 a=Se(e.id),i=a?.countdownAt?Date.parse(a.countdownAt):NaN,s=e.granularity==="second"?void 0:new Intl.NumberFormat(ae,{style:"unit",unit:e.granularity,unitDisplay:"short"});!Number.isFinite(i)&&d.mode==="editor"&&t.classList.add("g-missing");let n=()=>{if(!Number.isFinite(i)){t.textContent=a?.text??G(e.fallback).value;return}let p=Math.max(0,Math.ceil((i-Date.now())/1e3));if(!p){t.textContent=G(e.expired).value;let o=ne.get(e.id);o!==void 0&&clearInterval(o),ne.delete(e.id);return}let l=e.granularity,u=l==="day"?86400:l==="hour"?3600:l==="minute"?60:1,h=s?s.format(Math.ceil(p/u)):[Math.floor(p/86400),Math.floor(p/3600)%24,Math.floor(p/60)%60,p%60].map(o=>String(o).padStart(2,"0")).join(":");t.textContent!==h&&(t.textContent=h)};n(),Number.isFinite(i)&&i>Date.now()&&ne.set(e.id,setInterval(n,1e3))}else if(e.type==="plan_picker"){t=document.createElement("div"),t.setAttribute("role",e.grouping?"group":"radiogroup"),t.setAttribute("aria-label",G(e.label).value),t.style.cssText="display:flex;flex-direction:column;gap:8px";let a=N?.pickers[e.id],i=e.grouping;if(!a?.options.length)k[e.id]="",t.textContent=G(e.fallback).value,d.mode==="editor"&&t.classList.add("g-missing");else{let s=typeof k[e.id]=="string"?String(k[e.id]):a.selected,n=me[e.id];if(i){if(!n){let V=i.assignments.find(W=>W.productVersionId===s);n={period:V?.period??"month",tierId:V?.tierId??i.tiers[0].id},me[e.id]=n}let o=i.assignments.find(V=>V.tierId===n.tierId&&V.period===n.period);s=o&&a.options.includes(o.productVersionId)?o.productVersionId:"";let f=document.createElement("div");f.setAttribute("role","radiogroup"),f.setAttribute("aria-label",`${G(i.monthLabel).value} / ${G(i.yearLabel).value}`),f.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:10px";let y=["month","year"],x=y.filter(V=>i.assignments.some(W=>W.period===V&&a.options.includes(W.productVersionId))),O=V=>{n.period=V;let W=i.assignments.find(re=>re.tierId===n.tierId&&re.period===V);k[e.id]=W&&a.options.includes(W.productVersionId)?W.productVersionId:"",ye(),Ae(e.id)?.querySelector(`[data-product-period="${V}"]`)?.focus()};for(let V of y){let W=document.createElement("button");W.type="button",W.className=`g-btn g-btn-${V===n.period?"primary":"secondary"}`,W.style.cssText="flex:1;min-width:0;min-height:40px",W.dataset.productPeriod=V,W.setAttribute("role","radio"),W.setAttribute("aria-checked",String(V===n.period)),W.textContent=G(V==="month"?i.monthLabel:i.yearLabel).value,W.disabled=!x.includes(V),W.tabIndex=d.mode==="editor"||W.disabled?-1:V===n.period||!x.includes(n.period)&&V===x[0]?0:-1,W.addEventListener("click",re=>{d.mode!=="editor"&&(re.stopPropagation(),O(V))}),W.addEventListener("keydown",re=>{if(d.mode==="editor"||!x.length)return;let de;["ArrowRight","ArrowDown"].includes(re.key)?de=(x.indexOf(V)+1)%x.length:["ArrowLeft","ArrowUp"].includes(re.key)?de=(x.indexOf(V)-1+x.length)%x.length:re.key==="Home"?de=0:re.key==="End"&&(de=x.length-1),de!==void 0&&(re.preventDefault(),O(x[de]))}),f.append(W)}t.append(f)}k[e.id]=s??"";let p=i?i.tiers.map(o=>({tier:o,id:i.assignments.find(f=>f.tierId===o.id&&f.period===n.period)?.productVersionId})):a.options.map(o=>({id:o,tier:void 0})),l=p.filter(o=>o.id&&a.options.includes(o.id)),u=i?document.createElement("div"):t;i&&(u.setAttribute("role","radiogroup"),u.setAttribute("aria-label",G(e.label).value),u.style.cssText="display:flex;flex-direction:column;gap:8px",t.append(u));let h=o=>{!o.id||!a.options.includes(o.id)||(i&&o.tier&&(n.tierId=o.tier.id),k[e.id]=o.id,ye(),Ae(e.id)?.querySelector(`[data-plan-id="${o.id}"]`)?.focus())};for(let o of p){let f=o.id?N.plans[o.id]:void 0,y=!!f&&a.options.includes(o.id),x=document.createElement("button");x.type="button",x.className="g-btn g-btn-secondary",x.style.cssText="width:100%;text-align:start;min-height:44px",x.setAttribute("role","radio");let O=i?o.tier?.id===n.tierId:o.id===s;x.setAttribute("aria-checked",String(O)),x.disabled=!y,x.tabIndex=d.mode==="editor"||!y?-1:O||!s&&o===l[0]?0:-1,o.id&&(x.dataset.planId=o.id),o.tier&&(x.dataset.productTier=o.tier.id);let V=o.id?N.nodes[e.id]?.byPlan?.[o.id]?.price:void 0;x.textContent=y?`${o.tier?.name??f.name} \xB7 ${V?.current??f.price}${V?.period??f.period}`:`${o.tier?.name??""} \xB7 ${G(i?.unavailableLabel??e.fallback).value}`,O&&(x.style.borderColor="var(--g-primary)",x.style.boxShadow="inset 0 0 0 1px var(--g-primary)",e.states?.selected&&Ne(x,{type:"text",id:e.id,text:e.label,variant:"body",style:e.states.selected},null)),x.addEventListener("click",W=>{d.mode==="editor"||!y||(W.stopPropagation(),h(o))}),x.addEventListener("keydown",W=>{if(d.mode==="editor"||!l.length)return;let re=l.indexOf(o),de;["ArrowRight","ArrowDown"].includes(W.key)?de=(re+1)%l.length:["ArrowLeft","ArrowUp"].includes(W.key)?de=(re-1+l.length)%l.length:W.key==="Home"?de=0:W.key==="End"&&(de=l.length-1),de!==void 0&&(W.preventDefault(),h(l[de]))}),u.append(x)}if(i&&!s){let o=document.createElement("p");o.setAttribute("role","status"),o.textContent=G(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=`${D[e.size]??0}px`;else if(e.type==="custom_html"){t=document.createElement("div"),t.className="g-custom";let a=t.attachShadow({mode:"open"}),i=e.html[ae],s=i&&i.trim()?i:e.html[R?.strings.defaultLocale??""]??"",n=Se(e.id);n?.html!==void 0&&(s=n.html),d.mode==="live"&&U&&(s=s.replace(/\{\{\s*variables\.([^{}]+?)\s*\}\}/g,(h,o)=>{let f=gt(o.trim());return f==null?"{{missing}}":String(typeof f=="object"?JSON.stringify(f):f).replace(/[&<>"']/g,y=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[y])})),s.includes("{{")&&d.mode==="live"&&(s=G(e.fallback??"").value.replace(/[&<>"']/g,o=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[o])),(n?.missing?.length||!n&&s.includes("{{"))&&d.mode==="editor"&&t.classList.add("g-missing"),!(i&&i.trim())&&d.mode==="editor"&&t.classList.add("g-missing");let p=document.createElement("style"),l="@media(prefers-reduced-motion:reduce){:host,:host::before,:host::after,*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}";p.textContent=`:host{display:block}${l}@layer indiana-accessibility{${l}}${e.css}`;let u=document.createElement("div");u.innerHTML=s,a.append(p,u);for(let h of u.querySelectorAll("img"))h.addEventListener("load",ze)}else return null;return e.style&&Ne(t,e,r),t.dataset.gNode=e.id,t.dataset.gLabel=Wt(e),fe.set(e.id,t),t}function qt(e,r){let t=r.interaction,a=[...e.children];e.setAttribute("aria-label",G(t.label).value);let i=U?.bindings.find(n=>n.componentId===r.id),s=i?{id:i.variable,source:i.componentId,required:i.required}:void 0;if(s){let n=document.createElement("p");n.className="g-text g-body",n.textContent=G(t.label).value+(s.required?" *":""),e.prepend(n),s.required&&e.setAttribute("aria-required","true")}if(t.type==="input"){let n=document.createElement("input");n.type=t.keyboard,n.maxLength=t.maxLength,n.autocomplete="off",n.setAttribute("aria-label",G(t.label).value),n.setAttribute("aria-required",String(!!s?.required)),n.value=typeof k[r.id]=="string"?String(k[r.id]):"",n.style.cssText="box-sizing:border-box;width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-surface);color:var(--g-text);font:inherit",n.disabled=d.mode!=="live",n.addEventListener("input",()=>{k[r.id]=n.value,Te(r.id,n.value)}),e.append(n);return}if(!(d.mode!=="live"||!a.length&&t.type!=="toggle")){if(t.type==="multiselect"){e.setAttribute("role","group"),e.dataset.gMin=String(t.min);let n=r.children.filter(u=>!u.hidden),p=new Set(Array.isArray(k[r.id])?k[r.id]:[]),l=()=>a.forEach((u,h)=>{let o=p.has(n[h].id);u.setAttribute("aria-checked",String(o)),u.setAttribute("aria-disabled",String(!o&&p.size>=t.max)),u.style.outline=o?"2px solid var(--g-primary)":"",u.style.outlineOffset="-2px"});a.forEach((u,h)=>{u.setAttribute("role","checkbox"),u.tabIndex=0,u.setAttribute("aria-label",u.textContent?.trim()||String(h+1)),u.style.cursor="pointer";let o=()=>{let f=n[h].id;if(p.has(f))p.delete(f);else if(p.size<t.max)p.add(f);else return;let y=n.filter(x=>p.has(x.id)).map(x=>x.id);k[r.id]=y,l(),Te(r.id,y)};u.addEventListener("click",f=>{f.stopPropagation(),o()}),u.addEventListener("keydown",f=>{[" ","Enter"].includes(f.key)&&(f.preventDefault(),f.stopPropagation(),o())})}),l();return}if(t.type==="select"){e.setAttribute("role","radiogroup");let n=r.children.filter(h=>!h.hidden),p=c(r)?r.interaction.pickerId:void 0,l=n.findIndex(h=>p?h.type==="stack"&&h.bind?.plan===k[p]:h.id===k[r.id]);!p&&l<0&&!s?.required&&(l=Math.min(t.defaultIndex,a.length-1));let u=(h,o=!1,f=!0)=>{if(p&&f&&h>=0){let y=n[h],x=y.type==="stack"?y.bind?.plan:void 0;if(!x||!N?.pickers[p]?.options.includes(x))return;k[r.id]=y.id,k[p]=x,ye(),o&&K.querySelector(`[data-g-node="${y.id}"]`)?.focus({preventScroll:!0});return}l=h,h>=0&&(k[r.id]=n[h].id),f&&h>=0&&Te(r.id,n[h].id),a.forEach((y,x)=>{y.setAttribute("aria-checked",String(x===h)),y.tabIndex=x===(h<0?0:h)?0:-1,y.style.cssText="";let O=n[x];O.type==="stack"&&(y.style.alignItems=M[O.align]??"stretch",y.style.justifyContent=m[O.justify]??"flex-start"),O.style&&Ne(y,O,r),x===h&&(t.selectedStyle&&Ne(y,{...O,style:t.selectedStyle},r),O.type==="stack"&&O.states?.selected&&Ne(y,{...O,style:O.states.selected},r),!t.selectedStyle?.border&&!(O.type==="stack"&&O.states?.selected?.border)&&(y.style.outline="2px solid var(--g-primary)",y.style.outlineOffset="-2px")),y.style.cursor="pointer"}),o&&h>=0&&a[h].focus()};a.forEach((h,o)=>{if(h.setAttribute("role","radio"),p){let f=n[o],y=f.type==="stack"?f.bind?.plan:void 0;h.setAttribute("aria-disabled",String(!y||!N?.pickers[p]?.options.includes(y)))}h.setAttribute("aria-label",h.textContent?.trim()||String(o+1)),h.addEventListener("click",f=>{f.stopPropagation(),u(o)}),h.addEventListener("keydown",f=>{let y=f.key;if(!["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"," ","Enter"].includes(y))return;f.preventDefault(),f.stopPropagation();let x=l<0?o:l;u(y==="Home"?0:y==="End"?a.length-1:y==="ArrowRight"||y==="ArrowDown"?(x+1)%a.length:y==="ArrowLeft"||y==="ArrowUp"?(x+a.length-1)%a.length:o,!0)})}),u(l,!1,!1)}else if(t.type==="tabs"){let n=r.children.filter(o=>!o.hidden),p=document.createElement("div");p.setAttribute("role","tablist"),p.setAttribute("aria-label",G(t.label).value),p.style.cssText="display:flex;gap:4px;padding:4px;border:1px solid var(--g-border);border-radius:12px";let l=a.map((o,f)=>{let y=document.createElement("button");return y.type="button",y.setAttribute("role","tab"),y.textContent=Ve(n[f])||String(f+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-${r.id}-${n[f].id}`,o.setAttribute("role","tabpanel"),y.setAttribute("aria-controls",o.id),p.append(y),y}),u=(o,f=!1,y=!1)=>{if(k[r.id]=n[o].id,y&&R&&Object.keys(S(R)).length){for(let x of Object.keys(S(R)))delete k[x];ye(),f&&K.querySelector(`[data-g-node="${r.id}"] [role="tab"][aria-selected="true"]`)?.focus({preventScroll:!0});return}a.forEach((x,O)=>{x.hidden=O!==o,l[O].setAttribute("aria-selected",String(O===o)),l[O].tabIndex=O===o?0:-1,l[O].style.background=O===o?"var(--g-primary)":"transparent",l[O].style.color=O===o?"var(--g-on-primary)":"var(--g-text)"}),f&&l[o].focus(),_e()};l.forEach((o,f)=>{o.addEventListener("click",y=>{y.stopPropagation(),u(f,!1,!0)}),o.addEventListener("keydown",y=>{["ArrowLeft","ArrowRight","Home","End"].includes(y.key)&&(y.preventDefault(),y.stopPropagation(),u(y.key==="Home"?0:y.key==="End"?a.length-1:(f+(y.key==="ArrowRight"?1:a.length-1))%a.length,!0,!0))})}),e.prepend(p);let h=n.findIndex(o=>o.id===k[r.id]);u(h>=0?h:Math.min(t.defaultIndex,a.length-1))}else if(t.type==="toggle"){let n=document.createElement("button");n.type="button",n.setAttribute("role","switch"),n.className="g-btn g-btn-secondary",n.style.cssText="display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--g-text)";let p=document.createElement("span");p.textContent=G(t.label).value;let l=document.createElement("span");l.setAttribute("aria-hidden","true"),l.style.cssText="position:relative;display:block;flex:none;width:44px;height:24px;border-radius:12px;background:var(--g-border)";let u=document.createElement("span");u.style.cssText="position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003",l.append(u),n.append(p,l);let h=(o,f=!1)=>{if(k[r.id]=o,f&&R&&Object.keys(S(R)).length){for(let y of Object.keys(S(R)))delete k[y];ye(),K.querySelector(`[data-g-node="${r.id}"] [role="switch"]`)?.focus({preventScroll:!0});return}n.setAttribute("aria-checked",String(o)),l.style.background=o?"var(--g-primary)":"var(--g-border)",u.style.left=o?"23px":"3px",u.style.background=o?"var(--g-on-primary)":"#FFFFFF",a.forEach((y,x)=>y.hidden=x!==(o?0:1)),_e()};n.addEventListener("click",o=>{o.stopPropagation(),h(!k[r.id],!0),Te(r.id,!!k[r.id])}),e.prepend(n),h(typeof k[r.id]=="boolean"?k[r.id]:t.defaultEnabled)}else{e.setAttribute("role","region"),e.setAttribute("aria-roledescription","carousel");let n=document.createElement("div");n.style.cssText="display:flex;align-items:center;justify-content:center;gap:10px";let p=document.createElement("button"),l=document.createElement("button"),u=document.createElement("span"),h=ae.startsWith("zh");p.textContent="\u2190",l.textContent="\u2192",p.setAttribute("aria-label",h?"\u4E0A\u4E00\u6761\u8BC4\u4EF7":"Previous review"),l.setAttribute("aria-label",h?"\u4E0B\u4E00\u6761\u8BC4\u4EF7":"Next review");for(let f of[p,l])f.type="button",f.className="g-btn g-btn-secondary",f.style.color="var(--g-text)";u.setAttribute("aria-live","polite");let o=f=>{se[r.id]=f,a.forEach((y,x)=>y.hidden=x!==f),u.textContent=`${f+1} / ${a.length}`,_e()};p.addEventListener("click",f=>{f.stopPropagation(),o((se[r.id]+a.length-1)%a.length)}),l.addEventListener("click",f=>{f.stopPropagation(),o((se[r.id]+1)%a.length)}),n.append(p,u,l),e.append(n),o(se[r.id]??0)}}}function Ve(e){if(e.hidden)return"";if(e.type==="text"&&(e.variant==="title"||e.variant==="heading"))return G(e.text).value;if(e.type==="stack")for(let r of e.children){let t=Ve(r);if(t)return t}return""}function bt(e){return e.type==="stack"&&!e.interaction&&!e.purchaseAction}function qe(e){let r=[],t=a=>{let i=N?.nodes[a.id];if(r.push(a.id,Se(a.id)),i?.picker&&r.push(k[i.picker],N?.pickers[i.picker]),a.type==="text")r.push(Re(a,"text",a.text));else if(a.type==="button")r.push(Re(a,"label",a.label));else if(a.type==="image")r.push(Re(a,"alt",a.alt));else if(a.type==="custom_html")r.push(U?.values,U?.answers);else if(a.type==="customer_data")r.push(J?.nodes[a.id]);else if(a.type==="plan_picker"){let s=N?.pickers[a.id];r.push(k[a.id],me[a.id],s,i,s?.options.map(n=>N?.plans[n]))}else a.type==="stack"&&(a.interaction?.type!=="input"&&r.push(k[a.id],se[a.id]),c(a)&&r.push(k[a.interaction.pickerId],N?.pickers[a.interaction.pickerId]),a.children.forEach(t))};return t(e),JSON.stringify(r)}function wt(e){e.hidden||(bt(e)?e.children.forEach(wt):ce.set(e.id,qe(e)))}function xt(e){let r=ne.get(e.id);r!==void 0&&clearInterval(r),ne.delete(e.id),e.type==="stack"&&e.children.forEach(xt)}function vt(e,r){if(e.hidden)return;if(bt(e)){e.children.forEach(i=>vt(i,e));return}if(ce.get(e.id)===qe(e))return;let t=Ae(e.id);if(!t)return;xt(e);let a=$e(e,r);a&&(t.replaceWith(a),ce.set(e.id,qe(e)))}function Kt(){let e=document.activeElement;if(!(e instanceof HTMLElement)||!K.contains(e))return;let r=e.closest("[data-g-node]");if(!r)return;let t=[];for(let a=e;a!==r;){let i=a.parentElement;if(!i)return;t.unshift(Array.prototype.indexOf.call(i.children,a)),a=i}return{active:e,nodeId:r.dataset.gNode,path:t,identity:["productPeriod","planId","productTier","gDataFocus"].map(a=>[a,e.dataset[a]]).find(([,a])=>a!==void 0),selection:e instanceof HTMLInputElement&&e.selectionStart!==null?{start:e.selectionStart,end:e.selectionEnd,direction:e.selectionDirection}:void 0}}function Gt(e){if(!e||e.active.isConnected)return;let r=Ae(e.nodeId);if(!r)return;let t=r;if(e.identity){let[a,i]=e.identity;t=[...r.querySelectorAll("*")].find(s=>s.dataset[a]===i)}else for(let a of e.path)t=t?.children[a];!t||t.hasAttribute("disabled")||(t.focus({preventScroll:!0}),e.selection&&t instanceof HTMLInputElement&&["text","search","tel","url","password"].includes(t.type)&&t.setSelectionRange(e.selection.start,e.selection.end,e.selection.direction??void 0))}function ye(e=!1){if(!R)return;let r=e?void 0:Kt(),t=R.pages.find(i=>i.id===(H??R.initialPageId))??R.pages[0];H=t.id,N&&Object.assign(k,I({...R,pages:[t]},ut(),N));let a=i=>{if(i.type==="stack"&&i.children.forEach(a),i.type!=="plan_picker"||!i.grouping)return;let s=i.grouping,n=N?.pickers[i.id],p=me[i.id];if(!p){let u=s.assignments.find(h=>h.productVersionId===(k[i.id]??n?.selected));p={period:u?.period??"month",tierId:u?.tierId??s.tiers[0].id},me[i.id]=p}let l=s.assignments.find(u=>u.tierId===p.tierId&&u.period===p.period);k[i.id]=l&&n?.options.includes(l.productVersionId)?l.productVersionId:""};if(a(t.root),e||Z!==t){ne.forEach(n=>clearInterval(n)),ne.clear(),ce.clear(),fe.clear(),K.style.cssText="",Ut(t.theme?{...R,theme:t.theme}:R);let i=ae.split("-")[0];document.documentElement.lang=ae,document.documentElement.dir=["ar","he","fa","ur"].includes(i)?"rtl":"ltr",K.dataset.gPresentation=R.presentation.type;let s=$e(t.root,null);K.replaceChildren(...s?[s]:[]),Z=t,wt(t.root)}else vt(t.root,null);if(Gt(r),K.dataset.gPage=t.id,d.mode==="live"&&X({type:"page",pageId:t.id}),B)_e();else{Ge(),Ke();let i=Math.ceil(K.getBoundingClientRect().height);B=!0,v=i,X({type:"rendered",height:i,label:Ve(t.root)||R.name})}}function _e(){let e=Math.ceil(K.getBoundingClientRect().height);e!==v&&(v=e,X({type:"resize",height:e})),Ge(),Ke()}function ze(){w||(w=!0,window.requestAnimationFrame(()=>{w=!1,_e()}))}function Ke(){if(d.mode!=="editor")return;let e=[];for(let t of K.querySelectorAll("[data-g-node]")){let a=t.getBoundingClientRect();!a.width||!a.height||e.push({id:t.dataset.gNode,x:a.x,y:a.y,width:a.width,height:a.height})}let r=JSON.stringify(e);r!==oe&&(oe=r,X({type:"layout",nodes:e}))}function Ae(e){if(!e||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(e))return null;let r=fe.get(e);return r?.isConnected?r:null}function St(e,r){let t=Ae(r);if(!t){e.style.display="none";return}let a=t.getBoundingClientRect();e.style.display="block",e.style.left=`${a.left+window.scrollX}px`,e.style.top=`${a.top+window.scrollY}px`,e.style.width=`${a.width}px`,e.style.height=`${a.height}px`,e.toggleAttribute("data-below",a.top<20),e.firstChild.textContent=t.dataset.gLabel??""}function Ge(){d.mode==="editor"&&(St(pe,Q),St(xe,he&&he!==Q?he:null))}function He(e){for(let r of e.composedPath()){if(r instanceof HTMLElement&&r.dataset.gNode)return r.dataset.gNode;if(r===K)break}return null}function Yt(e){if(e.isTrusted){if(d.mode==="editor"){e.preventDefault(),e.stopPropagation(),X({type:"select",id:He(e)});return}for(let r of e.composedPath()){if(!(r instanceof HTMLElement))continue;let t=r.dataset.gAction??(r.tagName==="BUTTON"?r.getAttribute("data-grow-action"):null);if(t&&!r.disabled){e.preventDefault();let a=R?.actions.find(i=>i.id===t);if(a?.type==="navigate"){if(H=a.pageId,R)for(let i of Object.keys(S(R)))delete k[i];ye(),K.querySelector("h1,h2")?.focus({preventScroll:!0});return}X({type:"action",actionId:t,nodeId:He(e)??void 0,...Object.keys(k).length?{selection:ut()}:{},...U?{answers:ht()}:{}});return}if(r===K)return}}}function kt(e){let r=e;if(!(!r||r.channel!==d.channel))try{if(r.type==="render"){let t=d.document??r.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(a=>Object.hasOwn(a,"source"))||t.actions?.some(a=>!["event","close","open_url","claim_offer",...t.surface==="paywall"?["navigate"]:[]].includes(a.type)))throw new Error("Unsupported screen document; use the current Funnel runtime for flows");R=t,H=null,ae=String(r.locale),C=new Set,U=r.serverInput,k=$(),me=$(),N=r.capabilities,J=r.customerData,Ie.clear();for(let[a,i]of Object.entries(N?.pickers??{}))i.selected&&(k[a]=i.selected);if(r.selection&&typeof r.selection=="object"&&!Array.isArray(r.selection)){let a=r.selection,i=n=>{let p=a[n.id];if(n.type==="plan_picker"&&typeof p=="string"&&n.planIds?.includes(p)&&(k[n.id]=p),n.type==="stack"){if(n.interaction?.type==="toggle"&&typeof p=="boolean"&&(k[n.id]=p),n.interaction&&["select","tabs"].includes(n.interaction.type)&&typeof p=="string"&&n.children.some(l=>l.id===p)&&(k[n.id]=p),c(n)){let l=a[n.interaction.pickerId];typeof l=="string"&&n.children.some(u=>u.type==="stack"&&u.bind?.plan===l)&&(k[n.interaction.pickerId]=l)}n.children.forEach(i)}};R.pages.forEach(n=>i(n.root));let s=a.__page;typeof s=="string"&&R.pages.some(n=>n.id===s)&&(H=s)}for(let a of U?.bindings??[])Object.hasOwn(U.answers,a.variable)&&(k[a.componentId]=U.answers[a.variable],C.add(a.componentId));se=$(),ae=String(r.locale),ye(!0)}else if(r.type==="capabilities"){N=r.capabilities;for(let[t,a]of Object.entries(N.pickers))!me[t]&&k[t]===void 0&&(k[t]=a.selected??"");ye()}else r.type==="customer-data"?Vt(r.data):r.type==="restore-action-focus"&&d.mode==="live"?[...K.querySelectorAll("button[data-g-node]")].find(t=>t.dataset.gNode===r.nodeId&&!t.disabled)?.focus({preventScroll:!0}):r.type==="highlight"&&d.mode==="editor"&&(he=r.hoverId??null,Q=r.selectedId??null,Ge())}catch(t){X({type:"error",message:t instanceof Error?t.message:"render failed"})}}let Et=document.createElement("style");if(Et.textContent=b,document.head.append(Et),document.body.append(K),d.mode==="editor"){document.body.dataset.gEditor="",document.body.append(xe,pe),document.addEventListener("mouseover",r=>{let t=He(r);t!==Ee&&(Ee=t,X({type:"hover",id:t}))}),document.documentElement.addEventListener("mouseleave",()=>{Ee!==null&&(Ee=null,X({type:"hover",id:null}))}),document.addEventListener("dblclick",r=>{let t=He(r);t&&r.isTrusted&&X({type:"edit",id:t})}),document.addEventListener("click",r=>{K.contains(r.target)||X({type:"select",id:null})});let e=(r,t)=>{if(!r.isTrusted)return;let a=r.metaKey||r.ctrlKey,i=r.key;(i===" "||t==="down"&&(["Delete","Backspace","Escape"].includes(i)||a&&/^[zysdcvg0=+-]$/i.test(i)))&&((a||i===" ")&&r.preventDefault(),X({type:"key",key:{key:i,phase:t,meta:r.metaKey,ctrl:r.ctrlKey,shift:r.shiftKey,alt:r.altKey}}))};document.addEventListener("keydown",r=>e(r,"down")),document.addEventListener("keyup",r=>e(r,"up")),document.addEventListener("wheel",r=>{!r.isTrusted||!(r.ctrlKey||r.metaKey)||(r.preventDefault(),X({type:"zoom",delta:r.deltaY}))},{passive:!1})}K.addEventListener("click",Yt),document.addEventListener("keydown",e=>{e.key==="Escape"&&e.isTrusted&&X({type:"escape"})}),typeof ResizeObserver=="function"&&new ResizeObserver(ze).observe(K),window.addEventListener("resize",ze),d.mode==="editor"&&window.addEventListener("scroll",Ke),window.addEventListener("message",e=>{e.source===A&&kt(e.data)}),E.__indianaReceive=kt,X(d.document?{type:"ready",document:d.document}:{type:"ready"})}var ar=`(${dt.toString()})(JSON.parse(document.getElementById("grow-renderer-boot").textContent))`;function jt(d,c){let S=JSON.stringify(d).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-${c}'; 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">${S}<\/script><script nonce="${c}">${ar}<\/script></body></html>`}function nr(){return`(() => {
|
|
172
172
|
try {
|
|
173
173
|
const input = JSON.parse(decodeURIComponent(location.hash.slice(1)));
|
|
174
174
|
if (!input || !/^[a-f0-9-]{36}$/.test(input.channel) || input.mode !== "live" || !Number.isInteger(input.hostDepth) || input.hostDepth < 1 || input.hostDepth > 16) return;
|
|
@@ -177,15 +177,15 @@ body{font-family:var(--g-font);color:var(--g-text);-webkit-font-smoothing:antial
|
|
|
177
177
|
const data = JSON.parse(document.getElementById("indiana-screen").textContent);
|
|
178
178
|
if (!data || typeof data.document !== "object") return;
|
|
179
179
|
const boot = { channel: input.channel, parentOrigin: origin.origin, hostDepth: input.hostDepth, mode: "live", document: data.document };
|
|
180
|
-
(${
|
|
180
|
+
(${dt.toString()})(boot);
|
|
181
181
|
} catch { /* No valid host bridge: leave the published screen inert. */ }
|
|
182
|
-
})();`}function
|
|
182
|
+
})();`}function ir(){return`(() => {
|
|
183
183
|
try {
|
|
184
184
|
const input = JSON.parse(decodeURIComponent(location.hash.slice(1)));
|
|
185
185
|
if (!input || !/^[a-f0-9-]{36}$/.test(input.channel) || input.mode !== "live" || !Number.isInteger(input.hostDepth) || input.hostDepth < 1 || input.hostDepth > 16) return;
|
|
186
186
|
const origin = new URL(input.parentOrigin);
|
|
187
187
|
if (!["https:", "http:"].includes(origin.protocol) || origin.origin !== input.parentOrigin) return;
|
|
188
188
|
const boot = { channel: input.channel, parentOrigin: origin.origin, hostDepth: input.hostDepth, mode: "live" };
|
|
189
|
-
(${
|
|
189
|
+
(${dt.toString()})(boot);
|
|
190
190
|
} catch { /* No valid host bridge: leave the public shell empty. */ }
|
|
191
|
-
})();`}function Ye(c){return Object.assign(new Error(`Web View renderer did not start (${c.phase} timeout)`),{name:"RendererStartupError",code:"RENDERER_STARTUP_TIMEOUT",details:c})}function Xe(c,p,A){let I=(()=>{let C=c.defaultView;if(!C)throw new Error("Renderer host has no browser window");return C})(),h=A?.hasAttribute("src")?"navigation":"handshake",z=h==="navigation"?1e4:5e3,T=0,P=0,S,f=!1;function M(){if(S===void 0)return;I.clearTimeout(S),S=void 0;let C=Math.max(0,performance.now()-P);T+=C,z=Math.max(0,z-C)}function R(){f||(f=!0,M(),c.removeEventListener("visibilitychange",F),A?.removeEventListener("load",m))}function F(){if(!f){if(c.visibilityState==="hidden"){M();return}S===void 0&&(P=performance.now(),S=I.setTimeout(()=>{T+=Math.max(0,performance.now()-P),S=void 0,R(),p({phase:h,visibleMs:Math.round(T)})},z))}}function B(C){f||h===C||h==="render"||(M(),h=C,z=5e3,F())}function m(){h==="navigation"&&B("handshake")}return A?.addEventListener("load",m,{once:!0}),c.addEventListener("visibilitychange",F),F(),Object.assign(R,{ready:()=>B("render")})}function aa(c,p){if(!/^(0|[1-9]\d*)(\.\d{1,12})?$/.test(c))throw new At("INVALID_RESPONSE","Invalid credit amount");let[A,I]=c.split("."),h=new Intl.NumberFormat(p),z=h.formatToParts(1.1).find(P=>P.type==="decimal")?.value??".",T=Array.from({length:10},(P,S)=>new Intl.NumberFormat(p,{useGrouping:!1}).format(S));return h.format(BigInt(A))+(I?z+I.replace(/\d/g,P=>T[Number(P)]):"")}var Qe=new WeakMap,ra=new WeakMap;function na(c){let p=window.open("about:blank","_blank");if(!p)throw new Error("External URL window was blocked");try{p.opener=null;let A=p.document.createElement("a");A.href=c,A.target="_self",A.rel="noopener noreferrer",A.referrerPolicy="no-referrer",p.document.body.append(A),A.click()}catch(A){throw p.close(),A}}function ia(){return typeof navigator>"u"?[]:[...navigator.languages??[],navigator.language].filter(Boolean)}function Tt(c,p,A,I,h=document,z){let T=crypto.randomUUID(),P=crypto.randomUUID().replaceAll("-",""),S=h.createElement("iframe");S.title=p,S.setAttribute("sandbox","allow-scripts"),S.referrerPolicy="no-referrer";let f=h.defaultView,M=1;for(;f!==window&&M<16;)f=f.parent,M++;if(f!==window)throw new Error("Renderer container must belong to this host or a descendant window");let R={channel:T,parentOrigin:window.origin,hostDepth:M,mode:c,...c==="editor"?{editorMessages:A}:{}};if(z){if(c!=="live")throw new Error("Published screen renders only support live rendering");let m=new URL(z);if(m.username||m.password||m.search||m.hash||!vt(m.pathname)||m.protocol!=="https:"&&!(m.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(m.hostname)))throw new Error("Invalid published screen render URL");m.hash=encodeURIComponent(JSON.stringify(R)),S.src=m.href}else if(I){if(c!=="live")throw new Error("Hosted Web Views only support live rendering");let m=new URL(I);if(m.username||m.password||m.search||m.hash||!/^\/web-view\/renderer\/[a-f0-9]{64}$/.test(m.pathname)||m.protocol!=="https:"&&!(m.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(m.hostname)))throw new Error("Invalid hosted renderer URL");m.hash=encodeURIComponent(JSON.stringify(R)),S.src=m.href}else S.srcdoc=Mt(R,P);return{frame:S,post:m=>S.contentWindow?.postMessage({...m,channel:T},"*"),accept:m=>m.source===S.contentWindow&&m.origin==="null"&&m.data&&typeof m.data=="object"&&"channel"in m.data&&"type"in m.data&&typeof m.data.type=="string"&&m.data.channel===T?m.data:null}}function Ea(c,p={}){let A=Pe(c,window);p.capabilities=Ne(p.capabilities,A,window);let I=Je(A,[p.locale,...ia()]),h=Ve(A,I);if(Qe.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 z=document.activeElement,T=document.createElement("div");T.dataset.indianaPopup="";let P=T.attachShadow({mode:"open"}),S=document.createElement("style");S.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 f=document.createElement("dialog");f.lang=I,f.dir=xt(I)?"rtl":"ltr",f.setAttribute("aria-label",h.name),f.dataset.presentation=h.presentation.type,f.style.width=h.presentation.type==="fullscreen"?"100vw":`${wt[h.presentation.size]}px`,h.presentation.type==="fullscreen"?f.style.cssText+=";max-width:100vw;max-height:100dvh;height:100dvh;margin:0;border-radius:0":h.presentation.type==="sheet"&&(f.style.cssText+=";margin:auto auto 0;max-width:100vw;max-height:100dvh;border-radius:14px 14px 0 0"),f.style.background=h.theme.background;let M=document.createElement("button");M.type="button",M.textContent="\xD7",M.setAttribute("aria-label",It(I));let{frame:R,post:F,accept:B}=Tt("live",h.name,void 0,p.rendererUrl),m=!1,C=!1,D=Z=>{h.presentation.type!=="fullscreen"&&(f.style.height=`min(${Math.max(Z,40)}px, calc(100dvh - ${h.presentation.type==="sheet"?0:32}px))`)};function U(Z){try{Promise.resolve(p.onEvent?.(Z)).catch(O=>K(p.onError,O))}catch(O){K(p.onError,O)}}function de(){return m?!1:(m=!0,ne(),window.removeEventListener("message",se),f.close(),T.remove(),Qe.delete(document),z instanceof HTMLElement&&z.isConnected&&z.focus({preventScroll:!0}),!0)}function H(Z){de()&&U({type:"closed",reason:Z})}function se(Z){let O=m?null:B(Z);if(O){if(O.type==="ready")ne.ready(),F({type:"render",doc:h,locale:I,capabilities:p.capabilities});else if(O.type==="rendered"&&!C)C=!0,ne(),D(O.height),O.label&&f.setAttribute("aria-label",O.label),f.showModal(),M.focus(),U({type:"shown"});else if(O.type==="resize"&&C)D(O.height);else if(O.type==="copy"&&C){let G=ve(h,O.nodeId),E=yt(p.capabilities,O.nodeId);G?.type==="coupon_code"&&E?.code&&navigator.clipboard?.writeText(E.code).catch(()=>{})}else if(O.type==="escape"&&C)H("escape");else if(O.type==="action"&&C&&typeof O.actionId=="string"){let G=h.actions.find(E=>E.id===O.actionId);if(!G)return;if(G.close&&de(),U({type:"action",actionId:G.id,...typeof O.nodeId=="string"&&ve(h,O.nodeId)?{nodeId:O.nodeId}:{},name:G.event,properties:{...G.properties},...O.selection?{selection:Ke(h,O.selection,p.capabilities)}:{}}),G.type==="open_url")try{na(G.url)}catch(E){K(p.onError,E)}G.close&&U({type:"closed",reason:"action"})}}}let ne=Xe(document,Z=>{K(p.onError,Ye(Z)),H("timeout")},R),pe={destroy:()=>H("destroy"),updateCapabilities:Z=>{let O=Ne(Z,h,window);p.capabilities=O,F({type:"capabilities",capabilities:O})}};return ra.set(pe,Z=>{m||F({type:"restore-action-focus",nodeId:Z})}),M.addEventListener("click",()=>H("close_button")),f.addEventListener("cancel",Z=>{Z.preventDefault(),H("escape")}),f.append(M,R),P.append(S,f),window.addEventListener("message",se),Qe.set(document,pe),document.body.append(T),pe}function Aa(c,p={}){let A=(()=>{let _=c.ownerDocument.defaultView;if(!_)throw new Error("Preview container has no browser window");return _})(),I=p.mode??"editor",{frame:h,post:z,accept:T}=Tt(I,p.title??"\u5F39\u7A97\u9884\u89C8",p.editorMessages,p.rendererUrl,c.ownerDocument,p.screenUrl);h.style.cssText="display:block;border:0;width:100%;height:0";let P=!1,S=!1,f=null,M=null,R=!1,F,B,m=new Promise((_,v)=>{F=_,B=v});m.catch(()=>{});let C=Xe(c.ownerDocument,_=>{if(R||S)return;let v=Ye(_);B(v),K(p.onError,v.message),D()},h);function D(){R||(R=!0,C(),P||B(new Error("Web View mount cancelled")),window.removeEventListener("message",fe),P=!1,f=null,M=null,U=null,H=null,se=null,de=void 0,pe.clear(),h.remove(),h.removeAttribute("srcdoc"),h.removeAttribute("src"))}let U=null,de,H=null,se=null,ne="modal",pe=new Set,Z=p.viewportHeight,O=0,G=_=>{O=_;let v=Z,k=v?ne==="fullscreen"?v:Math.max(1,Math.min(_,v-(ne==="sheet"?0:32))):_;h.style.height=`${k}px`,K(p.onResize,k)};function E(_){if(!de)return;let v=kt.safeParse(_);if(!v.success||Object.keys(v.data).some(k=>!de.bindings.some(ae=>ae.key===k))){K(p.onError,"Invalid current-screen answers");return}return v.data}function fe(_){let v=R?null:T(_);if(v)if(v.type==="ready"){if(p.screenUrl){let k=_e.safeParse(v.document);if(!k.success){K(p.onError,"Invalid published screen render"),D();return}H=Pe(k.data,A),h.title=H.name}if(P=!0,C.ready(),F(),se){let[,k,ae]=se;se=null,ue.update(null,k,ae)}f&&z(f),M&&z(M)}else if(v.type==="rendered"||v.type==="resize")G(v.height),v.type==="rendered"&&(S=!0,C(),K(p.onRendered));else if(v.type==="layout"&&I==="editor")Array.isArray(v.nodes)&&v.nodes.length<=(U?Re.nodes:0)&&v.nodes.every(k=>k&&typeof k.id=="string"&&/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(k.id)&&[k.x,k.y,k.width,k.height].every(ae=>typeof ae=="number"&&Number.isFinite(ae))&&k.width>0&&k.height>0)&&K(p.onLayout,v.nodes);else if(v.type==="page"&&I==="live"&&pe.has(v.pageId))K(p.onPageChange,v.pageId);else if(v.type==="escape"&&I==="live")K(p.onEscape);else if(v.type==="hover")K(p.onHover,v.id);else if(v.type==="select")K(p.onSelect,v.id);else if(v.type==="edit")K(p.onEdit,v.id);else if(v.type==="key"&&I==="editor"){let k=v.key;k&&typeof k.key=="string"&&k.key.length<=16&&(k.phase==="down"||k.phase==="up")&&[k.meta,k.ctrl,k.shift,k.alt].every(ae=>typeof ae=="boolean")&&K(p.onKey,{key:k.key,phase:k.phase,meta:k.meta,ctrl:k.ctrl,shift:k.shift,alt:k.alt})}else if(v.type==="zoom"&&I==="editor"&&typeof v.delta=="number"&&Number.isFinite(v.delta))K(p.onZoom,v.delta);else if(v.type==="customer-data-intent"&&I==="live"&&U){let k=bt.safeParse(v.intent);k.success&&ve(U,k.data.nodeId)?.type==="customer_data"&&K(p.onCustomerDataIntent,k.data)}else if(v.type==="answers"&&I==="live"&&de){let k=E(v.answers);k&&K(p.onAnswers,k)}else if(v.type==="action"&&U?.actions.some(k=>k.id===v.actionId)){let k=E(v.answers);if(de&&!k)return;K(p.onAction,v.actionId,Ke(U,v.selection,f?.type==="render"?f.capabilities:void 0),k)}else v.type==="error"&&K(p.onError,v.message)}window.addEventListener("message",fe),c.append(h);let ue={ready:m,get document(){return U},updateCustomerData(_){if(R||!U)return;let v=We.parse(_),k={nodes:Object.fromEntries(Object.entries(v.nodes).filter(([ae,he])=>{let X=ve(U,ae);return X?.type==="customer_data"&&X.data.source===he.source}))};f?.type==="render"&&(f.customerData=k),P&&z({type:"customer-data",data:k})},updateCapabilities(_){if(R||!U)return;let v=Ne(_,U,A);v&&(f?.type==="render"&&JSON.stringify(f.capabilities)===JSON.stringify(v)||(f?.type==="render"&&(f.capabilities=v),P&&z({type:"capabilities",capabilities:v})))},update(_,v,k){if(R)return;if(p.screenUrl?_!==null:_===null){K(p.onError,"A published screen render takes its document from the frame");return}if(_===null&&!H){se=[null,v,k];return}let ae=_??H,he;try{let X=_?Pe(ae,A):ae,Ae=I==="live"&&!!k?.serverInput,ke=Ae?Je(X,[v]):v,J=Ae?Ve(X,ke):X,ge=k?.serverInput?Et.parse(k.serverInput):void 0;if(ge&&(X.surface!=="paywall"&&X.pages.length!==1||X.actions.some(ce=>ce.type!=="event"&&!(X.surface==="paywall"&&ce.type==="navigate")||ce.close)||ge.bindings.some(ce=>{let Y=ve(X,ce.componentId);return Y?.type!=="stack"||!Y.interaction||!["input","multiselect","select","tabs","toggle"].includes(Y.interaction.type)})))throw new Error("Current Funnel input requires one screen with bound interactive controls and output actions");U=J,de=ge,ne=X.presentation.type,pe=new Set(X.pages.map(ce=>ce.id)),he={type:"render",...p.screenUrl?{}:{doc:J},...ge?{serverInput:ge}:{},locale:ke,parameters:St.parse(k?.parameters??{}),capabilities:Ne(k?.capabilities,X,A),...k?.selection?{selection:k.selection}:{},customerData:k?.customerData?We.parse(k.customerData):void 0},ne==="fullscreen"&&Z&&G(Z)}catch(X){K(p.onError,X instanceof Error?X.message:"\u5185\u5BB9\u4E0D\u6B63\u786E");return}f=he,P&&z(he)},resizeViewport(_){R||!Number.isFinite(_)||_<=0||(Z=_,G(O))},highlight(_,v){R||(M={type:"highlight",hoverId:_,selectedId:v},P&&z(M))},destroy:D};return ue}export{aa as formatCustomerDecimal,ta as hostedRendererScript,ea as hostedScreenScript,Xt as inspectCustomHtml,Aa as mountScreenPreview,Pe as prepareScreen,Yt as sanitizeCustomHtml,Ea as showPopup};
|
|
191
|
+
})();`}function ct(d){return Object.assign(new Error(`Web View renderer did not start (${d.phase} timeout)`),{name:"RendererStartupError",code:"RENDERER_STARTUP_TIMEOUT",details:d})}function lt(d,c,S){let I=(()=>{let $=d.defaultView;if(!$)throw new Error("Renderer host has no browser window");return $})(),A=S?.hasAttribute("src")?"navigation":"handshake",E=A==="navigation"?1e4:5e3,D=0,j=0,L,M=!1;function m(){if(L===void 0)return;I.clearTimeout(L),L=void 0;let $=Math.max(0,performance.now()-j);D+=$,E=Math.max(0,E-$)}function P(){M||(M=!0,m(),d.removeEventListener("visibilitychange",T),S?.removeEventListener("load",b))}function T(){if(!M){if(d.visibilityState==="hidden"){m();return}L===void 0&&(j=performance.now(),L=I.setTimeout(()=>{D+=Math.max(0,performance.now()-j),L=void 0,P(),c({phase:A,visibleMs:Math.round(D)})},E))}}function F($){M||A===$||A==="render"||(m(),A=$,E=5e3,T())}function b(){A==="navigation"&&F("handshake")}return S?.addEventListener("load",b,{once:!0}),d.addEventListener("visibilitychange",T),T(),Object.assign(P,{ready:()=>F("render")})}function sr(d,c){if(!/^(0|[1-9]\d*)(\.\d{1,12})?$/.test(d))throw new Dt("INVALID_RESPONSE","Invalid credit amount");let[S,I]=d.split("."),A=new Intl.NumberFormat(c),E=A.formatToParts(1.1).find(j=>j.type==="decimal")?.value??".",D=Array.from({length:10},(j,L)=>new Intl.NumberFormat(c,{useGrouping:!1}).format(L));return A.format(BigInt(S))+(I?E+I.replace(/\d/g,j=>D[Number(j)]):"")}var pt=new WeakMap,or=new WeakMap;function dr(d){let c=window.open("about:blank","_blank");if(!c)throw new Error("External URL window was blocked");try{c.opener=null;let S=c.document.createElement("a");S.href=d,S.target="_self",S.rel="noopener noreferrer",S.referrerPolicy="no-referrer",c.document.body.append(S),S.click()}catch(S){throw c.close(),S}}function cr(){return typeof navigator>"u"?[]:[...navigator.languages??[],navigator.language].filter(Boolean)}function Ft(d,c,S,I,A=document,E){let D=crypto.randomUUID(),j=crypto.randomUUID().replaceAll("-",""),L=A.createElement("iframe");L.title=c,L.setAttribute("sandbox","allow-scripts"),L.referrerPolicy="no-referrer";let M=A.defaultView,m=1;for(;M!==window&&m<16;)M=M.parent,m++;if(M!==window)throw new Error("Renderer container must belong to this host or a descendant window");let P={channel:D,parentOrigin:window.origin,hostDepth:m,mode:d,...d==="editor"?{editorMessages:S}:{}};if(E){if(d!=="live")throw new Error("Published screen renders only support live rendering");let b=new URL(E);if(b.username||b.password||b.search||b.hash||!et(b.pathname)||b.protocol!=="https:"&&!(b.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(b.hostname)))throw new Error("Invalid published screen render URL");b.hash=encodeURIComponent(JSON.stringify(P)),L.src=b.href}else if(I){if(d!=="live")throw new Error("Hosted Web Views only support live rendering");let b=new URL(I);if(b.username||b.password||b.search||b.hash||!/^\/web-view\/renderer\/[a-f0-9]{64}$/.test(b.pathname)||b.protocol!=="https:"&&!(b.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(b.hostname)))throw new Error("Invalid hosted renderer URL");b.hash=encodeURIComponent(JSON.stringify(P)),L.src=b.href}else L.srcdoc=jt(P,j);return{frame:L,post:b=>L.contentWindow?.postMessage({...b,channel:D},"*"),accept:b=>b.source===L.contentWindow&&b.origin==="null"&&b.data&&typeof b.data=="object"&&"channel"in b.data&&"type"in b.data&&typeof b.data.type=="string"&&b.data.channel===D?b.data:null}}function $r(d,c={}){let S=Me(d,window),I=ot(window);c.capabilities=I.prepare(c.capabilities,S);let A=Ue(S,[c.locale,...cr()]),E=We(S,A);if(pt.has(document))throw new Error("\u5DF2\u6709\u5F39\u7A97\u6B63\u5728\u5C55\u793A\uFF0C\u8BF7\u5148\u5173\u95ED\u3002");if(!document.body||!["https:","http:"].includes(location.protocol))throw new Error("\u5F39\u7A97\u9700\u8981 HTTP(S) \u9875\u9762\u3002");let D=document.activeElement,j=document.createElement("div");j.dataset.indianaPopup="";let L=j.attachShadow({mode:"open"}),M=document.createElement("style");M.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 m=document.createElement("dialog");m.lang=A,m.dir=Qe(A)?"rtl":"ltr",m.setAttribute("aria-label",E.name),m.dataset.presentation=E.presentation.type,m.style.width=E.presentation.type==="fullscreen"?"100vw":`${Xe[E.presentation.size]}px`,E.presentation.type==="fullscreen"?m.style.cssText+=";max-width:100vw;max-height:100dvh;height:100dvh;margin:0;border-radius:0":E.presentation.type==="sheet"&&(m.style.cssText+=";margin:auto auto 0;max-width:100vw;max-height:100dvh;border-radius:14px 14px 0 0"),m.style.background=E.theme.background;let P=document.createElement("button");P.type="button",P.textContent="\xD7",P.setAttribute("aria-label",Rt(A));let{frame:T,post:F,accept:b}=Ft("live",E.name,void 0,c.rendererUrl),$=!1,R=!1,U=Z=>{E.presentation.type!=="fullscreen"&&(m.style.height=`min(${Math.max(Z,40)}px, calc(100dvh - ${E.presentation.type==="sheet"?0:32}px))`)};function C(Z){try{Promise.resolve(c.onEvent?.(Z)).catch(H=>Y(c.onError,H))}catch(H){Y(c.onError,H)}}function N(){return $?!1:($=!0,I.destroy(),ce(),window.removeEventListener("message",ne),m.close(),j.remove(),pt.delete(document),D instanceof HTMLElement&&D.isConnected&&D.focus({preventScroll:!0}),!0)}function J(Z){N()&&C({type:"closed",reason:Z})}function ne(Z){let H=$?null:b(Z);if(H){if(H.type==="ready")ce.ready(),F({type:"render",doc:E,locale:A,capabilities:c.capabilities});else if(H.type==="rendered"&&!R)R=!0,ce(),U(H.height),H.label&&m.setAttribute("aria-label",H.label),m.showModal(),P.focus(),C({type:"shown"});else if(H.type==="resize"&&R)U(H.height);else if(H.type==="copy"&&R){let k=we(E,H.nodeId),se=Ye(c.capabilities,H.nodeId);k?.type==="coupon_code"&&se?.code&&navigator.clipboard?.writeText(se.code).catch(()=>{})}else if(H.type==="escape"&&R)J("escape");else if(H.type==="action"&&R&&typeof H.actionId=="string"){let k=E.actions.find(se=>se.id===H.actionId);if(!k)return;if(k.close&&N(),C({type:"action",actionId:k.id,...typeof H.nodeId=="string"&&we(E,H.nodeId)?{nodeId:H.nodeId}:{},name:k.event,properties:{...k.properties},...H.selection?{selection:Be(E,H.selection,c.capabilities)}:{}}),k.type==="open_url")try{dr(k.url)}catch(se){Y(c.onError,se)}k.close&&C({type:"closed",reason:"action"})}}}let ce=lt(document,Z=>{Y(c.onError,ct(Z)),J("timeout")},T),fe={destroy:()=>J("destroy"),updateCapabilities:Z=>{if($)return;let H=I.prepare(Z,E);JSON.stringify(c.capabilities)!==JSON.stringify(H)&&(c.capabilities=H,F({type:"capabilities",capabilities:H}))}};return or.set(fe,Z=>{$||F({type:"restore-action-focus",nodeId:Z})}),P.addEventListener("click",()=>J("close_button")),m.addEventListener("cancel",Z=>{Z.preventDefault(),J("escape")}),m.append(P,T),L.append(M,m),window.addEventListener("message",ne),pt.set(document,fe),document.body.append(j),fe}function zr(d,c={}){let S=(()=>{let B=d.ownerDocument.defaultView;if(!B)throw new Error("Preview container has no browser window");return B})(),I=c.mode??"editor",A=ot(S),{frame:E,post:D,accept:j}=Ft(I,c.title??"\u5F39\u7A97\u9884\u89C8",c.editorMessages,c.rendererUrl,d.ownerDocument,c.screenUrl);E.style.cssText="display:block;border:0;width:100%;height:0";let L=!1,M=!1,m=null,P=null,T=!1,F,b,$=new Promise((B,v)=>{F=B,b=v});$.catch(()=>{});let R=lt(d.ownerDocument,B=>{if(T||M)return;let v=ct(B);b(v),Y(c.onError,v.message),U()},E);function U(){T||(T=!0,A.destroy(),R(),L||b(new Error("Web View mount cancelled")),window.removeEventListener("message",me),L=!1,m=null,P=null,C=null,J=null,ne=null,N=void 0,fe.clear(),E.remove(),E.removeAttribute("srcdoc"),E.removeAttribute("src"))}let C=null,N,J=null,ne=null,ce="modal",fe=new Set,Z=c.viewportHeight,H=0,k=B=>{H=B;let v=Z,w=v?ce==="fullscreen"?v:Math.max(1,Math.min(B,v-(ce==="sheet"?0:32))):B;E.style.height=`${w}px`,Y(c.onResize,w)};function se(B){if(!N)return;let v=tt.safeParse(B);if(!v.success||Object.keys(v.data).some(w=>!N.bindings.some(oe=>oe.variable===w))){Y(c.onError,"Invalid current-screen answers");return}return v.data}function me(B){let v=T?null:j(B);if(v)if(v.type==="ready"){if(c.screenUrl){let w=Ce.safeParse(v.document);if(!w.success){Y(c.onError,"Invalid published screen render"),U();return}J=Me(w.data,S),E.title=J.name}if(L=!0,R.ready(),F(),ne){let[,w,oe]=ne;ne=null,ae.update(null,w,oe)}else m&&D(m);P&&D(P)}else if(v.type==="rendered"||v.type==="resize")k(v.height),v.type==="rendered"&&(M=!0,R(),Y(c.onRendered));else if(v.type==="layout"&&I==="editor")Array.isArray(v.nodes)&&v.nodes.length<=(C?Le.nodes:0)&&v.nodes.every(w=>w&&typeof w.id=="string"&&/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(w.id)&&[w.x,w.y,w.width,w.height].every(oe=>typeof oe=="number"&&Number.isFinite(oe))&&w.width>0&&w.height>0)&&Y(c.onLayout,v.nodes);else if(v.type==="page"&&I==="live"&&fe.has(v.pageId))Y(c.onPageChange,v.pageId);else if(v.type==="escape"&&I==="live")Y(c.onEscape);else if(v.type==="hover")Y(c.onHover,v.id);else if(v.type==="select")Y(c.onSelect,v.id);else if(v.type==="edit")Y(c.onEdit,v.id);else if(v.type==="key"&&I==="editor"){let w=v.key;w&&typeof w.key=="string"&&w.key.length<=16&&(w.phase==="down"||w.phase==="up")&&[w.meta,w.ctrl,w.shift,w.alt].every(oe=>typeof oe=="boolean")&&Y(c.onKey,{key:w.key,phase:w.phase,meta:w.meta,ctrl:w.ctrl,shift:w.shift,alt:w.alt})}else if(v.type==="zoom"&&I==="editor"&&typeof v.delta=="number"&&Number.isFinite(v.delta))Y(c.onZoom,v.delta);else if(v.type==="customer-data-intent"&&I==="live"&&C){let w=Ze.safeParse(v.intent);w.success&&we(C,w.data.nodeId)?.type==="customer_data"&&Y(c.onCustomerDataIntent,w.data)}else if(v.type==="answers"&&I==="live"&&N){let w=se(v.answers);w&&Y(c.onAnswers,w)}else if(v.type==="action"&&C?.actions.some(w=>w.id===v.actionId)){let w=se(v.answers);if(N&&!w)return;Y(c.onAction,v.actionId,Be(C,v.selection,m?.type==="render"?m.capabilities:void 0),w)}else v.type==="error"&&Y(c.onError,v.message)}window.addEventListener("message",me),d.append(E);let ae={ready:$,get document(){return C},updateCustomerData(B){if(T||!C)return;let v=je.parse(B),w={nodes:Object.fromEntries(Object.entries(v.nodes).filter(([oe,he])=>{let Q=we(C,oe);return Q?.type==="customer_data"&&Q.data.source===he.source}))};m?.type==="render"&&(m.customerData=w),L&&D({type:"customer-data",data:w})},updateCapabilities(B){if(T||!C)return;let v=A.prepare(B,C);v&&(m?.type==="render"&&JSON.stringify(m.capabilities)===JSON.stringify(v)||(m?.type==="render"&&(m.capabilities=v),L&&D({type:"capabilities",capabilities:v})))},update(B,v,w){if(T)return;if(c.screenUrl?B!==null:B===null){Y(c.onError,"A published screen render takes its document from the frame");return}if(B===null&&!J){ne=[null,v,w];return}let oe=B??J,he;try{let Q=B?Me(oe,S):oe,Ee=I==="live"&&!!w?.serverInput,K=Ee?Ue(Q,[v]):v,xe=Ee?We(Q,K):Q,pe=w?.serverInput?at.parse(w.serverInput):void 0;if(pe&&(Q.surface!=="paywall"&&Q.pages.length!==1||Q.actions.some(ue=>ue.type!=="event"&&!(Q.surface==="paywall"&&ue.type==="navigate")||ue.close)||pe.bindings.some(ue=>{let Pe=we(Q,ue.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");let X=rt.parse(w?.parameters??{}),ve=w?.customerData?je.parse(w.customerData):void 0;if(I==="live"&&!w?.reset&&m?.type==="render"&&(w?.capabilities!==void 0||m.capabilities===void 0)&&JSON.stringify([m.doc,m.locale,m.parameters,m.serverInput,m.selection])===JSON.stringify([c.screenUrl?void 0:xe,K,X,pe,w?.selection])){w?.capabilities&&ae.updateCapabilities(w.capabilities),JSON.stringify(m.customerData)!==JSON.stringify(ve)&&(ae.updateCustomerData(ve??{nodes:{}}),m.customerData=ve);return}C=xe,N=pe,ce=Q.presentation.type,fe=new Set(Q.pages.map(ue=>ue.id)),he={type:"render",...c.screenUrl?{}:{doc:xe},...pe?{serverInput:pe}:{},locale:K,parameters:X,capabilities:A.prepare(w?.capabilities,Q),...w?.selection?{selection:w.selection}:{},customerData:ve},ce==="fullscreen"&&Z&&k(Z)}catch(Q){Y(c.onError,Q instanceof Error?Q.message:"\u5185\u5BB9\u4E0D\u6B63\u786E");return}m=he,L&&D(he)},resizeViewport(B){T||!Number.isFinite(B)||B<=0||(Z=B,k(H))},highlight(B,v){T||(P={type:"highlight",hoverId:B,selectedId:v},L&&D(P))},destroy:U};return ae}export{sr as formatCustomerDecimal,ir as hostedRendererScript,nr as hostedScreenScript,er as inspectCustomHtml,zr as mountScreenPreview,Me as prepareScreen,Qt as sanitizeCustomHtml,$r as showPopup};
|