{"version":3,"file":"navigation.cjs","sources":["../../src/renderer/navigation.ts"],"sourcesContent":["import { NavigationItem } from '../types.js';\n\nexport class NavigationTree {\n  private _items: NavigationItem[];\n  private _flatItems: NavigationItem[] = [];\n  private _pathMap: Map<string, NavigationItem> = new Map();\n\n  constructor(data: NavigationItem[]) {\n    this._items = data;\n    this._buildIndexes();\n  }\n\n  get items(): NavigationItem[] {\n    return this._items;\n  }\n\n  get flatItems(): NavigationItem[] {\n    return this._flatItems;\n  }\n\n  findItemByPath(path: string): NavigationItem | undefined {\n    return this._pathMap.get(path);\n  }\n\n  findItemByName(name: string): NavigationItem | undefined {\n    return this._findItemByNameRecursive(this._items, name);\n  }\n\n  getBreadcrumbs(path: string): NavigationItem[] {\n    const item = this.findItemByPath(path);\n    if (!item) {\n      return [];\n    }\n\n    const breadcrumbs: NavigationItem[] = [];\n    let current: NavigationItem | undefined = item;\n\n    while (current) {\n      breadcrumbs.unshift(current);\n      current = current.parent;\n    }\n\n    return breadcrumbs;\n  }\n\n  getSiblings(path: string): NavigationItem[] {\n    const item = this.findItemByPath(path);\n    if (!item || !item.parent) {\n      // If no parent, return all root items\n      return this._items;\n    }\n\n    return item.parent.items || [];\n  }\n\n  getNextSibling(path: string): NavigationItem | undefined {\n    const siblings = this.getSiblings(path);\n    const currentIndex = siblings.findIndex(item => item.path === path);\n    \n    if (currentIndex === -1 || currentIndex === siblings.length - 1) {\n      return undefined;\n    }\n\n    return siblings[currentIndex + 1];\n  }\n\n  getPreviousSibling(path: string): NavigationItem | undefined {\n    const siblings = this.getSiblings(path);\n    const currentIndex = siblings.findIndex(item => item.path === path);\n    \n    if (currentIndex <= 0) {\n      return undefined;\n    }\n\n    return siblings[currentIndex - 1];\n  }\n\n  getChildren(path: string): NavigationItem[] {\n    // First try to find by name (for sections)\n    let item = this.findItemByName(path);\n    \n    // If not found by name, try to find by path\n    if (!item) {\n      item = this.findItemByPath(path);\n    }\n    \n    // If still not found, try to find nested items by path\n    if (!item && path.includes('/')) {\n      const pathParts = path.split('/');\n      const sectionName = pathParts[pathParts.length - 1];\n      if (sectionName) {\n        item = this.findItemByName(sectionName);\n      }\n    }\n    \n    return item?.items || [];\n  }\n\n  isExpanded(path: string): boolean {\n    const item = this.findItemByName(path) || this.findItemByPath(path);\n    return item ? !item.collapsed : false;\n  }\n\n  toggleExpanded(path: string): void {\n    const item = this.findItemByName(path) || this.findItemByPath(path);\n    if (item) {\n      item.collapsed = !item.collapsed;\n    }\n  }\n\n  private _buildIndexes(): void {\n    this._flatItems = [];\n    this._pathMap.clear();\n    this._buildIndexesRecursive(this._items, undefined);\n  }\n\n  private _buildIndexesRecursive(\n    items: NavigationItem[],\n    parent: NavigationItem | undefined\n  ): void {\n    for (const item of items) {\n      // Set parent reference\n      item.parent = parent || undefined;\n\n      // Add to flat list\n      this._flatItems.push(item);\n\n      // Add to path map if it's a page\n      if (item.path) {\n        this._pathMap.set(item.path, item);\n      }\n\n      // Process children\n      if (item.items) {\n        this._buildIndexesRecursive(item.items, item);\n      }\n    }\n  }\n\n  private _findItemByNameRecursive(\n    items: NavigationItem[],\n    name: string\n  ): NavigationItem | undefined {\n    for (const item of items) {\n      if (item.name === name) {\n        return item;\n      }\n\n      if (item.items) {\n        const found = this._findItemByNameRecursive(item.items, name);\n        if (found) {\n          return found;\n        }\n      }\n    }\n\n    return undefined;\n  }\n}\n\nexport function createNavigationTree(data: NavigationItem[]): NavigationTree {\n  return new NavigationTree(data);\n}"],"names":[],"mappings":"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"}