{"version":3,"file":"tableau-ui-angular-tree.mjs","sources":["../../../projects/component-library/tree/src/tree-node-registry.ts","../../../projects/component-library/tree/src/tree.component.ts","../../../projects/component-library/tree/src/tree.component.html","../../../projects/component-library/tree/src/collapsed-content.directive.ts","../../../projects/component-library/tree/src/expanded-content.directive.ts","../../../projects/component-library/tree/src/tree-node.component.ts","../../../projects/component-library/tree/src/tree-node.component.html","../../../projects/component-library/tree/src/tableau-ui-tree.module.ts","../../../projects/component-library/tree/src/tableau-ui-angular-tree.ts"],"sourcesContent":["import { signal } from '@angular/core';\nimport type { TabTreeNodeComponent } from './tree-node.component';\n\nexport class TreeNodeRegistry {\n  readonly nodes = signal<TabTreeNodeComponent[]>([]);\n\n  register(node: TabTreeNodeComponent) {\n    const nodes = this.nodes();\n    const existingNode = nodes.find(n => n.$hierarchyId() === node.$hierarchyId());\n    if (!existingNode) {\n      this.nodes.set([...nodes, node]);\n    }\n  }\n  unregister(node: TabTreeNodeComponent) {\n    const nodes = this.nodes();\n    const filteredNodes = nodes.filter(n => n.$hierarchyId() !== node.$hierarchyId());\n    if (filteredNodes.length !== nodes.length) {\n      this.nodes.set(filteredNodes);\n    }\n  }\n}\n","import type { AfterContentInit, InputSignal, OnDestroy, TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input } from '@angular/core';\nimport type { TabTreeNodeComponent, TreeNodeTemplate } from './tree-node.component';\nimport { TreeNodeRegistry } from './tree-node-registry';\n@Component({\n  selector: 'tab-tree',\n  standalone: false,\n  templateUrl: './tree.component.html',\n  styleUrl: './tree.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabTreeComponent implements AfterContentInit, OnDestroy {\n  private readonly selfElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  readonly $showRootGridLines = input<boolean>(false, {\n    alias: 'showRootGridLines',\n  });\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $gridLinesBorder: InputSignal<string | undefined> = input<string | undefined>(undefined, {\n    alias: 'gridLinesBorder',\n  });\n  readonly $gridLinesBorderRadius = input<string>('0px', {\n    alias: 'gridLinesBorderRadius',\n  });\n  readonly $expandButtonSize = input<string>('1.2rem', {\n    alias: 'expandButtonSize',\n  });\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $expandButtonColor: InputSignal<string | undefined> = input<string | undefined>(undefined, {\n    alias: 'expandButtonColor',\n  });\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $expandButtonGap: InputSignal<string | undefined> = input<string | undefined>('0.2rem', {\n    alias: 'expandButtonGap',\n  });\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $expandButtonTooltip: InputSignal<ExpandButtonTooltipParams | undefined> = input<ExpandButtonTooltipParams | undefined>(undefined, {\n    alias: 'expandButtonTooltip',\n  });\n  readonly $expandButtonAlign = input<string>('center', {\n    alias: 'expandButtonAlign',\n  });\n  readonly $childrenIndent = input<string>('1.4rem', {\n    alias: 'childrenIndent',\n  });\n  readonly $keepButtonOffsetOnNoChildren = input<boolean>(true, {\n    alias: 'keepButtonOffsetOnNoChildren',\n  });\n\n  readonly $hierarchyMode = input<'auto' | 'manual'>('auto', {\n    alias: 'hierarchyMode',\n  });\n\n  readonly registry = new TreeNodeRegistry();\n\n  // used when hierarchyMode is auto to get direct children\n  // directChildren = contentChildren(TabTreeNodeComponent);\n  templateParams: TreeNodeTemplate = {\n    $childrenIndent: this.$childrenIndent,\n    $expandButtonSize: this.$expandButtonSize,\n    $expandButtonColor: this.$expandButtonColor,\n    $expandButtonGap: this.$expandButtonGap,\n    $expandButtonTooltip: this.$expandButtonTooltip,\n    $expandButtonAlign: this.$expandButtonAlign,\n    $keepButtonOffsetOnNoChildren: this.$keepButtonOffsetOnNoChildren,\n  };\n\n  constructor() {\n    effect(() => {\n      // set the hierarchyMode of each children all times\n      const registryNodes = this.registry.nodes();\n\n      for (const child of registryNodes.filter(e => e.$hierarchyParentId() === undefined)) {\n        if (this.$hierarchyMode() === 'auto') {\n          this.hierarchyModeAutoSetChildrenDepthAndId(registryNodes, child, null, this.$showRootGridLines() ? 1 : 0);\n        } else {\n          this.hierarchyModeManualSetChildrenDepthAndId(child, this.$showRootGridLines() ? 1 : 0);\n        }\n      }\n      if (this.$gridLinesBorder() !== undefined) {\n        this.redrawGridLines();\n      }\n    });\n  }\n\n  hierarchyModeAutoSetChildrenDepthAndId(allNodes: TabTreeNodeComponent[], node: TabTreeNodeComponent, parentNode: TabTreeNodeComponent | null = null, depth: number) {\n    node.$depth.set(depth);\n    node.$parent.set(parentNode);\n    node.$children.set(allNodes.filter(e => e.$hierarchyParentId() === node.$hierarchyId()));\n    for (const c of node.$children()) {\n      this.hierarchyModeAutoSetChildrenDepthAndId(allNodes, c, node, depth + 1);\n    }\n  }\n\n  hierarchyModeManualSetChildrenDepthAndId(child: TabTreeNodeComponent, currentChildDepth: number) {\n    child.$depth.set(currentChildDepth);\n    // get direct children\n    const children = this.registry.nodes().filter(e => e.$hierarchyParentId() === child.$hierarchyId());\n    child.$children.set(children);\n    for (const c of children) {\n      c.$parent.set(child);\n      this.hierarchyModeManualSetChildrenDepthAndId(c, currentChildDepth + 1);\n    }\n  }\n\n  protected readonly $childrenDisplayOrder = computed(() => {\n    const rootChildren = this.registry\n      .nodes()\n      .filter(e => e.$parent() === null)\n      .sort((a, b) => (a.$order() > b.$order() ? 1 : a.$order() < b.$order() ? -1 : 0));\n    const ret: TabTreeNodeComponent[] = [];\n    for (const child of rootChildren) {\n      ret.push(...this.getChildrenDisplayOrder(child));\n    }\n    return ret;\n  });\n  getChildrenDisplayOrder(node: TabTreeNodeComponent) {\n    const ret: TabTreeNodeComponent[] = [node];\n    const sortedChildren = node.$children().sort((a, b) => (a.$order() > b.$order() ? 1 : a.$order() < b.$order() ? -1 : 0));\n    for (const child of sortedChildren) {\n      ret.push(...this.getChildrenDisplayOrder(child));\n    }\n\n    return ret;\n  }\n\n  private resizeObserver: ResizeObserver | undefined;\n  ngAfterContentInit(): void {\n    this.resizeObserver = new ResizeObserver(() => {\n      this.redrawGridLines();\n    });\n    this.resizeObserver.observe(this.selfElementRef.nativeElement);\n  }\n  ngOnDestroy(): void {\n    this.resizeObserver?.disconnect();\n  }\n\n  existingGridLines: {\n    id: string;\n    element: HTMLDivElement;\n  }[] = [];\n\n  private redrawCounter = 0;\n  redrawGridLines() {\n    if (this.$gridLinesBorder() === undefined) {\n      return;\n    }\n\n    // if the redrawCounter is not 0, we are already redrawing\n\n    const currentRedrawCounter = this.redrawCounter + 1;\n    this.redrawCounter = currentRedrawCounter;\n    const gridLines: {\n      id: string;\n      from: { top: number; left: number };\n      to: { top: number; left: number };\n    }[] = [];\n    for (const child of this.registry.nodes()) {\n      if (this.redrawCounter !== currentRedrawCounter) {\n        return;\n      }\n\n      const headerButtonRect = document.getElementById(child.headerButtonId)?.getBoundingClientRect();\n      // root gridlines\n      if (this.$showRootGridLines() && !child.$parent()) {\n        const selfRect = this.selfElementRef.nativeElement.getBoundingClientRect();\n        if (!headerButtonRect) {\n          continue;\n        }\n        if (this.redrawCounter !== currentRedrawCounter) {\n          return;\n        }\n        gridLines.push({\n          id: child.$hierarchyId(),\n          from: {\n            top: 0,\n            left: 0,\n          },\n          to: {\n            top: headerButtonRect.top - selfRect.top + headerButtonRect.height / 2,\n            left: headerButtonRect.x - selfRect.x + (child.$children().length === 0 ? headerButtonRect.width : 0),\n          },\n        });\n        continue;\n      }\n      if (this.redrawCounter !== currentRedrawCounter) {\n        return;\n      }\n\n      // show children gridlines\n      if (child.$depth() === 0 || !child.$parent() || !child.$parent()!.$expanded() || headerButtonRect === undefined) {\n        continue;\n      }\n\n      const selfRect = this.selfElementRef.nativeElement.getBoundingClientRect();\n      const parentButtonRect = document.getElementById(child.$parent()!.headerButtonId)?.getBoundingClientRect();\n\n      if (!parentButtonRect) {\n        continue;\n      }\n      if (this.redrawCounter !== currentRedrawCounter) {\n        return;\n      }\n      gridLines.push({\n        id: child.$hierarchyId(),\n        from: {\n          top: parentButtonRect.top - selfRect.top + parentButtonRect.height,\n          left: parentButtonRect.x - selfRect.left + parentButtonRect.width / 2,\n        },\n        to: {\n          top: headerButtonRect.top - selfRect.top + headerButtonRect.height / 2,\n          left: headerButtonRect.x - selfRect.x + (child.$children().length === 0 ? headerButtonRect.width : 0),\n        },\n      });\n    }\n    // get the gridlines that we do not need\n    const gridLinesToRemove = this.existingGridLines.filter(line => !gridLines.find(l => l.id === line.id));\n    if (this.redrawCounter !== currentRedrawCounter) {\n      return;\n    }\n    for (const line of gridLinesToRemove) {\n      line.element.remove();\n    }\n    if (this.redrawCounter !== currentRedrawCounter) {\n      return;\n    }\n    // remove the gridlines from the existingGridLines array\n    this.existingGridLines = this.existingGridLines.filter(line => !gridLinesToRemove.find(l => l.id === line.id));\n    // add the new gridlines to the existingGridLines array\n    for (const line of gridLines) {\n      if (this.redrawCounter !== currentRedrawCounter) {\n        return;\n      }\n      let l = this.existingGridLines.find(f => f.id === line.id);\n      if (!l) {\n        l = {\n          id: line.id,\n          element: document.createElement('div'),\n        };\n        l.element.className = 'grid-line';\n        l.element.style.position = 'absolute';\n        this.selfElementRef.nativeElement.appendChild(l.element);\n        this.existingGridLines.push(l);\n      }\n      l.element.style.top = `${line.from.top}px`;\n      l.element.style.left = `${line.from.left}px`;\n      l.element.style.width = `${line.to.left - line.from.left}px`;\n      l.element.style.height = `${line.to.top - line.from.top}px`;\n      l.element.style.pointerEvents = 'none';\n      l.element.style.borderBottom = this.$gridLinesBorder()!;\n      // only draw the left border if its the last child of the parent\n      l.element.style.borderLeft = this.$gridLinesBorder()!;\n\n      l.element.style.borderBottomLeftRadius = this.$gridLinesBorderRadius();\n    }\n  }\n}\nexport interface ExpandButtonTooltipParams<T = unknown> {\n  expand: TemplateRef<T> | string | undefined;\n  collapse: TemplateRef<T> | string | undefined;\n  position: 'bottom' | 'left' | 'right' | 'top';\n  margin?: string;\n  context?: T | undefined;\n}\n","@for (node of $childrenDisplayOrder(); let i = $index; track i) {\n  @if (!node.$parent() || node.$allParentsExpanded()) {\n    <ng-container *ngTemplateOutlet=\"node.$template()!; context: templateParams\" />\n  }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[collapsedContent]',\n  standalone: false,\n})\nexport class CollapsedContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[expandedContent]',\n  standalone: false,\n})\nexport class ExpandedContentDirective {}\n","import type { InputSignal, OnDestroy, OnInit, Signal, TemplateRef, WritableSignal } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, forwardRef, inject, input, model, output, signal, viewChild } from '@angular/core';\nimport { CollapsedContentDirective } from './collapsed-content.directive';\nimport { ExpandedContentDirective } from './expanded-content.directive';\nimport type { TreeNodeRegistry } from './tree-node-registry';\nimport type { ExpandButtonTooltipParams } from './tree.component';\nimport { TabTreeComponent } from './tree.component';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { TreeNodeInterface } from './tree-node-interface';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { generateRandomString } from 'tableau-ui-angular/utils';\n\n@Component({\n  selector: 'tab-tree-node',\n  standalone: false,\n  templateUrl: './tree-node.component.html',\n  styleUrl: './tree-node.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TabTreeNodeComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabTreeNodeComponent implements OnInit, OnDestroy, TreeNodeInterface {\n  readonly headerButtonId = generateRandomString(16);\n  // used when hierarchyMode is auto to get direct parent\n  private readonly hierarchyModeAutoParent = inject(TabTreeNodeComponent, {\n    skipSelf: true,\n    optional: true,\n  });\n\n  private readonly tabTree = inject(TabTreeComponent, {\n    skipSelf: true,\n    optional: true,\n  });\n\n  readonly $expanded = model<boolean>(false, {\n    alias: 'expanded',\n  });\n  readonly expanded$ = toObservable(this.$expanded);\n  readonly expandedChange = output<boolean>();\n\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  protected readonly $collapsedContent: Signal<CollapsedContentDirective | undefined> = contentChild(CollapsedContentDirective);\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  protected readonly $expandedContent: Signal<ExpandedContentDirective | undefined> = contentChild(ExpandedContentDirective);\n\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $expandButtonColor: InputSignal<string | undefined> = input<string | undefined>(undefined, {\n    alias: 'expandButtonColor',\n  });\n\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $template: Signal<TemplateRef<TreeNodeTemplate> | undefined> = viewChild<TemplateRef<TreeNodeTemplate>>('treeNodeTemplate');\n\n  readonly $hierarchyId: InputSignal<string> = input<string>(generateRandomString(16), {\n    alias: 'hierarchyId',\n  });\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $hierarchyParentId: InputSignal<string | undefined> = input<string | undefined>(this.hierarchyModeAutoParent?.$hierarchyId(), {\n    alias: 'hierarchyParentId',\n  });\n\n  readonly $children = signal<TabTreeNodeComponent[]>([]);\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  readonly $parent: WritableSignal<TabTreeNodeComponent | null> = signal<TabTreeNodeComponent | null>(null);\n\n  readonly $allParentsExpanded = computed(() => {\n    const parents: TabTreeNodeComponent[] = [];\n    let parent: TabTreeNodeComponent | null = this.$parent();\n    while (parent) {\n      parents.push(parent);\n      parent = parent.$parent();\n    }\n    return parents.every(p => p.$expanded());\n  });\n\n  readonly $depth = signal<number>(-1);\n\n  readonly $order = input<number>(0, {\n    alias: 'order',\n  });\n  // The registry of the tree node. It is optional. If provided, the node will register itself and will be detected by the tree even if it's located in a sub-component\n  readonly $registry = input<TreeNodeRegistry>(undefined, {\n    alias: 'registry',\n  });\n\n  ngOnInit(): void {\n    const registry = this.$registry() ?? this.tabTree?.registry;\n    if (!registry) {\n      throw new Error('TreeNodeComponent: registry is not provided. Please provide a registry or use the TabTreeComponent.');\n    }\n    registry.register(this);\n  }\n\n  ngOnDestroy(): void {\n    const registry = this.$registry() ?? this.tabTree?.registry;\n    if (!registry) {\n      console.warn('TreeNodeComponent: registry is not provided. Please provide a registry or use the TabTreeComponent.');\n    }\n    registry?.unregister(this);\n  }\n\n  setExpanded(expanded: boolean) {\n    this.$expanded.set(expanded);\n    this.expandedChange.emit(expanded);\n  }\n}\nexport interface TreeNodeTemplate {\n  $childrenIndent: Signal<string>;\n  $expandButtonSize: Signal<string>;\n  $expandButtonColor: Signal<string | undefined>;\n  $expandButtonGap: Signal<string | undefined>;\n  $expandButtonTooltip: Signal<ExpandButtonTooltipParams | undefined>;\n  $expandButtonAlign: Signal<string>;\n  $keepButtonOffsetOnNoChildren: Signal<boolean>;\n}\n","<ng-template\n  #treeNodeTemplate\n  let-$childrenIndent=\"$childrenIndent\"\n  let-$expandButtonSize=\"$expandButtonSize\"\n  let-$expandButtonColorInherited=\"$expandButtonColor\"\n  let-$expandButtonGap=\"$expandButtonGap\"\n  let-$expandButtonTooltip=\"$expandButtonTooltip\"\n  let-$expandButtonAlign=\"$expandButtonAlign\"\n  let-$keepButtonOffsetOnNoChildren=\"$keepButtonOffsetOnNoChildren\"\n>\n  <div class=\"tree-node-container\" [style.marginLeft]=\"`calc(${$depth()} * ${$childrenIndent()})`\" [style.alignItems]=\"$expandButtonAlign()\" [style.gap]=\"$expandButtonGap()\">\n    <button\n      layout=\"icon\"\n      color=\"plain\"\n      class=\"header-button\"\n      type=\"button\"\n      [id]=\"headerButtonId\"\n      [inline]=\"true\"\n      [style.visibility]=\"$children().length === 0 ? 'hidden' : 'visible'\"\n      [style.fontSize]=\"$expandButtonSize()\"\n      [style.width]=\"$children().length !== 0 || $keepButtonOffsetOnNoChildren() ? $expandButtonSize() : '0px'\"\n      [style.minWidth]=\"'0px'\"\n      [style.height]=\"$expandButtonSize()\"\n      [style.color]=\"$expandButtonColor() || $expandButtonColorInherited()\"\n      [tooltip]=\"$expanded() ? $expandButtonTooltip()?.collapse : $expandButtonTooltip()?.expand\"\n      [tooltipPosition]=\"$expandButtonTooltip()?.position\"\n      [tooltipMargin]=\"$expandButtonTooltip()?.margin\"\n      [tooltipContext]=\"$expandButtonTooltip()?.context\"\n      (click)=\"setExpanded(!$expanded())\"\n    >\n      <tab-icon [value]=\"$expanded() ? 'keyboard_arrow_down' : 'keyboard_arrow_right'\" />\n    </button>\n    <div class=\"header-content\">\n      @if ($expanded() && $expandedContent()) {\n        <ng-content select=\"[expandedContent]\" />\n      } @else if (!$expanded() && $collapsedContent()) {\n        <ng-content select=\"[collapsedContent]\" />\n      }\n      <ng-content />\n    </div>\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TableauUiButtonModule } from 'tableau-ui-angular/button';\nimport { TableauUiIconModule } from 'tableau-ui-angular/icon';\nimport { TableauUiTooltipModule } from 'tableau-ui-angular/tooltip';\nimport { CollapsedContentDirective } from './collapsed-content.directive';\nimport { ExpandedContentDirective } from './expanded-content.directive';\nimport { TabTreeNodeComponent } from './tree-node.component';\nimport { TabTreeComponent } from './tree.component';\n\n@NgModule({\n  imports: [CommonModule, TableauUiButtonModule, TableauUiIconModule, TableauUiTooltipModule],\n  declarations: [TabTreeComponent, TabTreeNodeComponent, ExpandedContentDirective, CollapsedContentDirective],\n  exports: [TabTreeComponent, TabTreeNodeComponent, ExpandedContentDirective, CollapsedContentDirective],\n})\nexport class TableauUiTreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}