{"version":3,"sources":["../../src/renderer/navigation.ts"],"names":[],"mappings":"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","file":"navigation.cjs","sourcesContent":["import { NavigationTree as NavigationTreeType, 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: NavigationTreeType) {\n    this._items = data.items;\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: NavigationTreeType): NavigationTree {\n  return new NavigationTree(data);\n}"]}