{"version":3,"file":"acorex-components-side-menu.mjs","sources":["../../../../packages/components/side-menu/src/lib/side-menu-base.ts","../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.ts","../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.html","../../../../packages/components/side-menu/src/lib/side-menu.component.ts","../../../../packages/components/side-menu/src/lib/side-menu.component.html","../../../../packages/components/side-menu/src/lib/side-menu.directive.ts","../../../../packages/components/side-menu/src/lib/side-menu.module.ts","../../../../packages/components/side-menu/src/acorex-components-side-menu.ts"],"sourcesContent":["import { Signal } from '@angular/core';\n\n/**\n * DI token for the parent `ax-side-menu`. Child `ax-side-menu-item`s inject this\n * to read shared state (e.g. the current display mode) without creating a\n * circular import on the concrete `AXSideMenuComponent` class.\n */\nexport abstract class AXSideMenuBase {\n  abstract readonly mode: Signal<'full' | 'compact'>;\n}\n","import { AXClickEvent, AXComponent, AXRippleDirective, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXContextMenuComponent, AXContextMenuItemsClickEvent, AXMenuItem } from '@acorex/components/menu';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXPoint } from '@acorex/core/utils';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n  afterNextRender,\n  Component,\n  computed,\n  contentChildren,\n  DestroyRef,\n  effect,\n  ElementRef,\n  inject,\n  input,\n  model,\n  output,\n  PLATFORM_ID,\n  signal,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive, UrlTree } from '@angular/router';\n\nexport class AXSideMenuItemClickEvent extends AXClickEvent {\n  handled = false;\n}\n\n/** Routes context-menu clicks back to the matching `ax-side-menu-item`. */\nexport interface AXSideMenuContextMenuItemData {\n  sideMenuItem: AXSideMenuItemComponent;\n}\n\n@Component({\n  selector: 'ax-side-menu-item',\n  inputs: ['disabled'],\n  templateUrl: './side-menu-item.component.html',\n\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    AXRippleDirective,\n    RouterLink,\n    RouterLinkActive,\n    NgTemplateOutlet,\n    AXLoadingComponent,\n    AsyncPipe,\n    AXTranslatorPipe,\n    AXTooltipModule,\n    AXContextMenuComponent,\n  ],\n  providers: [{ provide: AXComponent, useExisting: AXSideMenuItemComponent }],\n})\nexport class AXSideMenuItemComponent extends MXInteractiveComponent {\n  text = model('');\n  active = model(false);\n  isLoading = model(false);\n  isCollapsed = model(true);\n  onClick = output<AXSideMenuItemClickEvent>();\n\n  readonly toggleOnClick = input(true);\n  readonly href = input<string | null>();\n  readonly routerLink = input<string | any[] | UrlTree | null>();\n  readonly routerLinkActive = input<string | string[]>('ax-state-active');\n  readonly routerLinkActiveOptions = input<{ exact: boolean } | IsActiveMatchOptions>({ exact: false });\n  readonly target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n  protected menuItemTrigger = viewChild.required<ElementRef<HTMLElement>>('menuItemTrigger');\n  protected hasChild = signal(false);\n  protected isCompactMode = computed(() => this.menuMode() === 'compact');\n\n  /** Top-level rail entry in compact mode (opens the flyout context menu). */\n  protected isFirstLevel = computed(() => {\n    if (!this.isCompactMode()) {\n      return false;\n    }\n    return !this.hostElement.parentElement?.closest('.ax-side-children-content');\n  });\n\n  /** Tooltip text for first-level items in compact mode only. */\n  protected tooltipContent = computed(() => {\n    if (!this.isFirstLevel()) return null;\n    return this.text().trim() || this.contentLabel().trim() || null;\n  });\n\n  /** Accessible label for icon-only compact root items. */\n  protected compactAriaLabel = computed(() => {\n    if (!this.isFirstLevel()) return null;\n    return this.text().trim() || this.contentLabel().trim() || null;\n  });\n\n  private readonly elem = inject(ElementRef<HTMLElement>);\n  private readonly platformId = inject(PLATFORM_ID);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly menuMode = signal<'full' | 'compact'>('full');\n  private readonly contentLabel = signal('');\n\n  private childObserver: MutationObserver | null = null;\n  private childRefreshScheduled = false;\n  private readonly childItems = contentChildren(AXSideMenuItemComponent, { descendants: true });\n  private readonly childrenSlot = viewChild<ElementRef<HTMLElement>>('childrenSlot');\n  private readonly childrenContextMenu = viewChild<AXContextMenuComponent>('childrenContextMenu');\n\n  private get hostElement(): HTMLElement {\n    return this.elem.nativeElement;\n  }\n\n  #childCheckEffect = effect(() => {\n    if (this.childItems().length) {\n      this.updateHasChild();\n    }\n  });\n\n  #initChildren = afterNextRender(() => {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n    this.reparentOrphanedChildren();\n    this.updateHasChild();\n    this.updateContentLabel();\n    this.childObserver = new MutationObserver((records) => {\n      if (!this.hasRelevantMutation(records)) {\n        return;\n      }\n      this.scheduleChildRefresh();\n    });\n    this.childObserver.observe(this.hostElement, { childList: true, subtree: true, characterData: true });\n    this.destroyRef.onDestroy(() => this.childObserver?.disconnect());\n  });\n\n  #contextMenuSync = effect(() => {\n    if (!this.isCompactMode() || !isPlatformBrowser(this.platformId) || !this.isFirstLevel() || !this.hasChild()) {\n      return;\n    }\n\n    const menu = this.childrenContextMenu();\n    if (!menu) {\n      return;\n    }\n\n    if (this.isCollapsed()) {\n      menu.close();\n    } else {\n      this.closeSiblingCompactMenus();\n      this.openCompactContextMenu(menu);\n    }\n  });\n\n  syncMenuMode(mode: 'full' | 'compact') {\n    if (this.menuMode() === mode) {\n      return;\n    }\n    this.menuMode.set(mode);\n    this.childrenContextMenu()?.close();\n    if (mode === 'compact') {\n      this.isCollapsed.set(true);\n    }\n  }\n\n  /** Builds the cascading `AXMenuItem` tree used by the compact-mode context menu. */\n  buildMenuItemsFromChildren(): AXMenuItem[] {\n    this.reparentOrphanedChildren();\n\n    const slot = this.childrenSlot()?.nativeElement;\n    const itemsFromSlot = slot ? this.mapSlotChildrenToMenuItems(slot) : [];\n\n    if (itemsFromSlot.length > 0) {\n      return itemsFromSlot;\n    }\n\n    return this.getDirectChildElements().map((el) => this.toMenuItem(el));\n  }\n\n  activateFromContextMenu(nativeEvent: MouseEvent) {\n    if (this.disabled || this.isLoading()) {\n      return;\n    }\n    const trigger = this.menuItemTrigger().nativeElement;\n    if (trigger instanceof HTMLAnchorElement) {\n      trigger.click();\n      return;\n    }\n    this.onClick.emit({\n      component: this,\n      htmlElement: this.getHostElement(),\n      nativeEvent,\n      handled: false,\n    });\n  }\n\n  toggle() {\n    if (this.isCompactMode() && (!this.hasChild() || !this.isFirstLevel())) {\n      return;\n    }\n    this.isCollapsed.update((collapsed) => !collapsed);\n  }\n\n  open() {\n    this.isCollapsed.set(false);\n  }\n\n  close() {\n    this.isCollapsed.set(true);\n    this.childrenContextMenu()?.close();\n  }\n\n  protected handleContextMenuItemClick(event: AXContextMenuItemsClickEvent) {\n    const instance = (event.item.data as AXSideMenuContextMenuItemData | undefined)?.sideMenuItem;\n    if (!instance || instance.hasChild()) return;\n    instance.activateFromContextMenu(event.nativeEvent);\n  }\n\n  protected handleContextMenuClosed() {\n    if (!this.isCollapsed()) this.isCollapsed.set(true);\n  }\n\n  protected handleClickEvent(e: Event) {\n    if (this.disabled || this.isLoading()) return;\n\n    if (e instanceof KeyboardEvent && (e.key === ' ' || e.key === 'Spacebar')) {\n      e.preventDefault();\n    }\n\n    const event: AXSideMenuItemClickEvent = {\n      component: this,\n      htmlElement: this.getHostElement(),\n      nativeEvent: e as MouseEvent,\n      handled: false,\n    };\n    this.onClick.emit(event);\n    if (!event.handled && this.toggleOnClick() && (this.hasChild() || !this.isCompactMode())) this.toggle();\n\n    e.stopPropagation();\n  }\n\n  private openCompactContextMenu(menu: AXContextMenuComponent) {\n    const items = this.buildMenuItemsFromChildren();\n    if (!items.length) return;\n\n    menu.showAt(this.getContextMenuAnchorPoint(), this.menuItemTrigger().nativeElement, {\n      sender: menu,\n      canceled: false,\n      targetElement: this.menuItemTrigger().nativeElement,\n      items,\n    });\n  }\n\n  private getContextMenuAnchorPoint(): AXPoint {\n    const rect = this.menuItemTrigger().nativeElement.getBoundingClientRect();\n    const offset = 8;\n    if (AXHtmlUtil.isRtl(this.hostElement)) {\n      return { x: rect.left - offset, y: rect.top };\n    }\n    return { x: rect.right + offset, y: rect.top };\n  }\n\n  private mapSlotChildrenToMenuItems(slot: HTMLElement): AXMenuItem[] {\n    const items: AXMenuItem[] = [];\n    let pendingGroupTitle: string | undefined;\n\n    for (const child of Array.from(slot.children)) {\n      if (child.tagName === 'AX-TITLE') {\n        pendingGroupTitle = child.textContent?.trim() || undefined;\n        continue;\n      }\n      if (child.tagName === 'AX-DIVIDER') {\n        if (items.length > 0) {\n          items[items.length - 1] = { ...items[items.length - 1], break: true };\n        }\n        continue;\n      }\n      if (child.tagName !== 'AX-SIDE-MENU-ITEM') {\n        continue;\n      }\n\n      const menuItem = this.toMenuItem(child as HTMLElement);\n      if (pendingGroupTitle) {\n        menuItem.group = { title: pendingGroupTitle };\n        pendingGroupTitle = undefined;\n      }\n      items.push(menuItem);\n    }\n\n    return items;\n  }\n\n  private toMenuItem(host: HTMLElement): AXMenuItem {\n    const instance = this.getInstanceFromElement(host);\n    const item: AXMenuItem = {\n      text: this.getItemLabel(host, instance),\n      disabled: instance?.disabled ?? false,\n      icon: this.getItemIcon(host),\n      suffix: this.getItemSuffix(host),\n    };\n\n    if (instance) {\n      item.data = { sideMenuItem: instance } satisfies AXSideMenuContextMenuItemData;\n    }\n\n    if (this.hasNestedChildren(host, instance)) {\n      item.items =\n        instance?.buildMenuItemsFromChildren() ?? this.getDirectChildElements(host).map((el) => this.toMenuItem(el));\n    }\n\n    return item;\n  }\n\n  private hasNestedChildren(host: HTMLElement, instance?: AXSideMenuItemComponent): boolean {\n    return (instance?.hasChild() ?? false) || this.getDirectChildElements(host).length > 0;\n  }\n\n  /** Direct `ax-side-menu-item` children of `menuHost` (defaults to this item). */\n  private getDirectChildElements(menuHost: HTMLElement = this.hostElement): HTMLElement[] {\n    return Array.from(menuHost.querySelectorAll('ax-side-menu-item')).filter((el) => {\n      if (el === menuHost) {\n        return false;\n      }\n      return el.parentElement?.closest('ax-side-menu-item') === menuHost;\n    }) as HTMLElement[];\n  }\n\n  private reparentOrphanedChildren() {\n    const container = this.childrenSlot()?.nativeElement;\n    if (!container) {\n      return;\n    }\n\n    for (const el of this.getDirectChildElements()) {\n      if (!container.contains(el)) {\n        try {\n          container.appendChild(el);\n        } catch {\n          // HierarchyRequestError when the node is already being moved.\n        }\n      }\n    }\n  }\n\n  private scheduleChildRefresh() {\n    if (this.childRefreshScheduled) {\n      return;\n    }\n    this.childRefreshScheduled = true;\n    requestAnimationFrame(() => {\n      this.childRefreshScheduled = false;\n      this.reparentOrphanedChildren();\n      this.updateHasChild();\n      this.updateContentLabel();\n    });\n  }\n\n  private hasRelevantMutation(records: MutationRecord[]): boolean {\n    for (const record of records) {\n      if (record.type === 'characterData') {\n        return true;\n      }\n      if (\n        this.nodeListContainsMenuStructuralNode(record.addedNodes) ||\n        this.nodeListContainsMenuStructuralNode(record.removedNodes)\n      ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private nodeListContainsMenuStructuralNode(nodes: NodeList): boolean {\n    for (const node of Array.from(nodes)) {\n      if (!(node instanceof Element)) {\n        continue;\n      }\n      const tagName = node.tagName;\n      if (tagName === 'AX-SIDE-MENU-ITEM' || tagName === 'AX-TITLE' || tagName === 'AX-DIVIDER') {\n        return true;\n      }\n      if (node.querySelector?.('ax-side-menu-item,ax-title,ax-divider')) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private getItemLabel(host: HTMLElement, instance?: AXSideMenuItemComponent): string {\n    if (instance?.text()) {\n      return instance.text();\n    }\n    const insideText = host.querySelector('.ax-inside-text');\n    if (insideText?.textContent?.trim()) {\n      return insideText.textContent.trim();\n    }\n    return host.querySelector('ax-text')?.textContent?.trim() ?? '';\n  }\n\n  private getItemIcon(host: HTMLElement): string | undefined {\n    const axIcon = host.querySelector('ax-prefix ax-icon');\n    if (!axIcon) {\n      return undefined;\n    }\n    return axIcon.getAttribute('icon') ?? axIcon.querySelector('i')?.className ?? undefined;\n  }\n\n  private getItemSuffix(host: HTMLElement): { text: string } | undefined {\n    const text = host.querySelector('ax-suffix ax-text')?.textContent?.trim();\n    return text ? { text } : undefined;\n  }\n\n  private getInstanceFromElement(el: Element): AXSideMenuItemComponent | undefined {\n    const ctx = (el as unknown as { __axContext__?: unknown }).__axContext__;\n    return ctx instanceof AXSideMenuItemComponent ? ctx : undefined;\n  }\n\n  private closeSiblingCompactMenus() {\n    const menuHost = this.hostElement.closest('ax-side-menu');\n    if (!menuHost) {\n      return;\n    }\n\n    menuHost.querySelectorAll(':scope > ax-side-menu-item').forEach((el) => {\n      const sibling = this.getInstanceFromElement(el);\n      if (!sibling || sibling === this) {\n        return;\n      }\n      sibling.isCollapsed.set(true);\n      sibling.childrenContextMenu()?.close();\n    });\n  }\n\n  private updateHasChild() {\n    this.hasChild.set(this.childItems().length > 0 || this.getDirectChildElements().length > 0);\n  }\n\n  private updateContentLabel() {\n    if (!isPlatformBrowser(this.platformId)) return;\n    const insideText = this.hostElement.querySelector('.ax-inside-text');\n    const label =\n      insideText?.textContent?.trim() || this.hostElement.querySelector('ax-text')?.textContent?.trim() || '';\n    if (label !== this.contentLabel()) {\n      this.contentLabel.set(label);\n    }\n  }\n}\n","<div [axTooltip]=\"tooltipContent()\" axTooltipPlacement=\"end\" class=\"ax-side-menu-wrapper\">\n  @if (!isCompactMode()) {\n    <ng-content select=\"ax-title\"></ng-content>\n  }\n  @if (routerLink()) {\n    <a\n      #menuItemTrigger\n      [axRipple]\n      [target]=\"target()\"\n      class=\"ax-side-item\"\n      [routerLink]=\"routerLink()\"\n      (click)=\"handleClickEvent($event)\"\n      [class.ax-state-disabled]=\"disabled\"\n      [attr.aria-disabled]=\"disabled || null\"\n      [attr.aria-expanded]=\"hasChild() ? !isCollapsed() : null\"\n      [attr.aria-label]=\"compactAriaLabel()\"\n      [routerLinkActive]=\"routerLinkActive()\"\n      [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n    >\n      <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n    </a>\n  } @else if (href()) {\n    <a\n      #menuItemTrigger\n      [axRipple]\n      [href]=\"href()\"\n      [target]=\"target()\"\n      class=\"ax-side-item\"\n      [class.ax-state-active]=\"active()\"\n      [attr.aria-current]=\"active() ? 'page' : null\"\n      [attr.aria-disabled]=\"disabled || null\"\n      [attr.aria-expanded]=\"hasChild() ? !isCollapsed() : null\"\n      [attr.aria-label]=\"compactAriaLabel()\"\n      (click)=\"handleClickEvent($event)\"\n      [class.ax-state-disabled]=\"disabled\"\n    >\n      <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n    </a>\n  } @else {\n    <div\n      #menuItemTrigger\n      [axRipple]\n      class=\"ax-side-item\"\n      role=\"button\"\n      tabindex=\"0\"\n      [class.ax-state-active]=\"active()\"\n      [attr.aria-current]=\"active() ? 'page' : null\"\n      [attr.aria-disabled]=\"disabled || null\"\n      [attr.aria-expanded]=\"hasChild() ? !isCollapsed() : null\"\n      [attr.aria-label]=\"compactAriaLabel()\"\n      (click)=\"handleClickEvent($event)\"\n      (keydown.enter)=\"handleClickEvent($event)\"\n      (keydown.space)=\"handleClickEvent($event)\"\n      [class.ax-state-disabled]=\"disabled\"\n    >\n      <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n    </div>\n  }\n\n  <div\n    class=\"ax-side-children\"\n    [class.ax-collapsed]=\"(!isCompactMode() && isCollapsed()) || (isCompactMode() && isFirstLevel())\"\n    [class.ax-empty]=\"!hasChild() && !isLoading()\"\n  >\n    @if (isLoading()) {\n      <p>{{ '@acorex:common.status.loading' | translate | async }}</p>\n    }\n    <div #childrenSlot class=\"ax-side-children-content\" [hidden]=\"isLoading()\">\n      <ng-content select=\"ax-side-menu-item, ng-container, [ngTemplateOutlet]\"></ng-content>\n    </div>\n  </div>\n\n  @if (isCompactMode() && hasChild()) {\n    <ax-context-menu\n      #childrenContextMenu\n      class=\"ax-side-menu-children-context-menu\"\n      [openOn]=\"'hover'\"\n      [closeOn]=\"'leave'\"\n      [closeOnRouteChange]=\"true\"\n      (onItemClick)=\"handleContextMenuItemClick($event)\"\n      (onClose)=\"handleContextMenuClosed()\"\n    />\n  }\n\n  <ng-content select=\"ax-divider\"></ng-content>\n  <ng-template #menuItemContent>\n    <div class=\"ax-start-side\">\n      <ng-content select=\"ax-prefix\"></ng-content>\n      <div class=\"ax-inside-text\">\n        @if (text()) {\n          <span>{{ text() }}</span>\n        }\n        <ng-content></ng-content>\n      </div>\n    </div>\n    <div class=\"ax-end-side\">\n      <ng-content select=\"ax-suffix\"></ng-content>\n      @if (hasChild() && !isLoading() && toggleOnClick() && !isFirstLevel()) {\n        <span class=\"ax-icon ax-icon-chevron-right arrow-icon\" [class.arrow-icon-expand]=\"!isCollapsed()\"> </span>\n      }\n      @if (isLoading()) {\n        <ax-loading></ax-loading>\n      }\n    </div>\n  </ng-template>\n</div>\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n  afterNextRender,\n  Component,\n  DestroyRef,\n  effect,\n  ElementRef,\n  HostBinding,\n  inject,\n  input,\n  model,\n  PLATFORM_ID,\n  signal,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuBase } from './side-menu-base';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\n\nexport type AXSideMenuLook = 'default' | 'with-line';\nexport type AXSideMenuLocation = 'start' | 'end';\n\n/**\n * @category\n * A component for displaying a side menu with customizable content.\n */\n@Component({\n  selector: 'ax-side-menu',\n  templateUrl: './side-menu.component.html',\n  styleUrls: ['./side-menu.component.css'],\n\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    NgTemplateOutlet,\n    AXDecoratorGenericComponent,\n    AXSideMenuItemComponent,\n    RouterLink,\n    RouterLinkActive,\n    AXDecoratorIconComponent,\n  ],\n  providers: [\n    { provide: AXComponent, useExisting: AXSideMenuComponent },\n    { provide: AXSideMenuBase, useExisting: AXSideMenuComponent },\n  ],\n})\nexport class AXSideMenuComponent extends NXComponent implements AXSideMenuBase {\n  items = model<AXMenuItem[]>();\n  readonly look = input<AXSideMenuLook>('default');\n  readonly location = input<AXSideMenuLocation>('start');\n  readonly mode = input<'full' | 'compact'>('full');\n  private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  /**\n   * All `ax-side-menu-item` instances discovered by walking the host DOM.\n   *\n   * We use DOM discovery (instead of `contentChildren`) because Angular content\n   * queries do **not** traverse embedded views created by `ngTemplateOutlet`,\n   * and the `AXSideMenuBase` DI token is not reachable from inside those views\n   * either (they inherit injection from the template's declaration site, not\n   * the insertion site). Walking the DOM works for direct projection,\n   * structural directives, and recursive `ngTemplateOutlet`-based templates\n   * uniformly.\n   */\n  private _items = signal<AXSideMenuItemComponent[]>([]);\n  /** Read-only signal exposing every discovered `ax-side-menu-item` instance. */\n  readonly children = this._items.asReadonly();\n  private platformId = inject(PLATFORM_ID);\n  private destroyRef = inject(DestroyRef);\n  hostElement = this.elementRef.nativeElement;\n  private domRefreshScheduled = false;\n  private domRefreshObserver: MutationObserver | null = null;\n\n  #init = afterNextRender(() => {\n    if (!isPlatformBrowser(this.platformId)) return;\n    this.refreshItemsFromDom();\n    this.domRefreshObserver = new MutationObserver((records) => {\n      if (!this.hasRelevantMenuItemMutation(records)) {\n        return;\n      }\n      this.scheduleDomRefresh();\n    });\n    this.domRefreshObserver.observe(this.elementRef.nativeElement, { childList: true, subtree: true });\n    this.destroyRef.onDestroy(() => this.domRefreshObserver?.disconnect());\n  });\n\n  /** Push full/compact mode to every menu item whenever mode changes. */\n  #syncItemMode = effect(() => {\n    const mode = this.mode();\n    this._items().forEach((item) => item.syncMenuMode(mode));\n  });\n\n  /**\n   * Walks the host DOM to discover every nested `ax-side-menu-item`, looks up\n   * the component instance through the `__axContext__` property that\n   * `MXBaseComponent.ngOnInit` attaches to each host element, and updates the\n   * internal items signal and `.first-level` CSS class accordingly.\n   *\n   * Triggered both initially and from a `MutationObserver` so recursive\n   * templates that add/remove items at runtime stay in sync.\n   */\n  private refreshItemsFromDom() {\n    const host = this.elementRef.nativeElement;\n    const elements = host.querySelectorAll('ax-side-menu-item');\n    const items: AXSideMenuItemComponent[] = [];\n    elements.forEach((el) => {\n      const instance = (el as unknown as { __axContext__?: unknown }).__axContext__;\n      if (instance instanceof AXSideMenuItemComponent) {\n        items.push(instance);\n      }\n    });\n\n    const current = this._items();\n    const changed = current.length !== items.length || current.some((it, i) => it !== items[i]);\n    if (changed) {\n      this._items.set(items);\n    }\n\n    this.addFirstLevelClass();\n  }\n\n  private scheduleDomRefresh() {\n    if (this.domRefreshScheduled) {\n      return;\n    }\n    this.domRefreshScheduled = true;\n\n    // Batch multiple rapid mutations (e.g., large template updates or overlays closing)\n    // into a single refresh to prevent long main-thread stalls.\n    requestAnimationFrame(() => {\n      this.domRefreshScheduled = false;\n      this.refreshItemsFromDom();\n    });\n  }\n\n  private hasRelevantMenuItemMutation(records: MutationRecord[]): boolean {\n    for (const record of records) {\n      if (this.nodeListContainsMenuItem(record.addedNodes) || this.nodeListContainsMenuItem(record.removedNodes)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private nodeListContainsMenuItem(nodes: NodeList): boolean {\n    for (const node of Array.from(nodes)) {\n      if (!(node instanceof Element)) {\n        continue;\n      }\n      if (node.tagName === 'AX-SIDE-MENU-ITEM') {\n        return true;\n      }\n      if (node.querySelector?.('ax-side-menu-item')) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private addFirstLevelClass() {\n    const allChildren = this._items();\n    allChildren.forEach((item) =>\n      item.getHostElement().querySelector('.ax-side-item')?.classList.remove('first-level'),\n    );\n\n    allChildren\n      .filter((item) => {\n        const itemElement = item.getHostElement();\n        return (\n          this.hostElement.contains(itemElement) && !itemElement.parentElement?.closest('.ax-side-children-content')\n        );\n      })\n      .forEach((item) => item.getHostElement().querySelector('.ax-side-item')?.classList.add('first-level'));\n  }\n\n  /** @ignore */\n  @HostBinding('class')\n  private get __hostClass(): string[] {\n    return [`ax-look-${this.look()}`, `ax-location-${this.location()}`, `ax-mode-${this.mode()}`];\n  }\n}\n","<ng-content select=\"ax-side-menu-item,ax-title,ng-container,[ngTemplateOutlet]\"></ng-content>\n\n@for (node of items(); track node) {\n  <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n}\n<ng-template #Recursion let-item>\n  @if (item.title) {\n    <ax-title>{{ item.title }}</ax-title>\n  }\n  @if (item.routerLink) {\n    <ax-side-menu-item\n      [text]=\"item.text\"\n      [target]=\"item.target\"\n      [disabled]=\"item.disabled\"\n      [isLoading]=\"item.isLoading\"\n      [routerLink]=\"item.routerLink\"\n      [isCollapsed]=\"item.isCollapsed\"\n      [toggleOnClick]=\"item.toggleOnClick\"\n      [routerLinkActive]=\"item.routerLinkActive\"\n      [routerLinkActiveOptions]=\"item.routerLinkActiveOptions\"\n    >\n      <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n    </ax-side-menu-item>\n  } @else if (item.href) {\n    <ax-side-menu-item\n      [text]=\"item.text\"\n      [href]=\"item.href\"\n      [target]=\"item.target\"\n      [active]=\"item.active\"\n      [disabled]=\"item.disabled\"\n      [isLoading]=\"item.isLoading\"\n      [isCollapsed]=\"item.isCollapsed\"\n      [toggleOnClick]=\"item.toggleOnClick\"\n    >\n      <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n    </ax-side-menu-item>\n  } @else {\n    <ax-side-menu-item\n      [text]=\"item.text\"\n      [active]=\"item.active\"\n      [disabled]=\"item.disabled\"\n      [isLoading]=\"item.isLoading\"\n      [isCollapsed]=\"item.isCollapsed\"\n      [toggleOnClick]=\"item.toggleOnClick\"\n    >\n      <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n    </ax-side-menu-item>\n  }\n\n  <ng-template #sideMenuItemContent>\n    <ax-prefix>\n      @if (item.icon) {\n        <ax-icon [icon]=\"item.icon\"> </ax-icon>\n      }\n    </ax-prefix>\n    @if (item.data) {\n      <ax-text>{{ item.data }}</ax-text>\n    }\n    @if (item.suffixText || item.suffix?.text) {\n      <ax-suffix>\n        <ax-text>{{ item.suffixText ?? item.suffix?.text }}</ax-text>\n      </ax-suffix>\n    }\n    @for (child of item.items; track child) {\n      <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n    }\n  </ng-template>\n</ng-template>\n","import { AXOutlineContainerDirective, outlineItemType } from '@acorex/cdk/outline';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { afterNextRender, Directive, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { AXSideMenuComponent } from './side-menu.component';\n\n@Directive({\n  selector: '[axOutlineSideMenu]',\n  exportAs: 'axOutlineSideMenu',\n  providers: [AXUnsubscriber],\n})\nexport class AXOutlineSideMenuDirective {\n  private router = inject(Router);\n  private unsubscriber = inject(AXUnsubscriber);\n  private sideMenu = inject(AXSideMenuComponent);\n  private container = inject(AXOutlineContainerDirective);\n\n  #anr = afterNextRender(() => {\n    this.container.outlineItems$\n      .pipe(\n        this.unsubscriber.takeUntilDestroy,\n        map((items) => {\n          if (!items || items.length === 0) return [];\n          return this.buildNestedMenuItems(items);\n        }),\n        distinctUntilChanged(isEqual),\n      )\n      .subscribe((menuItems) => {\n        this.updateSideMenu(menuItems);\n      });\n  });\n\n  private updateSideMenu(newMenuItems: AXMenuItem[]): void {\n    const currentMenuItems = this.sideMenu.items();\n    const newSignature = this.getStructuralSignature(newMenuItems);\n    const currentSignature = this.getStructuralSignature(currentMenuItems || []);\n\n    if (newSignature !== currentSignature) {\n      this.sideMenu.items.set(newMenuItems);\n      return;\n    }\n\n    const currentComponents = this.sideMenu.children();\n    const newActiveItem = this.flattenMenuItems(newMenuItems).find((item) => item.active);\n    const currentActiveComponent = currentComponents.find((c) => c.active());\n    if (newActiveItem?.href === currentActiveComponent?.href()) {\n      return;\n    }\n    currentActiveComponent?.active.set(false);\n    if (newActiveItem) {\n      const componentToActivate = currentComponents.find((c) => c.href() === newActiveItem.href);\n      componentToActivate?.active.set(true);\n    }\n  }\n\n  /**\n   * Creates a string signature that represents the tree structure of the menu.\n   * Example: \"href1(href1.1,href1.2),href2,href3\"\n   * This will be different for a flat list vs. a nested list.\n   */\n  private getStructuralSignature(items: AXMenuItem[]): string {\n    return items\n      .map((item) => {\n        let signature = item.href || '';\n        if (item.items && item.items.length > 0) {\n          signature += `(${this.getStructuralSignature(item.items)})`;\n        }\n        return signature;\n      })\n      .join(',');\n  }\n\n  private flattenMenuItems(items: AXMenuItem[]): AXMenuItem[] {\n    return items.reduce((acc, item) => {\n      acc.push(item);\n      if (item.items) {\n        acc.push(...this.flattenMenuItems(item.items));\n      }\n      return acc;\n    }, [] as AXMenuItem[]);\n  }\n\n  private textReplace(item: outlineItemType): string {\n    const text = item.el.textContent;\n    if (item.hasAnchor) {\n      const newStr = text?.slice(0, -1);\n      return newStr?.trim() || '';\n    }\n    return text?.trim() || '';\n  }\n\n  private buildNestedMenuItems(items: outlineItemType[]): AXMenuItem[] {\n    const menuItemsMap = new Map<string, AXMenuItem>();\n    const rootItems: AXMenuItem[] = [];\n    items.forEach((item) => {\n      const menuItem: AXMenuItem = {\n        items: [],\n        target: '_self',\n        active: item.active,\n        toggleOnClick: false,\n        text: this.textReplace(item),\n        href: `${this.router.url.split('#')[0]}#${item.id}`,\n      };\n      menuItemsMap.set(item.id, menuItem);\n    });\n    items.forEach((item) => {\n      const menuItem = menuItemsMap.get(item.id);\n      if (!menuItem) return;\n      if (item.parentId) {\n        const parentMenuItem = menuItemsMap.get(item.parentId);\n        if (parentMenuItem) {\n          parentMenuItem.items?.push(menuItem);\n        } else {\n          console.warn(`Outline item with id \"${item.id}\" has a parentId \"${item.parentId}\" that does not exist.`);\n          rootItems.push(menuItem);\n        }\n      } else {\n        rootItems.push(menuItem);\n      }\n    });\n    return rootItems;\n  }\n}\n","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\nimport { AXSideMenuComponent } from './side-menu.component';\nimport { AXOutlineSideMenuDirective } from './side-menu.directive';\n\nconst COMPONENT = [AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective];\nconst MODULES = [\n  CommonModule,\n  AXCommonModule,\n  AXRippleDirective,\n  AXLoadingModule,\n  AXTranslationModule,\n  RouterLink,\n  RouterLinkActive,\n  AXDecoratorModule,\n];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXSideMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}