{"version":3,"file":"sdcorejs-angular-components-tree.mjs","sources":["../../../projects/sdcorejs-angular/components/tree/src/tree-item-def.directive.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.html","../../../projects/sdcorejs-angular/components/tree/sdcorejs-angular-components-tree.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport { SdTreeItemContext } from './tree.model';\n\n@Directive({\n  selector: '[sdTreeItemDef]',\n  standalone: true,\n})\nexport class SdTreeItemDefDirective<T = any> {\n  static ngTemplateContextGuard<T>(_dir: SdTreeItemDefDirective<T>, ctx: unknown): ctx is SdTreeItemContext<T> {\n    return true;\n  }\n\n  readonly templateRef: TemplateRef<SdTreeItemContext<T>> = inject(TemplateRef);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  TemplateRef,\n  booleanAttribute,\n  computed,\n  contentChild,\n  effect,\n  inject,\n  input,\n  isSignal,\n  output,\n  signal,\n  untracked,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdButton } from '@sdcorejs/angular/components/button';\nimport { SdQuickAction } from '@sdcorejs/angular/components/quick-action';\nimport { TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { SdTreeItemDefDirective } from './tree-item-def.directive';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n  SdTreeCommand,\n  SdTreeDataSource,\n  SdTreeComponentOption,\n  SdTreeItem,\n  SdTreeItemContext,\n  SdTreeItemLazy,\n  SdTreeLoadErrorEvent,\n  SdTreeNode,\n  SdTreeOption,\n  SdTreeSelectionAction,\n  SdTreeSelectionEvent,\n  SdTreeSelectorOption,\n  SdTreeToggleEvent,\n} from './tree.model';\n\nexport type SdTreeAutoIdPart = 'row' | 'toggle' | 'checkbox' | 'icon' | 'label' | 'command';\n\nexport interface SdTreeNodeAutoIds {\n  row?: string;\n  toggle?: string;\n  checkbox?: string;\n  icon?: string;\n  label?: string;\n  command?: string;\n}\n\nexport interface SdTreeViewCommand<T = any> {\n  key: string;\n  command: SdTreeCommand<T>;\n  title: string;\n  icon: string;\n  color: SdTreeCommand<T>['color'];\n  fontSet: SdTreeCommand<T>['fontSet'];\n  disabled: boolean;\n  autoId?: string;\n  defaultColor: boolean;\n}\n\nexport interface SdTreeViewNode<T = any> extends SdTreeNode<T> {\n  icon?: string;\n  selected: boolean;\n  selectionDisabled: boolean;\n  selectionIndeterminate: boolean;\n  toggleDisabled: boolean;\n  toggleLabel: string;\n  ariaExpanded: boolean | null;\n  autoIds: SdTreeNodeAutoIds;\n  commands: SdTreeViewCommand<T>[];\n  context: SdTreeItemContext<T>;\n  tabIndex: 0 | -1;\n}\n\nexport interface SdTreeSelectionActionView<T = any> {\n  action: SdTreeSelectionAction<T>;\n  autoId: string | null;\n}\n\nconst DEFAULT_STATIC_TREE: SdTreeOption<any> = { loadType: 'static' };\nconst EMPTY_TREE_ITEMS: SdTreeItem<any>[] = [];\n\n@Component({\n  selector: 'sd-tree',\n  standalone: true,\n  imports: [\n    SdIcon,\n    CommonModule,\n    MatButtonModule,\n    MatCheckboxModule,\n    MatMenuModule,\n    MatProgressSpinnerModule,\n    MatTooltipModule,\n    SdButton,\n    SdQuickAction,\n    TranslatePipe,\n  ],\n  templateUrl: './tree.component.html',\n  styleUrl: './tree.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[attr.data-autoid]': 'autoId()',\n  },\n})\nexport class SdTree<T = any> {\n  readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n  readonly autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n  readonly option = input<SdTreeComponentOption<T> | undefined>(undefined);\n\n  /** Migration bridge. New usage should put the data source in `option.items`. */\n  readonly items = input<SdTreeDataSource<SdTreeItem<T>> | undefined>(undefined);\n  /** Migration bridge. New usage should put static/lazy config in `option.tree`. */\n  readonly tree = input<SdTreeOption<T> | undefined>(DEFAULT_STATIC_TREE);\n  readonly selectedItemsInput = input<T[] | undefined | null>(undefined, { alias: 'selectedItems' });\n  readonly commands = input<SdTreeCommand<T>[] | undefined | null>([]);\n  readonly selectable = input(true, { transform: booleanAttribute });\n  readonly selector = input<SdTreeSelectorOption<T> | undefined | null>(undefined);\n  readonly itemTemplate = input<TemplateRef<SdTreeItemContext<T>> | undefined | null>(undefined);\n\n  readonly selectedItemsChange = output<T[]>();\n  readonly selectChange = output<SdTreeSelectionEvent<T>>();\n  readonly expandChange = output<SdTreeToggleEvent<T>>();\n  readonly collapseChange = output<SdTreeToggleEvent<T>>();\n  readonly loadError = output<SdTreeLoadErrorEvent<T>>();\n\n  readonly itemDef = contentChild(SdTreeItemDefDirective<T>);\n  readonly resolvedItemsSource = computed<SdTreeDataSource<SdTreeItem<T>>>(() => {\n    return this.option()?.items ?? this.items() ?? (EMPTY_TREE_ITEMS as SdTreeItem<T>[]);\n  });\n  readonly resolvedTree = computed<SdTreeOption<T>>(() => this.option()?.tree ?? this.tree() ?? (DEFAULT_STATIC_TREE as SdTreeOption<T>));\n  readonly resolvedSelector = computed(() => this.option()?.selector ?? this.selector());\n  readonly resolvedCommands = computed(() => this.option()?.commands ?? this.commands() ?? []);\n  readonly resolvedSelectable = computed(() => this.option()?.selectable ?? this.selectable());\n  readonly autoId = computed(() => {\n    const scope = this.option()?.autoId ?? this.autoIdInput();\n    return scope ? `components-tree-${scope}` : undefined;\n  });\n  readonly resolvedItemTemplate = computed<TemplateRef<SdTreeItemContext<T>> | undefined>(() => {\n    return this.itemDef()?.templateRef || this.option()?.itemTemplate || this.itemTemplate() || undefined;\n  });\n  readonly indentSize = computed(() => this.resolvedTree().indentSize ?? 20);\n\n  readonly #rootItems = signal<SdTreeItem<T>[]>([]);\n  readonly #expandedState = signal<Record<string, boolean>>({});\n  readonly #loadingState = signal<Record<string, boolean>>({});\n  readonly #lazyChildren = signal<Record<string, SdTreeItemLazy<T>[]>>({});\n  readonly #lazyErrorState = signal<Record<string, unknown>>({});\n  readonly #selectedIds = signal<Set<string>>(new Set());\n  readonly #filterText = signal('');\n  readonly #reloadTick = signal(0);\n  readonly rootLoading = signal(false);\n  readonly rootError = signal<unknown | null>(null);\n  readonly activeNodeId = signal<string | null>(null);\n\n  #rootLoadId = 0;\n  #lastSource?: SdTreeDataSource<SdTreeItem<T>>;\n  #lastSourceValue?: SdTreeItem<T>[];\n  #lastReloadTick = -1;\n  #treeGeneration = 0;\n  readonly #lazyLoadIds = new Map<string, number>();\n\n  readonly normalizedFilterText = computed(() => normalizeText(this.#filterText()));\n  readonly selectionVisible = computed(() => this.resolvedSelectable() && this.resolvedSelector()?.visible === true);\n  readonly selectedIdSet = computed(() => {\n    const selectedItems = this.option()?.selectedItems ?? this.selectedItemsInput();\n    return selectedItems ? this.#idsFromSelectedItems(selectedItems) : this.#selectedIds();\n  });\n\n  readonly rootNodes = computed<SdTreeNode<T>[]>(() => this.#buildNodes(this.#rootItems(), 0, null));\n\n  readonly visibleNodes = computed<SdTreeNode<T>[]>(() => {\n    const filterText = this.normalizedFilterText();\n    const result: SdTreeNode<T>[] = [];\n\n    const walk = (nodes: SdTreeNode<T>[]) => {\n      for (const node of nodes) {\n        const nodeOrDescendantMatches = this.#subtreeMatches(node, filterText);\n        if (!filterText || nodeOrDescendantMatches) {\n          result.push(node);\n        }\n\n        const shouldShowChildren = filterText ? nodeOrDescendantMatches : node.isExpanded;\n        if (shouldShowChildren) {\n          walk(node.children);\n        }\n      }\n    };\n\n    walk(this.rootNodes());\n    return result;\n  });\n  readonly selectedItems = computed(() => this.#selectedItemsFromIds(this.selectedIdSet()));\n  readonly selectedCount = computed(() => this.selectedItems().length);\n  readonly selectionMessage = computed(() => {\n    const items = this.selectedItems();\n    const message = this.resolvedSelector()?.message;\n    if (typeof message === 'function') return message(items);\n    return message || `Đã chọn ${items.length} mục`;\n  });\n  readonly visibleSelectionActions = computed(() => {\n    const items = this.selectedItems();\n    return (this.resolvedSelector()?.actions || []).filter(action => {\n      const hidden = typeof action.hidden === 'function' ? action.hidden(items) : action.hidden;\n      return !hidden;\n    });\n  });\n  readonly selectionActionViews = computed<SdTreeSelectionActionView<T>[]>(() => {\n    return this.visibleSelectionActions().map((action, index) => ({\n      action,\n      autoId: this.#selectionActionAutoId(index),\n    }));\n  });\n  readonly clearSelectionAutoId = computed(() => {\n    const base = this.autoId();\n    return base ? `${base}-clear-selection` : null;\n  });\n\n  /**\n   * Template-facing row model. Expensive/variable values are resolved once per\n   * signal recomputation so the HTML does not call helper methods for every CD pass.\n   */\n  readonly visibleViewNodes = computed<SdTreeViewNode<T>[]>(() => {\n    const selectedIds = this.selectedIdSet();\n    const selectedItems = this.selectedItems();\n    const selector = this.resolvedSelector();\n    const commands = this.resolvedCommands();\n    const nodes = this.visibleNodes();\n    const requestedActiveId = this.activeNodeId();\n    const activeId = nodes.some(node => node.id === requestedActiveId) ? requestedActiveId : nodes[0]?.id;\n    return nodes.map(node => this.#toViewNode(node, selectedIds, selectedItems, selector, commands, node.id === activeId));\n  });\n\n  readonly trackByNode = (_index: number, node: SdTreeNode<T>): string => node.id;\n\n  constructor() {\n    effect(() => {\n      const source = this.resolvedItemsSource();\n      const reloadTick = this.#reloadTick();\n\n      // Data sources can be arrays, signals, sync loaders, or async loaders.\n      // The effect normalizes them into #rootItems; `reload()` only bumps the tick.\n      if (isSignal(source)) {\n        const items = source();\n        untracked(() => this.#applySignalSource(source, items, reloadTick));\n        return;\n      }\n\n      untracked(() => {\n        if (source === this.#lastSource && reloadTick === this.#lastReloadTick) return;\n\n        this.#lastSource = source;\n        this.#lastSourceValue = undefined;\n        this.#lastReloadTick = reloadTick;\n        this.#loadRootItems(source);\n      });\n    });\n  }\n\n  reload(): void {\n    this.#reloadTick.update(value => value + 1);\n  }\n\n  filter(searchText: string | undefined | null): void {\n    this.#filterText.set(searchText ?? '');\n  }\n\n  isSelected(node: SdTreeNode<T>): boolean {\n    return this.selectedIdSet().has(node.id);\n  }\n\n  nodeIcon(node: SdTreeNode<T>): string | undefined {\n    return this.#iconOf(node);\n  }\n\n  visibleCommands(node: SdTreeNode<T>): SdTreeCommand<T>[] {\n    return this.resolvedCommands().filter(command => !this.#resolveBoolean(command.hidden, node.data));\n  }\n\n  isSelectionDisabled(node: SdTreeNode<T>): boolean {\n    const disabled = this.resolvedSelector()?.disabled;\n    return disabled ? disabled(node.data, this.selectedItems()) : false;\n  }\n\n  commandTitle(command: SdTreeCommand<T>, item: T): string {\n    return typeof command.title === 'function' ? command.title(item) : command.title;\n  }\n\n  commandIcon(command: SdTreeCommand<T>, item: T): string {\n    const icon = typeof command.icon === 'function' ? command.icon(item) : command.icon;\n    return icon || 'more_horiz';\n  }\n\n  isCommandDisabled(command: SdTreeCommand<T>, item: T): boolean {\n    return this.#resolveBoolean(command.disabled, item);\n  }\n\n  async toggle(node: SdTreeNode<T>, event?: Event): Promise<void> {\n    event?.stopPropagation();\n    const currentNode = this.#findNode(node.id) ?? node;\n    if (!currentNode.hasChildren || currentNode.isLoading) return;\n\n    if (currentNode.isExpanded) {\n      this.#expandedState.update(state => ({ ...state, [currentNode.id]: false }));\n      const toggleEvent = { item: currentNode.data, expanded: false, node: { ...currentNode, isExpanded: false } };\n      this.option()?.onCollapse?.(toggleEvent);\n      this.collapseChange.emit(toggleEvent);\n      return;\n    }\n\n    await this.#ensureLazyChildren(currentNode);\n    const nextNode = this.#findNode(currentNode.id) ?? currentNode;\n    if (!nextNode.hasChildren || nextNode.loadError) return;\n\n    this.#expandedState.update(state => ({ ...state, [currentNode.id]: true }));\n    const toggleEvent = { item: currentNode.data, expanded: true, node: { ...nextNode, isExpanded: true } };\n    this.option()?.onExpand?.(toggleEvent);\n    this.expandChange.emit(toggleEvent);\n  }\n\n  toggleSelection(node: SdTreeNode<T>, event?: Event): void {\n    event?.stopPropagation();\n    if (!this.selectionVisible() || this.isSelectionDisabled(node)) return;\n\n    const selector = this.resolvedSelector();\n    const selectedIds = new Set(this.selectedIdSet());\n    const shouldSelect = !selectedIds.has(node.id);\n    if (selector?.single) {\n      selectedIds.clear();\n      if (shouldSelect) selectedIds.add(node.id);\n    } else if (selector?.cascade === 'descendants') {\n      this.#setNodeAndDescendants(node, shouldSelect, selectedIds);\n      this.#reconcileAncestors(node.parent, selectedIds);\n    } else if (shouldSelect) {\n      selectedIds.add(node.id);\n    } else {\n      selectedIds.delete(node.id);\n    }\n\n    this.#selectedIds.set(selectedIds);\n    const selectedItems = this.#selectedItemsFromIds(selectedIds);\n    this.option()?.onSelectedItemsChange?.(selectedItems);\n    this.selectedItemsChange.emit(selectedItems);\n    const selectionEvent = { item: node.data, selected: selectedIds.has(node.id), selectedItems };\n    this.option()?.onSelect?.(selectionEvent);\n    this.selectChange.emit(selectionEvent);\n  }\n\n  clearSelection(): void {\n    this.#selectedIds.set(new Set());\n    this.option()?.onSelectedItemsChange?.([]);\n    this.selectedItemsChange.emit([]);\n  }\n\n  onSelectionAction(action: SdTreeSelectionAction<T>): void {\n    action.click(this.selectedItems());\n  }\n\n  retry(): void {\n    this.reload();\n  }\n\n  retryNode(node: SdTreeNode<T>, event?: Event): void {\n    event?.stopPropagation();\n    this.#lazyErrorState.update(state => {\n      const next = { ...state };\n      delete next[node.id];\n      return next;\n    });\n    void this.toggle(node);\n  }\n\n  errorMessage(error: unknown): string {\n    return error instanceof Error ? error.message : String(error || 'Unable to load tree data');\n  }\n\n  onRowFocus(node: SdTreeNode<T>): void {\n    this.activeNodeId.set(node.id);\n  }\n\n  onRowKeydown(node: SdTreeNode<T>, event: KeyboardEvent): void {\n    if (event.target !== event.currentTarget) return;\n    const nodes = this.visibleNodes();\n    const index = nodes.findIndex(item => item.id === node.id);\n    if (index < 0) return;\n\n    switch (event.key) {\n      case 'ArrowDown':\n        event.preventDefault();\n        this.#focusVisibleNode(Math.min(nodes.length - 1, index + 1));\n        return;\n      case 'ArrowUp':\n        event.preventDefault();\n        this.#focusVisibleNode(Math.max(0, index - 1));\n        return;\n      case 'Home':\n        event.preventDefault();\n        this.#focusVisibleNode(0);\n        return;\n      case 'End':\n        event.preventDefault();\n        this.#focusVisibleNode(nodes.length - 1);\n        return;\n      case 'ArrowRight':\n        if (!node.hasChildren) return;\n        event.preventDefault();\n        if (!node.isExpanded) void this.toggle(node);\n        else if (nodes[index + 1]?.parent?.id === node.id) this.#focusVisibleNode(index + 1);\n        return;\n      case 'ArrowLeft':\n        if (!node.isExpanded && !node.parent) return;\n        event.preventDefault();\n        if (node.isExpanded) void this.toggle(node);\n        else this.#focusVisibleNode(nodes.findIndex(item => item.id === node.parent?.id));\n        return;\n      case 'Enter':\n      case ' ':\n        if (!this.selectionVisible()) return;\n        event.preventDefault();\n        this.toggleSelection(node);\n    }\n  }\n\n  createContext(node: SdTreeNode<T>): SdTreeItemContext<T> {\n    return this.#createContext(node, this.isSelected(node));\n  }\n\n  nodeAutoId(node: SdTreeNode<T>, part: SdTreeAutoIdPart): string | undefined {\n    const base = this.autoId();\n    return base ? `${base}-${part}-${sanitizeId(node.id)}` : undefined;\n  }\n\n  commandAutoId(node: SdTreeNode<T>, command: SdTreeCommand<T>): string | undefined {\n    const base = this.nodeAutoId(node, 'command');\n    return base ? `${base}-${sanitizeId(command.key)}` : undefined;\n  }\n\n  #applySignalSource(source: SdTreeDataSource<SdTreeItem<T>>, items: SdTreeItem<T>[], reloadTick: number): void {\n    if (source === this.#lastSource && items === this.#lastSourceValue && reloadTick === this.#lastReloadTick) return;\n\n    // A signal source takes ownership immediately. Any promise started by the\n    // previous source must no longer be allowed to replace its current value.\n    this.#rootLoadId += 1;\n    this.#lastSource = source;\n    this.#lastSourceValue = items;\n    this.#lastReloadTick = reloadTick;\n    this.rootLoading.set(false);\n    this.rootError.set(null);\n    this.#setRootItems(items);\n  }\n\n  #loadRootItems(source: SdTreeDataSource<SdTreeItem<T>>): void {\n    const loadId = ++this.#rootLoadId;\n    this.rootLoading.set(true);\n    this.rootError.set(null);\n    try {\n      const result = this.#readItemsSource(source);\n      if (isPromiseLike(result)) {\n        result\n          .then(items => {\n            if (loadId === this.#rootLoadId) {\n              this.#setRootItems(items);\n            }\n          })\n          .catch(error => {\n            if (loadId !== this.#rootLoadId) return;\n            this.rootError.set(error);\n            this.#setRootItems([]);\n            this.loadError.emit({ error });\n          })\n          .finally(() => {\n            if (loadId === this.#rootLoadId) this.rootLoading.set(false);\n          });\n        return;\n      }\n\n      if (loadId === this.#rootLoadId) {\n        this.#setRootItems(result);\n        this.rootLoading.set(false);\n      }\n    } catch (error) {\n      if (loadId === this.#rootLoadId) {\n        this.rootError.set(error);\n        this.#setRootItems([]);\n        this.rootLoading.set(false);\n        this.loadError.emit({ error });\n      }\n    }\n  }\n\n  #readItemsSource(source: SdTreeDataSource<SdTreeItem<T>>): SdTreeItem<T>[] | Promise<SdTreeItem<T>[]> {\n    if (isSignal(source)) return source();\n    if (typeof source === 'function') return source();\n    return source;\n  }\n\n  #setRootItems(items: SdTreeItem<T>[] | undefined | null): void {\n    this.#treeGeneration += 1;\n    this.#lazyLoadIds.clear();\n    this.#rootItems.set([...(items ?? [])]);\n    this.#lazyChildren.set({});\n    this.#loadingState.set({});\n    this.#lazyErrorState.set({});\n  }\n\n  #toViewNode(\n    node: SdTreeNode<T>,\n    selectedIds: Set<string>,\n    selectedItems: T[],\n    selector: SdTreeSelectorOption<T> | undefined | null,\n    commands: SdTreeCommand<T>[],\n    active: boolean\n  ): SdTreeViewNode<T> {\n    const selected = selectedIds.has(node.id);\n    const selectionDisabled = selector?.disabled ? selector.disabled(node.data, selectedItems) : false;\n    const viewNode = {\n      ...node,\n      icon: this.#iconOf(node),\n      selected,\n      selectionDisabled,\n      selectionIndeterminate: this.#isSelectionIndeterminate(node, selectedIds, selector),\n      toggleDisabled: !node.hasChildren || node.isLoading,\n      toggleLabel: node.loadError ? 'Retry loading tree item' : node.isExpanded ? 'Collapse tree item' : 'Expand tree item',\n      ariaExpanded: node.hasChildren ? node.isExpanded : null,\n      autoIds: this.#nodeAutoIds(node),\n      commands: this.#commandViews(node, commands),\n      context: undefined as unknown as SdTreeItemContext<T>,\n      tabIndex: active ? (0 as const) : (-1 as const),\n    };\n\n    viewNode.context = this.#createContext(viewNode, selected);\n    return viewNode;\n  }\n\n  #commandViews(node: SdTreeNode<T>, commands: SdTreeCommand<T>[]): SdTreeViewCommand<T>[] {\n    return commands\n      .filter(command => !this.#resolveBoolean(command.hidden, node.data))\n      .map(command => ({\n        key: command.key,\n        command,\n        title: this.commandTitle(command, node.data),\n        icon: this.commandIcon(command, node.data),\n        color: command.color || 'secondary',\n        fontSet: command.fontSet || 'material-icons-outlined',\n        disabled: this.isCommandDisabled(command, node.data),\n        autoId: this.commandAutoId(node, command),\n        defaultColor: !command.color,\n      }));\n  }\n\n  #createContext(node: SdTreeNode<T>, selected: boolean): SdTreeItemContext<T> {\n    return {\n      $implicit: node.data,\n      item: node.data,\n      treeItem: node.treeItem,\n      node,\n      level: node.level,\n      expanded: node.isExpanded,\n      selected,\n      loading: node.isLoading,\n      loadError: node.loadError,\n      hasChildren: node.hasChildren,\n      isLeaf: !node.hasChildren,\n      toggle: () => void this.toggle(node),\n      select: () => this.toggleSelection(node),\n      retry: () => this.retryNode(node),\n    };\n  }\n\n  #nodeAutoIds(node: SdTreeNode<T>): SdTreeNodeAutoIds {\n    return {\n      row: this.nodeAutoId(node, 'row'),\n      toggle: this.nodeAutoId(node, 'toggle'),\n      checkbox: this.nodeAutoId(node, 'checkbox'),\n      icon: this.nodeAutoId(node, 'icon'),\n      label: this.nodeAutoId(node, 'label'),\n      command: this.nodeAutoId(node, 'command'),\n    };\n  }\n\n  #selectionActionAutoId(index: number): string | null {\n    const base = this.autoId();\n    return base ? `${base}-selection-action-${index}` : null;\n  }\n\n  #buildNodes(items: SdTreeItem<T>[], level: number, parent: SdTreeNode<T> | null): SdTreeNode<T>[] {\n    const option = this.resolvedTree();\n    const maxDepth = option.maxDepth;\n    if (maxDepth !== undefined && level > maxDepth) return [];\n\n    return items.map(item => {\n      const rawChildren = this.#childrenOf(item);\n      const hasChildren = rawChildren.length > 0 || this.#hasLazyChildren(item);\n      const isExpanded = this.#expandedState()[item.id] ?? item.expanded ?? this.#defaultExpanded(level);\n      const node: SdTreeNode<T> = {\n        treeItem: item,\n        data: item.data,\n        id: item.id,\n        label: item.label,\n        level,\n        parent,\n        children: [],\n        hasChildren,\n        isExpanded,\n        isLoading: this.#loadingState()[item.id] ?? false,\n        loadError: this.#lazyErrorState()[item.id],\n      };\n      node.children = this.#buildNodes(rawChildren, level + 1, node);\n      return node;\n    });\n  }\n\n  #childrenOf(item: SdTreeItem<T>): SdTreeItem<T>[] {\n    const option = this.resolvedTree();\n    // Static items own their `children`; lazy items keep loaded children in component state.\n    if (option.loadType === 'lazy') {\n      return this.#lazyChildren()[item.id] ?? [];\n    }\n\n    return item.children ?? [];\n  }\n\n  #hasLazyChildren(item: SdTreeItem<T>): boolean {\n    const option = this.resolvedTree();\n    if (option.loadType !== 'lazy' || this.#lazyChildren()[item.id]) return false;\n    // Lazy mode uses `hasChildren` as the branch hint before children are loaded.\n    return item.hasChildren ?? true;\n  }\n\n  #defaultExpanded(level: number): boolean {\n    const option = this.resolvedTree();\n    if (option.loadType !== 'static') return false;\n\n    const value = option.defaultExpanded ?? false;\n    if (value === true) return true;\n    if (value === false) return false;\n    return level < value;\n  }\n\n  #iconOf(node: SdTreeNode<T>): string | undefined {\n    // One optional `treeItem.icon` handles both branch and leaf overrides.\n    // Without it, branches get folder icons while leaves intentionally render no icon.\n    if (node.treeItem.icon) return node.treeItem.icon;\n    if (!node.hasChildren) return undefined;\n    return node.isExpanded ? 'folder_open' : 'folder';\n  }\n\n  async #ensureLazyChildren(node: SdTreeNode<T>): Promise<void> {\n    const option = this.resolvedTree();\n    if (option.loadType !== 'lazy' || node.children.length > 0 || this.#lazyChildren()[node.id]) return;\n\n    const generation = this.#treeGeneration;\n    const loadId = (this.#lazyLoadIds.get(node.id) ?? 0) + 1;\n    this.#lazyLoadIds.set(node.id, loadId);\n    this.#loadingState.update(state => ({ ...state, [node.id]: true }));\n    this.#lazyErrorState.update(state => {\n      const next = { ...state };\n      delete next[node.id];\n      return next;\n    });\n    try {\n      const lazyItem = node.treeItem as SdTreeItemLazy<T>;\n      const children = await Promise.resolve(option.onExpandChildren(lazyItem));\n      if (generation !== this.#treeGeneration || this.#lazyLoadIds.get(node.id) !== loadId) return;\n      this.#lazyChildren.update(state => ({ ...state, [node.id]: children }));\n      // Do not write `children` onto lazy items; that field belongs to static items only.\n      lazyItem.hasChildren = children.length > 0;\n    } catch (error) {\n      if (generation !== this.#treeGeneration || this.#lazyLoadIds.get(node.id) !== loadId) return;\n      this.#lazyErrorState.update(state => ({ ...state, [node.id]: error }));\n      this.loadError.emit({ item: node.data, error });\n    } finally {\n      if (generation === this.#treeGeneration && this.#lazyLoadIds.get(node.id) === loadId) {\n        this.#loadingState.update(state => ({ ...state, [node.id]: false }));\n      }\n    }\n  }\n\n  #setNodeAndDescendants(node: SdTreeNode<T>, selected: boolean, selectedIds: Set<string>): void {\n    if (!this.isSelectionDisabled(node)) {\n      if (selected) selectedIds.add(node.id);\n      else selectedIds.delete(node.id);\n    }\n    node.children.forEach(child => this.#setNodeAndDescendants(child, selected, selectedIds));\n  }\n\n  #reconcileAncestors(node: SdTreeNode<T> | null, selectedIds: Set<string>): void {\n    let current = node;\n    while (current) {\n      const selectableChildren = current.children.filter(child => !this.isSelectionDisabled(child));\n      if (selectableChildren.length > 0 && selectableChildren.every(child => selectedIds.has(child.id))) selectedIds.add(current.id);\n      else selectedIds.delete(current.id);\n      current = current.parent;\n    }\n  }\n\n  #isSelectionIndeterminate(node: SdTreeNode<T>, selectedIds: Set<string>, selector: SdTreeSelectorOption<T> | undefined | null): boolean {\n    if (selector?.cascade !== 'descendants' || selectedIds.has(node.id)) return false;\n    return this.#flattenAll(node.children).some(child => selectedIds.has(child.id));\n  }\n\n  #focusVisibleNode(index: number): void {\n    if (index < 0) return;\n    const node = this.visibleNodes()[index];\n    const row = this.#host.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]')[index];\n    if (!node || !row) return;\n    this.activeNodeId.set(node.id);\n    row.focus();\n  }\n\n  #findNode(id: string): SdTreeNode<T> | undefined {\n    return this.#flattenAll(this.rootNodes()).find(node => node.id === id);\n  }\n\n  #flattenAll(nodes: SdTreeNode<T>[]): SdTreeNode<T>[] {\n    const result: SdTreeNode<T>[] = [];\n    const walk = (current: SdTreeNode<T>[]) => {\n      for (const node of current) {\n        result.push(node);\n        walk(node.children);\n      }\n    };\n    walk(nodes);\n    return result;\n  }\n\n  #selectedItemsFromIds(selectedIds: Set<string>): T[] {\n    return this.#flattenAll(this.rootNodes())\n      .filter(node => selectedIds.has(node.id))\n      .map(node => node.data);\n  }\n\n  #idsFromSelectedItems(selectedItems: T[]): Set<string> {\n    const selectedRefs = new Set(selectedItems);\n    const selectedDataIds = new Set(selectedItems.map(item => this.#dataId(item)).filter((id): id is string => !!id));\n    const result = new Set<string>();\n\n    for (const node of this.#flattenAll(this.rootNodes())) {\n      const dataId = this.#dataId(node.data);\n      if (selectedRefs.has(node.data) || (dataId && selectedDataIds.has(dataId))) {\n        result.add(node.id);\n      }\n    }\n\n    return result;\n  }\n\n  #dataId(item: T): string | undefined {\n    const record = item as Record<string, unknown>;\n    const value = record?.['id'] ?? record?.['code'] ?? record?.['value'];\n    return value != null && value !== '' ? String(value) : undefined;\n  }\n\n  #nodeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n    return normalizeText(node.label).includes(filterText);\n  }\n\n  #subtreeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n    if (this.#nodeMatches(node, filterText)) return true;\n    return node.children.some(child => this.#subtreeMatches(child, filterText));\n  }\n\n  #resolveBoolean(resolver: boolean | ((item: T) => boolean) | undefined, item: T): boolean {\n    return typeof resolver === 'function' ? resolver(item) : !!resolver;\n  }\n}\n\nfunction normalizeText(value: string): string {\n  return value\n    .normalize('NFD')\n    .replace(/[\\u0300-\\u036f]/g, '')\n    .replace(/[\\u0111\\u0110]/g, match => (match === '\\u0110' ? 'D' : 'd'))\n    .toLowerCase()\n    .trim();\n}\n\nfunction sanitizeId(value: string): string {\n  return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction isPromiseLike<T>(value: T[] | Promise<T[]>): value is Promise<T[]> {\n  return !!value && typeof (value as Promise<T[]>).then === 'function';\n}\n","@let _resolvedItemTemplate = resolvedItemTemplate();\n@let _selectionVisible = selectionVisible();\n@let _selectedCount = selectedCount();\n@let _selectionMessage = selectionMessage();\n@let _selectionActionViews = selectionActionViews();\n@let _rootError = rootError();\n\n@if (rootLoading()) {\n  <div class=\"sd-tree__root-loading\" role=\"status\" aria-live=\"polite\">\n    <mat-progress-spinner diameter=\"24\" mode=\"indeterminate\" />\n  </div>\n} @else if (_rootError) {\n  <div class=\"sd-tree__root-error\" role=\"alert\">\n    <span>{{ errorMessage(_rootError) }}</span>\n    <button type=\"button\" data-tree-retry (click)=\"retry()\">{{ 'core.component.tree.retry' | translate }}</button>\n  </div>\n} @else {\n  <div class=\"sd-tree\" role=\"tree\" [attr.aria-busy]=\"rootLoading()\" [style.--sd-tree-indent-size]=\"indentSize() + 'px'\">\n    @for (node of visibleViewNodes(); track node.id) {\n      <div\n        class=\"sd-tree__row\"\n        role=\"treeitem\"\n        [tabIndex]=\"node.tabIndex\"\n        [class.sd-tree__row--selected]=\"node.selected\"\n        [style.--sd-tree-level]=\"node.level\"\n        [attr.aria-level]=\"node.level + 1\"\n        [attr.aria-expanded]=\"node.ariaExpanded\"\n        [attr.aria-selected]=\"_selectionVisible ? node.selected : null\"\n        [attr.aria-checked]=\"_selectionVisible ? (node.selectionIndeterminate ? 'mixed' : node.selected) : null\"\n        [attr.data-autoid]=\"node.autoIds.row\"\n        (focus)=\"onRowFocus(node)\"\n        (keydown)=\"onRowKeydown(node, $event)\">\n        <div class=\"sd-tree__main\">\n          <button\n            type=\"button\"\n            class=\"sd-tree__toggle\"\n            [class.sd-tree__toggle--placeholder]=\"!node.hasChildren\"\n            [disabled]=\"node.toggleDisabled\"\n            [attr.aria-label]=\"node.toggleLabel\"\n            [attr.data-autoid]=\"node.autoIds.toggle\"\n            [attr.data-tree-node-retry]=\"node.loadError ? node.id : null\"\n            (click)=\"toggle(node, $event)\">\n            @if (node.isLoading) {\n              <mat-progress-spinner diameter=\"16\" mode=\"indeterminate\" />\n            } @else if (node.loadError) {\n              <sd-icon name=\"refresh\"></sd-icon>\n            } @else if (node.hasChildren) {\n              <sd-icon [name]=\"node.isExpanded ? 'expand_more' : 'chevron_right'\"></sd-icon>\n            }\n          </button>\n\n          @if (_selectionVisible) {\n            <mat-checkbox\n              class=\"sd-tree__checkbox\"\n              [checked]=\"node.selected\"\n              [indeterminate]=\"node.selectionIndeterminate\"\n              [disabled]=\"node.selectionDisabled\"\n              [attr.data-autoid]=\"node.autoIds.checkbox\"\n              (click)=\"$event.stopPropagation()\"\n              (change)=\"toggleSelection(node)\" />\n          }\n\n          @if (node.icon) {\n            <sd-icon class=\"sd-tree__item-icon\" color=\"primary\" [attr.data-autoid]=\"node.autoIds.icon\" [name]=\"node.icon\"></sd-icon>\n          }\n\n          <div class=\"sd-tree__content\" [class.sd-tree__content--custom]=\"_resolvedItemTemplate\" [attr.data-autoid]=\"node.autoIds.label\">\n            @if (_resolvedItemTemplate) {\n              <ng-container *ngTemplateOutlet=\"_resolvedItemTemplate; context: node.context\" />\n            } @else {\n              <span class=\"sd-tree__label\">{{ node.label }}</span>\n            }\n          </div>\n        </div>\n\n        @if (node.commands.length) {\n          <button\n            type=\"button\"\n            class=\"sd-tree__command-trigger\"\n            mat-icon-button\n            [matMenuTriggerFor]=\"commandMenu\"\n            [attr.data-autoid]=\"node.autoIds.command\"\n            (click)=\"$event.stopPropagation()\">\n            <sd-icon class=\"c-icon\" name=\"more_vert\"></sd-icon>\n          </button>\n          <mat-menu #commandMenu=\"matMenu\" class=\"sd-tree__command-menu\">\n            @for (command of node.commands; track command.key) {\n              <button\n                type=\"button\"\n                class=\"sd-tree__command-menu-item\"\n                mat-menu-item\n                [disabled]=\"command.disabled\"\n                [attr.data-autoid]=\"command.autoId\"\n                (click)=\"command.command.click(node.data)\">\n                <span class=\"sd-tree__command-menu-content\">\n                  <sd-icon\n                    class=\"c-icon sd-tree__command-menu-icon\"\n                    [class.sd-tree__command-menu-icon--default]=\"command.defaultColor\"\n                    [color]=\"command.color\"\n                    [fontSet]=\"command.fontSet\"\n                    [name]=\"command.icon\"></sd-icon>\n                  <span class=\"sd-tree__command-title\">{{ command.title }}</span>\n                </span>\n              </button>\n            }\n          </mat-menu>\n        }\n      </div>\n    }\n  </div>\n}\n\n<sd-quick-action [opened]=\"_selectedCount > 0\">\n  <div class=\"d-flex align-items-center\" sdMessage>\n    <div class=\"c-bg-length\">\n      <span class=\"c-length sd-tree__qa-count\">{{ _selectedCount }}</span>\n    </div>\n    <div class=\"c-message\">\n      {{ _selectionMessage }}\n    </div>\n  </div>\n\n  <div class=\"d-flex align-items-center mr-8 sd-tree__qa-actions\" sdAction>\n    @for (actionView of _selectionActionViews; track $index) {\n      <sd-button\n        [autoId]=\"actionView.autoId\"\n        class=\"ml-4\"\n        [tooltip]=\"actionView.action.tooltip\"\n        [prefixIcon]=\"actionView.action.icon\"\n        [color]=\"actionView.action.color || 'primary'\"\n        [type]=\"actionView.action.type || 'light'\"\n        [fontSet]=\"actionView.action.fontSet\"\n        [title]=\"actionView.action.title\"\n        (click)=\"onSelectionAction(actionView.action)\" />\n    }\n    <sd-button\n      [autoId]=\"clearSelectionAutoId()\"\n      class=\"ml-4\"\n      prefixIcon=\"close\"\n      color=\"secondary\"\n      type=\"outline\"\n      width=\"35px\"\n      (click)=\"clearSelection()\" />\n  </div>\n</sd-quick-action>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}