veo-sdk 0.3.0 → 0.3.3

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-VPQDAUIL.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 B(){return typeof window<"u"}function D(){return typeof document<"u"}var ne="veoBuilder",oe="veoBuilderOrigin",pt="veoBuilderPanel",ft="veoBuilderPanelPath",mt="veoGuide";var et="veo:builder_ctx";function tt(){try{return window.sessionStorage}catch{return null}}function pn(){try{return new URLSearchParams(window.location.search)}catch{return null}}function ht(){if(!B())return null;let e=pn(),t=e?.get(ne);if(t){let n={token:t,origin:e?.get(oe)??null,panel:e?.get(pt)==="1",guide:e?.get(mt)??null,panelPath:e?.get(ft)??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 gt(){if(B())try{tt()?.removeItem(et);}catch{}}var vt=["http:","https:"],wt="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&&j(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",d=fn(e);n.onCtaClick(a,d);}),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 j(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 vt.includes(n.protocol)}catch{return false}}function fn(e){let t=e.style?.ctaUrl;if(typeof t=="string")return j(t)?t:void 0}var mn={"--veo-bg":"#1f2937","--veo-text":"#f9fafb","--veo-text-secondary":"#d1d5db","--veo-shadow":"0 20px 60px rgba(0, 0, 0, 0.55)"},hn={left:"flex-start",center:"center",right:"flex-end"},xt={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)"},yt={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]},bt=/^#[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 Et(e,t){if(!t||typeof t!="object")return;let n=t;if(typeof n.accentColor=="string"&&bt.test(n.accentColor.trim())&&e.style.setProperty("--veo-primary",n.accentColor.trim()),n.theme==="dark")for(let[s,r]of Object.entries(mn))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",hn[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"&&bt.test(n.borderColor.trim())&&e.style.setProperty("--veo-border-color",n.borderColor.trim()),typeof n.shadow=="string"&&xt[n.shadow]&&e.style.setProperty("--veo-shadow",xt[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"&&yt[n.overlayPosition]&&([o,i]=yt[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 Ct=`
2
2
  :host {
3
3
  --veo-primary: #4f46e5;
4
4
  --veo-text: #1f2937;
@@ -245,7 +245,40 @@ 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 b=class{constructor(){this.host=null;this.shadow=null;this.cleanups=[];}createHost(){let t=document.createElement("div");t.setAttribute(wt,"");let n=t.attachShadow({mode:"open"}),o=document.createElement("style");o.textContent=Ct,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&&Et(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 b{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,c)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:l}),c&&window.open(c,"_blank","noopener,noreferrer"),t.onClose();},d=U(n,i,{onCtaClick:(l,c)=>{a("cta_clicked",l==="url"?c:void 0);},onDismiss:()=>a("dismissed")});r.appendChild(d),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}),gn={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 W(e){return e.split("-")[0]}function re(e){return e.split("-")[1]}function nt(e){return e==="x"?"y":"x"}function Te(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 Rt(e,t,n){n===void 0&&(n=false);let o=re(e),i=Ie(e),s=Te(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 [Ae(e),t,Ae(t)]}function Ae(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}var kt=["left","right"],Pt=["right","left"],vn=["top","bottom"],wn=["bottom","top"];function xn(e,t,n){switch(e){case "top":case "bottom":return n?t?Pt:kt:t?kt:Pt;case "left":case "right":return t?vn:wn;default:return []}}function At(e,t,n,o){let i=re(e),s=xn(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 gn[t]+e.slice(t.length)}function yn(e){return {top:0,right:0,bottom:0,left:0,...e}}function ot(e){return typeof e!="number"?yn(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 Lt(e,t,n){let{reference:o,floating:i}=e,s=H(t),r=Ie(t),a=Te(r),d=W(t),l=s==="y",c=o.x+o.width/2-i.width/2,f=o.y+o.height/2-i.height/2,p=o[a]/2-i[a]/2,u;switch(d){case "top":u={x:c,y:o.y-i.height};break;case "bottom":u={x:c,y:o.y+o.height};break;case "right":u={x:o.x+o.width,y:f};break;case "left":u={x:o.x-i.width,y:f};break;default:u={x:o.x,y:o.y};}switch(re(t)){case "start":u[r]-=p*(n&&l?-1:1);break;case "end":u[r]+=p*(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:d}=e,{boundary:l="clippingAncestors",rootBoundary:c="viewport",elementContext:f="floating",altBoundary:p=false,padding:u=0}=ie(t,e),m=ot(u),g=a[p?f==="floating"?"reference":"floating":f],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:c,strategy:d})),w=f==="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)),y=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},P=J(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:x,strategy:d}):w);return {top:(v.top-P.top+m.top)/y.y,bottom:(P.bottom-v.bottom+m.bottom)/y.y,left:(v.left-P.left+m.left)/y.x,right:(P.right-v.right+m.right)/y.x}}var bn=50,It=async(e,t,n)=>{let{placement:o="bottom",strategy:i="absolute",middleware:s=[],platform:r}=n,a=r.detectOverflow?r:{...r,detectOverflow:Tt},d=await(r.isRTL==null?void 0:r.isRTL(t)),l=await r.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:f}=Lt(l,o,d),p=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,data:P,reset:C}=await w({x:c,y:f,initialPlacement:o,placement:p,strategy:i,middlewareData:m,rects:l,platform:a,elements:{reference:e,floating:t}});c=x??c,f=y??f,m[v]={...m[v],...P},C&&u<bn&&(u++,typeof C=="object"&&(C.placement&&(p=C.placement),C.rects&&(l=C.rects===true?await r.getElementRects({reference:e,floating:t,strategy:i}):C.rects),{x:c,y:f}=Lt(l,p,d)),h=-1);}return {x:c,y:f,placement:p,strategy:i,middlewareData:m}},_t=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:o,placement:i,rects:s,platform:r,elements:a,middlewareData:d}=t,{element:l,padding:c=0}=ie(e,t)||{};if(l==null)return {};let f=ot(c),p={x:n,y:o},u=Ie(i),m=Te(u),h=await r.getDimensions(l),g=u==="y",v=g?"top":"left",w=g?"bottom":"right",x=g?"clientHeight":"clientWidth",y=s.reference[m]+s.reference[u]-p[u]-s.floating[m],P=p[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=y/2-P/2,V=z/2-h[m]/2-1,N=q(f[v],V),ge=q(f[w],V),K=N,ve=z-h[m]-ge,E=z/2-h[m]/2+he,Y=Le(K,E,ve),M=!d.arrow&&re(i)!=null&&E!==Y&&s.reference[m]/2-(E<K?N:ge)-h[m]/2<0,L=M?E<K?E-K:E-ve:0;return {[u]:p[u]+L,data:{[u]:Y,centerOffset:E-Y-L,...M&&{alignmentOffset:L}},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:d,elements:l}=t,{mainAxis:c=true,crossAxis:f=true,fallbackPlacements:p,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,y=await(d.isRTL==null?void 0:d.isRTL(l.floating)),P=p||(x||!h?[xe(a)]:St(a)),C=m!=="none";!p&&C&&P.push(...At(a,h,m,y));let z=[a,...P],he=await d.detectOverflow(t,g),V=[],N=((o=s.flip)==null?void 0:o.overflows)||[];if(c&&V.push(he[v]),f){let E=Rt(i,r,y);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,Y=z[E];if(Y&&(!(f==="alignment"?w!==H(Y):false)||N.every(T=>H(T.placement)===w?T.overflows[0]>0:true)))return {data:{index:E,overflows:N},reset:{placement:Y}};let M=(K=N.filter(L=>L.overflows[0]<=0).sort((L,T)=>L.overflows[1]-T.overflows[1])[0])==null?void 0:K.placement;if(!M)switch(u){case "bestFit":{var ve;let L=(ve=N.filter(T=>{if(C){let $=H(T.placement);return $===w||$==="y"}return true}).map(T=>[T.placement,T.overflows.filter($=>$>0).reduce(($,un)=>$+un,0)]).sort((T,$)=>T[1]-$[1])[0])==null?void 0:ve[0];L&&(M=L);break}case "initialPlacement":M=a;break}if(i!==M)return {reset:{placement:M}}}return {}}}};var En=new Set(["left","top"]);async function Cn(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),d=H(n)==="y",l=En.has(r)?-1:1,c=s&&d?-1:1,f=ie(t,e),{mainAxis:p,crossAxis:u,alignmentAxis:m}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof m=="number"&&(u=a==="end"?m*-1:m),d?{x:u*c,y:p*l}:{x:p*l,y:u*c}}var Nt=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,d=await Cn(t,e);return r===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:i+d.x,y:s+d.y,data:{...d,placement:r}}}}},Mt=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:d={fn:v=>{let{x:w,y:x}=v;return {x:w,y:x}}},...l}=ie(e,t),c={x:n,y:o},f=await s.detectOverflow(t,l),p=H(W(i)),u=nt(p),m=c[u],h=c[p];if(r){let v=u==="y"?"top":"left",w=u==="y"?"bottom":"right",x=m+f[v],y=m-f[w];m=Le(x,m,y);}if(a){let v=p==="y"?"top":"left",w=p==="y"?"bottom":"right",x=h+f[v],y=h-f[w];h=Le(x,h,y);}let g=d.fn({...t,[u]:m,[p]:h});return {...g,data:{x:g.x-n,y:g.y-o,enabled:{[u]:r,[p]:a}}}}}};function Oe(){return typeof window<"u"}function Z(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 _(e){var t;return (t=(Dt(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Dt(e){return Oe()?e instanceof Node||e instanceof k(e).Node:false}function R(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}=S(e);return /auto|scroll|overlay|hidden|clip/.test(t+o+n)&&i!=="inline"&&i!=="contents"}function Ht(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 kn=/transform|translate|scale|rotate|perspective|filter/,Pn=/paint|layout|strict|content/,Q=e=>!!e&&e!=="none",it;function Ne(e){let t=R(e)?S(e):e;return Q(t.transform)||Q(t.translate)||Q(t.scale)||Q(t.rotate)||Q(t.perspective)||!Me()&&(Q(t.backdropFilter)||Q(t.filter))||kn.test(t.willChange||"")||Pn.test(t.contain||"")}function Gt(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 Me(){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 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 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 $t(e){let t=G(e);return ee(t)?e.ownerDocument?e.ownerDocument.body:e.body:O(t)&&se(t)?t:$t(t)}function _e(e,t,n){var o;t===void 0&&(t=[]);let i=$t(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 zt(e){let t=S(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 Vt(e){return R(e)?e:e.contextElement}function ae(e){let t=Vt(e);if(!O(t))return I(1);let n=t.getBoundingClientRect(),{width:o,height:i,$:s}=zt(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 Rn=I(0);function Kt(e){let t=k(e);return !Me()||!t.visualViewport?Rn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Sn(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=Vt(e),r=I(1);t&&(o?R(o)&&(r=ae(o)):r=ae(e));let a=Sn(s,n,o)?Kt(s):I(0),d=(i.left+a.x)/r.x,l=(i.top+a.y)/r.y,c=i.width/r.x,f=i.height/r.y;if(s){let p=k(s),u=o&&R(o)?k(o):o,m=p,h=Be(m);for(;h&&o&&u!==m;){let g=ae(h),v=h.getBoundingClientRect(),w=S(h),x=v.left+(h.clientLeft+parseFloat(w.paddingLeft))*g.x,y=v.top+(h.clientTop+parseFloat(w.paddingTop))*g.y;d*=g.x,l*=g.y,c*=g.x,f*=g.y,d+=x,l+=y,m=k(h),h=Be(m);}}return J({width:c,height:f,x:d,y:l})}function De(e,t){let n=Ee(e).scrollLeft;return t?t.left+n:Ce(_(e)).left+n}function Yt(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 An(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 d={scrollLeft:0,scrollTop:0},l=I(1),c=I(0),f=O(o);if((f||!f&&!s)&&((Z(o)!=="body"||se(r))&&(d=Ee(o)),f)){let u=Ce(o);l=ae(o),c.x=u.x+o.clientLeft,c.y=u.y+o.clientTop;}let p=r&&!f&&!s?Yt(r,d):I(0);return {width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-d.scrollLeft*l.x+c.x+p.x,y:n.y*l.y-d.scrollTop*l.y+c.y+p.y}}function Ln(e){return Array.from(e.getClientRects())}function Tn(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 S(o).direction==="rtl"&&(r+=F(t.clientWidth,o.clientWidth)-i),{width:i,height:s,x:r,y:a}}var Ut=25;function In(e,t){let n=k(e),o=_(e),i=n.visualViewport,s=o.clientWidth,r=o.clientHeight,a=0,d=0;if(i){s=i.width,r=i.height;let c=Me();(!c||c&&t==="fixed")&&(a=i.offsetLeft,d=i.offsetTop);}let l=De(o);if(l<=0){let c=o.ownerDocument,f=c.body,p=getComputedStyle(f),u=c.compatMode==="CSS1Compat"&&parseFloat(p.marginLeft)+parseFloat(p.marginRight)||0,m=Math.abs(o.clientWidth-f.clientWidth-u);m<=Ut&&(s-=m);}else l<=Ut&&(s+=l);return {width:s,height:r,x:a,y:d}}function _n(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,d=i*s.x,l=o*s.y;return {width:r,height:a,x:d,y:l}}function Ft(e,t,n){let o;if(t==="viewport")o=In(e,n);else if(t==="document")o=Tn(_(e));else if(R(t))o=_n(t,n);else {let i=Kt(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||!R(n)||ee(n)?false:S(n).position==="fixed"||jt(n,t)}function On(e,t){let n=t.get(e);if(n)return n;let o=_e(e,[]).filter(a=>R(a)&&Z(a)!=="body"),i=null,s=S(e).position==="fixed",r=s?G(e):e;for(;R(r)&&!ee(r);){let a=S(r),d=Ne(r);!d&&a.position==="fixed"&&(i=null),(s?!d&&!i:!d&&a.position==="static"&&!!i&&(i.position==="absolute"||i.position==="fixed")||se(r)&&!d&&jt(e,r))?o=o.filter(c=>c!==r):i=a,r=G(r);}return t.set(e,o),o}function Nn(e){let{element:t,boundary:n,rootBoundary:o,strategy:i}=e,r=[...n==="clippingAncestors"?be(t)?[]:On(t,this._c):[].concat(n),o],a=Ft(t,r[0],i),d=a.top,l=a.right,c=a.bottom,f=a.left;for(let p=1;p<r.length;p++){let u=Ft(t,r[p],i);d=F(u.top,d),l=q(u.right,l),c=q(u.bottom,c),f=F(u.left,f);}return {width:l-f,height:c-d,x:f,y:d}}function Mn(e){let{width:t,height:n}=zt(e);return {width:t,height:n}}function Bn(e,t,n){let o=O(t),i=_(t),s=n==="fixed",r=Ce(e,true,s,t),a={scrollLeft:0,scrollTop:0},d=I(0);function l(){d.x=De(i);}if(o||!o&&!s)if((Z(t)!=="body"||se(i))&&(a=Ee(t)),o){let u=Ce(t,true,s,t);d.x=u.x+t.clientLeft,d.y=u.y+t.clientTop;}else i&&l();s&&!o&&i&&l();let c=i&&!o&&!s?Yt(i,a):I(0),f=r.left+a.scrollLeft-d.x-c.x,p=r.top+a.scrollTop-d.y-c.y;return {x:f,y:p,width:r.width,height:r.height}}function rt(e){return S(e).position==="static"}function Wt(e,t){if(!O(e)||S(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return _(e)===n&&(n=n.ownerDocument.body),n}function Xt(e,t){let n=k(e);if(be(e))return n;if(!O(e)){let i=G(e);for(;i&&!ee(i);){if(R(i)&&!rt(i))return i;i=G(i);}return n}let o=Wt(e,t);for(;o&&Ht(o)&&rt(o);)o=Wt(o,t);return o&&ee(o)&&rt(o)&&!Ne(o)?n:o||Gt(e)||n}var Dn=async function(e){let t=this.getOffsetParent||Xt,n=this.getDimensions,o=await n(e.floating);return {reference:Bn(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Hn(e){return S(e).direction==="rtl"}var Gn={convertOffsetParentRelativeRectToViewportRelativeRect:An,getDocumentElement:_,getClippingRect:Nn,getOffsetParent:Xt,getElementRects:Dn,getClientRects:Ln,getDimensions:Mn,getScale:ae,isElement:R,isRTL:Hn};var le=Nt;var ce=Mt,de=Ot;var qt=_t;var ue=(e,t,n)=>{let o=new Map,i={platform:Gn,...n},s={...i.platform,_c:o};return It(e,t,{...i,platform:s})};function A(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(d),n(l));},a=new MutationObserver(()=>{let l=o();l&&r(l);});a.observe(document.body,{childList:true,subtree:true});let d=setTimeout(()=>r(null),t);})}function Jt(){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=Jt();i.srcdoc=Un(t.html??"",t.css??"",t.js??"",r);let a=()=>n.onClose(),d=l=>{if(l.source!==i.contentWindow)return;let c=l.data;if(!(!c||typeof c!="object"||c.__veo!==r))switch(c.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 c.url=="string"&&j(c.url)&&window.open(c.url,"_blank","noopener,noreferrer"),c.close!==false&&a();break;case "navigate":typeof c.url=="string"&&j(c.url)&&window.location.assign(c.url);break;case "track":typeof c.name=="string"&&n.onTrack&&n.onTrack(c.name,$n(c.props)?c.props:void 0);break;case "resize":!s&&typeof c.height=="number"&&c.height>0&&(i.style.height=`${Math.ceil(c.height)}px`);break}};return window.addEventListener("message",d),{iframe:i,cleanup:()=>window.removeEventListener("message",d)}}function st(e){return typeof e=="number"?`${e}px`:e}function $n(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Un(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 Fn={mode:"floating",position:"bottom-right"},Zt=16,Wn=360,Ge=class extends b{async render(t){let n=t.guide.guideSteps[0];if(!n||typeof n.html!="string"||n.html.length===0)return;let o=n.placement??Fn,i=null;if(o.mode==="anchored"){let c=o.selector??n.selector??t.guide.activationRules.selector;if(typeof c!="string"||c.length===0||(i=await A(c),!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:d,cleanup:l}=He(r,n,t,{width:st(o.width??Wn),fixedHeight:o.height??null});this.registerCleanup(l),a.appendChild(d),s.appendChild(a),o.mode==="floating"?zn(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:d}=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=`${d}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 zn(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 $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=[],d=n.createElement("form");d.className="veo-form",d.noValidate=true;for(let u of i){let{wrapper:m,read:h}=Kn(u,n);a.push({field:u,read:h}),d.appendChild(m);}let l=n.createElement("p");l.className="veo-form-error",l.style.display="none",d.appendChild(l);let c=n.createElement("div");c.className="veo-guide-actions";let f=n.createElement("button");f.type="submit",f.className="veo-guide-cta",f.textContent=o.ctaText||"Enviar",c.appendChild(f),d.appendChild(c),d.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}f.disabled=true,(t.onFormSubmit??(()=>Promise.resolve(true)))(m).then(g=>{if(!g){f.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;Vn(e,n,v),window.setTimeout(()=>t.onClose(),v?2200:1400);});}),r.appendChild(d);let p=n.createElement("button");p.type="button",p.className="veo-guide-close",p.setAttribute("aria-label","Cerrar"),p.textContent="\xD7",p.addEventListener("click",s),r.appendChild(p),e.appendChild(r);}function Vn(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 Kn(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 d=t.createElement("label");d.className="veo-form-option";let l=t.createElement("input");l.type="radio",l.name=s,l.value=a,r.push(l);let c=t.createElement("span");c.textContent=a,d.appendChild(l),d.appendChild(c),i.appendChild(d);}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 d=t.createElement("input");d.type="checkbox",d.value=r,s.push(d);let l=t.createElement("span");l.textContent=r,a.appendChild(d),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"],d=[];for(let{label:l,value:c}of [{label:r,value:true},{label:a,value:false}]){let f=t.createElement("label");f.className="veo-form-option";let p=t.createElement("input");p.type="radio",p.name=s,d.push({input:p,value:c});let u=t.createElement("span");u.textContent=l,f.appendChild(p),f.appendChild(u),i.appendChild(f);}return n.appendChild(i),{wrapper:n,read:()=>d.find(l=>l.input.checked)?.value}}case "nps":return en(n,t,0,10,"veo-nps-btn");case "rating":return en(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 en(e,t,n,o,i,s){let r=t.createElement("div");r.className="veo-form-scale";let a,d=[];for(let l=n;l<=o;l++){let c=t.createElement("button");c.type="button",c.className=i,c.textContent=s??String(l),c.setAttribute("aria-label",String(l)),c.addEventListener("click",()=>{a=l,d.forEach((f,p)=>{let u=s?p+n<=l:p+n===l;f.classList.toggle("veo-scale-active",u);});}),d.push(c),r.appendChild(c);}return e.appendChild(r),{wrapper:e,read:()=>a}}var Ue=class extends b{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 d=l=>{l.key==="Escape"&&a();};document.addEventListener("keydown",d),this.registerCleanup(()=>document.removeEventListener("keydown",d)),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 b{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 A(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 d=r.ownerDocument??document,l=d.createElement("div");l.className="veo-custom-inline";let{iframe:c,cleanup:f}=He(d,n,t,{width:"100%"});this.registerCleanup(f),l.appendChild(c),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var We=class extends b{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 A(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 d=r.ownerDocument??document,l=d.createElement("div");l.className="veo-inline",$e(l,t,d),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var ze=class extends b{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 A(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 d=r.ownerDocument??document,l=d.createElement("div");l.className="veo-inline";let c=(p,u)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:p}),u&&window.open(u,"_blank","noopener,noreferrer"),t.onClose();},f=U(n,d,{onCtaClick:(p,u)=>c("cta_clicked",p==="url"?u:void 0),onDismiss:()=>c("dismissed")});l.appendChild(f),r.appendChild(l),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};var Ve=class extends b{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=(c,f)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:c}),f&&window.open(f,"_blank","noopener,noreferrer"),t.onClose();},d=U(n,i,{onCtaClick:(c,f)=>{a("cta_clicked",c==="url"?f:void 0);},onDismiss:()=>a("dismissed")});r.appendChild(d),s.appendChild(r),o.appendChild(s),s.addEventListener("click",c=>{c.target===s&&a("dismissed");});let l=c=>{c.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 b{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 A(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 d=(p,u)=>{t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:p}),u&&window.open(u,"_blank","noopener,noreferrer"),t.onClose();},l=U(n,r,{onCtaClick:(p,u)=>{d("cta_clicked",p==="url"?u:void 0);},onDismiss:()=>d("dismissed")});a.appendChild(l),s.appendChild(a);let c=async()=>{let{x:p,y:u}=await ue(i,a,{placement:"bottom",middleware:[le(8),de(),ce({padding:8})]});a.style.left=`${p}px`,a.style.top=`${u}px`;};await c();let f=()=>{c();};window.addEventListener("scroll",f,true),window.addEventListener("resize",f),this.registerCleanup(()=>{window.removeEventListener("scroll",f,true),window.removeEventListener("resize",f);}),t.onInteraction({guideId:t.guide.guideId,stepIndex:0,action:"shown"});}};function tn(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&&j(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 d=o.createElement("div");d.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()),d.appendChild(l);let c=o.createElement("div");if(c.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()),c.appendChild(m);}let f=t===n-1,p=o.createElement("button");p.type="button",p.className="veo-guide-cta";let u=f?"Finalizar":"Siguiente";return p.textContent=typeof e.ctaText=="string"&&e.ctaText?e.ctaText:u,p.addEventListener("click",()=>{f?i.onComplete():i.onNext();}),c.appendChild(p),d.appendChild(c),s.appendChild(d),s}var Ye=class extends b{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 A(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 d=tn(n,t.currentStepIndex,t.guide.guideSteps.length,r,t.callbacks);a.appendChild(d);let l=r.createElement("div");l.className="veo-walkthrough-arrow",a.appendChild(l),s.appendChild(a);let c=async()=>{let{x:p,y:u,placement:m,middlewareData:h}=await ue(i,a,{placement:"bottom",middleware:[le(10),de(),ce({padding:8}),qt({element:l})]});a.style.left=`${p}px`,a.style.top=`${u}px`,jn(l,m,h.arrow);};await c();let f=()=>{c();};return window.addEventListener("scroll",f,true),window.addEventListener("resize",f),this.registerCleanup(()=>{window.removeEventListener("scroll",f,true),window.removeEventListener("resize",f);}),true}},Yn={top:"bottom",bottom:"top",left:"right",right:"left"};function jn(e,t,n){let o=Yn[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 Xn="__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=qn(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=Jn(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 Ye,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)}},je=null;function Xe(e){return D()?(je||(je=new at),je.preview(e)):{close:()=>{},ready:Promise.resolve({rendered:false})}}function Pe(){je?.close();}function qn(e){let t=e.activationRules?.selector,n={url:e.activationRules?.url??{type:"prefix",pattern:"/"},trigger:"immediate",...t!==void 0?{selector:t}:{}};return {guideId:Xn,guideName:e.guideName??"Preview",guideType:e.guideType,guideSteps:e.guideSteps,activationRules:n,displayFrequency:"always",displayPriority:0}}function Jn(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 Qn="/guides/design",on=400,Zn=640,lt=16;function rn(e){if(!B()||!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=to;let i=document.createElement("div");i.className="veo-panel";let s=Math.max(lt,window.innerWidth-on-lt),r=lt;i.style.left=`${s}px`,i.style.top=`${r}px`;let a=document.createElement("div");a.className="veo-panel-header";let d=document.createElement("span");d.className="veo-panel-title",d.textContent="Veo \xB7 Editor";let l=document.createElement("button");l.className="veo-panel-close",l.type="button",l.setAttribute("aria-label","Cerrar"),l.textContent="\u2715",l.addEventListener("click",()=>e.onClose()),a.append(d,l);let c=document.createElement("iframe");c.className="veo-panel-frame",c.title="Editor de Veo",c.src=eo(e),i.append(a,c),n.append(o,i),document.body.appendChild(t);let f=p=>{if(p.target?.classList.contains("veo-panel-close"))return;p.preventDefault();let u=p.clientX,m=p.clientY,h=s,g=r;c.style.pointerEvents="none",i.classList.add("dragging");let v=x=>{let y=window.innerWidth-i.offsetWidth,P=window.innerHeight-40;s=nn(h+(x.clientX-u),0,Math.max(0,y)),r=nn(g+(x.clientY-m),0,Math.max(0,P)),i.style.left=`${s}px`,i.style.top=`${r}px`;},w=()=>{window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",w),c.style.pointerEvents="",i.classList.remove("dragging");};window.addEventListener("mousemove",v),window.addEventListener("mouseup",w);};return a.addEventListener("mousedown",f),{target:()=>c.contentWindow,teardown:()=>t.remove()}}function nn(e,t,n){return Math.min(Math.max(e,t),n)}function eo(e){let t=e.panelPath??Qn,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 to=`
249
+ :host { all: initial; }
250
+ .veo-panel {
251
+ position: fixed;
252
+ width: ${on}px; height: ${Zn}px;
253
+ min-width: 320px; min-height: 320px;
254
+ max-width: 96vw; max-height: 94vh;
255
+ display: flex; flex-direction: column;
256
+ background: #fff;
257
+ border-radius: 12px;
258
+ box-shadow: 0 12px 40px rgba(0,0,0,0.28);
259
+ overflow: hidden;
260
+ resize: both;
261
+ z-index: 2147483647;
262
+ font-family: system-ui, -apple-system, sans-serif;
263
+ }
264
+ .veo-panel.dragging { user-select: none; }
265
+ .veo-panel-header {
266
+ flex: 0 0 auto;
267
+ display: flex; align-items: center; justify-content: space-between;
268
+ padding: 8px 12px;
269
+ background: #0f172a; color: #fff;
270
+ font-size: 13px; font-weight: 600;
271
+ cursor: grab;
272
+ }
273
+ .veo-panel-header:active { cursor: grabbing; }
274
+ .veo-panel-close {
275
+ border: 0; background: transparent; color: #fff;
276
+ font-size: 15px; cursor: pointer; line-height: 1;
277
+ padding: 4px 6px; border-radius: 6px;
278
+ }
279
+ .veo-panel-close:hover { background: rgba(255,255,255,0.15); }
280
+ .veo-panel-frame { flex: 1 1 auto; width: 100%; border: 0; background: #fff; }
281
+ `;var sn=[/^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 no(e){return sn.some(t=>t.test(e))}function qe(e){return Array.from(e.classList).filter(t=>!no(t)&&t.length<64)}var oo=["data-testid","data-test","data-cy","name","aria-label","placeholder","alt","title","href","role","type"],io=100;function ct(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g,"\\$&")}function an(e){return e.replace(/[\\"]/g,"\\$&")}function ro(e,t){for(let n of oo){let o=e.getAttribute(n);if(o&&o.length>0&&o.length<=io)return `${t}[${n}="${an(o)}"]`}return null}function so(e){let t=e.tagName.toLowerCase(),n=e.getAttribute("data-veo-tag");if(n)return `${t}[data-veo-tag="${an(n)}"]`;if(e.id){let r=qe(e),a=r.length>0?`.${r.map(ct).join(".")}`:"";return `${t}#${ct(e.id)}${a}`}let o=ro(e,t);if(o)return o;let i=qe(e),s=i.length>0?`.${i.map(ct).join(".")}`:"";return `${t}${s}`}function Je(e,t=5){let n=[],o=e,i=0;for(;o&&o!==document.documentElement&&i<=t;)n.unshift(so(o)),o=o.parentElement,i++;return n.join(" > ")}var dt=2147483646,ao="data-veo-picker",ln=5,lo=`
249
282
  :host { all: initial; }
250
283
  .veo-pick-box {
251
284
  position: fixed;
@@ -285,5 +318,5 @@ var veoBuilder=(function(exports){'use strict';function G(){return typeof window
285
318
  border-radius: 999px;
286
319
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
287
320
  }
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
321
+ `,ut=class{constructor(){this.host=null;this.box=null;this.label=null;this.current=null;this.maxAncestors=ln;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??ln,this.onPick=t.onPick,this.onCancel=t.onCancel??null;let n=document.createElement("div");n.setAttribute(ao,"");let o=n.attachShadow({mode:"open"}),i=document.createElement("style");i.textContent=lo,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 ut),Re.start(e),{stop:()=>Re?.stop()}):{stop:()=>{}}}function cn(){Re?.stop();}function Ze(){if(!B()||!D())return null;let e=ht();if(!e)return null;let t=e.token,n=po(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);},d=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":f();break}},l=m=>{if(m.origin!==n)return;let h=m.data;!h||h.source!==me||h.token!==t||d(h);},c=()=>a({type:"closed"}),f=()=>{window.removeEventListener("message",l),window.removeEventListener("pagehide",c),o?.stop(),o=null,Pe(),a({type:"closed"}),i?.teardown(),i=null,gt();};if(e.panel)i=rn({dashboardOrigin:n,token:t,appOrigin:window.location.origin,guide:e.guide,panelPath:e.panelPath,onClose:()=>f()});else if(s=uo(),!s)return null;let p=()=>{window.addEventListener("message",l),window.addEventListener("pagehide",c),e.panel||a({type:"ready"});},u=window.__veoBuilder;return u?.apiKey&&u?.apiUrl?co(u.apiUrl,u.apiKey,t).then(m=>{m?p():window.console&&console.warn("[veo] token de builder inv\xE1lido \u2014 modo no activado");}):p(),{teardown:f}}async function co(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 uo(){return window.opener&&window.opener!==window?window.opener:window.parent&&window.parent!==window?window.parent:null}function po(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 fo="popup,width=1280,height=860",mo=600;function dn(e){if(!B())return vo();let t=e.dashboardOrigin??window.location.origin,n=go(e.appUrl),o=ho(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??fo);let a=()=>s?i?.contentWindow??null:r,d=p=>{let u=a();u&&(!s&&r?.closed||u.postMessage({source:me,token:e.token,...p},n??"*"));},l,c=()=>{window.removeEventListener("message",f),l!==void 0&&(clearInterval(l),l=void 0);},f=p=>{if(n&&p.origin!==n)return;let u=p.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":c(),e.onClosed?.();break}};return window.addEventListener("message",f),s||(l=setInterval(()=>{r?.closed&&(c(),e.onClosed?.());},mo)),{startPicker:p=>d({type:"start-picker",...p?.maxAncestors!==void 0?{maxAncestors:p.maxAncestors}:{},...p?.hint!==void 0?{hint:p.hint}:{}}),stopPicker:()=>d({type:"stop-picker"}),preview:p=>d({type:"preview",guide:p}),closePreview:()=>d({type:"close-preview"}),close:()=>{d({type:"teardown"}),s?i&&(i.src="about:blank"):r&&!r.closed&&r.close(),c();}}}function ho(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 go(e){try{return new URL(e,window.location.href).origin}catch{return null}}function vo(){return {startPicker:()=>{},stopPicker:()=>{},preview:()=>{},closePreview:()=>{},close:()=>{}}}Ze();exports.closeGuidePreview=Pe;exports.createBuilderSession=dn;exports.initBuilderMode=Ze;exports.previewGuide=Xe;exports.startElementPicker=Qe;exports.stopElementPicker=cn;return exports;})({});//# sourceMappingURL=veo-builder.js.map
289
322
  //# sourceMappingURL=veo-builder.js.map