{"version":3,"file":"abp-ng.components-tree.mjs","sources":["../../../../packages/components/tree/src/lib/disable-tree-style-loading.token.ts","../../../../packages/components/tree/src/lib/templates/tree-node-template.directive.ts","../../../../packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts","../../../../packages/components/tree/src/lib/components/tree.component.ts","../../../../packages/components/tree/src/lib/components/tree.component.html","../../../../packages/components/tree/src/lib/tree.module.ts","../../../../packages/components/tree/src/lib/utils/nz-tree-adapter.ts","../../../../packages/components/tree/src/abp-ng.components-tree.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISABLE_TREE_STYLE_LOADING_TOKEN = new InjectionToken<boolean>(\r\n  'DISABLE_TREE_STYLE_LOADING_TOKEN',\r\n);\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',\r\n})\r\nexport class TreeNodeTemplateDirective {\r  template = inject<TemplateRef<any>>(TemplateRef);\n\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',\r\n})\r\nexport class ExpandedIconTemplateDirective {\r  template = inject<TemplateRef<any>>(TemplateRef);\n\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  contentChild,\r\n  inject,\r\n  OnInit,\r\n  TemplateRef,\r\n  ViewEncapsulation,\r\n  input,\r\n  output,\r\n  signal,\r\n  effect\r\n} from '@angular/core';\r\nimport { NgbDropdown, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n  NzFormatBeforeDropEvent,\r\n  NzFormatEmitEvent,\r\n  NzTreeComponent,\r\n  NzTreeNode,\r\n} from 'ng-zorro-antd/tree';\r\nimport {\r\n  InitDirective,\r\n  LazyLoadService,\r\n  LOADING_STRATEGY,\r\n  SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport { of } from 'rxjs';\r\nimport { DISABLE_TREE_STYLE_LOADING_TOKEN } from '../disable-tree-style-loading.token';\r\nimport { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';\r\nimport { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/animation';\r\n\r\nexport type DropEvent = NzFormatEmitEvent & { pos: number };\r\n\r\n@Component({\r\n  selector: 'abp-tree',\r\n  templateUrl: 'tree.component.html',\r\n  styleUrls: ['tree.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [SubscriptionService],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    NgTemplateOutlet,\r\n    NzTreeComponent,\r\n    NgbDropdown,\r\n    NgbDropdownMenu,\r\n    NgbDropdownToggle,\r\n    InitDirective,\r\n    NzNoAnimationDirective,\r\n  ],\r\n})\r\nexport class TreeComponent implements OnInit {\r\n  private lazyLoadService = inject(LazyLoadService);\r\n  private subscriptionService = inject(SubscriptionService);\r\n  private cdr = inject(ChangeDetectorRef);\r\n  private disableTreeStyleLoading = inject(DISABLE_TREE_STYLE_LOADING_TOKEN, { optional: true });\r\n\r\n  dropPosition!: number;\r\n\r\n  dropdowns = {} as { [key: string]: NgbDropdown };\r\n\r\n  readonly menu = contentChild<TemplateRef<any>>('menu');\r\n  readonly customNodeTemplate = contentChild(TreeNodeTemplateDirective);\r\n  readonly expandedIconTemplate = contentChild(ExpandedIconTemplateDirective);\r\n  readonly checkedKeysChange = output<any>();\r\n  readonly expandedKeysChange = output<string[]>();\r\n  readonly selectedNodeChange = output<any>();\r\n  readonly dropOver = output<DropEvent>();\r\n  readonly nzExpandChange = output<NzFormatEmitEvent>();\r\n  \r\n  // Input signals\r\n  readonly noAnimation = input(true);\r\n  readonly draggable = input<boolean | undefined>(undefined);\r\n  readonly checkable = input<boolean | undefined>(undefined);\r\n  readonly checkStrictly = input<boolean | undefined>(undefined);\r\n  readonly checkedKeysInput = input<any[]>([], { alias: 'checkedKeys' });\r\n  readonly nodesInput = input<any[]>([], { alias: 'nodes' });\r\n  readonly expandedKeysInput = input<string[]>([], { alias: 'expandedKeys' });\r\n  readonly selectedNodeInput = input<any>(undefined, { alias: 'selectedNode' });\r\n  readonly changeCheckboxWithNode = input<boolean | undefined>(undefined);\r\n  readonly isNodeSelectedFn = input<(node: any) => boolean>(\r\n    (node) => this._selectedNode()?.id === node.key,\r\n    { alias: 'isNodeSelected' }\r\n  );\r\n  readonly beforeDropFn = input<(event: NzFormatBeforeDropEvent) => any>(\r\n    (event: NzFormatBeforeDropEvent) => {\r\n      this.dropPosition = event.pos;\r\n      return of(false);\r\n    },\r\n    { alias: 'beforeDrop' }\r\n  );\r\n\r\n  // Internal signals for two-way binding\r\n  protected readonly _checkedKeys = signal<any[]>([]);\r\n  protected readonly _expandedKeys = signal<string[]>([]);\r\n  protected readonly _selectedNode = signal<any>(undefined);\r\n  protected readonly _nodes = signal<any[]>([]);\r\n\r\n  // Getters for template access\r\n  get checkedKeys() { return this._checkedKeys(); }\r\n  get expandedKeys() { return this._expandedKeys(); }\r\n  get selectedNode() { return this._selectedNode(); }\r\n  get nodes() { return this._nodes(); }\r\n  get isNodeSelected() { return this.isNodeSelectedFn(); }\r\n  get beforeDrop() { return this.beforeDropFn(); }\r\n\r\n  constructor() {\r\n    // Sync input signals to internal signals\r\n    effect(() => {\r\n      this._checkedKeys.set(this.checkedKeysInput());\r\n      this._expandedKeys.set(this.expandedKeysInput());\r\n      this._selectedNode.set(this.selectedNodeInput());\r\n      this._nodes.set(this.nodesInput());\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.loadStyle();\r\n  }\r\n\r\n  private loadStyle() {\r\n    if (this.disableTreeStyleLoading) {\r\n      return;\r\n    }\r\n    const loaded$ = this.lazyLoadService.load(\r\n      LOADING_STRATEGY.AppendAnonymousStyleToHead('ng-zorro-antd-tree.css'),\r\n    );\r\n    this.subscriptionService.addOne(loaded$);\r\n  }\r\n\r\n  private findNode(target: any, nodes: any[]): any {\r\n    for (const node of nodes) {\r\n      if (node.key === target.id) {\r\n        return node;\r\n      }\r\n      if (node.children) {\r\n        const res: any = this.findNode(target, node.children);\r\n        if (res) {\r\n          return res;\r\n        }\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  onSelectedNodeChange(node: NzTreeNode) {\r\n    this._selectedNode.set(node.origin.entity);\r\n    if (this.changeCheckboxWithNode()) {\r\n      const keys = this._checkedKeys();\r\n      let newVal;\r\n      if (node.isChecked) {\r\n        newVal = keys.filter(x => x !== node.key);\r\n      } else {\r\n        newVal = [...keys, node.key];\r\n      }\r\n      this.selectedNodeChange.emit(node);\r\n      this._checkedKeys.set(newVal);\r\n      this.checkedKeysChange.emit(newVal);\r\n    } else {\r\n      this.selectedNodeChange.emit(node.origin.entity);\r\n    }\r\n  }\r\n\r\n  onCheckboxChange(event: { keys: any[] }) {\r\n    this._checkedKeys.set([...event.keys]);\r\n    this.checkedKeysChange.emit(event.keys);\r\n  }\r\n\r\n  onExpandedKeysChange(event: { keys: string[] } & NzFormatEmitEvent) {\r\n    this._expandedKeys.set([...event.keys]);\r\n    this.expandedKeysChange.emit(event.keys);\r\n    this.nzExpandChange.emit(event);\r\n  }\r\n\r\n  onDrop(event: DropEvent) {\r\n    event.event?.stopPropagation();\r\n    event.event?.preventDefault();\r\n    event.pos = this.dropPosition;\r\n\r\n    this.dropOver.emit(event);\r\n  }\r\n\r\n  initDropdown(key: string, dropdown: NgbDropdown) {\r\n    this.dropdowns[key] = dropdown;\r\n  }\r\n\r\n  onContextMenuChange(event: NzFormatEmitEvent) {\r\n    const dropdownKey = event.node?.key;\r\n\r\n    Object.entries(this.dropdowns).forEach(([key, dropdown]) => {\r\n      if (key !== dropdownKey && dropdown?.isOpen()) {\r\n        dropdown.close();\r\n      }\r\n    });\r\n    if (dropdownKey) {\r\n      this.dropdowns[dropdownKey]?.toggle();\r\n    }\r\n  }\r\n\r\n  setSelectedNode(node: any) {\r\n    const newSelectedNode = this.findNode(node, this._nodes());\r\n    this._selectedNode.set({ ...newSelectedNode });\r\n    this.cdr.markForCheck();\r\n  }\r\n}\r\n","<nz-tree\r\n  [nzBeforeDrop]=\"beforeDrop\"\r\n  [nzDraggable]=\"draggable()\"\r\n  [nzCheckStrictly]=\"checkStrictly()\"\r\n  [nzCheckable]=\"checkable()\"\r\n  [nzCheckedKeys]=\"checkedKeys\"\r\n  [nzData]=\"nodes\"\r\n  [nzTreeTemplate]=\"treeTemplate\"\r\n  [nzExpandedKeys]=\"expandedKeys\"\r\n  [nzExpandedIcon]=\"expandedIconTemplate()?.template || defaultIconTemplate\"\r\n  (nzExpandChange)=\"onExpandedKeysChange($event)\"\r\n  (nzCheckboxChange)=\"onCheckboxChange($event)\"\r\n  (nzOnDrop)=\"onDrop($event)\"\r\n  [nzNoAnimation]=\"noAnimation()\"\r\n  (nzContextMenu)=\"onContextMenuChange($event)\"\r\n/>\r\n<ng-template #treeTemplate let-node>\r\n  <div\r\n    [class.selected]=\"isNodeSelected(node)\"\r\n    [title]=\"node.title\"\r\n    (click)=\"onSelectedNodeChange(node)\"\r\n  >\r\n    <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $implicit: node }\" />\r\n\r\n    <ng-template #nodeTemplate let-node>\r\n      <div class=\"d-inline-flex align-items-center abp-ellipsis-inline\">\r\n        <ng-container\r\n          *ngTemplateOutlet=\"\r\n            customNodeTemplate() ? customNodeTemplate()?.template : defaultNodeTemplate;\r\n            context: { $implicit: node }\r\n          \"\r\n        />\r\n      </div>\r\n\r\n      @if (menu()) {\r\n        <div\r\n          #dropdown=\"ngbDropdown\"\r\n          class=\"d-inline-block ms-1\"\r\n          ngbDropdown\r\n          placement=\"bottom\"\r\n          container=\"body\"\r\n          (abpInit)=\"initDropdown(node.key, dropdown)\"\r\n        >\r\n          <i\r\n            class=\"fas fa-caret-down text-muted\"\r\n            ngbDropdownToggle\r\n            [class.dropdown-toggle]=\"false\"\r\n            aria-hidden=\"true\"\r\n          ></i>\r\n          <div ngbDropdownMenu>\r\n            <ng-template *ngTemplateOutlet=\"menu(); context: { $implicit: node }\" />\r\n          </div>\r\n        </div>\r\n      }\r\n    </ng-template>\r\n\r\n    <ng-template #defaultNodeTemplate let-node>\r\n      <span>{{ node.title }}</span>\r\n    </ng-template>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultIconTemplate let-node let-origin=\"origin\">\r\n  <i aria-hidden=\"true\">\r\n    <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"\r\n  /></i>\r\n</ng-template>\r\n\r\n<ng-template #minusIcon>\r\n  <svg\r\n    width=\"15\"\r\n    height=\"15\"\r\n    viewBox=\"0 0 24 24\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    fill-rule=\"evenodd\"\r\n    clip-rule=\"evenodd\"\r\n  >\r\n    <path\r\n      d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\"\r\n    />\r\n  </svg>\r\n</ng-template>\r\n\r\n<ng-template #plusIcon>\r\n  <svg\r\n    width=\"15\"\r\n    height=\"15\"\r\n    viewBox=\"0 0 24 24\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    fill-rule=\"evenodd\"\r\n    clip-rule=\"evenodd\"\r\n  >\r\n    <path\r\n      d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\"\r\n    />\r\n  </svg>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { TreeComponent } from './components/tree.component';\r\nimport { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';\r\nimport { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';\r\n\r\n@NgModule({\r\n  imports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n  exports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n  declarations: [],\r\n})\r\nexport class TreeModule {}\r\n","export abstract class BaseNode {\r\n  name?: string;\r\n  displayName?: string;\r\n\r\n  constructor(public id: string, public parentId: string | null) {}\r\n}\r\n\r\nexport class TreeNode<T extends BaseNode> extends BaseNode {\r\n  title: string | undefined;\r\n  key: string;\r\n  icon: string | null = null;\r\n  children: TreeNode<T>[] = [];\r\n  isLeaf = true;\r\n  checked = false;\r\n  selected = false;\r\n  expanded = false;\r\n  selectable = true;\r\n  disabled = false;\r\n  disableCheckbox = false;\r\n  parentNode?: TreeNode<T> | null;\r\n\r\n  constructor(public entity: T, private nameResolver = ent => ent.displayName || ent.name) {\r\n    super(entity.id, entity.parentId);\r\n    this.key = entity.id;\r\n    this.title = nameResolver(entity);\r\n  }\r\n}\r\n\r\nexport class TreeAdapter<T extends BaseNode = BaseNode> {\r\n  private tree: TreeNode<T>[];\r\n\r\n  constructor(private list: T[] = []) {\r\n    this.tree = createTreeFromList(this.list);\r\n  }\r\n\r\n  getList() {\r\n    return this.list;\r\n  }\r\n\r\n  getTree() {\r\n    return this.tree;\r\n  }\r\n\r\n  handleDrop({ key, parentNode }: TreeNode<T>) {\r\n    const index = this.list.findIndex(({ id }) => id === key);\r\n    this.list[index].parentId = parentNode ? parentNode.key : null;\r\n    this.tree = createTreeFromList(this.list);\r\n  }\r\n\r\n  handleRemove({ key }: TreeNode<T>) {\r\n    this.updateTreeFromList(this.list.filter(item => item.id !== key));\r\n  }\r\n\r\n  handleUpdate({ key, children }: { key: string; children: T[] }) {\r\n    /**\r\n     * When we need to update a node with new children, first we need to remove any descendant nodes.\r\n     * If we remove immediate children and create a new tree, any other descendant nodes will be removed\r\n     * and we won't need to recursively remove sub children.\r\n     * Then, you simply add back the new children and create a new tree.\r\n     */\r\n    const listWithDescendantNodesRemoved = this.updateTreeFromList(\r\n      this.list.filter(item => item.parentId !== key),\r\n    );\r\n    this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));\r\n  }\r\n\r\n  updateTreeFromList(list: T[]) {\r\n    this.tree = createTreeFromList(list);\r\n    this.list = createListFromTree(this.tree);\r\n    return this.list;\r\n  }\r\n}\r\n\r\n// UTILITY FUNCTIONS\r\n\r\nfunction createTreeFromList<T extends BaseNode>(list: T[]): TreeNode<T>[] {\r\n  const map = createMapFromList(list);\r\n  const tree: TreeNode<T>[] = [];\r\n\r\n  list.forEach(row => {\r\n    const parentId = row.parentId;\r\n    const node = map.get(row.id);\r\n    if (parentId) {\r\n      const parent = map.get(parentId);\r\n      if (!parent) return;\r\n      parent.children.push(node);\r\n      parent.isLeaf = false;\r\n    } else {\r\n      tree.push(node);\r\n    }\r\n  });\r\n  return tree;\r\n}\r\n\r\nfunction createListFromTree<T extends BaseNode>(tree: TreeNode<T>[], list: T[] = []): T[] {\r\n  tree.forEach(node => {\r\n    list.push({ ...node.entity, parentId: node.parentId });\r\n    if (node.children) createListFromTree(node.children, list);\r\n  });\r\n\r\n  return list;\r\n}\r\n\r\nfunction createMapFromList<T extends BaseNode>(\r\n  list: T[],\r\n  map = new Map<string, TreeNode<T>>(),\r\n): Map<string, TreeNode<T>> {\r\n  list.forEach(row => map.set(row.id, new TreeNode(row)));\r\n\r\n  return map;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}