veo-sdk 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { definePlugin, guidesPlugin, runPreviewMode } from './chunk-G5CKTGEG.mjs';
2
- export { definePlugin, guidesPlugin } from './chunk-G5CKTGEG.mjs';
3
- import { hasWindow, hasDocument, uuidv7, DEFAULT_AUTOCAPTURE_CONFIG, MAX_ANCESTORS, hasLocalStorage, hasNavigatorSendBeacon, ALWAYS_BLOCK_SELECTORS, buildSelectorPath, resolveBuilderToken, filterHumanClasses, PRIORITY_ATTRIBUTES, SENSITIVE_ATTRIBUTES, isBuilderMode, previewGuide, closeGuidePreview } from './chunk-CI7NWEH2.mjs';
4
- export { closeGuidePreview, previewGuide } from './chunk-CI7NWEH2.mjs';
5
- import './chunk-JIU5JLI3.mjs';
1
+ import { definePlugin, guidesPlugin, runPreviewMode } from './chunk-R4E3LIDB.mjs';
2
+ export { definePlugin, guidesPlugin } from './chunk-R4E3LIDB.mjs';
3
+ import { hasWindow, hasDocument, uuidv7, DEFAULT_AUTOCAPTURE_CONFIG, MAX_ANCESTORS, hasLocalStorage, hasNavigatorSendBeacon, ALWAYS_BLOCK_SELECTORS, buildSelectorPath, resolveBuilderToken, filterHumanClasses, PRIORITY_ATTRIBUTES, SENSITIVE_ATTRIBUTES, isBuilderMode, previewGuide, closeGuidePreview } from './chunk-GHP7ZJCW.mjs';
4
+ export { closeGuidePreview, previewGuide } from './chunk-GHP7ZJCW.mjs';
5
+ import './chunk-PTG3BTJE.mjs';
6
6
 
7
7
  // src/contract/v1.ts
8
8
  var SDK_VERSION = "0.0.1";
@@ -855,7 +855,7 @@ function init(config) {
855
855
  // Fallback de carga del builder para bundlers: `import()` dinámico → el bundler
856
856
  // lo code-splitea (solo se descarga en modo builder). Así el consumidor por
857
857
  // bundler NO necesita copiar `veo-builder.js` ni setear `builderUrl`.
858
- () => import('./builder-UEGKG2UR.mjs').then((m) => m.initBuilderMode())
858
+ () => import('./builder-AGIBF67L.mjs').then((m) => m.initBuilderMode())
859
859
  );
860
860
  }
861
861
 
package/dist/next.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/builder-constants.ts","../src/next.ts"],"names":[],"mappings":"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","file":"next.cjs","sourcesContent":["/**\n * Nombres de los query params del puente builder. Constantes PURAS (sin DOM ni\n * `window`) para poder compartirlas entre el core (browser: `builder-token.ts`)\n * y el helper de servidor `veo-sdk/next` (`src/next.ts`), sin arrastrar código de\n * navegador al bundle de servidor.\n */\nexport const BUILDER_TOKEN_PARAM = 'veoBuilder';\nexport const BUILDER_ORIGIN_PARAM = 'veoBuilderOrigin';\n","/**\n * `veo-sdk/next` — helper de middleware para el \"modo diseño\" del editor visual.\n *\n * El editor de Veo embebe tu app en un `<iframe>` con `?veoBuilder=<token>`. Para\n * que tu app se deje diseñar hacen falta 3 cosas MECÁNICAS:\n * 1. permitir el embed (`frame-ancestors`, sacar `X-Frame-Options`),\n * 2. que las cookies de sesión viajen en el iframe cross-site\n * (`SameSite=None; Secure; Partitioned` — CHIPS),\n * 3. persistir el modo builder entre navegaciones (cookie particionada), así\n * sobrevive al redirect del guard de auth y a un login.\n *\n * Este wrapper hace las 3. Lo ÚNICO app-specific — qué sesión renderizás sin\n * login (usuario demo, etc.) — queda en tu handler, que recibe `{ builder }`.\n *\n * No depende de `next` (usa tipos estructurales), así el SDK sigue sin\n * dependencias de runtime. `NextRequest`/`NextResponse` son compatibles.\n *\n * @example\n * ```ts\n * // middleware.ts (o proxy.ts en Next 16)\n * import { veoBuilderProxy } from 'veo-sdk/next';\n *\n * export default veoBuilderProxy(\n * async (request, { builder }) => {\n * const { supabase, response } = createSupabaseMiddleware(request);\n * const { data: { user } } = await supabase.auth.getUser();\n * // Lo único tuyo: la sesión de diseño cuando estás embebido y sin login.\n * if (builder && !user) {\n * await supabase.auth.signInWithPassword({\n * email: process.env.VEO_BUILDER_DEMO_EMAIL!,\n * password: process.env.VEO_BUILDER_DEMO_PASSWORD!,\n * });\n * }\n * return response;\n * },\n * { dashboardOrigins: [process.env.VEO_DASHBOARD_ORIGINS ?? ''] },\n * );\n * ```\n */\nimport { BUILDER_ORIGIN_PARAM, BUILDER_TOKEN_PARAM } from './core/builder-constants';\n\n/** Cookie que persiste el token del builder (particionada, contexto embebido). */\nexport const VEO_BUILDER_COOKIE = 'veo-builder';\n/** Cookie que persiste el origen del dashboard de Veo. */\nexport const VEO_BUILDER_ORIGIN_COOKIE = 'veo-builder-origin';\n\n/** Sesión de builder activa (la app está embebida por el editor de Veo). */\nexport interface VeoBuilderContext {\n /** Token de correlación del handshake (idealmente firmado por el backend). */\n token: string;\n /** Origen del dashboard que embebe, para `frame-ancestors`. */\n origin: string | null;\n}\n\n// ── Tipos estructurales, compatibles con NextRequest/NextResponse ──\ninterface CookieLike {\n name: string;\n value: string;\n path?: string;\n domain?: string;\n maxAge?: number;\n expires?: Date | number;\n httpOnly?: boolean;\n sameSite?: boolean | 'lax' | 'strict' | 'none';\n secure?: boolean;\n partitioned?: boolean;\n priority?: 'low' | 'medium' | 'high';\n}\n\nexport interface VeoBuilderRequest {\n nextUrl: { searchParams: URLSearchParams };\n cookies: { get(name: string): { value: string } | undefined };\n}\n\nexport interface VeoBuilderResponse {\n headers: { set(name: string, value: string): void; delete(name: string): void };\n cookies: {\n set(cookie: CookieLike): void;\n getAll(): CookieLike[];\n };\n}\n\nexport interface VeoBuilderProxyOptions {\n /**\n * Orígenes autorizados a embeber la app (`frame-ancestors`), p.ej.\n * `['https://veo-dashboard-opal.vercel.app']`. Si se omite o queda vacío, se\n * usa el origen que envía el propio editor (`veoBuilderOrigin`).\n */\n dashboardOrigins?: string[];\n /** TTL de las cookies del modo builder, en segundos. Default 1800 (30 min). */\n cookieMaxAge?: number;\n}\n\n/**\n * Lee el contexto de builder del request: del query param (`?veoBuilder`, primer\n * arranque dentro del iframe) o de la cookie (sobrevive navegaciones SPA y\n * requests RSC que ya no llevan el param). `null` si la app corre en modo normal.\n */\nexport function readVeoBuilderContext(request: VeoBuilderRequest): VeoBuilderContext | null {\n const params = request.nextUrl.searchParams;\n const fromParam = params.get(BUILDER_TOKEN_PARAM);\n if (fromParam) {\n return {\n token: fromParam,\n origin:\n params.get(BUILDER_ORIGIN_PARAM) ??\n request.cookies.get(VEO_BUILDER_ORIGIN_COOKIE)?.value ??\n null,\n };\n }\n const fromCookie = request.cookies.get(VEO_BUILDER_COOKIE)?.value;\n if (fromCookie) {\n return {\n token: fromCookie,\n origin: request.cookies.get(VEO_BUILDER_ORIGIN_COOKIE)?.value ?? null,\n };\n }\n return null;\n}\n\n/** Cliente de auth mínimo para la sesión de diseño. Compatible con `supabase.auth`\n * y cualquier auth con la misma forma (tipos estructurales, sin acoplar el SDK). */\nexport interface DesignAuthClient {\n getUser(): Promise<{ data: { user: unknown } }>;\n signInWithPassword(credentials: { email: string; password: string }): Promise<unknown>;\n}\n\nexport interface DesignSessionOptions {\n /** Email del usuario demo. Default: env `VEO_BUILDER_DEMO_EMAIL`. */\n email?: string;\n /** Password del usuario demo. Default: env `VEO_BUILDER_DEMO_PASSWORD`. */\n password?: string;\n}\n\n/**\n * Establece la \"sesión de diseño\" cuando la app está embebida por el editor de\n * Veo y no hay login: entra como usuario DEMO (sin datos reales) para poder\n * navegar la app sin auth. No-op fuera de modo builder, si ya hay sesión, o si\n * faltan credenciales. Agnóstico del proveedor: funciona con `supabase.auth` y\n * cualquier cliente con `getUser` + `signInWithPassword`.\n *\n * @example\n * ```ts\n * await ensureVeoDesignSession(builder, supabase.auth);\n * ```\n */\nexport async function ensureVeoDesignSession(\n builder: VeoBuilderContext | null,\n auth: DesignAuthClient,\n options: DesignSessionOptions = {},\n): Promise<void> {\n if (!builder) return;\n const email = options.email ?? readEnv('VEO_BUILDER_DEMO_EMAIL');\n const password = options.password ?? readEnv('VEO_BUILDER_DEMO_PASSWORD');\n if (!email || !password) return;\n const {\n data: { user },\n } = await auth.getUser();\n if (!user) await auth.signInWithPassword({ email, password });\n}\n\nfunction readEnv(key: string): string | undefined {\n try {\n return typeof process !== 'undefined' ? process.env?.[key] : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Envuelve tu middleware de Next para habilitar el modo diseño de Veo. Cuando la\n * app está embebida (`?veoBuilder` o cookie), DESPUÉS de correr tu handler:\n * - reescribe TODAS las cookies de la respuesta a `SameSite=None; Secure;\n * Partitioned` (así la sesión viaja en el iframe cross-site),\n * - persiste token + origen en cookies particionadas,\n * - setea `frame-ancestors` y saca `X-Frame-Options`.\n *\n * Tu handler recibe `{ builder }` para decidir la sesión de diseño (lo único\n * app-specific). Fuera de modo builder es un passthrough exacto (no toca nada).\n */\nexport function veoBuilderProxy<Req extends VeoBuilderRequest, Res extends VeoBuilderResponse>(\n handler: (request: Req, ctx: { builder: VeoBuilderContext | null }) => Res | Promise<Res>,\n options: VeoBuilderProxyOptions = {},\n): (request: Req) => Promise<Res> {\n return async (request: Req): Promise<Res> => {\n const builder = readVeoBuilderContext(request);\n const response = await handler(request, { builder });\n if (builder) {\n repartitionCookies(response);\n persistBuilderCookies(response, builder, options.cookieMaxAge ?? 1800);\n applyFramingHeaders(response, builder, options.dashboardOrigins);\n }\n return response;\n };\n}\n\n/** Reescribe todas las cookies de la respuesta a particionadas (CHIPS). */\nfunction repartitionCookies(response: VeoBuilderResponse): void {\n for (const cookie of response.cookies.getAll()) {\n response.cookies.set({ ...cookie, sameSite: 'none', secure: true, partitioned: true });\n }\n}\n\nfunction persistBuilderCookies(\n response: VeoBuilderResponse,\n ctx: VeoBuilderContext,\n maxAge: number,\n): void {\n const base = { path: '/', maxAge, sameSite: 'none' as const, secure: true, partitioned: true };\n response.cookies.set({ name: VEO_BUILDER_COOKIE, value: ctx.token, httpOnly: true, ...base });\n if (ctx.origin) {\n response.cookies.set({\n name: VEO_BUILDER_ORIGIN_COOKIE,\n value: ctx.origin,\n httpOnly: false,\n ...base,\n });\n }\n}\n\nfunction applyFramingHeaders(\n response: VeoBuilderResponse,\n ctx: VeoBuilderContext,\n dashboardOrigins?: string[],\n): void {\n const configured = (dashboardOrigins ?? []).map((s) => s.trim()).filter(Boolean);\n const origins = configured.length > 0 ? configured : ctx.origin ? [ctx.origin] : [];\n response.headers.delete('X-Frame-Options');\n response.headers.set(\n 'Content-Security-Policy',\n `frame-ancestors 'self' ${origins.join(' ')}`.trim(),\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/core/builder-constants.ts","../src/next.ts"],"names":[],"mappings":"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","file":"next.cjs","sourcesContent":["/**\n * Nombres de los query params del puente builder. Constantes PURAS (sin DOM ni\n * `window`) para poder compartirlas entre el core (browser: `builder-token.ts`)\n * y el helper de servidor `veo-sdk/next` (`src/next.ts`), sin arrastrar código de\n * navegador al bundle de servidor.\n */\n\n/** Token de correlación del handshake. */\nexport const BUILDER_TOKEN_PARAM = 'veoBuilder';\n/** Origen del dashboard de Veo (para postMessage / frame-ancestors). */\nexport const BUILDER_ORIGIN_PARAM = 'veoBuilderOrigin';\n/** `1` → modo \"panel inyectado\": la app es top-level y el editor se inyecta encima. */\nexport const BUILDER_PANEL_PARAM = 'veoBuilderPanel';\n/** Path del panel del editor en el dashboard (default `/guides/design`). */\nexport const BUILDER_PANEL_PATH_PARAM = 'veoBuilderPanelPath';\n/** Id de la guía que se está editando (para cargar/guardar en el panel). */\nexport const BUILDER_GUIDE_PARAM = 'veoGuide';\n","/**\n * `veo-sdk/next` — helper de middleware para el \"modo diseño\" del editor visual.\n *\n * El editor de Veo embebe tu app en un `<iframe>` con `?veoBuilder=<token>`. Para\n * que tu app se deje diseñar hacen falta 3 cosas MECÁNICAS:\n * 1. permitir el embed (`frame-ancestors`, sacar `X-Frame-Options`),\n * 2. que las cookies de sesión viajen en el iframe cross-site\n * (`SameSite=None; Secure; Partitioned` — CHIPS),\n * 3. persistir el modo builder entre navegaciones (cookie particionada), así\n * sobrevive al redirect del guard de auth y a un login.\n *\n * Este wrapper hace las 3. Lo ÚNICO app-specific — qué sesión renderizás sin\n * login (usuario demo, etc.) — queda en tu handler, que recibe `{ builder }`.\n *\n * No depende de `next` (usa tipos estructurales), así el SDK sigue sin\n * dependencias de runtime. `NextRequest`/`NextResponse` son compatibles.\n *\n * @example\n * ```ts\n * // middleware.ts (o proxy.ts en Next 16)\n * import { veoBuilderProxy } from 'veo-sdk/next';\n *\n * export default veoBuilderProxy(\n * async (request, { builder }) => {\n * const { supabase, response } = createSupabaseMiddleware(request);\n * const { data: { user } } = await supabase.auth.getUser();\n * // Lo único tuyo: la sesión de diseño cuando estás embebido y sin login.\n * if (builder && !user) {\n * await supabase.auth.signInWithPassword({\n * email: process.env.VEO_BUILDER_DEMO_EMAIL!,\n * password: process.env.VEO_BUILDER_DEMO_PASSWORD!,\n * });\n * }\n * return response;\n * },\n * { dashboardOrigins: [process.env.VEO_DASHBOARD_ORIGINS ?? ''] },\n * );\n * ```\n */\nimport { BUILDER_ORIGIN_PARAM, BUILDER_TOKEN_PARAM } from './core/builder-constants';\n\n/** Cookie que persiste el token del builder (particionada, contexto embebido). */\nexport const VEO_BUILDER_COOKIE = 'veo-builder';\n/** Cookie que persiste el origen del dashboard de Veo. */\nexport const VEO_BUILDER_ORIGIN_COOKIE = 'veo-builder-origin';\n\n/** Sesión de builder activa (la app está embebida por el editor de Veo). */\nexport interface VeoBuilderContext {\n /** Token de correlación del handshake (idealmente firmado por el backend). */\n token: string;\n /** Origen del dashboard que embebe, para `frame-ancestors`. */\n origin: string | null;\n}\n\n// ── Tipos estructurales, compatibles con NextRequest/NextResponse ──\ninterface CookieLike {\n name: string;\n value: string;\n path?: string;\n domain?: string;\n maxAge?: number;\n expires?: Date | number;\n httpOnly?: boolean;\n sameSite?: boolean | 'lax' | 'strict' | 'none';\n secure?: boolean;\n partitioned?: boolean;\n priority?: 'low' | 'medium' | 'high';\n}\n\nexport interface VeoBuilderRequest {\n nextUrl: { searchParams: URLSearchParams };\n cookies: { get(name: string): { value: string } | undefined };\n}\n\nexport interface VeoBuilderResponse {\n headers: { set(name: string, value: string): void; delete(name: string): void };\n cookies: {\n set(cookie: CookieLike): void;\n getAll(): CookieLike[];\n };\n}\n\nexport interface VeoBuilderProxyOptions {\n /**\n * Orígenes autorizados a embeber la app (`frame-ancestors`), p.ej.\n * `['https://veo-dashboard-opal.vercel.app']`. Si se omite o queda vacío, se\n * usa el origen que envía el propio editor (`veoBuilderOrigin`).\n */\n dashboardOrigins?: string[];\n /** TTL de las cookies del modo builder, en segundos. Default 1800 (30 min). */\n cookieMaxAge?: number;\n}\n\n/**\n * Lee el contexto de builder del request: del query param (`?veoBuilder`, primer\n * arranque dentro del iframe) o de la cookie (sobrevive navegaciones SPA y\n * requests RSC que ya no llevan el param). `null` si la app corre en modo normal.\n */\nexport function readVeoBuilderContext(request: VeoBuilderRequest): VeoBuilderContext | null {\n const params = request.nextUrl.searchParams;\n const fromParam = params.get(BUILDER_TOKEN_PARAM);\n if (fromParam) {\n return {\n token: fromParam,\n origin:\n params.get(BUILDER_ORIGIN_PARAM) ??\n request.cookies.get(VEO_BUILDER_ORIGIN_COOKIE)?.value ??\n null,\n };\n }\n const fromCookie = request.cookies.get(VEO_BUILDER_COOKIE)?.value;\n if (fromCookie) {\n return {\n token: fromCookie,\n origin: request.cookies.get(VEO_BUILDER_ORIGIN_COOKIE)?.value ?? null,\n };\n }\n return null;\n}\n\n/** Cliente de auth mínimo para la sesión de diseño. Compatible con `supabase.auth`\n * y cualquier auth con la misma forma (tipos estructurales, sin acoplar el SDK). */\nexport interface DesignAuthClient {\n getUser(): Promise<{ data: { user: unknown } }>;\n signInWithPassword(credentials: { email: string; password: string }): Promise<unknown>;\n}\n\nexport interface DesignSessionOptions {\n /** Email del usuario demo. Default: env `VEO_BUILDER_DEMO_EMAIL`. */\n email?: string;\n /** Password del usuario demo. Default: env `VEO_BUILDER_DEMO_PASSWORD`. */\n password?: string;\n}\n\n/**\n * Establece la \"sesión de diseño\" cuando la app está embebida por el editor de\n * Veo y no hay login: entra como usuario DEMO (sin datos reales) para poder\n * navegar la app sin auth. No-op fuera de modo builder, si ya hay sesión, o si\n * faltan credenciales. Agnóstico del proveedor: funciona con `supabase.auth` y\n * cualquier cliente con `getUser` + `signInWithPassword`.\n *\n * @example\n * ```ts\n * await ensureVeoDesignSession(builder, supabase.auth);\n * ```\n */\nexport async function ensureVeoDesignSession(\n builder: VeoBuilderContext | null,\n auth: DesignAuthClient,\n options: DesignSessionOptions = {},\n): Promise<void> {\n if (!builder) return;\n const email = options.email ?? readEnv('VEO_BUILDER_DEMO_EMAIL');\n const password = options.password ?? readEnv('VEO_BUILDER_DEMO_PASSWORD');\n if (!email || !password) return;\n const {\n data: { user },\n } = await auth.getUser();\n if (!user) await auth.signInWithPassword({ email, password });\n}\n\nfunction readEnv(key: string): string | undefined {\n try {\n return typeof process !== 'undefined' ? process.env?.[key] : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Envuelve tu middleware de Next para habilitar el modo diseño de Veo. Cuando la\n * app está embebida (`?veoBuilder` o cookie), DESPUÉS de correr tu handler:\n * - reescribe TODAS las cookies de la respuesta a `SameSite=None; Secure;\n * Partitioned` (así la sesión viaja en el iframe cross-site),\n * - persiste token + origen en cookies particionadas,\n * - setea `frame-ancestors` y saca `X-Frame-Options`.\n *\n * Tu handler recibe `{ builder }` para decidir la sesión de diseño (lo único\n * app-specific). Fuera de modo builder es un passthrough exacto (no toca nada).\n */\nexport function veoBuilderProxy<Req extends VeoBuilderRequest, Res extends VeoBuilderResponse>(\n handler: (request: Req, ctx: { builder: VeoBuilderContext | null }) => Res | Promise<Res>,\n options: VeoBuilderProxyOptions = {},\n): (request: Req) => Promise<Res> {\n return async (request: Req): Promise<Res> => {\n const builder = readVeoBuilderContext(request);\n const response = await handler(request, { builder });\n if (builder) {\n repartitionCookies(response);\n persistBuilderCookies(response, builder, options.cookieMaxAge ?? 1800);\n applyFramingHeaders(response, builder, options.dashboardOrigins);\n }\n return response;\n };\n}\n\n/** Reescribe todas las cookies de la respuesta a particionadas (CHIPS). */\nfunction repartitionCookies(response: VeoBuilderResponse): void {\n for (const cookie of response.cookies.getAll()) {\n response.cookies.set({ ...cookie, sameSite: 'none', secure: true, partitioned: true });\n }\n}\n\nfunction persistBuilderCookies(\n response: VeoBuilderResponse,\n ctx: VeoBuilderContext,\n maxAge: number,\n): void {\n const base = { path: '/', maxAge, sameSite: 'none' as const, secure: true, partitioned: true };\n response.cookies.set({ name: VEO_BUILDER_COOKIE, value: ctx.token, httpOnly: true, ...base });\n if (ctx.origin) {\n response.cookies.set({\n name: VEO_BUILDER_ORIGIN_COOKIE,\n value: ctx.origin,\n httpOnly: false,\n ...base,\n });\n }\n}\n\nfunction applyFramingHeaders(\n response: VeoBuilderResponse,\n ctx: VeoBuilderContext,\n dashboardOrigins?: string[],\n): void {\n const configured = (dashboardOrigins ?? []).map((s) => s.trim()).filter(Boolean);\n const origins = configured.length > 0 ? configured : ctx.origin ? [ctx.origin] : [];\n response.headers.delete('X-Frame-Options');\n response.headers.set(\n 'Content-Security-Policy',\n `frame-ancestors 'self' ${origins.join(' ')}`.trim(),\n );\n}\n"]}
package/dist/next.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { BUILDER_TOKEN_PARAM, BUILDER_ORIGIN_PARAM } from './chunk-JIU5JLI3.mjs';
1
+ import { BUILDER_TOKEN_PARAM, BUILDER_ORIGIN_PARAM } from './chunk-PTG3BTJE.mjs';
2
2
 
3
3
  // src/next.ts
4
4
  var VEO_BUILDER_COOKIE = "veo-builder";
@@ -1,4 +1,4 @@
1
- var veoBuilder=(function(exports){'use strict';function G(){return typeof window<"u"}function Y(){return typeof document<"u"}var oe="veoBuilder",j="veoBuilderOrigin";var tt="veo:builder_token",nt="veo:builder_origin";function Pe(){try{return window.sessionStorage}catch{return null}}function pt(){try{return new URLSearchParams(window.location.search)}catch{return null}}function ft(){if(!G())return null;let e=pt(),t=e?.get(oe);if(t){let n=Pe();try{n?.setItem(tt,t);let o=e?.get(j);o&&n?.setItem(nt,o);}catch{}return t}try{return Pe()?.getItem(tt)??null}catch{return null}}function mt(){if(!G())return null;let e=pt()?.get(j);if(e)return e;try{return Pe()?.getItem(nt)??null}catch{return null}}function ht(){if(G())try{let e=Pe();e?.removeItem(tt),e?.removeItem(nt);}catch{}}var gt=["http:","https:"],vt="data-veo-guide";function $(e,t,n){let o=t.createElement("div");if(o.className="veo-guide-content",typeof e.imageUrl=="string"&&e.imageUrl&&X(e.imageUrl)){let r=t.createElement("img");r.className="veo-guide-image",r.src=e.imageUrl,r.alt=typeof e.title=="string"?e.title:"",o.appendChild(r);}if(typeof e.title=="string"&&e.title){let r=t.createElement("h2");r.className="veo-guide-title",r.textContent=e.title,o.appendChild(r);}if(typeof e.content=="string"&&e.content){let r=t.createElement("p");r.className="veo-guide-text",r.textContent=e.content,o.appendChild(r);}let i=t.createElement("div");if(i.className="veo-guide-actions",typeof e.ctaText=="string"&&e.ctaText){let r=t.createElement("button");r.type="button",r.className="veo-guide-cta",r.textContent=e.ctaText,r.addEventListener("click",()=>{let a=e.ctaAction??"dismiss",c=ln(e);n.onCtaClick(a,c);}),i.appendChild(r);}o.appendChild(i);let s=t.createElement("button");return s.type="button",s.className="veo-guide-close",s.setAttribute("aria-label","Cerrar"),s.textContent="\xD7",s.addEventListener("click",()=>n.onDismiss()),o.appendChild(s),o}function X(e){if(typeof e!="string"||e.length===0)return false;try{let t=typeof window<"u"?window.location.href:"http://localhost/",n=new URL(e,t);return gt.includes(n.protocol)}catch{return false}}function ln(e){let t=e.style?.ctaUrl;if(typeof t=="string")return X(t)?t:void 0}var cn={"--veo-bg":"#1f2937","--veo-text":"#f9fafb","--veo-text-secondary":"#d1d5db","--veo-shadow":"0 20px 60px rgba(0, 0, 0, 0.55)"},dn={left:"flex-start",center:"center",right:"flex-end"},wt={none:"none",soft:"0 4px 14px rgba(0, 0, 0, 0.10)",medium:"0 8px 30px rgba(0, 0, 0, 0.18)",strong:"0 24px 60px rgba(0, 0, 0, 0.32)"},xt={center:[.5,.5],top:[.5,0],bottom:[.5,1],left:[0,.5],right:[1,.5],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},yt=/^#[0-9a-f]{3,8}$|^(rgb|rgba|hsl|hsla)\([\d.,%/\sdeg]+\)$|^[a-z]{3,20}$/i;function q(e,t,n){return Math.min(n,Math.max(t,e))}function bt(e,t){if(!t||typeof t!="object")return;let n=t;if(typeof n.accentColor=="string"&&yt.test(n.accentColor.trim())&&e.style.setProperty("--veo-primary",n.accentColor.trim()),n.theme==="dark")for(let[s,r]of Object.entries(cn))e.style.setProperty(s,r);typeof n.radius=="number"&&Number.isFinite(n.radius)&&e.style.setProperty("--veo-radius",`${q(n.radius,0,48)}px`),typeof n.width=="number"&&Number.isFinite(n.width)&&e.style.setProperty("--veo-width",`${q(n.width,220,720)}px`),(n.align==="left"||n.align==="center"||n.align==="right")&&e.style.setProperty("--veo-actions-justify",dn[n.align]),typeof n.padding=="number"&&Number.isFinite(n.padding)&&e.style.setProperty("--veo-pad",`${q(n.padding,0,64)}px`),typeof n.margin=="number"&&Number.isFinite(n.margin)&&e.style.setProperty("--veo-margin",`${q(n.margin,0,64)}px`),typeof n.borderWidth=="number"&&Number.isFinite(n.borderWidth)&&e.style.setProperty("--veo-border-width",`${q(n.borderWidth,0,16)}px`),typeof n.borderColor=="string"&&yt.test(n.borderColor.trim())&&e.style.setProperty("--veo-border-color",n.borderColor.trim()),typeof n.shadow=="string"&&wt[n.shadow]&&e.style.setProperty("--veo-shadow",wt[n.shadow]);let o,i;typeof n.posX=="number"&&typeof n.posY=="number"?(o=q(n.posX,0,1),i=q(n.posY,0,1)):typeof n.overlayPosition=="string"&&xt[n.overlayPosition]&&([o,i]=xt[n.overlayPosition]),o!==void 0&&i!==void 0&&(e.style.setProperty("--veo-pos-x",`${o*100}%`),e.style.setProperty("--veo-pos-y",`${i*100}%`));}var Et=`
1
+ var veoBuilder=(function(exports){'use strict';function M(){return typeof window<"u"}function D(){return typeof document<"u"}var ne="veoBuilder",oe="veoBuilderOrigin",ut="veoBuilderPanel",pt="veoBuilderPanelPath",ft="veoGuide";var et="veo:builder_ctx";function tt(){try{return window.sessionStorage}catch{return null}}function cn(){try{return new URLSearchParams(window.location.search)}catch{return null}}function mt(){if(!M())return null;let e=cn(),t=e?.get(ne);if(t){let n={token:t,origin:e?.get(oe)??null,panel:e?.get(ut)==="1",guide:e?.get(ft)??null,panelPath:e?.get(pt)??null};try{tt()?.setItem(et,JSON.stringify(n));}catch{}return n}try{let n=tt()?.getItem(et);return n?JSON.parse(n):null}catch{return null}}function ht(){if(M())try{tt()?.removeItem(et);}catch{}}var gt=["http:","https:"],vt="data-veo-guide";function U(e,t,n){let o=t.createElement("div");if(o.className="veo-guide-content",typeof e.imageUrl=="string"&&e.imageUrl&&Y(e.imageUrl)){let r=t.createElement("img");r.className="veo-guide-image",r.src=e.imageUrl,r.alt=typeof e.title=="string"?e.title:"",o.appendChild(r);}if(typeof e.title=="string"&&e.title){let r=t.createElement("h2");r.className="veo-guide-title",r.textContent=e.title,o.appendChild(r);}if(typeof e.content=="string"&&e.content){let r=t.createElement("p");r.className="veo-guide-text",r.textContent=e.content,o.appendChild(r);}let i=t.createElement("div");if(i.className="veo-guide-actions",typeof e.ctaText=="string"&&e.ctaText){let r=t.createElement("button");r.type="button",r.className="veo-guide-cta",r.textContent=e.ctaText,r.addEventListener("click",()=>{let a=e.ctaAction??"dismiss",c=dn(e);n.onCtaClick(a,c);}),i.appendChild(r);}o.appendChild(i);let s=t.createElement("button");return s.type="button",s.className="veo-guide-close",s.setAttribute("aria-label","Cerrar"),s.textContent="\xD7",s.addEventListener("click",()=>n.onDismiss()),o.appendChild(s),o}function Y(e){if(typeof e!="string"||e.length===0)return false;try{let t=typeof window<"u"?window.location.href:"http://localhost/",n=new URL(e,t);return gt.includes(n.protocol)}catch{return false}}function dn(e){let t=e.style?.ctaUrl;if(typeof t=="string")return Y(t)?t:void 0}var un={"--veo-bg":"#1f2937","--veo-text":"#f9fafb","--veo-text-secondary":"#d1d5db","--veo-shadow":"0 20px 60px rgba(0, 0, 0, 0.55)"},pn={left:"flex-start",center:"center",right:"flex-end"},wt={none:"none",soft:"0 4px 14px rgba(0, 0, 0, 0.10)",medium:"0 8px 30px rgba(0, 0, 0, 0.18)",strong:"0 24px 60px rgba(0, 0, 0, 0.32)"},xt={center:[.5,.5],top:[.5,0],bottom:[.5,1],left:[0,.5],right:[1,.5],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},yt=/^#[0-9a-f]{3,8}$|^(rgb|rgba|hsl|hsla)\([\d.,%/\sdeg]+\)$|^[a-z]{3,20}$/i;function X(e,t,n){return Math.min(n,Math.max(t,e))}function bt(e,t){if(!t||typeof t!="object")return;let n=t;if(typeof n.accentColor=="string"&&yt.test(n.accentColor.trim())&&e.style.setProperty("--veo-primary",n.accentColor.trim()),n.theme==="dark")for(let[s,r]of Object.entries(un))e.style.setProperty(s,r);typeof n.radius=="number"&&Number.isFinite(n.radius)&&e.style.setProperty("--veo-radius",`${X(n.radius,0,48)}px`),typeof n.width=="number"&&Number.isFinite(n.width)&&e.style.setProperty("--veo-width",`${X(n.width,220,720)}px`),(n.align==="left"||n.align==="center"||n.align==="right")&&e.style.setProperty("--veo-actions-justify",pn[n.align]),typeof n.padding=="number"&&Number.isFinite(n.padding)&&e.style.setProperty("--veo-pad",`${X(n.padding,0,64)}px`),typeof n.margin=="number"&&Number.isFinite(n.margin)&&e.style.setProperty("--veo-margin",`${X(n.margin,0,64)}px`),typeof n.borderWidth=="number"&&Number.isFinite(n.borderWidth)&&e.style.setProperty("--veo-border-width",`${X(n.borderWidth,0,16)}px`),typeof n.borderColor=="string"&&yt.test(n.borderColor.trim())&&e.style.setProperty("--veo-border-color",n.borderColor.trim()),typeof n.shadow=="string"&&wt[n.shadow]&&e.style.setProperty("--veo-shadow",wt[n.shadow]);let o,i;typeof n.posX=="number"&&typeof n.posY=="number"?(o=X(n.posX,0,1),i=X(n.posY,0,1)):typeof n.overlayPosition=="string"&&xt[n.overlayPosition]&&([o,i]=xt[n.overlayPosition]),o!==void 0&&i!==void 0&&(e.style.setProperty("--veo-pos-x",`${o*100}%`),e.style.setProperty("--veo-pos-y",`${i*100}%`));}var Et=`
2
2
  :host {
3
3
  --veo-primary: #4f46e5;
4
4
  --veo-text: #1f2937;
@@ -245,11 +245,36 @@ var veoBuilder=(function(exports){'use strict';function G(){return typeof window
245
245
  from { transform: translateY(-10px); opacity: 0; }
246
246
  to { transform: translateY(0); opacity: 1; }
247
247
  }
248
- `;var y=class{constructor(){this.host=null;this.shadow=null;this.cleanups=[];}createHost(){let t=document.createElement("div");t.setAttribute(vt,"");let n=t.attachShadow({mode:"open"}),o=document.createElement("style");o.textContent=Et,n.appendChild(o);let i=document.createElement("div");return n.appendChild(i),document.body.appendChild(t),this.host=t,this.shadow=n,{host:t,shadow:n,root:i}}applyDesign(t){this.host&&bt(this.host,t);}registerCleanup(t){this.cleanups.push(t);}destroy(){for(let t of this.cleanups)try{t();}catch{}this.cleanups=[],this.host?.parentNode&&this.host.parentNode.removeChild(this.host),this.host=null,this.shadow=null;}};var Ae=class extends y{render(t){let n=t.guide.guideSteps[0];if(!n)return;let{root:o}=this.createHost();this.applyDesign(n.style);let i=o.ownerDocument??document,s=n.style?.position==="bottom"?"bottom":"top",r=i.createElement("div");r.className=`veo-banner veo-banner-${s}`;let a=(l,d)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:l}),d&&window.open(d,"_blank","noopener,noreferrer"),t.onClose();},c=$(n,i,{onCtaClick:(l,d)=>{a("cta_clicked",l==="url"?d:void 0);},onDismiss:()=>a("dismissed")});r.appendChild(c),o.appendChild(r),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Q=Math.min,F=Math.max,ye=Math.round;var I=e=>({x:e,y:e}),un={left:"right",right:"left",bottom:"top",top:"bottom"};function Le(e,t,n){return F(e,Q(t,n))}function ie(e,t){return typeof e=="function"?e(t):e}function U(e){return e.split("-")[0]}function re(e){return e.split("-")[1]}function ot(e){return e==="x"?"y":"x"}function Ie(e){return e==="y"?"height":"width"}function D(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function Oe(e){return ot(D(e))}function Rt(e,t,n){n===void 0&&(n=false);let o=re(e),i=Oe(e),s=Ie(i),r=i==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(r=xe(r)),[r,xe(r)]}function St(e){let t=xe(e);return [Te(e),t,Te(t)]}function Te(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var Ct=["left","right"],kt=["right","left"],pn=["top","bottom"],fn=["bottom","top"];function mn(e,t,n){switch(e){case "top":case "bottom":return n?t?kt:Ct:t?Ct:kt;case "left":case "right":return t?pn:fn;default:return []}}function Pt(e,t,n,o){let i=re(e),s=mn(U(e),n==="start",o);return i&&(s=s.map(r=>r+"-"+i),t&&(s=s.concat(s.map(Te)))),s}function xe(e){let t=U(e);return un[t]+e.slice(t.length)}function hn(e){return {top:0,right:0,bottom:0,left:0,...e}}function it(e){return typeof e!="number"?hn(e):{top:e,right:e,bottom:e,left:e}}function Z(e){let{x:t,y:n,width:o,height:i}=e;return {width:o,height:i,top:n,left:t,right:t+o,bottom:n+i,x:t,y:n}}function At(e,t,n){let{reference:o,floating:i}=e,s=D(t),r=Oe(t),a=Ie(r),c=U(t),l=s==="y",d=o.x+o.width/2-i.width/2,u=o.y+o.height/2-i.height/2,f=o[a]/2-i[a]/2,p;switch(c){case "top":p={x:d,y:o.y-i.height};break;case "bottom":p={x:d,y:o.y+o.height};break;case "right":p={x:o.x+o.width,y:u};break;case "left":p={x:o.x-i.width,y:u};break;default:p={x:o.x,y:o.y};}switch(re(t)){case "start":p[r]-=f*(n&&l?-1:1);break;case "end":p[r]+=f*(n&&l?-1:1);break}return p}async function Tt(e,t){var n;t===void 0&&(t={});let{x:o,y:i,platform:s,rects:r,elements:a,strategy:c}=e,{boundary:l="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:f=false,padding:p=0}=ie(t,e),m=it(p),g=a[f?u==="floating"?"reference":"floating":u],v=Z(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(g)))==null||n?g:g.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:l,rootBoundary:d,strategy:c})),w=u==="floating"?{x:o,y:i,width:r.floating.width,height:r.floating.height}:r.reference,x=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),b=await(s.isElement==null?void 0:s.isElement(x))?await(s.getScale==null?void 0:s.getScale(x))||{x:1,y:1}:{x:1,y:1},A=Z(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:x,strategy:c}):w);return {top:(v.top-A.top+m.top)/b.y,bottom:(A.bottom-v.bottom+m.bottom)/b.y,left:(v.left-A.left+m.left)/b.x,right:(A.right-v.right+m.right)/b.x}}var gn=50,Lt=async(e,t,n)=>{let{placement:o="bottom",strategy:i="absolute",middleware:s=[],platform:r}=n,a=r.detectOverflow?r:{...r,detectOverflow:Tt},c=await(r.isRTL==null?void 0:r.isRTL(t)),l=await r.getElementRects({reference:e,floating:t,strategy:i}),{x:d,y:u}=At(l,o,c),f=o,p=0,m={};for(let h=0;h<s.length;h++){let g=s[h];if(!g)continue;let{name:v,fn:w}=g,{x,y:b,data:A,reset:C}=await w({x:d,y:u,initialPlacement:o,placement:f,strategy:i,middlewareData:m,rects:l,platform:a,elements:{reference:e,floating:t}});d=x??d,u=b??u,m[v]={...m[v],...A},C&&p<gn&&(p++,typeof C=="object"&&(C.placement&&(f=C.placement),C.rects&&(l=C.rects===true?await r.getElementRects({reference:e,floating:t,strategy:i}):C.rects),{x:d,y:u}=At(l,f,c)),h=-1);}return {x:d,y:u,placement:f,strategy:i,middlewareData:m}},It=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:o,placement:i,rects:s,platform:r,elements:a,middlewareData:c}=t,{element:l,padding:d=0}=ie(e,t)||{};if(l==null)return {};let u=it(d),f={x:n,y:o},p=Oe(i),m=Ie(p),h=await r.getDimensions(l),g=p==="y",v=g?"top":"left",w=g?"bottom":"right",x=g?"clientHeight":"clientWidth",b=s.reference[m]+s.reference[p]-f[p]-s.floating[m],A=f[p]-s.reference[p],C=await(r.getOffsetParent==null?void 0:r.getOffsetParent(l)),W=C?C[x]:0;(!W||!await(r.isElement==null?void 0:r.isElement(C)))&&(W=a.floating[x]||s.floating[m]);let he=b/2-A/2,z=W/2-h[m]/2-1,N=Q(u[v],z),ge=Q(u[w],z),V=N,ve=W-h[m]-ge,E=W/2-h[m]/2+he,K=Le(V,E,ve),M=!c.arrow&&re(i)!=null&&E!==K&&s.reference[m]/2-(E<V?N:ge)-h[m]/2<0,T=M?E<V?E-V:E-ve:0;return {[p]:f[p]+T,data:{[p]:K,centerOffset:E-K-T,...M&&{alignmentOffset:T}},reset:M}}});var Ot=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;let{placement:i,middlewareData:s,rects:r,initialPlacement:a,platform:c,elements:l}=t,{mainAxis:d=true,crossAxis:u=true,fallbackPlacements:f,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:h=true,...g}=ie(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return {};let v=U(i),w=D(a),x=U(a)===a,b=await(c.isRTL==null?void 0:c.isRTL(l.floating)),A=f||(x||!h?[xe(a)]:St(a)),C=m!=="none";!f&&C&&A.push(...Pt(a,h,m,b));let W=[a,...A],he=await c.detectOverflow(t,g),z=[],N=((o=s.flip)==null?void 0:o.overflows)||[];if(d&&z.push(he[v]),u){let E=Rt(i,r,b);z.push(he[E[0]],he[E[1]]);}if(N=[...N,{placement:i,overflows:z}],!z.every(E=>E<=0)){var ge,V;let E=(((ge=s.flip)==null?void 0:ge.index)||0)+1,K=W[E];if(K&&(!(u==="alignment"?w!==D(K):false)||N.every(L=>D(L.placement)===w?L.overflows[0]>0:true)))return {data:{index:E,overflows:N},reset:{placement:K}};let M=(V=N.filter(T=>T.overflows[0]<=0).sort((T,L)=>T.overflows[1]-L.overflows[1])[0])==null?void 0:V.placement;if(!M)switch(p){case "bestFit":{var ve;let T=(ve=N.filter(L=>{if(C){let H=D(L.placement);return H===w||H==="y"}return true}).map(L=>[L.placement,L.overflows.filter(H=>H>0).reduce((H,an)=>H+an,0)]).sort((L,H)=>L[1]-H[1])[0])==null?void 0:ve[0];T&&(M=T);break}case "initialPlacement":M=a;break}if(i!==M)return {reset:{placement:M}}}return {}}}};var vn=new Set(["left","top"]);async function wn(e,t){let{placement:n,platform:o,elements:i}=e,s=await(o.isRTL==null?void 0:o.isRTL(i.floating)),r=U(n),a=re(n),c=D(n)==="y",l=vn.has(r)?-1:1,d=s&&c?-1:1,u=ie(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return a&&typeof m=="number"&&(p=a==="end"?m*-1:m),c?{x:p*d,y:f*l}:{x:f*l,y:p*d}}var _t=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;let{x:i,y:s,placement:r,middlewareData:a}=t,c=await wn(t,e);return r===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:i+c.x,y:s+c.y,data:{...c,placement:r}}}}},Nt=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:o,placement:i,platform:s}=t,{mainAxis:r=true,crossAxis:a=false,limiter:c={fn:v=>{let{x:w,y:x}=v;return {x:w,y:x}}},...l}=ie(e,t),d={x:n,y:o},u=await s.detectOverflow(t,l),f=D(U(i)),p=ot(f),m=d[p],h=d[f];if(r){let v=p==="y"?"top":"left",w=p==="y"?"bottom":"right",x=m+u[v],b=m-u[w];m=Le(x,m,b);}if(a){let v=f==="y"?"top":"left",w=f==="y"?"bottom":"right",x=h+u[v],b=h-u[w];h=Le(x,h,b);}let g=c.fn({...t,[p]:m,[f]:h});return {...g,data:{x:g.x-n,y:g.y-o,enabled:{[p]:r,[f]:a}}}}}};function Ne(){return typeof window<"u"}function ee(e){return Dt(e)?(e.nodeName||"").toLowerCase():"#document"}function k(e){var t;return (e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function O(e){var t;return (t=(Dt(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Dt(e){return Ne()?e instanceof Node||e instanceof k(e).Node:false}function R(e){return Ne()?e instanceof Element||e instanceof k(e).Element:false}function _(e){return Ne()?e instanceof HTMLElement||e instanceof k(e).HTMLElement:false}function Mt(e){return !Ne()||typeof ShadowRoot>"u"?false:e instanceof ShadowRoot||e instanceof k(e).ShadowRoot}function se(e){let{overflow:t,overflowX:n,overflowY:o,display:i}=S(e);return /auto|scroll|overlay|hidden|clip/.test(t+o+n)&&i!=="inline"&&i!=="contents"}function Bt(e){return /^(table|td|th)$/.test(ee(e))}function be(e){try{if(e.matches(":popover-open"))return !0}catch{}try{return e.matches(":modal")}catch{return false}}var xn=/transform|translate|scale|rotate|perspective|filter/,yn=/paint|layout|strict|content/,J=e=>!!e&&e!=="none",rt;function Me(e){let t=R(e)?S(e):e;return J(t.transform)||J(t.translate)||J(t.scale)||J(t.rotate)||J(t.perspective)||!De()&&(J(t.backdropFilter)||J(t.filter))||xn.test(t.willChange||"")||yn.test(t.contain||"")}function Ht(e){let t=B(e);for(;_(t)&&!te(t);){if(Me(t))return t;if(be(t))return null;t=B(t);}return null}function De(){return rt==null&&(rt=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),rt}function te(e){return /^(html|body|#document)$/.test(ee(e))}function S(e){return k(e).getComputedStyle(e)}function Ee(e){return R(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function B(e){if(ee(e)==="html")return e;let t=e.assignedSlot||e.parentNode||Mt(e)&&e.host||O(e);return Mt(t)?t.host:t}function Gt(e){let t=B(e);return te(t)?e.ownerDocument?e.ownerDocument.body:e.body:_(t)&&se(t)?t:Gt(t)}function _e(e,t,n){var o;t===void 0&&(t=[]);let i=Gt(e),s=i===((o=e.ownerDocument)==null?void 0:o.body),r=k(i);if(s){Be(r);return t.concat(r,r.visualViewport||[],se(i)?i:[],[])}else return t.concat(i,_e(i,[]))}function Be(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Wt(e){let t=S(e),n=parseFloat(t.width)||0,o=parseFloat(t.height)||0,i=_(e),s=i?e.offsetWidth:n,r=i?e.offsetHeight:o,a=ye(n)!==s||ye(o)!==r;return a&&(n=s,o=r),{width:n,height:o,$:a}}function zt(e){return R(e)?e:e.contextElement}function ae(e){let t=zt(e);if(!_(t))return I(1);let n=t.getBoundingClientRect(),{width:o,height:i,$:s}=Wt(t),r=(s?ye(n.width):n.width)/o,a=(s?ye(n.height):n.height)/i;return (!r||!Number.isFinite(r))&&(r=1),(!a||!Number.isFinite(a))&&(a=1),{x:r,y:a}}var bn=I(0);function Vt(e){let t=k(e);return !De()||!t.visualViewport?bn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function En(e,t,n){return t===void 0&&(t=false),!n||t&&n!==k(e)?false:t}function Ce(e,t,n,o){t===void 0&&(t=false),n===void 0&&(n=false);let i=e.getBoundingClientRect(),s=zt(e),r=I(1);t&&(o?R(o)&&(r=ae(o)):r=ae(e));let a=En(s,n,o)?Vt(s):I(0),c=(i.left+a.x)/r.x,l=(i.top+a.y)/r.y,d=i.width/r.x,u=i.height/r.y;if(s){let f=k(s),p=o&&R(o)?k(o):o,m=f,h=Be(m);for(;h&&o&&p!==m;){let g=ae(h),v=h.getBoundingClientRect(),w=S(h),x=v.left+(h.clientLeft+parseFloat(w.paddingLeft))*g.x,b=v.top+(h.clientTop+parseFloat(w.paddingTop))*g.y;c*=g.x,l*=g.y,d*=g.x,u*=g.y,c+=x,l+=b,m=k(h),h=Be(m);}}return Z({width:d,height:u,x:c,y:l})}function He(e,t){let n=Ee(e).scrollLeft;return t?t.left+n:Ce(O(e)).left+n}function Kt(e,t){let n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-He(e,n),i=n.top+t.scrollTop;return {x:o,y:i}}function Cn(e){let{elements:t,rect:n,offsetParent:o,strategy:i}=e,s=i==="fixed",r=O(o),a=t?be(t.floating):false;if(o===r||a&&s)return n;let c={scrollLeft:0,scrollTop:0},l=I(1),d=I(0),u=_(o);if((u||!u&&!s)&&((ee(o)!=="body"||se(r))&&(c=Ee(o)),u)){let p=Ce(o);l=ae(o),d.x=p.x+o.clientLeft,d.y=p.y+o.clientTop;}let f=r&&!u&&!s?Kt(r,c):I(0);return {width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+d.x+f.x,y:n.y*l.y-c.scrollTop*l.y+d.y+f.y}}function kn(e){return Array.from(e.getClientRects())}function Rn(e){let t=O(e),n=Ee(e),o=e.ownerDocument.body,i=F(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=F(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),r=-n.scrollLeft+He(e),a=-n.scrollTop;return S(o).direction==="rtl"&&(r+=F(t.clientWidth,o.clientWidth)-i),{width:i,height:s,x:r,y:a}}var $t=25;function Sn(e,t){let n=k(e),o=O(e),i=n.visualViewport,s=o.clientWidth,r=o.clientHeight,a=0,c=0;if(i){s=i.width,r=i.height;let d=De();(!d||d&&t==="fixed")&&(a=i.offsetLeft,c=i.offsetTop);}let l=He(o);if(l<=0){let d=o.ownerDocument,u=d.body,f=getComputedStyle(u),p=d.compatMode==="CSS1Compat"&&parseFloat(f.marginLeft)+parseFloat(f.marginRight)||0,m=Math.abs(o.clientWidth-u.clientWidth-p);m<=$t&&(s-=m);}else l<=$t&&(s+=l);return {width:s,height:r,x:a,y:c}}function Pn(e,t){let n=Ce(e,true,t==="fixed"),o=n.top+e.clientTop,i=n.left+e.clientLeft,s=_(e)?ae(e):I(1),r=e.clientWidth*s.x,a=e.clientHeight*s.y,c=i*s.x,l=o*s.y;return {width:r,height:a,x:c,y:l}}function Ft(e,t,n){let o;if(t==="viewport")o=Sn(e,n);else if(t==="document")o=Rn(O(e));else if(R(t))o=Pn(t,n);else {let i=Vt(e);o={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height};}return Z(o)}function Yt(e,t){let n=B(e);return n===t||!R(n)||te(n)?false:S(n).position==="fixed"||Yt(n,t)}function An(e,t){let n=t.get(e);if(n)return n;let o=_e(e,[]).filter(a=>R(a)&&ee(a)!=="body"),i=null,s=S(e).position==="fixed",r=s?B(e):e;for(;R(r)&&!te(r);){let a=S(r),c=Me(r);!c&&a.position==="fixed"&&(i=null),(s?!c&&!i:!c&&a.position==="static"&&!!i&&(i.position==="absolute"||i.position==="fixed")||se(r)&&!c&&Yt(e,r))?o=o.filter(d=>d!==r):i=a,r=B(r);}return t.set(e,o),o}function Tn(e){let{element:t,boundary:n,rootBoundary:o,strategy:i}=e,r=[...n==="clippingAncestors"?be(t)?[]:An(t,this._c):[].concat(n),o],a=Ft(t,r[0],i),c=a.top,l=a.right,d=a.bottom,u=a.left;for(let f=1;f<r.length;f++){let p=Ft(t,r[f],i);c=F(p.top,c),l=Q(p.right,l),d=Q(p.bottom,d),u=F(p.left,u);}return {width:l-u,height:d-c,x:u,y:c}}function Ln(e){let{width:t,height:n}=Wt(e);return {width:t,height:n}}function In(e,t,n){let o=_(t),i=O(t),s=n==="fixed",r=Ce(e,true,s,t),a={scrollLeft:0,scrollTop:0},c=I(0);function l(){c.x=He(i);}if(o||!o&&!s)if((ee(t)!=="body"||se(i))&&(a=Ee(t)),o){let p=Ce(t,true,s,t);c.x=p.x+t.clientLeft,c.y=p.y+t.clientTop;}else i&&l();s&&!o&&i&&l();let d=i&&!o&&!s?Kt(i,a):I(0),u=r.left+a.scrollLeft-c.x-d.x,f=r.top+a.scrollTop-c.y-d.y;return {x:u,y:f,width:r.width,height:r.height}}function st(e){return S(e).position==="static"}function Ut(e,t){if(!_(e)||S(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return O(e)===n&&(n=n.ownerDocument.body),n}function jt(e,t){let n=k(e);if(be(e))return n;if(!_(e)){let i=B(e);for(;i&&!te(i);){if(R(i)&&!st(i))return i;i=B(i);}return n}let o=Ut(e,t);for(;o&&Bt(o)&&st(o);)o=Ut(o,t);return o&&te(o)&&st(o)&&!Me(o)?n:o||Ht(e)||n}var On=async function(e){let t=this.getOffsetParent||jt,n=this.getDimensions,o=await n(e.floating);return {reference:In(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function _n(e){return S(e).direction==="rtl"}var Nn={convertOffsetParentRelativeRectToViewportRelativeRect:Cn,getDocumentElement:O,getClippingRect:Tn,getOffsetParent:jt,getElementRects:On,getClientRects:kn,getDimensions:Ln,getScale:ae,isElement:R,isRTL:_n};var le=_t;var ce=Nt,de=Ot;var Xt=It;var ue=(e,t,n)=>{let o=new Map,i={platform:Nn,...n},s={...i.platform,_c:o};return Lt(e,t,{...i,platform:s})};function P(e,t=5e3){return new Promise(n=>{let o=()=>{try{return document.querySelector(e)}catch{return null}},i=o();if(i){n(i);return}let s=false,r=l=>{s||(s=true,a.disconnect(),clearTimeout(c),n(l));},a=new MutationObserver(()=>{let l=o();l&&r(l);});a.observe(document.body,{childList:true,subtree:true});let c=setTimeout(()=>r(null),t);})}function qt(){let t=Date.now().toString(16).padStart(12,"0"),n=new Uint8Array(10);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(n);else for(let i=0;i<n.length;i++)n[i]=Math.floor(Math.random()*256);n[0]=(n[0]??0)&15|112,n[2]=(n[2]??0)&63|128;let o=Array.from(n,i=>i.toString(16).padStart(2,"0")).join("");return [t.slice(0,8),t.slice(8,12),o.slice(0,4),o.slice(4,8),o.slice(8,20)].join("-")}function Ge(e,t,n,o){let i=e.createElement("iframe");i.className="veo-custom-frame",i.setAttribute("sandbox","allow-scripts"),i.setAttribute("title",n.guide.guideName||"Veo"),i.style.width=o.width;let s=o.fixedHeight!==void 0&&o.fixedHeight!==null;s&&(i.style.height=at(o.fixedHeight));let r=qt();i.srcdoc=Dn(t.html??"",t.css??"",t.js??"",r);let a=()=>n.onClose(),c=l=>{if(l.source!==i.contentWindow)return;let d=l.data;if(!(!d||typeof d!="object"||d.__veo!==r))switch(d.type){case "dismiss":n.onInteraction({guideId:n.guide.guideId,stepIndex:0,action:"dismissed"}),a();break;case "cta":n.onInteraction({guideId:n.guide.guideId,stepIndex:0,action:"cta_clicked"}),typeof d.url=="string"&&X(d.url)&&window.open(d.url,"_blank","noopener,noreferrer"),d.close!==false&&a();break;case "navigate":typeof d.url=="string"&&X(d.url)&&window.location.assign(d.url);break;case "track":typeof d.name=="string"&&n.onTrack&&n.onTrack(d.name,Mn(d.props)?d.props:void 0);break;case "resize":!s&&typeof d.height=="number"&&d.height>0&&(i.style.height=`${Math.ceil(d.height)}px`);break}};return window.addEventListener("message",c),{iframe:i,cleanup:()=>window.removeEventListener("message",c)}}function at(e){return typeof e=="number"?`${e}px`:e}function Mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Dn(e,t,n,o){let i=`(function(){var T=${JSON.stringify(o)};function P(m){m.__veo=T;parent.postMessage(m,'*');}window.veo={dismiss:function(){P({type:'dismiss'});},cta:function(u){P({type:'cta',url:u});},track:function(n,p){P({type:'track',name:n,props:p||{}});},navigate:function(u){P({type:'navigate',url:u});}};document.addEventListener('click',function(e){var a=e.target&&e.target.closest?e.target.closest('a[href]'):null;if(!a)return;var h=a.getAttribute('href');if(!h||h.charAt(0)==='#'||/^(javascript|mailto|tel):/i.test(h))return;e.preventDefault();if(a.target==='_blank'){P({type:'cta',url:a.href,close:false});}else{P({type:'navigate',url:h});}},true);function H(){P({type:'resize',height:Math.ceil(document.documentElement.scrollHeight)});}window.addEventListener('load',H);try{if(typeof ResizeObserver!=='undefined'){new ResizeObserver(H).observe(document.documentElement);}}catch(e){}})();`;return `<!DOCTYPE html><html><head><meta charset="utf-8"><style>html,body{margin:0;padding:0;background:transparent;}</style><style>${Qt(t,"style")}</style></head><body>${e}<script>${i}</script>`+(n?`<script>${Qt(n,"script")}</script>`:"")+"</body></html>"}function Qt(e,t){let n=t==="script"?/<\/script/gi:/<\/style/gi;return e.replace(n,`<\\/${t}`)}var Bn={mode:"floating",position:"bottom-right"},Zt=16,Hn=360,$e=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n||typeof n.html!="string"||n.html.length===0)return;let o=n.placement??Bn,i=null;if(o.mode==="anchored"){let d=o.selector??n.selector??t.guide.activationRules.selector;if(typeof d!="string"||d.length===0||(i=await P(d),!i))return}let{root:s}=this.createHost(),r=s.ownerDocument??document,a=r.createElement("div");a.className=o.mode==="anchored"?"veo-custom-anchored":"veo-custom-floating";let{iframe:c,cleanup:l}=Ge(r,n,t,{width:at(o.width??Hn),fixedHeight:o.height??null});this.registerCleanup(l),a.appendChild(c),s.appendChild(a),o.mode==="floating"?Gn(a,o):i&&this.registerCleanup(await this.setupAnchoredPosition(i,a,o)),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}async setupAnchoredPosition(t,n,o){let i=o.side??"bottom",s=async()=>{let{x:a,y:c}=await ue(t,n,{placement:i,strategy:"fixed",middleware:[le(o.offsetY??8),de(),ce({padding:8})]});n.style.left=`${a}px`,n.style.top=`${c}px`;};await s();let r=()=>{s();};return window.addEventListener("scroll",r,true),window.addEventListener("resize",r),()=>{window.removeEventListener("scroll",r,true),window.removeEventListener("resize",r);}}};function Gn(e,t){let n=t.position??"bottom-right",o=`${t.offsetX??Zt}px`,i=`${t.offsetY??Zt}px`,s=e.style;if(n==="center"){s.top="50%",s.left="50%",s.transform="translate(-50%, -50%)";return}let[r,a]=n.split("-");r==="top"?s.top=i:s.bottom=i,a==="left"?s.left=o:a==="right"?s.right=o:(s.left="50%",s.transform="translateX(-50%)");}function Fe(e,t,n){let o=t.guide.guideSteps[0];if(!o)return;let i=o.fields??[],s=()=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"dismissed"}),t.onClose();},r=n.createElement("div");if(r.className="veo-guide-content",o.title){let p=n.createElement("h2");p.className="veo-guide-title",p.textContent=o.title,r.appendChild(p);}if(o.content){let p=n.createElement("p");p.className="veo-guide-text",p.textContent=o.content,r.appendChild(p);}let a=[],c=n.createElement("form");c.className="veo-form",c.noValidate=true;for(let p of i){let{wrapper:m,read:h}=Fn(p,n);a.push({field:p,read:h}),c.appendChild(m);}let l=n.createElement("p");l.className="veo-form-error",l.style.display="none",c.appendChild(l);let d=n.createElement("div");d.className="veo-guide-actions";let u=n.createElement("button");u.type="submit",u.className="veo-guide-cta",u.textContent=o.ctaText||"Enviar",d.appendChild(u),c.appendChild(d),c.addEventListener("submit",p=>{p.preventDefault(),l.style.display="none";let m={};for(let{field:g,read:v}of a){let w=v();if(w==null||w===""){if(g.required){l.textContent=`Complet\xE1 "${g.label}"`,l.style.display="block";return}continue}m[g.key]=w;}if(Object.keys(m).length===0){l.textContent="Respond\xE9 al menos un campo",l.style.display="block";return}u.disabled=true,(t.onFormSubmit??(()=>Promise.resolve(true)))(m).then(g=>{if(!g){u.disabled=false,l.textContent="No se pudo enviar. Prob\xE1 de nuevo.",l.style.display="block";return}t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"completed"});let v=t.isPreview?t.previewNote??"Vista previa: la respuesta NO se guard\xF3.":null;$n(e,n,v),window.setTimeout(()=>t.onClose(),v?2200:1400);});}),r.appendChild(c);let f=n.createElement("button");f.type="button",f.className="veo-guide-close",f.setAttribute("aria-label","Cerrar"),f.textContent="\xD7",f.addEventListener("click",s),r.appendChild(f),e.appendChild(r);}function $n(e,t,n){for(;e.firstChild;)e.removeChild(e.firstChild);let o=t.createElement("div");if(o.className="veo-form-thanks",o.textContent="\u2713 \xA1Gracias por tu respuesta!",e.appendChild(o),n){let i=t.createElement("p");i.className="veo-form-preview-note",i.textContent=n,e.appendChild(i);}}function Fn(e,t){let n=t.createElement("div");n.className="veo-form-field";let o=t.createElement("label");switch(o.className="veo-form-label",o.textContent=e.required?`${e.label} *`:e.label,n.appendChild(o),e.type){case "textarea":{let i=t.createElement("textarea");return i.className="veo-form-input",i.rows=3,e.placeholder&&(i.placeholder=e.placeholder),n.appendChild(i),{wrapper:n,read:()=>i.value.trim()}}case "number":{let i=t.createElement("input");return i.type="number",i.className="veo-form-input",e.placeholder&&(i.placeholder=e.placeholder),n.appendChild(i),{wrapper:n,read:()=>i.value.trim()===""?void 0:Number(i.value)}}case "select":{let i=t.createElement("select");i.className="veo-form-input";let s=t.createElement("option");s.value="",s.textContent=e.placeholder||"Eleg\xED una opci\xF3n\u2026",i.appendChild(s);for(let r of e.options??[]){let a=t.createElement("option");a.value=r,a.textContent=r,i.appendChild(a);}return n.appendChild(i),{wrapper:n,read:()=>i.value||void 0}}case "radio":{let i=t.createElement("div");i.className="veo-form-options";let s=`veo-${e.key}`,r=[];for(let a of e.options??[]){let c=t.createElement("label");c.className="veo-form-option";let l=t.createElement("input");l.type="radio",l.name=s,l.value=a,r.push(l);let d=t.createElement("span");d.textContent=a,c.appendChild(l),c.appendChild(d),i.appendChild(c);}return n.appendChild(i),{wrapper:n,read:()=>r.find(a=>a.checked)?.value}}case "multiselect":{let i=t.createElement("div");i.className="veo-form-options";let s=[];for(let r of e.options??[]){let a=t.createElement("label");a.className="veo-form-option";let c=t.createElement("input");c.type="checkbox",c.value=r,s.push(c);let l=t.createElement("span");l.textContent=r,a.appendChild(c),a.appendChild(l),i.appendChild(a);}return n.appendChild(i),{wrapper:n,read:()=>{let r=s.filter(a=>a.checked).map(a=>a.value);return r.length>0?r:void 0}}}case "checkbox":{let i=t.createElement("label");i.className="veo-form-option";let s=t.createElement("input");s.type="checkbox";let r=t.createElement("span");return r.textContent=e.placeholder||"S\xED",i.appendChild(s),i.appendChild(r),n.appendChild(i),{wrapper:n,read:()=>s.checked?true:e.required?"":false}}case "yesno":{let i=t.createElement("div");i.className="veo-form-options";let s=`veo-${e.key}`,[r,a]=e.options?.length===2?e.options:["S\xED","No"],c=[];for(let{label:l,value:d}of [{label:r,value:true},{label:a,value:false}]){let u=t.createElement("label");u.className="veo-form-option";let f=t.createElement("input");f.type="radio",f.name=s,c.push({input:f,value:d});let p=t.createElement("span");p.textContent=l,u.appendChild(f),u.appendChild(p),i.appendChild(u);}return n.appendChild(i),{wrapper:n,read:()=>c.find(l=>l.input.checked)?.value}}case "nps":return Jt(n,t,0,10,"veo-nps-btn");case "rating":return Jt(n,t,1,5,"veo-rating-btn","\u2605");default:{let i=t.createElement("input");return i.type="text",i.className="veo-form-input",e.placeholder&&(i.placeholder=e.placeholder),n.appendChild(i),{wrapper:n,read:()=>i.value.trim()}}}}function Jt(e,t,n,o,i,s){let r=t.createElement("div");r.className="veo-form-scale";let a,c=[];for(let l=n;l<=o;l++){let d=t.createElement("button");d.type="button",d.className=i,d.textContent=s??String(l),d.setAttribute("aria-label",String(l)),d.addEventListener("click",()=>{a=l,c.forEach((u,f)=>{let p=s?f+n<=l:f+n===l;u.classList.toggle("veo-scale-active",p);});}),c.push(d),r.appendChild(d);}return e.appendChild(r),{wrapper:e,read:()=>a}}var Ue=class extends y{render(t){let n=t.guide.guideSteps[0];if(!n||(n.fields??[]).length===0)return;let{root:o}=this.createHost();this.applyDesign(n.style);let i=o.ownerDocument??document,s=i.createElement("div");s.className="veo-modal-overlay";let r=i.createElement("div");r.className="veo-modal-card",Fe(r,t,i),s.appendChild(r),o.appendChild(s);let a=()=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"dismissed"}),t.onClose();};s.addEventListener("click",l=>{l.target===s&&a();});let c=l=>{l.key==="Escape"&&a();};document.addEventListener("keydown",c),this.registerCleanup(()=>document.removeEventListener("keydown",c)),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};function pe(e){let t=e?.inlinePosition;return t==="before"||t==="prepend"||t==="append"?t:"after"}function ne(e,t,n){switch(n){case "before":e.before(t);break;case "after":e.after(t);break;case "prepend":e.prepend(t);break;case "append":e.append(t);break}}function fe(e,t,n){let o=window.setInterval(()=>{if(e.isConnected)return;let i=document.querySelector(t);i&&ne(i,e,n);},1e3);return ()=>window.clearInterval(o)}var We=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n||typeof n.html!="string"||n.html.length===0)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await P(o);if(!i)return;let{host:s,root:r}=this.createHost();s.style.display="block";let a=pe(n.style);ne(i,s,a),this.registerCleanup(fe(s,o,a));let c=r.ownerDocument??document,l=c.createElement("div");l.className="veo-custom-inline";let{iframe:d,cleanup:u}=Ge(c,n,t,{width:"100%"});this.registerCleanup(u),l.appendChild(d),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var ze=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n||(n.fields??[]).length===0)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await P(o);if(!i)return;let{host:s,root:r}=this.createHost();s.style.display="block";let a=pe(n.style);ne(i,s,a),this.registerCleanup(fe(s,o,a)),this.applyDesign(n.style);let c=r.ownerDocument??document,l=c.createElement("div");l.className="veo-inline",Fe(l,t,c),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Ve=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await P(o);if(!i)return;let{host:s,root:r}=this.createHost();s.style.display="block";let a=pe(n.style);ne(i,s,a),this.registerCleanup(fe(s,o,a)),this.applyDesign(n.style);let c=r.ownerDocument??document,l=c.createElement("div");l.className="veo-inline";let d=(f,p)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:f}),p&&window.open(p,"_blank","noopener,noreferrer"),t.onClose();},u=$(n,c,{onCtaClick:(f,p)=>d("cta_clicked",f==="url"?p:void 0),onDismiss:()=>d("dismissed")});l.appendChild(u),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Ke=class extends y{render(t){let n=t.guide.guideSteps[0];if(!n)return;let{root:o}=this.createHost();this.applyDesign(n.style);let i=o.ownerDocument??document,s=i.createElement("div");s.className="veo-modal-overlay";let r=i.createElement("div");r.className="veo-modal-card";let a=(d,u)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:d}),u&&window.open(u,"_blank","noopener,noreferrer"),t.onClose();},c=$(n,i,{onCtaClick:(d,u)=>{a("cta_clicked",d==="url"?u:void 0);},onDismiss:()=>a("dismissed")});r.appendChild(c),s.appendChild(r),o.appendChild(s),s.addEventListener("click",d=>{d.target===s&&a("dismissed");});let l=d=>{d.key==="Escape"&&a("dismissed");};document.addEventListener("keydown",l),this.registerCleanup(()=>document.removeEventListener("keydown",l)),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Ye=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await P(o);if(!i)return;let{root:s}=this.createHost();this.applyDesign(n.style);let r=s.ownerDocument??document,a=r.createElement("div");a.className="veo-tooltip";let c=(f,p)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:f}),p&&window.open(p,"_blank","noopener,noreferrer"),t.onClose();},l=$(n,r,{onCtaClick:(f,p)=>{c("cta_clicked",f==="url"?p:void 0);},onDismiss:()=>c("dismissed")});a.appendChild(l),s.appendChild(a);let d=async()=>{let{x:f,y:p}=await ue(i,a,{placement:"bottom",middleware:[le(8),de(),ce({padding:8})]});a.style.left=`${f}px`,a.style.top=`${p}px`;};await d();let u=()=>{d();};window.addEventListener("scroll",u,true),window.addEventListener("resize",u),this.registerCleanup(()=>{window.removeEventListener("scroll",u,true),window.removeEventListener("resize",u);}),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};function en(e,t,n,o,i){let s=o.createElement("div");s.className="veo-guide-content";let r=o.createElement("div");r.className="veo-walkthrough-counter",r.textContent=`Paso ${t+1} de ${n}`,s.appendChild(r);let a=o.createElement("div");a.className="veo-walkthrough-progress";for(let m=0;m<n;m++){let h=o.createElement("span");h.className="veo-walkthrough-progress-dot",m<t&&h.classList.add("completed"),m===t&&h.classList.add("active"),a.appendChild(h);}if(s.appendChild(a),typeof e.imageUrl=="string"&&e.imageUrl&&X(e.imageUrl)){let m=o.createElement("img");m.className="veo-guide-image",m.src=e.imageUrl,m.alt=typeof e.title=="string"?e.title:"",s.appendChild(m);}if(typeof e.title=="string"&&e.title){let m=o.createElement("h2");m.className="veo-guide-title",m.textContent=e.title,s.appendChild(m);}if(typeof e.content=="string"&&e.content){let m=o.createElement("p");m.className="veo-guide-text",m.textContent=e.content,s.appendChild(m);}let c=o.createElement("div");c.className="veo-walkthrough-actions";let l=o.createElement("button");l.type="button",l.className="veo-walkthrough-skip",l.textContent="Omitir",l.addEventListener("click",()=>i.onSkip()),c.appendChild(l);let d=o.createElement("div");if(d.className="veo-walkthrough-actions-right",t>0){let m=o.createElement("button");m.type="button",m.className="veo-walkthrough-btn-secondary",m.textContent="Atr\xE1s",m.addEventListener("click",()=>i.onBack()),d.appendChild(m);}let u=t===n-1,f=o.createElement("button");f.type="button",f.className="veo-guide-cta";let p=u?"Finalizar":"Siguiente";return f.textContent=typeof e.ctaText=="string"&&e.ctaText?e.ctaText:p,f.addEventListener("click",()=>{u?i.onComplete():i.onNext();}),d.appendChild(f),c.appendChild(d),s.appendChild(c),s}var je=class extends y{async render(t){let n=t.guide.guideSteps[t.currentStepIndex];if(!n)return false;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return false;let i=await P(o,5e3);if(!i)return false;let{root:s}=this.createHost();this.applyDesign(n.style);let r=s.ownerDocument??document,a=r.createElement("div");a.className="veo-walkthrough";let c=en(n,t.currentStepIndex,t.guide.guideSteps.length,r,t.callbacks);a.appendChild(c);let l=r.createElement("div");l.className="veo-walkthrough-arrow",a.appendChild(l),s.appendChild(a);let d=async()=>{let{x:f,y:p,placement:m,middlewareData:h}=await ue(i,a,{placement:"bottom",middleware:[le(10),de(),ce({padding:8}),Xt({element:l})]});a.style.left=`${f}px`,a.style.top=`${p}px`,Wn(l,m,h.arrow);};await d();let u=()=>{d();};return window.addEventListener("scroll",u,true),window.addEventListener("resize",u),this.registerCleanup(()=>{window.removeEventListener("scroll",u,true),window.removeEventListener("resize",u);}),true}},Un={top:"bottom",bottom:"top",left:"right",right:"left"};function Wn(e,t,n){let o=Un[t.split("-")[0]??"bottom"]??"top";for(let i of ["top","bottom","left","right"])e.style.setProperty(i,"");n?.x!=null&&e.style.setProperty("left",`${n.x}px`),n?.y!=null&&e.style.setProperty("top",`${n.y}px`),e.style.setProperty(o,"-6px");}var zn="__veo_preview__",lt=class{constructor(){this.singleStep=null;this.walkthrough=null;this.walkthroughGuide=null;this.walkthroughIndex=0;this.input=null;}preview(t){this.close(),this.input=t;let n=Vn(t),o=typeof t.startStepIndex=="number"?t.startStepIndex:0,i=n.guideType==="walkthrough"?this.startWalkthrough(n,o):this.renderSingleStep(n);return {close:()=>this.close(),ready:i}}close(){this.singleStep&&(ke(this.singleStep),this.singleStep=null),this.walkthrough&&(ke(this.walkthrough),this.walkthrough=null),this.walkthroughGuide=null,this.walkthroughIndex=0,this.input=null;}async renderSingleStep(t){let n=Kn(t.guideType);if(!n)return {rendered:false};this.singleStep=n;let o=false;try{await n.render({guide:t,onInteraction:i=>{i.action==="shown"&&(o=!0);},onClose:()=>this.close(),onTrack:()=>{},onFormSubmit:this.input?.formSubmit??(()=>Promise.resolve(!0)),isPreview:!0,...this.input?.formSubmit&&this.input.formSubmitNote!==void 0?{previewNote:this.input.formSubmitNote}:{}});}catch{return this.close(),{rendered:false}}return this.singleStep!==n?(ke(n),{rendered:false}):{rendered:o}}async startWalkthrough(t,n=0){if(t.guideSteps.length===0)return {rendered:false};this.walkthroughGuide=t;let o=Math.min(Math.max(0,Math.floor(n)),t.guideSteps.length-1);return this.walkthroughIndex=o,{rendered:await this.renderWalkthroughStep(o)}}async renderWalkthroughStep(t){let n=this.walkthroughGuide;if(!n)return false;this.walkthrough&&(ke(this.walkthrough),this.walkthrough=null);let o=new je,i={onNext:()=>{let r=this.walkthroughIndex+1;if(r>=n.guideSteps.length){this.close();return}this.walkthroughIndex=r,this.renderWalkthroughStep(r);},onBack:()=>{let r=this.walkthroughIndex-1;r<0||(this.walkthroughIndex=r,this.renderWalkthroughStep(r));},onSkip:()=>this.close(),onComplete:()=>this.close()},s=false;try{s=await o.render({guide:n,currentStepIndex:t,callbacks:i});}catch{s=false;}return !s||this.walkthroughGuide!==n?(ke(o),false):(this.walkthrough=o,true)}},Xe=null;function qe(e){return Y()?(Xe||(Xe=new lt),Xe.preview(e)):{close:()=>{},ready:Promise.resolve({rendered:false})}}function Re(){Xe?.close();}function Vn(e){let t=e.activationRules?.selector,n={url:e.activationRules?.url??{type:"prefix",pattern:"/"},trigger:"immediate",...t!==void 0?{selector:t}:{}};return {guideId:zn,guideName:e.guideName??"Preview",guideType:e.guideType,guideSteps:e.guideSteps,activationRules:n,displayFrequency:"always",displayPriority:0}}function Kn(e){switch(e){case "modal":return new Ke;case "banner":return new Ae;case "tooltip":return new Ye;case "custom":return new $e;case "inline":return new Ve;case "inline-custom":return new We;case "form":return new Ue;case "inline-form":return new ze;case "walkthrough":return null}}function ke(e){try{e.destroy();}catch{}}var me="veo-builder";var tn=[/^css-[a-z0-9]{4,}$/i,/^_[a-z0-9]+_[a-z0-9]{4,}_\d+$/,/^[a-z]{2,4}-[a-z0-9]{6,}$/i,/^[a-f0-9]{6,}$/i,/^sc-[a-z0-9]+$/i];function Yn(e){return tn.some(t=>t.test(e))}function Qe(e){return Array.from(e.classList).filter(t=>!Yn(t)&&t.length<64)}var jn=["data-testid","data-test","data-cy","name","aria-label","placeholder","alt","title","href","role","type"],Xn=100;function ct(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&")}function nn(e){return e.replace(/[\\"]/g,"\\$&")}function qn(e,t){for(let n of jn){let o=e.getAttribute(n);if(o&&o.length>0&&o.length<=Xn)return `${t}[${n}="${nn(o)}"]`}return null}function Qn(e){let t=e.tagName.toLowerCase(),n=e.getAttribute("data-veo-tag");if(n)return `${t}[data-veo-tag="${nn(n)}"]`;if(e.id){let r=Qe(e),a=r.length>0?`.${r.map(ct).join(".")}`:"";return `${t}#${ct(e.id)}${a}`}let o=qn(e,t);if(o)return o;let i=Qe(e),s=i.length>0?`.${i.map(ct).join(".")}`:"";return `${t}${s}`}function Ze(e,t=5){let n=[],o=e,i=0;for(;o&&o!==document.documentElement&&i<=t;)n.unshift(Qn(o)),o=o.parentElement,i++;return n.join(" > ")}var dt=2147483646,Zn="data-veo-picker",on=5,Jn=`
248
+ `;var y=class{constructor(){this.host=null;this.shadow=null;this.cleanups=[];}createHost(){let t=document.createElement("div");t.setAttribute(vt,"");let n=t.attachShadow({mode:"open"}),o=document.createElement("style");o.textContent=Et,n.appendChild(o);let i=document.createElement("div");return n.appendChild(i),document.body.appendChild(t),this.host=t,this.shadow=n,{host:t,shadow:n,root:i}}applyDesign(t){this.host&&bt(this.host,t);}registerCleanup(t){this.cleanups.push(t);}destroy(){for(let t of this.cleanups)try{t();}catch{}this.cleanups=[],this.host?.parentNode&&this.host.parentNode.removeChild(this.host),this.host=null,this.shadow=null;}};var Se=class extends y{render(t){let n=t.guide.guideSteps[0];if(!n)return;let{root:o}=this.createHost();this.applyDesign(n.style);let i=o.ownerDocument??document,s=n.style?.position==="bottom"?"bottom":"top",r=i.createElement("div");r.className=`veo-banner veo-banner-${s}`;let a=(l,d)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:l}),d&&window.open(d,"_blank","noopener,noreferrer"),t.onClose();},c=U(n,i,{onCtaClick:(l,d)=>{a("cta_clicked",l==="url"?d:void 0);},onDismiss:()=>a("dismissed")});r.appendChild(c),o.appendChild(r),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var q=Math.min,F=Math.max,ye=Math.round;var I=e=>({x:e,y:e}),fn={left:"right",right:"left",bottom:"top",top:"bottom"};function Te(e,t,n){return F(e,q(t,n))}function ie(e,t){return typeof e=="function"?e(t):e}function W(e){return e.split("-")[0]}function re(e){return e.split("-")[1]}function nt(e){return e==="x"?"y":"x"}function Le(e){return e==="y"?"height":"width"}function H(e){let t=e[0];return t==="t"||t==="b"?"y":"x"}function Ie(e){return nt(H(e))}function Pt(e,t,n){n===void 0&&(n=false);let o=re(e),i=Ie(e),s=Le(i),r=i==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(r=xe(r)),[r,xe(r)]}function Rt(e){let t=xe(e);return [Ae(e),t,Ae(t)]}function Ae(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var Ct=["left","right"],kt=["right","left"],mn=["top","bottom"],hn=["bottom","top"];function gn(e,t,n){switch(e){case "top":case "bottom":return n?t?kt:Ct:t?Ct:kt;case "left":case "right":return t?mn:hn;default:return []}}function St(e,t,n,o){let i=re(e),s=gn(W(e),n==="start",o);return i&&(s=s.map(r=>r+"-"+i),t&&(s=s.concat(s.map(Ae)))),s}function xe(e){let t=W(e);return fn[t]+e.slice(t.length)}function vn(e){return {top:0,right:0,bottom:0,left:0,...e}}function ot(e){return typeof e!="number"?vn(e):{top:e,right:e,bottom:e,left:e}}function J(e){let{x:t,y:n,width:o,height:i}=e;return {width:o,height:i,top:n,left:t,right:t+o,bottom:n+i,x:t,y:n}}function At(e,t,n){let{reference:o,floating:i}=e,s=H(t),r=Ie(t),a=Le(r),c=W(t),l=s==="y",d=o.x+o.width/2-i.width/2,p=o.y+o.height/2-i.height/2,f=o[a]/2-i[a]/2,u;switch(c){case "top":u={x:d,y:o.y-i.height};break;case "bottom":u={x:d,y:o.y+o.height};break;case "right":u={x:o.x+o.width,y:p};break;case "left":u={x:o.x-i.width,y:p};break;default:u={x:o.x,y:o.y};}switch(re(t)){case "start":u[r]-=f*(n&&l?-1:1);break;case "end":u[r]+=f*(n&&l?-1:1);break}return u}async function Tt(e,t){var n;t===void 0&&(t={});let{x:o,y:i,platform:s,rects:r,elements:a,strategy:c}=e,{boundary:l="clippingAncestors",rootBoundary:d="viewport",elementContext:p="floating",altBoundary:f=false,padding:u=0}=ie(t,e),m=ot(u),g=a[f?p==="floating"?"reference":"floating":p],v=J(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(g)))==null||n?g:g.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:l,rootBoundary:d,strategy:c})),w=p==="floating"?{x:o,y:i,width:r.floating.width,height:r.floating.height}:r.reference,x=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),b=await(s.isElement==null?void 0:s.isElement(x))?await(s.getScale==null?void 0:s.getScale(x))||{x:1,y:1}:{x:1,y:1},A=J(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:x,strategy:c}):w);return {top:(v.top-A.top+m.top)/b.y,bottom:(A.bottom-v.bottom+m.bottom)/b.y,left:(v.left-A.left+m.left)/b.x,right:(A.right-v.right+m.right)/b.x}}var wn=50,Lt=async(e,t,n)=>{let{placement:o="bottom",strategy:i="absolute",middleware:s=[],platform:r}=n,a=r.detectOverflow?r:{...r,detectOverflow:Tt},c=await(r.isRTL==null?void 0:r.isRTL(t)),l=await r.getElementRects({reference:e,floating:t,strategy:i}),{x:d,y:p}=At(l,o,c),f=o,u=0,m={};for(let h=0;h<s.length;h++){let g=s[h];if(!g)continue;let{name:v,fn:w}=g,{x,y:b,data:A,reset:C}=await w({x:d,y:p,initialPlacement:o,placement:f,strategy:i,middlewareData:m,rects:l,platform:a,elements:{reference:e,floating:t}});d=x??d,p=b??p,m[v]={...m[v],...A},C&&u<wn&&(u++,typeof C=="object"&&(C.placement&&(f=C.placement),C.rects&&(l=C.rects===true?await r.getElementRects({reference:e,floating:t,strategy:i}):C.rects),{x:d,y:p}=At(l,f,c)),h=-1);}return {x:d,y:p,placement:f,strategy:i,middlewareData:m}},It=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:o,placement:i,rects:s,platform:r,elements:a,middlewareData:c}=t,{element:l,padding:d=0}=ie(e,t)||{};if(l==null)return {};let p=ot(d),f={x:n,y:o},u=Ie(i),m=Le(u),h=await r.getDimensions(l),g=u==="y",v=g?"top":"left",w=g?"bottom":"right",x=g?"clientHeight":"clientWidth",b=s.reference[m]+s.reference[u]-f[u]-s.floating[m],A=f[u]-s.reference[u],C=await(r.getOffsetParent==null?void 0:r.getOffsetParent(l)),z=C?C[x]:0;(!z||!await(r.isElement==null?void 0:r.isElement(C)))&&(z=a.floating[x]||s.floating[m]);let he=b/2-A/2,V=z/2-h[m]/2-1,N=q(p[v],V),ge=q(p[w],V),K=N,ve=z-h[m]-ge,E=z/2-h[m]/2+he,j=Te(K,E,ve),B=!c.arrow&&re(i)!=null&&E!==j&&s.reference[m]/2-(E<K?N:ge)-h[m]/2<0,T=B?E<K?E-K:E-ve:0;return {[u]:f[u]+T,data:{[u]:j,centerOffset:E-j-T,...B&&{alignmentOffset:T}},reset:B}}});var _t=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;let{placement:i,middlewareData:s,rects:r,initialPlacement:a,platform:c,elements:l}=t,{mainAxis:d=true,crossAxis:p=true,fallbackPlacements:f,fallbackStrategy:u="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:h=true,...g}=ie(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return {};let v=W(i),w=H(a),x=W(a)===a,b=await(c.isRTL==null?void 0:c.isRTL(l.floating)),A=f||(x||!h?[xe(a)]:Rt(a)),C=m!=="none";!f&&C&&A.push(...St(a,h,m,b));let z=[a,...A],he=await c.detectOverflow(t,g),V=[],N=((o=s.flip)==null?void 0:o.overflows)||[];if(d&&V.push(he[v]),p){let E=Pt(i,r,b);V.push(he[E[0]],he[E[1]]);}if(N=[...N,{placement:i,overflows:V}],!V.every(E=>E<=0)){var ge,K;let E=(((ge=s.flip)==null?void 0:ge.index)||0)+1,j=z[E];if(j&&(!(p==="alignment"?w!==H(j):false)||N.every(L=>H(L.placement)===w?L.overflows[0]>0:true)))return {data:{index:E,overflows:N},reset:{placement:j}};let B=(K=N.filter(T=>T.overflows[0]<=0).sort((T,L)=>T.overflows[1]-L.overflows[1])[0])==null?void 0:K.placement;if(!B)switch(u){case "bestFit":{var ve;let T=(ve=N.filter(L=>{if(C){let $=H(L.placement);return $===w||$==="y"}return true}).map(L=>[L.placement,L.overflows.filter($=>$>0).reduce(($,ln)=>$+ln,0)]).sort((L,$)=>L[1]-$[1])[0])==null?void 0:ve[0];T&&(B=T);break}case "initialPlacement":B=a;break}if(i!==B)return {reset:{placement:B}}}return {}}}};var xn=new Set(["left","top"]);async function yn(e,t){let{placement:n,platform:o,elements:i}=e,s=await(o.isRTL==null?void 0:o.isRTL(i.floating)),r=W(n),a=re(n),c=H(n)==="y",l=xn.has(r)?-1:1,d=s&&c?-1:1,p=ie(t,e),{mainAxis:f,crossAxis:u,alignmentAxis:m}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return a&&typeof m=="number"&&(u=a==="end"?m*-1:m),c?{x:u*d,y:f*l}:{x:f*l,y:u*d}}var Ot=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;let{x:i,y:s,placement:r,middlewareData:a}=t,c=await yn(t,e);return r===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:i+c.x,y:s+c.y,data:{...c,placement:r}}}}},Nt=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:o,placement:i,platform:s}=t,{mainAxis:r=true,crossAxis:a=false,limiter:c={fn:v=>{let{x:w,y:x}=v;return {x:w,y:x}}},...l}=ie(e,t),d={x:n,y:o},p=await s.detectOverflow(t,l),f=H(W(i)),u=nt(f),m=d[u],h=d[f];if(r){let v=u==="y"?"top":"left",w=u==="y"?"bottom":"right",x=m+p[v],b=m-p[w];m=Te(x,m,b);}if(a){let v=f==="y"?"top":"left",w=f==="y"?"bottom":"right",x=h+p[v],b=h-p[w];h=Te(x,h,b);}let g=c.fn({...t,[u]:m,[f]:h});return {...g,data:{x:g.x-n,y:g.y-o,enabled:{[u]:r,[f]:a}}}}}};function Oe(){return typeof window<"u"}function Z(e){return Mt(e)?(e.nodeName||"").toLowerCase():"#document"}function k(e){var t;return (e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function _(e){var t;return (t=(Mt(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Mt(e){return Oe()?e instanceof Node||e instanceof k(e).Node:false}function P(e){return Oe()?e instanceof Element||e instanceof k(e).Element:false}function O(e){return Oe()?e instanceof HTMLElement||e instanceof k(e).HTMLElement:false}function Bt(e){return !Oe()||typeof ShadowRoot>"u"?false:e instanceof ShadowRoot||e instanceof k(e).ShadowRoot}function se(e){let{overflow:t,overflowX:n,overflowY:o,display:i}=R(e);return /auto|scroll|overlay|hidden|clip/.test(t+o+n)&&i!=="inline"&&i!=="contents"}function Dt(e){return /^(table|td|th)$/.test(Z(e))}function be(e){try{if(e.matches(":popover-open"))return !0}catch{}try{return e.matches(":modal")}catch{return false}}var bn=/transform|translate|scale|rotate|perspective|filter/,En=/paint|layout|strict|content/,Q=e=>!!e&&e!=="none",it;function Ne(e){let t=P(e)?R(e):e;return Q(t.transform)||Q(t.translate)||Q(t.scale)||Q(t.rotate)||Q(t.perspective)||!Be()&&(Q(t.backdropFilter)||Q(t.filter))||bn.test(t.willChange||"")||En.test(t.contain||"")}function Ht(e){let t=G(e);for(;O(t)&&!ee(t);){if(Ne(t))return t;if(be(t))return null;t=G(t);}return null}function Be(){return it==null&&(it=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),it}function ee(e){return /^(html|body|#document)$/.test(Z(e))}function R(e){return k(e).getComputedStyle(e)}function Ee(e){return P(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function G(e){if(Z(e)==="html")return e;let t=e.assignedSlot||e.parentNode||Bt(e)&&e.host||_(e);return Bt(t)?t.host:t}function Gt(e){let t=G(e);return ee(t)?e.ownerDocument?e.ownerDocument.body:e.body:O(t)&&se(t)?t:Gt(t)}function _e(e,t,n){var o;t===void 0&&(t=[]);let i=Gt(e),s=i===((o=e.ownerDocument)==null?void 0:o.body),r=k(i);if(s){Me(r);return t.concat(r,r.visualViewport||[],se(i)?i:[],[])}else return t.concat(i,_e(i,[]))}function Me(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Wt(e){let t=R(e),n=parseFloat(t.width)||0,o=parseFloat(t.height)||0,i=O(e),s=i?e.offsetWidth:n,r=i?e.offsetHeight:o,a=ye(n)!==s||ye(o)!==r;return a&&(n=s,o=r),{width:n,height:o,$:a}}function zt(e){return P(e)?e:e.contextElement}function ae(e){let t=zt(e);if(!O(t))return I(1);let n=t.getBoundingClientRect(),{width:o,height:i,$:s}=Wt(t),r=(s?ye(n.width):n.width)/o,a=(s?ye(n.height):n.height)/i;return (!r||!Number.isFinite(r))&&(r=1),(!a||!Number.isFinite(a))&&(a=1),{x:r,y:a}}var Cn=I(0);function Vt(e){let t=k(e);return !Be()||!t.visualViewport?Cn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function kn(e,t,n){return t===void 0&&(t=false),!n||t&&n!==k(e)?false:t}function Ce(e,t,n,o){t===void 0&&(t=false),n===void 0&&(n=false);let i=e.getBoundingClientRect(),s=zt(e),r=I(1);t&&(o?P(o)&&(r=ae(o)):r=ae(e));let a=kn(s,n,o)?Vt(s):I(0),c=(i.left+a.x)/r.x,l=(i.top+a.y)/r.y,d=i.width/r.x,p=i.height/r.y;if(s){let f=k(s),u=o&&P(o)?k(o):o,m=f,h=Me(m);for(;h&&o&&u!==m;){let g=ae(h),v=h.getBoundingClientRect(),w=R(h),x=v.left+(h.clientLeft+parseFloat(w.paddingLeft))*g.x,b=v.top+(h.clientTop+parseFloat(w.paddingTop))*g.y;c*=g.x,l*=g.y,d*=g.x,p*=g.y,c+=x,l+=b,m=k(h),h=Me(m);}}return J({width:d,height:p,x:c,y:l})}function De(e,t){let n=Ee(e).scrollLeft;return t?t.left+n:Ce(_(e)).left+n}function Kt(e,t){let n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-De(e,n),i=n.top+t.scrollTop;return {x:o,y:i}}function Pn(e){let{elements:t,rect:n,offsetParent:o,strategy:i}=e,s=i==="fixed",r=_(o),a=t?be(t.floating):false;if(o===r||a&&s)return n;let c={scrollLeft:0,scrollTop:0},l=I(1),d=I(0),p=O(o);if((p||!p&&!s)&&((Z(o)!=="body"||se(r))&&(c=Ee(o)),p)){let u=Ce(o);l=ae(o),d.x=u.x+o.clientLeft,d.y=u.y+o.clientTop;}let f=r&&!p&&!s?Kt(r,c):I(0);return {width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+d.x+f.x,y:n.y*l.y-c.scrollTop*l.y+d.y+f.y}}function Rn(e){return Array.from(e.getClientRects())}function Sn(e){let t=_(e),n=Ee(e),o=e.ownerDocument.body,i=F(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=F(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),r=-n.scrollLeft+De(e),a=-n.scrollTop;return R(o).direction==="rtl"&&(r+=F(t.clientWidth,o.clientWidth)-i),{width:i,height:s,x:r,y:a}}var $t=25;function An(e,t){let n=k(e),o=_(e),i=n.visualViewport,s=o.clientWidth,r=o.clientHeight,a=0,c=0;if(i){s=i.width,r=i.height;let d=Be();(!d||d&&t==="fixed")&&(a=i.offsetLeft,c=i.offsetTop);}let l=De(o);if(l<=0){let d=o.ownerDocument,p=d.body,f=getComputedStyle(p),u=d.compatMode==="CSS1Compat"&&parseFloat(f.marginLeft)+parseFloat(f.marginRight)||0,m=Math.abs(o.clientWidth-p.clientWidth-u);m<=$t&&(s-=m);}else l<=$t&&(s+=l);return {width:s,height:r,x:a,y:c}}function Tn(e,t){let n=Ce(e,true,t==="fixed"),o=n.top+e.clientTop,i=n.left+e.clientLeft,s=O(e)?ae(e):I(1),r=e.clientWidth*s.x,a=e.clientHeight*s.y,c=i*s.x,l=o*s.y;return {width:r,height:a,x:c,y:l}}function Ut(e,t,n){let o;if(t==="viewport")o=An(e,n);else if(t==="document")o=Sn(_(e));else if(P(t))o=Tn(t,n);else {let i=Vt(e);o={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height};}return J(o)}function jt(e,t){let n=G(e);return n===t||!P(n)||ee(n)?false:R(n).position==="fixed"||jt(n,t)}function Ln(e,t){let n=t.get(e);if(n)return n;let o=_e(e,[]).filter(a=>P(a)&&Z(a)!=="body"),i=null,s=R(e).position==="fixed",r=s?G(e):e;for(;P(r)&&!ee(r);){let a=R(r),c=Ne(r);!c&&a.position==="fixed"&&(i=null),(s?!c&&!i:!c&&a.position==="static"&&!!i&&(i.position==="absolute"||i.position==="fixed")||se(r)&&!c&&jt(e,r))?o=o.filter(d=>d!==r):i=a,r=G(r);}return t.set(e,o),o}function In(e){let{element:t,boundary:n,rootBoundary:o,strategy:i}=e,r=[...n==="clippingAncestors"?be(t)?[]:Ln(t,this._c):[].concat(n),o],a=Ut(t,r[0],i),c=a.top,l=a.right,d=a.bottom,p=a.left;for(let f=1;f<r.length;f++){let u=Ut(t,r[f],i);c=F(u.top,c),l=q(u.right,l),d=q(u.bottom,d),p=F(u.left,p);}return {width:l-p,height:d-c,x:p,y:c}}function _n(e){let{width:t,height:n}=Wt(e);return {width:t,height:n}}function On(e,t,n){let o=O(t),i=_(t),s=n==="fixed",r=Ce(e,true,s,t),a={scrollLeft:0,scrollTop:0},c=I(0);function l(){c.x=De(i);}if(o||!o&&!s)if((Z(t)!=="body"||se(i))&&(a=Ee(t)),o){let u=Ce(t,true,s,t);c.x=u.x+t.clientLeft,c.y=u.y+t.clientTop;}else i&&l();s&&!o&&i&&l();let d=i&&!o&&!s?Kt(i,a):I(0),p=r.left+a.scrollLeft-c.x-d.x,f=r.top+a.scrollTop-c.y-d.y;return {x:p,y:f,width:r.width,height:r.height}}function rt(e){return R(e).position==="static"}function Ft(e,t){if(!O(e)||R(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return _(e)===n&&(n=n.ownerDocument.body),n}function Yt(e,t){let n=k(e);if(be(e))return n;if(!O(e)){let i=G(e);for(;i&&!ee(i);){if(P(i)&&!rt(i))return i;i=G(i);}return n}let o=Ft(e,t);for(;o&&Dt(o)&&rt(o);)o=Ft(o,t);return o&&ee(o)&&rt(o)&&!Ne(o)?n:o||Ht(e)||n}var Nn=async function(e){let t=this.getOffsetParent||Yt,n=this.getDimensions,o=await n(e.floating);return {reference:On(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Bn(e){return R(e).direction==="rtl"}var Mn={convertOffsetParentRelativeRectToViewportRelativeRect:Pn,getDocumentElement:_,getClippingRect:In,getOffsetParent:Yt,getElementRects:Nn,getClientRects:Rn,getDimensions:_n,getScale:ae,isElement:P,isRTL:Bn};var le=Ot;var ce=Nt,de=_t;var Xt=It;var ue=(e,t,n)=>{let o=new Map,i={platform:Mn,...n},s={...i.platform,_c:o};return Lt(e,t,{...i,platform:s})};function S(e,t=5e3){return new Promise(n=>{let o=()=>{try{return document.querySelector(e)}catch{return null}},i=o();if(i){n(i);return}let s=false,r=l=>{s||(s=true,a.disconnect(),clearTimeout(c),n(l));},a=new MutationObserver(()=>{let l=o();l&&r(l);});a.observe(document.body,{childList:true,subtree:true});let c=setTimeout(()=>r(null),t);})}function qt(){let t=Date.now().toString(16).padStart(12,"0"),n=new Uint8Array(10);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(n);else for(let i=0;i<n.length;i++)n[i]=Math.floor(Math.random()*256);n[0]=(n[0]??0)&15|112,n[2]=(n[2]??0)&63|128;let o=Array.from(n,i=>i.toString(16).padStart(2,"0")).join("");return [t.slice(0,8),t.slice(8,12),o.slice(0,4),o.slice(4,8),o.slice(8,20)].join("-")}function He(e,t,n,o){let i=e.createElement("iframe");i.className="veo-custom-frame",i.setAttribute("sandbox","allow-scripts"),i.setAttribute("title",n.guide.guideName||"Veo"),i.style.width=o.width;let s=o.fixedHeight!==void 0&&o.fixedHeight!==null;s&&(i.style.height=st(o.fixedHeight));let r=qt();i.srcdoc=Hn(t.html??"",t.css??"",t.js??"",r);let a=()=>n.onClose(),c=l=>{if(l.source!==i.contentWindow)return;let d=l.data;if(!(!d||typeof d!="object"||d.__veo!==r))switch(d.type){case "dismiss":n.onInteraction({guideId:n.guide.guideId,stepIndex:0,action:"dismissed"}),a();break;case "cta":n.onInteraction({guideId:n.guide.guideId,stepIndex:0,action:"cta_clicked"}),typeof d.url=="string"&&Y(d.url)&&window.open(d.url,"_blank","noopener,noreferrer"),d.close!==false&&a();break;case "navigate":typeof d.url=="string"&&Y(d.url)&&window.location.assign(d.url);break;case "track":typeof d.name=="string"&&n.onTrack&&n.onTrack(d.name,Dn(d.props)?d.props:void 0);break;case "resize":!s&&typeof d.height=="number"&&d.height>0&&(i.style.height=`${Math.ceil(d.height)}px`);break}};return window.addEventListener("message",c),{iframe:i,cleanup:()=>window.removeEventListener("message",c)}}function st(e){return typeof e=="number"?`${e}px`:e}function Dn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hn(e,t,n,o){let i=`(function(){var T=${JSON.stringify(o)};function P(m){m.__veo=T;parent.postMessage(m,'*');}window.veo={dismiss:function(){P({type:'dismiss'});},cta:function(u){P({type:'cta',url:u});},track:function(n,p){P({type:'track',name:n,props:p||{}});},navigate:function(u){P({type:'navigate',url:u});}};document.addEventListener('click',function(e){var a=e.target&&e.target.closest?e.target.closest('a[href]'):null;if(!a)return;var h=a.getAttribute('href');if(!h||h.charAt(0)==='#'||/^(javascript|mailto|tel):/i.test(h))return;e.preventDefault();if(a.target==='_blank'){P({type:'cta',url:a.href,close:false});}else{P({type:'navigate',url:h});}},true);function H(){P({type:'resize',height:Math.ceil(document.documentElement.scrollHeight)});}window.addEventListener('load',H);try{if(typeof ResizeObserver!=='undefined'){new ResizeObserver(H).observe(document.documentElement);}}catch(e){}})();`;return `<!DOCTYPE html><html><head><meta charset="utf-8"><style>html,body{margin:0;padding:0;background:transparent;}</style><style>${Jt(t,"style")}</style></head><body>${e}<script>${i}</script>`+(n?`<script>${Jt(n,"script")}</script>`:"")+"</body></html>"}function Jt(e,t){let n=t==="script"?/<\/script/gi:/<\/style/gi;return e.replace(n,`<\\/${t}`)}var Gn={mode:"floating",position:"bottom-right"},Qt=16,$n=360,Ge=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n||typeof n.html!="string"||n.html.length===0)return;let o=n.placement??Gn,i=null;if(o.mode==="anchored"){let d=o.selector??n.selector??t.guide.activationRules.selector;if(typeof d!="string"||d.length===0||(i=await S(d),!i))return}let{root:s}=this.createHost(),r=s.ownerDocument??document,a=r.createElement("div");a.className=o.mode==="anchored"?"veo-custom-anchored":"veo-custom-floating";let{iframe:c,cleanup:l}=He(r,n,t,{width:st(o.width??$n),fixedHeight:o.height??null});this.registerCleanup(l),a.appendChild(c),s.appendChild(a),o.mode==="floating"?Un(a,o):i&&this.registerCleanup(await this.setupAnchoredPosition(i,a,o)),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}async setupAnchoredPosition(t,n,o){let i=o.side??"bottom",s=async()=>{let{x:a,y:c}=await ue(t,n,{placement:i,strategy:"fixed",middleware:[le(o.offsetY??8),de(),ce({padding:8})]});n.style.left=`${a}px`,n.style.top=`${c}px`;};await s();let r=()=>{s();};return window.addEventListener("scroll",r,true),window.addEventListener("resize",r),()=>{window.removeEventListener("scroll",r,true),window.removeEventListener("resize",r);}}};function Un(e,t){let n=t.position??"bottom-right",o=`${t.offsetX??Qt}px`,i=`${t.offsetY??Qt}px`,s=e.style;if(n==="center"){s.top="50%",s.left="50%",s.transform="translate(-50%, -50%)";return}let[r,a]=n.split("-");r==="top"?s.top=i:s.bottom=i,a==="left"?s.left=o:a==="right"?s.right=o:(s.left="50%",s.transform="translateX(-50%)");}function $e(e,t,n){let o=t.guide.guideSteps[0];if(!o)return;let i=o.fields??[],s=()=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"dismissed"}),t.onClose();},r=n.createElement("div");if(r.className="veo-guide-content",o.title){let u=n.createElement("h2");u.className="veo-guide-title",u.textContent=o.title,r.appendChild(u);}if(o.content){let u=n.createElement("p");u.className="veo-guide-text",u.textContent=o.content,r.appendChild(u);}let a=[],c=n.createElement("form");c.className="veo-form",c.noValidate=true;for(let u of i){let{wrapper:m,read:h}=Wn(u,n);a.push({field:u,read:h}),c.appendChild(m);}let l=n.createElement("p");l.className="veo-form-error",l.style.display="none",c.appendChild(l);let d=n.createElement("div");d.className="veo-guide-actions";let p=n.createElement("button");p.type="submit",p.className="veo-guide-cta",p.textContent=o.ctaText||"Enviar",d.appendChild(p),c.appendChild(d),c.addEventListener("submit",u=>{u.preventDefault(),l.style.display="none";let m={};for(let{field:g,read:v}of a){let w=v();if(w==null||w===""){if(g.required){l.textContent=`Complet\xE1 "${g.label}"`,l.style.display="block";return}continue}m[g.key]=w;}if(Object.keys(m).length===0){l.textContent="Respond\xE9 al menos un campo",l.style.display="block";return}p.disabled=true,(t.onFormSubmit??(()=>Promise.resolve(true)))(m).then(g=>{if(!g){p.disabled=false,l.textContent="No se pudo enviar. Prob\xE1 de nuevo.",l.style.display="block";return}t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"completed"});let v=t.isPreview?t.previewNote??"Vista previa: la respuesta NO se guard\xF3.":null;Fn(e,n,v),window.setTimeout(()=>t.onClose(),v?2200:1400);});}),r.appendChild(c);let f=n.createElement("button");f.type="button",f.className="veo-guide-close",f.setAttribute("aria-label","Cerrar"),f.textContent="\xD7",f.addEventListener("click",s),r.appendChild(f),e.appendChild(r);}function Fn(e,t,n){for(;e.firstChild;)e.removeChild(e.firstChild);let o=t.createElement("div");if(o.className="veo-form-thanks",o.textContent="\u2713 \xA1Gracias por tu respuesta!",e.appendChild(o),n){let i=t.createElement("p");i.className="veo-form-preview-note",i.textContent=n,e.appendChild(i);}}function Wn(e,t){let n=t.createElement("div");n.className="veo-form-field";let o=t.createElement("label");switch(o.className="veo-form-label",o.textContent=e.required?`${e.label} *`:e.label,n.appendChild(o),e.type){case "textarea":{let i=t.createElement("textarea");return i.className="veo-form-input",i.rows=3,e.placeholder&&(i.placeholder=e.placeholder),n.appendChild(i),{wrapper:n,read:()=>i.value.trim()}}case "number":{let i=t.createElement("input");return i.type="number",i.className="veo-form-input",e.placeholder&&(i.placeholder=e.placeholder),n.appendChild(i),{wrapper:n,read:()=>i.value.trim()===""?void 0:Number(i.value)}}case "select":{let i=t.createElement("select");i.className="veo-form-input";let s=t.createElement("option");s.value="",s.textContent=e.placeholder||"Eleg\xED una opci\xF3n\u2026",i.appendChild(s);for(let r of e.options??[]){let a=t.createElement("option");a.value=r,a.textContent=r,i.appendChild(a);}return n.appendChild(i),{wrapper:n,read:()=>i.value||void 0}}case "radio":{let i=t.createElement("div");i.className="veo-form-options";let s=`veo-${e.key}`,r=[];for(let a of e.options??[]){let c=t.createElement("label");c.className="veo-form-option";let l=t.createElement("input");l.type="radio",l.name=s,l.value=a,r.push(l);let d=t.createElement("span");d.textContent=a,c.appendChild(l),c.appendChild(d),i.appendChild(c);}return n.appendChild(i),{wrapper:n,read:()=>r.find(a=>a.checked)?.value}}case "multiselect":{let i=t.createElement("div");i.className="veo-form-options";let s=[];for(let r of e.options??[]){let a=t.createElement("label");a.className="veo-form-option";let c=t.createElement("input");c.type="checkbox",c.value=r,s.push(c);let l=t.createElement("span");l.textContent=r,a.appendChild(c),a.appendChild(l),i.appendChild(a);}return n.appendChild(i),{wrapper:n,read:()=>{let r=s.filter(a=>a.checked).map(a=>a.value);return r.length>0?r:void 0}}}case "checkbox":{let i=t.createElement("label");i.className="veo-form-option";let s=t.createElement("input");s.type="checkbox";let r=t.createElement("span");return r.textContent=e.placeholder||"S\xED",i.appendChild(s),i.appendChild(r),n.appendChild(i),{wrapper:n,read:()=>s.checked?true:e.required?"":false}}case "yesno":{let i=t.createElement("div");i.className="veo-form-options";let s=`veo-${e.key}`,[r,a]=e.options?.length===2?e.options:["S\xED","No"],c=[];for(let{label:l,value:d}of [{label:r,value:true},{label:a,value:false}]){let p=t.createElement("label");p.className="veo-form-option";let f=t.createElement("input");f.type="radio",f.name=s,c.push({input:f,value:d});let u=t.createElement("span");u.textContent=l,p.appendChild(f),p.appendChild(u),i.appendChild(p);}return n.appendChild(i),{wrapper:n,read:()=>c.find(l=>l.input.checked)?.value}}case "nps":return Zt(n,t,0,10,"veo-nps-btn");case "rating":return Zt(n,t,1,5,"veo-rating-btn","\u2605");default:{let i=t.createElement("input");return i.type="text",i.className="veo-form-input",e.placeholder&&(i.placeholder=e.placeholder),n.appendChild(i),{wrapper:n,read:()=>i.value.trim()}}}}function Zt(e,t,n,o,i,s){let r=t.createElement("div");r.className="veo-form-scale";let a,c=[];for(let l=n;l<=o;l++){let d=t.createElement("button");d.type="button",d.className=i,d.textContent=s??String(l),d.setAttribute("aria-label",String(l)),d.addEventListener("click",()=>{a=l,c.forEach((p,f)=>{let u=s?f+n<=l:f+n===l;p.classList.toggle("veo-scale-active",u);});}),c.push(d),r.appendChild(d);}return e.appendChild(r),{wrapper:e,read:()=>a}}var Ue=class extends y{render(t){let n=t.guide.guideSteps[0];if(!n||(n.fields??[]).length===0)return;let{root:o}=this.createHost();this.applyDesign(n.style);let i=o.ownerDocument??document,s=i.createElement("div");s.className="veo-modal-overlay";let r=i.createElement("div");r.className="veo-modal-card",$e(r,t,i),s.appendChild(r),o.appendChild(s);let a=()=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"dismissed"}),t.onClose();};s.addEventListener("click",l=>{l.target===s&&a();});let c=l=>{l.key==="Escape"&&a();};document.addEventListener("keydown",c),this.registerCleanup(()=>document.removeEventListener("keydown",c)),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};function pe(e){let t=e?.inlinePosition;return t==="before"||t==="prepend"||t==="append"?t:"after"}function te(e,t,n){switch(n){case "before":e.before(t);break;case "after":e.after(t);break;case "prepend":e.prepend(t);break;case "append":e.append(t);break}}function fe(e,t,n){let o=window.setInterval(()=>{if(e.isConnected)return;let i=document.querySelector(t);i&&te(i,e,n);},1e3);return ()=>window.clearInterval(o)}var Fe=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n||typeof n.html!="string"||n.html.length===0)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await S(o);if(!i)return;let{host:s,root:r}=this.createHost();s.style.display="block";let a=pe(n.style);te(i,s,a),this.registerCleanup(fe(s,o,a));let c=r.ownerDocument??document,l=c.createElement("div");l.className="veo-custom-inline";let{iframe:d,cleanup:p}=He(c,n,t,{width:"100%"});this.registerCleanup(p),l.appendChild(d),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var We=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n||(n.fields??[]).length===0)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await S(o);if(!i)return;let{host:s,root:r}=this.createHost();s.style.display="block";let a=pe(n.style);te(i,s,a),this.registerCleanup(fe(s,o,a)),this.applyDesign(n.style);let c=r.ownerDocument??document,l=c.createElement("div");l.className="veo-inline",$e(l,t,c),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var ze=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await S(o);if(!i)return;let{host:s,root:r}=this.createHost();s.style.display="block";let a=pe(n.style);te(i,s,a),this.registerCleanup(fe(s,o,a)),this.applyDesign(n.style);let c=r.ownerDocument??document,l=c.createElement("div");l.className="veo-inline";let d=(f,u)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:f}),u&&window.open(u,"_blank","noopener,noreferrer"),t.onClose();},p=U(n,c,{onCtaClick:(f,u)=>d("cta_clicked",f==="url"?u:void 0),onDismiss:()=>d("dismissed")});l.appendChild(p),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Ve=class extends y{render(t){let n=t.guide.guideSteps[0];if(!n)return;let{root:o}=this.createHost();this.applyDesign(n.style);let i=o.ownerDocument??document,s=i.createElement("div");s.className="veo-modal-overlay";let r=i.createElement("div");r.className="veo-modal-card";let a=(d,p)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:d}),p&&window.open(p,"_blank","noopener,noreferrer"),t.onClose();},c=U(n,i,{onCtaClick:(d,p)=>{a("cta_clicked",d==="url"?p:void 0);},onDismiss:()=>a("dismissed")});r.appendChild(c),s.appendChild(r),o.appendChild(s),s.addEventListener("click",d=>{d.target===s&&a("dismissed");});let l=d=>{d.key==="Escape"&&a("dismissed");};document.addEventListener("keydown",l),this.registerCleanup(()=>document.removeEventListener("keydown",l)),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Ke=class extends y{async render(t){let n=t.guide.guideSteps[0];if(!n)return;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return;let i=await S(o);if(!i)return;let{root:s}=this.createHost();this.applyDesign(n.style);let r=s.ownerDocument??document,a=r.createElement("div");a.className="veo-tooltip";let c=(f,u)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:f}),u&&window.open(u,"_blank","noopener,noreferrer"),t.onClose();},l=U(n,r,{onCtaClick:(f,u)=>{c("cta_clicked",f==="url"?u:void 0);},onDismiss:()=>c("dismissed")});a.appendChild(l),s.appendChild(a);let d=async()=>{let{x:f,y:u}=await ue(i,a,{placement:"bottom",middleware:[le(8),de(),ce({padding:8})]});a.style.left=`${f}px`,a.style.top=`${u}px`;};await d();let p=()=>{d();};window.addEventListener("scroll",p,true),window.addEventListener("resize",p),this.registerCleanup(()=>{window.removeEventListener("scroll",p,true),window.removeEventListener("resize",p);}),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};function en(e,t,n,o,i){let s=o.createElement("div");s.className="veo-guide-content";let r=o.createElement("div");r.className="veo-walkthrough-counter",r.textContent=`Paso ${t+1} de ${n}`,s.appendChild(r);let a=o.createElement("div");a.className="veo-walkthrough-progress";for(let m=0;m<n;m++){let h=o.createElement("span");h.className="veo-walkthrough-progress-dot",m<t&&h.classList.add("completed"),m===t&&h.classList.add("active"),a.appendChild(h);}if(s.appendChild(a),typeof e.imageUrl=="string"&&e.imageUrl&&Y(e.imageUrl)){let m=o.createElement("img");m.className="veo-guide-image",m.src=e.imageUrl,m.alt=typeof e.title=="string"?e.title:"",s.appendChild(m);}if(typeof e.title=="string"&&e.title){let m=o.createElement("h2");m.className="veo-guide-title",m.textContent=e.title,s.appendChild(m);}if(typeof e.content=="string"&&e.content){let m=o.createElement("p");m.className="veo-guide-text",m.textContent=e.content,s.appendChild(m);}let c=o.createElement("div");c.className="veo-walkthrough-actions";let l=o.createElement("button");l.type="button",l.className="veo-walkthrough-skip",l.textContent="Omitir",l.addEventListener("click",()=>i.onSkip()),c.appendChild(l);let d=o.createElement("div");if(d.className="veo-walkthrough-actions-right",t>0){let m=o.createElement("button");m.type="button",m.className="veo-walkthrough-btn-secondary",m.textContent="Atr\xE1s",m.addEventListener("click",()=>i.onBack()),d.appendChild(m);}let p=t===n-1,f=o.createElement("button");f.type="button",f.className="veo-guide-cta";let u=p?"Finalizar":"Siguiente";return f.textContent=typeof e.ctaText=="string"&&e.ctaText?e.ctaText:u,f.addEventListener("click",()=>{p?i.onComplete():i.onNext();}),d.appendChild(f),c.appendChild(d),s.appendChild(c),s}var je=class extends y{async render(t){let n=t.guide.guideSteps[t.currentStepIndex];if(!n)return false;let o=n.selector??t.guide.activationRules.selector;if(typeof o!="string"||o.length===0)return false;let i=await S(o,5e3);if(!i)return false;let{root:s}=this.createHost();this.applyDesign(n.style);let r=s.ownerDocument??document,a=r.createElement("div");a.className="veo-walkthrough";let c=en(n,t.currentStepIndex,t.guide.guideSteps.length,r,t.callbacks);a.appendChild(c);let l=r.createElement("div");l.className="veo-walkthrough-arrow",a.appendChild(l),s.appendChild(a);let d=async()=>{let{x:f,y:u,placement:m,middlewareData:h}=await ue(i,a,{placement:"bottom",middleware:[le(10),de(),ce({padding:8}),Xt({element:l})]});a.style.left=`${f}px`,a.style.top=`${u}px`,Vn(l,m,h.arrow);};await d();let p=()=>{d();};return window.addEventListener("scroll",p,true),window.addEventListener("resize",p),this.registerCleanup(()=>{window.removeEventListener("scroll",p,true),window.removeEventListener("resize",p);}),true}},zn={top:"bottom",bottom:"top",left:"right",right:"left"};function Vn(e,t,n){let o=zn[t.split("-")[0]??"bottom"]??"top";for(let i of ["top","bottom","left","right"])e.style.setProperty(i,"");n?.x!=null&&e.style.setProperty("left",`${n.x}px`),n?.y!=null&&e.style.setProperty("top",`${n.y}px`),e.style.setProperty(o,"-6px");}var Kn="__veo_preview__",at=class{constructor(){this.singleStep=null;this.walkthrough=null;this.walkthroughGuide=null;this.walkthroughIndex=0;this.input=null;}preview(t){this.close(),this.input=t;let n=jn(t),o=typeof t.startStepIndex=="number"?t.startStepIndex:0,i=n.guideType==="walkthrough"?this.startWalkthrough(n,o):this.renderSingleStep(n);return {close:()=>this.close(),ready:i}}close(){this.singleStep&&(ke(this.singleStep),this.singleStep=null),this.walkthrough&&(ke(this.walkthrough),this.walkthrough=null),this.walkthroughGuide=null,this.walkthroughIndex=0,this.input=null;}async renderSingleStep(t){let n=Yn(t.guideType);if(!n)return {rendered:false};this.singleStep=n;let o=false;try{await n.render({guide:t,onInteraction:i=>{i.action==="shown"&&(o=!0);},onClose:()=>this.close(),onTrack:()=>{},onFormSubmit:this.input?.formSubmit??(()=>Promise.resolve(!0)),isPreview:!0,...this.input?.formSubmit&&this.input.formSubmitNote!==void 0?{previewNote:this.input.formSubmitNote}:{}});}catch{return this.close(),{rendered:false}}return this.singleStep!==n?(ke(n),{rendered:false}):{rendered:o}}async startWalkthrough(t,n=0){if(t.guideSteps.length===0)return {rendered:false};this.walkthroughGuide=t;let o=Math.min(Math.max(0,Math.floor(n)),t.guideSteps.length-1);return this.walkthroughIndex=o,{rendered:await this.renderWalkthroughStep(o)}}async renderWalkthroughStep(t){let n=this.walkthroughGuide;if(!n)return false;this.walkthrough&&(ke(this.walkthrough),this.walkthrough=null);let o=new je,i={onNext:()=>{let r=this.walkthroughIndex+1;if(r>=n.guideSteps.length){this.close();return}this.walkthroughIndex=r,this.renderWalkthroughStep(r);},onBack:()=>{let r=this.walkthroughIndex-1;r<0||(this.walkthroughIndex=r,this.renderWalkthroughStep(r));},onSkip:()=>this.close(),onComplete:()=>this.close()},s=false;try{s=await o.render({guide:n,currentStepIndex:t,callbacks:i});}catch{s=false;}return !s||this.walkthroughGuide!==n?(ke(o),false):(this.walkthrough=o,true)}},Ye=null;function Xe(e){return D()?(Ye||(Ye=new at),Ye.preview(e)):{close:()=>{},ready:Promise.resolve({rendered:false})}}function Pe(){Ye?.close();}function jn(e){let t=e.activationRules?.selector,n={url:e.activationRules?.url??{type:"prefix",pattern:"/"},trigger:"immediate",...t!==void 0?{selector:t}:{}};return {guideId:Kn,guideName:e.guideName??"Preview",guideType:e.guideType,guideSteps:e.guideSteps,activationRules:n,displayFrequency:"always",displayPriority:0}}function Yn(e){switch(e){case "modal":return new Ve;case "banner":return new Se;case "tooltip":return new Ke;case "custom":return new Ge;case "inline":return new ze;case "inline-custom":return new Fe;case "form":return new Ue;case "inline-form":return new We;case "walkthrough":return null}}function ke(e){try{e.destroy();}catch{}}var me="veo-builder";var Xn="/guides/design";function tn(e){if(!M()||!D())return {target:()=>null,teardown:()=>{}};let t=document.createElement("div");t.setAttribute("data-veo-builder-panel","");let n=t.attachShadow({mode:"open"}),o=document.createElement("style");o.textContent=Jn;let i=document.createElement("div");i.className="veo-panel";let s=document.createElement("div");s.className="veo-panel-header";let r=document.createElement("span");r.className="veo-panel-title",r.textContent="Veo \xB7 Editor";let a=document.createElement("button");a.className="veo-panel-close",a.type="button",a.setAttribute("aria-label","Cerrar"),a.textContent="\u2715",a.addEventListener("click",()=>e.onClose()),s.append(r,a);let c=document.createElement("iframe");return c.className="veo-panel-frame",c.title="Editor de Veo",c.src=qn(e),i.append(s,c),n.append(o,i),document.body.appendChild(t),{target:()=>c.contentWindow,teardown:()=>t.remove()}}function qn(e){let t=e.panelPath??Xn,n=new URL(t,e.dashboardOrigin);return n.searchParams.set("veoToken",e.token),n.searchParams.set("veoApp",e.appOrigin),e.guide&&n.searchParams.set("veoGuide",e.guide),n.toString()}var Jn=`
249
+ :host { all: initial; }
250
+ .veo-panel {
251
+ position: fixed; top: 0; right: 0; bottom: 0;
252
+ width: 420px; max-width: 100vw;
253
+ display: flex; flex-direction: column;
254
+ background: #fff;
255
+ box-shadow: -8px 0 30px rgba(0,0,0,0.18);
256
+ z-index: 2147483647;
257
+ font-family: system-ui, -apple-system, sans-serif;
258
+ }
259
+ .veo-panel-header {
260
+ flex: 0 0 auto;
261
+ display: flex; align-items: center; justify-content: space-between;
262
+ padding: 8px 12px;
263
+ background: #0f172a; color: #fff;
264
+ font-size: 13px; font-weight: 600;
265
+ }
266
+ .veo-panel-close {
267
+ border: 0; background: transparent; color: #fff;
268
+ font-size: 15px; cursor: pointer; line-height: 1;
269
+ padding: 4px 6px; border-radius: 6px;
270
+ }
271
+ .veo-panel-close:hover { background: rgba(255,255,255,0.15); }
272
+ .veo-panel-frame { flex: 1 1 auto; width: 100%; border: 0; background: #fff; }
273
+ `;var nn=[/^css-[a-z0-9]{4,}$/i,/^_[a-z0-9]+_[a-z0-9]{4,}_\d+$/,/^[a-z]{2,4}-[a-z0-9]{6,}$/i,/^[a-f0-9]{6,}$/i,/^sc-[a-z0-9]+$/i];function Qn(e){return nn.some(t=>t.test(e))}function qe(e){return Array.from(e.classList).filter(t=>!Qn(t)&&t.length<64)}var Zn=["data-testid","data-test","data-cy","name","aria-label","placeholder","alt","title","href","role","type"],eo=100;function lt(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&")}function on(e){return e.replace(/[\\"]/g,"\\$&")}function to(e,t){for(let n of Zn){let o=e.getAttribute(n);if(o&&o.length>0&&o.length<=eo)return `${t}[${n}="${on(o)}"]`}return null}function no(e){let t=e.tagName.toLowerCase(),n=e.getAttribute("data-veo-tag");if(n)return `${t}[data-veo-tag="${on(n)}"]`;if(e.id){let r=qe(e),a=r.length>0?`.${r.map(lt).join(".")}`:"";return `${t}#${lt(e.id)}${a}`}let o=to(e,t);if(o)return o;let i=qe(e),s=i.length>0?`.${i.map(lt).join(".")}`:"";return `${t}${s}`}function Je(e,t=5){let n=[],o=e,i=0;for(;o&&o!==document.documentElement&&i<=t;)n.unshift(no(o)),o=o.parentElement,i++;return n.join(" > ")}var ct=2147483646,oo="data-veo-picker",rn=5,io=`
249
274
  :host { all: initial; }
250
275
  .veo-pick-box {
251
276
  position: fixed;
252
- z-index: ${dt};
277
+ z-index: ${ct};
253
278
  pointer-events: none;
254
279
  box-sizing: border-box;
255
280
  background: rgba(99, 102, 241, 0.22);
@@ -259,7 +284,7 @@ var veoBuilder=(function(exports){'use strict';function G(){return typeof window
259
284
  }
260
285
  .veo-pick-label {
261
286
  position: fixed;
262
- z-index: ${dt};
287
+ z-index: ${ct};
263
288
  pointer-events: none;
264
289
  max-width: 360px;
265
290
  background: #1e1b4b;
@@ -276,7 +301,7 @@ var veoBuilder=(function(exports){'use strict';function G(){return typeof window
276
301
  top: 12px;
277
302
  left: 50%;
278
303
  transform: translateX(-50%);
279
- z-index: ${dt};
304
+ z-index: ${ct};
280
305
  pointer-events: none;
281
306
  background: #4338ca;
282
307
  color: #fff;
@@ -285,5 +310,5 @@ var veoBuilder=(function(exports){'use strict';function G(){return typeof window
285
310
  border-radius: 999px;
286
311
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
287
312
  }
288
- `,ut=class{constructor(){this.host=null;this.box=null;this.label=null;this.current=null;this.maxAncestors=on;this.onPick=null;this.onCancel=null;this.onMove=t=>{let n=t.target;!(n instanceof Element)||this.isOwn(n)||(this.current=n,this.draw(n));};this.onClick=t=>{let n=this.current??(t.target instanceof Element?t.target:null);if(!n||this.isOwn(n))return;t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation();let o=this.describe(n),i=this.onPick;this.stop(),i?.(o);};this.onKey=t=>{if(t.key!=="Escape")return;t.preventDefault(),t.stopPropagation();let n=this.onCancel;this.stop(),n?.();};this.swallow=t=>{this.isOwn(t.target)||(t.preventDefault(),t.stopPropagation());};this.reposition=()=>{this.current&&this.draw(this.current);};}start(t){this.stop(),this.maxAncestors=t.maxAncestors??on,this.onPick=t.onPick,this.onCancel=t.onCancel??null;let n=document.createElement("div");n.setAttribute(Zn,"");let o=n.attachShadow({mode:"open"}),i=document.createElement("style");i.textContent=Jn,this.box=document.createElement("div"),this.box.className="veo-pick-box",this.box.style.display="none",this.label=document.createElement("div"),this.label.className="veo-pick-label",this.label.style.display="none";let s=document.createElement("div");s.className="veo-pick-hint",s.textContent=t.hint??"Seleccion\xE1 un elemento \xB7 Esc para cancelar",o.append(i,this.box,this.label,s),document.body.appendChild(n),this.host=n,document.addEventListener("mousemove",this.onMove,true),document.addEventListener("click",this.onClick,true),document.addEventListener("mousedown",this.swallow,true),document.addEventListener("mouseup",this.swallow,true),document.addEventListener("keydown",this.onKey,true),window.addEventListener("scroll",this.reposition,true),window.addEventListener("resize",this.reposition);}stop(){document.removeEventListener("mousemove",this.onMove,true),document.removeEventListener("click",this.onClick,true),document.removeEventListener("mousedown",this.swallow,true),document.removeEventListener("mouseup",this.swallow,true),document.removeEventListener("keydown",this.onKey,true),window.removeEventListener("scroll",this.reposition,true),window.removeEventListener("resize",this.reposition),this.host?.parentNode&&this.host.parentNode.removeChild(this.host),this.host=null,this.box=null,this.label=null,this.current=null,this.onPick=null,this.onCancel=null;}isOwn(t){return t instanceof Node&&this.host!==null&&this.host.contains(t)}draw(t){if(!this.box||!this.label)return;let n=t.getBoundingClientRect();this.box.style.display="block",this.box.style.top=`${n.top}px`,this.box.style.left=`${n.left}px`,this.box.style.width=`${n.width}px`,this.box.style.height=`${n.height}px`;let o=Ze(t,0);this.label.textContent="";let i=document.createElement("div");i.className="veo-pick-sel",i.textContent=o;let s=document.createElement("div");s.className="veo-pick-dim",s.textContent=`${Math.round(n.width)} \xD7 ${Math.round(n.height)}`,this.label.append(i,s),this.label.style.display="block";let r=48,a=n.bottom+8+r>window.innerHeight;this.label.style.top=a?`${Math.max(8,n.top-r-8)}px`:`${n.bottom+8}px`,this.label.style.left=`${Math.max(8,n.left)}px`;}describe(t){let n=t.getBoundingClientRect();return {selector:Ze(t,this.maxAncestors),shortSelector:Ze(t,0),tag:t.tagName.toLowerCase(),id:t.id||null,classes:Qe(t),text:(t.textContent??"").trim().slice(0,120),rect:{x:Math.round(n.left),y:Math.round(n.top),width:Math.round(n.width),height:Math.round(n.height)}}}},Se=null;function Je(e){return Y()?(Se||(Se=new ut),Se.start(e),{stop:()=>Se?.stop()}):{stop:()=>{}}}function rn(){Se?.stop();}function et(){if(!G()||!Y())return null;let e=ft();if(!e)return null;let t=no();if(!t)return null;let n=to();if(!n)return null;let o=null,i=u=>{n.postMessage({source:me,token:e,...u},t);},s=u=>{switch(u.type){case "start-picker":o?.stop(),o=Je({onPick:f=>{o=null,i({type:"picked",payload:f});},onCancel:()=>{o=null,i({type:"pick-cancelled"});},...u.maxAncestors!==void 0?{maxAncestors:u.maxAncestors}:{},...u.hint!==void 0?{hint:u.hint}:{}});break;case "stop-picker":o?.stop(),o=null;break;case "preview":u.guide&&qe(u.guide).ready;break;case "close-preview":Re();break;case "teardown":c();break}},r=u=>{if(u.origin!==t)return;let f=u.data;!f||f.source!==me||f.token!==e||s(f);},a=()=>i({type:"closed"}),c=()=>{window.removeEventListener("message",r),window.removeEventListener("pagehide",a),o?.stop(),o=null,Re(),ht(),i({type:"closed"});},l=()=>{window.addEventListener("message",r),window.addEventListener("pagehide",a),i({type:"ready"});},d=window.__veoBuilder;return d?.apiKey&&d?.apiUrl?eo(d.apiUrl,d.apiKey,e).then(u=>{u?l():window.console&&console.warn("[veo] token de builder inv\xE1lido \u2014 modo no activado");}):l(),{teardown:c}}async function eo(e,t,n){try{let o=`${e.replace(/\/+$/,"")}/v1/builder/verify`,i=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json","X-Api-Key":t},body:JSON.stringify({token:n})});return i.ok?(await i.json().catch(()=>null))?.valid!==!1:!0}catch{return true}}function to(){return window.opener&&window.opener!==window?window.opener:window.parent&&window.parent!==window?window.parent:null}function no(){let e=mt();if(e)try{return new URL(e).origin}catch{return null}if(Y()&&document.referrer)try{return new URL(document.referrer).origin}catch{return null}return null}var oo="popup,width=1280,height=860",io=600;function sn(e){if(!G())return ao();let t=e.dashboardOrigin??window.location.origin,n=so(e.appUrl),o=ro(e.appUrl,e.token,t),i=e.frame??null,s=i!==null,r=null;s?i.src=o:r=window.open(o,e.windowName??"veo-builder",e.windowFeatures??oo);let a=()=>s?i?.contentWindow??null:r,c=f=>{let p=a();p&&(!s&&r?.closed||p.postMessage({source:me,token:e.token,...f},n??"*"));},l,d=()=>{window.removeEventListener("message",u),l!==void 0&&(clearInterval(l),l=void 0);},u=f=>{if(n&&f.origin!==n)return;let p=f.data;if(!(!p||p.source!==me||p.token!==e.token))switch(p.type){case "ready":e.onReady?.();break;case "picked":p.payload&&e.onPicked?.(p.payload);break;case "pick-cancelled":e.onCancelled?.();break;case "closed":d(),e.onClosed?.();break}};return window.addEventListener("message",u),s||(l=setInterval(()=>{r?.closed&&(d(),e.onClosed?.());},io)),{startPicker:f=>c({type:"start-picker",...f?.maxAncestors!==void 0?{maxAncestors:f.maxAncestors}:{},...f?.hint!==void 0?{hint:f.hint}:{}}),stopPicker:()=>c({type:"stop-picker"}),preview:f=>c({type:"preview",guide:f}),closePreview:()=>c({type:"close-preview"}),close:()=>{c({type:"teardown"}),s?i&&(i.src="about:blank"):r&&!r.closed&&r.close(),d();}}}function ro(e,t,n){try{let o=new URL(e,window.location.href);return o.searchParams.set(oe,t),o.searchParams.set(j,n),o.toString()}catch{return e}}function so(e){try{return new URL(e,window.location.href).origin}catch{return null}}function ao(){return {startPicker:()=>{},stopPicker:()=>{},preview:()=>{},closePreview:()=>{},close:()=>{}}}et();exports.closeGuidePreview=Re;exports.createBuilderSession=sn;exports.initBuilderMode=et;exports.previewGuide=qe;exports.startElementPicker=Je;exports.stopElementPicker=rn;return exports;})({});//# sourceMappingURL=veo-builder.js.map
313
+ `,dt=class{constructor(){this.host=null;this.box=null;this.label=null;this.current=null;this.maxAncestors=rn;this.onPick=null;this.onCancel=null;this.onMove=t=>{let n=t.target;!(n instanceof Element)||this.isOwn(n)||(this.current=n,this.draw(n));};this.onClick=t=>{let n=this.current??(t.target instanceof Element?t.target:null);if(!n||this.isOwn(n))return;t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation();let o=this.describe(n),i=this.onPick;this.stop(),i?.(o);};this.onKey=t=>{if(t.key!=="Escape")return;t.preventDefault(),t.stopPropagation();let n=this.onCancel;this.stop(),n?.();};this.swallow=t=>{this.isOwn(t.target)||(t.preventDefault(),t.stopPropagation());};this.reposition=()=>{this.current&&this.draw(this.current);};}start(t){this.stop(),this.maxAncestors=t.maxAncestors??rn,this.onPick=t.onPick,this.onCancel=t.onCancel??null;let n=document.createElement("div");n.setAttribute(oo,"");let o=n.attachShadow({mode:"open"}),i=document.createElement("style");i.textContent=io,this.box=document.createElement("div"),this.box.className="veo-pick-box",this.box.style.display="none",this.label=document.createElement("div"),this.label.className="veo-pick-label",this.label.style.display="none";let s=document.createElement("div");s.className="veo-pick-hint",s.textContent=t.hint??"Seleccion\xE1 un elemento \xB7 Esc para cancelar",o.append(i,this.box,this.label,s),document.body.appendChild(n),this.host=n,document.addEventListener("mousemove",this.onMove,true),document.addEventListener("click",this.onClick,true),document.addEventListener("mousedown",this.swallow,true),document.addEventListener("mouseup",this.swallow,true),document.addEventListener("keydown",this.onKey,true),window.addEventListener("scroll",this.reposition,true),window.addEventListener("resize",this.reposition);}stop(){document.removeEventListener("mousemove",this.onMove,true),document.removeEventListener("click",this.onClick,true),document.removeEventListener("mousedown",this.swallow,true),document.removeEventListener("mouseup",this.swallow,true),document.removeEventListener("keydown",this.onKey,true),window.removeEventListener("scroll",this.reposition,true),window.removeEventListener("resize",this.reposition),this.host?.parentNode&&this.host.parentNode.removeChild(this.host),this.host=null,this.box=null,this.label=null,this.current=null,this.onPick=null,this.onCancel=null;}isOwn(t){return t instanceof Node&&this.host!==null&&this.host.contains(t)}draw(t){if(!this.box||!this.label)return;let n=t.getBoundingClientRect();this.box.style.display="block",this.box.style.top=`${n.top}px`,this.box.style.left=`${n.left}px`,this.box.style.width=`${n.width}px`,this.box.style.height=`${n.height}px`;let o=Je(t,0);this.label.textContent="";let i=document.createElement("div");i.className="veo-pick-sel",i.textContent=o;let s=document.createElement("div");s.className="veo-pick-dim",s.textContent=`${Math.round(n.width)} \xD7 ${Math.round(n.height)}`,this.label.append(i,s),this.label.style.display="block";let r=48,a=n.bottom+8+r>window.innerHeight;this.label.style.top=a?`${Math.max(8,n.top-r-8)}px`:`${n.bottom+8}px`,this.label.style.left=`${Math.max(8,n.left)}px`;}describe(t){let n=t.getBoundingClientRect();return {selector:Je(t,this.maxAncestors),shortSelector:Je(t,0),tag:t.tagName.toLowerCase(),id:t.id||null,classes:qe(t),text:(t.textContent??"").trim().slice(0,120),rect:{x:Math.round(n.left),y:Math.round(n.top),width:Math.round(n.width),height:Math.round(n.height)}}}},Re=null;function Qe(e){return D()?(Re||(Re=new dt),Re.start(e),{stop:()=>Re?.stop()}):{stop:()=>{}}}function sn(){Re?.stop();}function Ze(){if(!M()||!D())return null;let e=mt();if(!e)return null;let t=e.token,n=ao(e.origin);if(!n)return null;let o=null,i=null,s=null,r=()=>i?i.target():s,a=m=>{r()?.postMessage({source:me,token:t,...m},n);},c=m=>{switch(m.type){case "panel-ready":a({type:"ready"});break;case "start-picker":o?.stop(),o=Qe({onPick:h=>{o=null,a({type:"picked",payload:h});},onCancel:()=>{o=null,a({type:"pick-cancelled"});},...m.maxAncestors!==void 0?{maxAncestors:m.maxAncestors}:{},...m.hint!==void 0?{hint:m.hint}:{}});break;case "stop-picker":o?.stop(),o=null;break;case "preview":m.guide&&Xe(m.guide).ready;break;case "close-preview":Pe();break;case "teardown":p();break}},l=m=>{if(m.origin!==n)return;let h=m.data;!h||h.source!==me||h.token!==t||c(h);},d=()=>a({type:"closed"}),p=()=>{window.removeEventListener("message",l),window.removeEventListener("pagehide",d),o?.stop(),o=null,Pe(),a({type:"closed"}),i?.teardown(),i=null,ht();};if(e.panel)i=tn({dashboardOrigin:n,token:t,appOrigin:window.location.origin,guide:e.guide,panelPath:e.panelPath,onClose:()=>p()});else if(s=so(),!s)return null;let f=()=>{window.addEventListener("message",l),window.addEventListener("pagehide",d),e.panel||a({type:"ready"});},u=window.__veoBuilder;return u?.apiKey&&u?.apiUrl?ro(u.apiUrl,u.apiKey,t).then(m=>{m?f():window.console&&console.warn("[veo] token de builder inv\xE1lido \u2014 modo no activado");}):f(),{teardown:p}}async function ro(e,t,n){try{let o=`${e.replace(/\/+$/,"")}/v1/builder/verify`,i=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json","X-Api-Key":t},body:JSON.stringify({token:n})});return i.ok?(await i.json().catch(()=>null))?.valid!==!1:!0}catch{return true}}function so(){return window.opener&&window.opener!==window?window.opener:window.parent&&window.parent!==window?window.parent:null}function ao(e){if(e)try{return new URL(e).origin}catch{return null}if(D()&&document.referrer)try{return new URL(document.referrer).origin}catch{return null}return null}var lo="popup,width=1280,height=860",co=600;function an(e){if(!M())return fo();let t=e.dashboardOrigin??window.location.origin,n=po(e.appUrl),o=uo(e.appUrl,e.token,t),i=e.frame??null,s=i!==null,r=null;s?i.src=o:r=window.open(o,e.windowName??"veo-builder",e.windowFeatures??lo);let a=()=>s?i?.contentWindow??null:r,c=f=>{let u=a();u&&(!s&&r?.closed||u.postMessage({source:me,token:e.token,...f},n??"*"));},l,d=()=>{window.removeEventListener("message",p),l!==void 0&&(clearInterval(l),l=void 0);},p=f=>{if(n&&f.origin!==n)return;let u=f.data;if(!(!u||u.source!==me||u.token!==e.token))switch(u.type){case "ready":e.onReady?.();break;case "picked":u.payload&&e.onPicked?.(u.payload);break;case "pick-cancelled":e.onCancelled?.();break;case "closed":d(),e.onClosed?.();break}};return window.addEventListener("message",p),s||(l=setInterval(()=>{r?.closed&&(d(),e.onClosed?.());},co)),{startPicker:f=>c({type:"start-picker",...f?.maxAncestors!==void 0?{maxAncestors:f.maxAncestors}:{},...f?.hint!==void 0?{hint:f.hint}:{}}),stopPicker:()=>c({type:"stop-picker"}),preview:f=>c({type:"preview",guide:f}),closePreview:()=>c({type:"close-preview"}),close:()=>{c({type:"teardown"}),s?i&&(i.src="about:blank"):r&&!r.closed&&r.close(),d();}}}function uo(e,t,n){try{let o=new URL(e,window.location.href);return o.searchParams.set(ne,t),o.searchParams.set(oe,n),o.toString()}catch{return e}}function po(e){try{return new URL(e,window.location.href).origin}catch{return null}}function fo(){return {startPicker:()=>{},stopPicker:()=>{},preview:()=>{},closePreview:()=>{},close:()=>{}}}Ze();exports.closeGuidePreview=Pe;exports.createBuilderSession=an;exports.initBuilderMode=Ze;exports.previewGuide=Xe;exports.startElementPicker=Qe;exports.stopElementPicker=sn;return exports;})({});//# sourceMappingURL=veo-builder.js.map
289
314
  //# sourceMappingURL=veo-builder.js.map