{"version":3,"file":"direct-navigation-adapter-BXfiajVZ.cjs","sources":["../../lib/vowel/adapters/navigation/direct-navigation-adapter.ts"],"sourcesContent":["/**\n * @fileoverview Direct Navigation Adapter - Same-tab navigation for SPAs\n * \n * This file contains the `DirectNavigationAdapter` class which enables voice-controlled\n * navigation in Single Page Applications (SPAs) without page reloads. It integrates with\n * your existing router (React Router, Next.js, Vue Router, etc.) by calling navigation\n * functions directly.\n * \n * Use Cases:\n * - React applications with React Router\n * - Next.js applications (App Router or Pages Router)\n * - Vue applications with Vue Router\n * - Any SPA framework with programmatic navigation\n * \n * Key Features:\n * - Same-tab navigation (no page reloads)\n * - Framework-agnostic interface\n * - Route configuration support\n * - Current path tracking\n * \n * @module @vowel.to/client/adapters/navigation\n * @author vowel.to\n * @license Proprietary\n * \n * @example\n * ```ts\n * import { DirectNavigationAdapter } from '@vowel.to/client/adapters/navigation';\n * import { useRouter } from 'next/navigation';\n * \n * const router = useRouter();\n * \n * const navigationAdapter = new DirectNavigationAdapter({\n *   navigate: (path) => router.push(path),\n *   getCurrentPath: () => window.location.pathname,\n *   routes: [\n *     { path: '/', description: 'Home page' },\n *     { path: '/products', description: 'Browse products' }\n *   ]\n * });\n * ```\n */\n\nimport type { NavigationAdapter, VowelRoute } from '../../types';\n\n/**\n * Configuration options for DirectNavigationAdapter\n */\nexport interface DirectNavigationAdapterOptions {\n  /**\n   * Function to navigate to a path\n   * @param path - The path to navigate to\n   * \n   * @example\n   * ```ts\n   * // Next.js\n   * navigate: (path) => router.push(path)\n   * \n   * // Vue Router\n   * navigate: (path) => router.push(path)\n   * \n   * // React Router\n   * navigate: (path) => navigate(path)\n   * ```\n   */\n  navigate: (path: string) => void | Promise<void>;\n\n  /**\n   * Optional: Function to get current path\n   * Defaults to window.location.pathname\n   */\n  getCurrentPath?: () => string;\n\n  /**\n   * Optional: Array of routes\n   * Can also be provided via Vowel config\n   */\n  routes?: VowelRoute[];\n}\n\n/**\n * Direct Navigation Adapter\n * \n * Handles same-tab navigation for SPAs by directly calling your router.\n * Perfect for React, Vue, Next.js, Svelte, and other SPA frameworks.\n */\nexport class DirectNavigationAdapter implements NavigationAdapter {\n  private navigateFunction: (path: string) => void | Promise<void>;\n  private getPathFunction: () => string;\n  private routes?: VowelRoute[];\n\n  constructor(options: DirectNavigationAdapterOptions) {\n    this.navigateFunction = options.navigate;\n    this.getPathFunction = options.getCurrentPath || (() => window.location.pathname);\n    this.routes = options.routes;\n\n    console.log('🧭 [DirectNavigationAdapter] Initialized for same-tab SPA navigation');\n  }\n\n  /**\n   * Navigate to a path\n   */\n  async navigate(path: string): Promise<void> {\n    console.log(`🧭 [DirectNavigationAdapter] Navigating to: ${path}`);\n    \n    try {\n      await this.navigateFunction(path);\n      console.log(`   ✅ Navigation successful`);\n    } catch (error) {\n      console.error(`   ❌ Navigation failed:`, error);\n      throw error;\n    }\n  }\n\n  /**\n   * Get current path\n   */\n  getCurrentPath(): string {\n    return this.getPathFunction();\n  }\n\n  /**\n   * Get available routes\n   */\n  async getRoutes(): Promise<VowelRoute[]> {\n    return this.routes || [];\n  }\n}\n\n"],"names":[],"mappings":";;;;AAqFO,MAAM,uBAAA,CAAqD;AAAA,EACxD,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,MAAA;AAAA,EAER,YAAY,OAAA,EAAyC;AACnD,IAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,QAAA;AAChC,IAAA,IAAA,CAAK,eAAA,GAAkB,OAAA,CAAQ,cAAA,KAAmB,MAAM,OAAO,QAAA,CAAS,QAAA,CAAA;AACxE,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AAEtB,IAAA,OAAA,CAAQ,IAAI,sEAAsE,CAAA;AAAA,EACpF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,IAAA,EAA6B;AAC1C,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,4CAAA,EAA+C,IAAI,CAAA,CAAE,CAAA;AAEjE,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAChC,MAAA,OAAA,CAAQ,IAAI,CAAA,0BAAA,CAA4B,CAAA;AAAA,IAC1C,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,2BAA2B,KAAK,CAAA;AAC9C,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,GAAyB;AACvB,IAAA,OAAO,KAAK,eAAA,EAAgB;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,GAAmC;AACvC,IAAA,OAAO,IAAA,CAAK,UAAU,EAAC;AAAA,EACzB;AACF;;;;"}