{"version":3,"file":"obliczeniowo-elementary-tree.mjs","sources":["../../../../projects/components/tree/components/vertical-arrow/vertical-arrow.component.ts","../../../../projects/components/tree/components/vertical-arrow/vertical-arrow.component.html","../../../../projects/components/tree/components/tree/tree-item/tree-item.component.ts","../../../../projects/components/tree/components/tree/tree-item/tree-item.component.html","../../../../projects/components/tree/components/tree/tree.component.ts","../../../../projects/components/tree/components/tree/tree.component.html","../../../../projects/components/tree/tree.module.ts","../../../../projects/components/tree/interfaces/tree-expand-event.ts","../../../../projects/components/tree/obliczeniowo-elementary-tree.ts"],"sourcesContent":["import { Component, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';\n\n@Component({\n    selector: 'obl-vertical-arrow',\n    templateUrl: './vertical-arrow.component.html',\n    styleUrls: ['./vertical-arrow.component.scss'],\n    standalone: false\n})\nexport class VerticalArrowComponent implements AfterViewInit {\n  private _loaded = false;\n\n  constructor(\n    protected elementRef: ElementRef<HTMLElement>,\n    protected change: ChangeDetectorRef\n  ) { }\n\n  get height(): number {\n    return this._loaded ? this.elementRef.nativeElement.clientHeight : 0;\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this._loaded = true;\n      this.change.detectChanges();\n    });\n  }\n\n  reload(): void {\n    setTimeout(() => {\n      this._loaded = false;\n      this.change.detectChanges();\n      this.ngAfterViewInit();\n    });\n  }\n}\n","<svg\n  xmlns:svg=\"http://www.w3.org/2000/svg\"\n  xmlns=\"http://www.w3.org/2000/svg\"\n  width=\"10\"\n  [attr.height]=\"height\"\n  [attr.viewBox]=\"'0 0 10 ' + height\"\n>\n  <path\n    style=\"\n      fill: var(--default-text-color);\n      stroke-width: 0.8;\n      stroke-linejoin: round;\n    \"\n    [attr.d]=\"\n      'M 0,0 5,5 10,0 V ' +\n      (height - 5) +\n      'L 5,' +\n      height +\n      ' 0,' +\n      (height - 5) +\n      ' Z'\n    \"\n  />\n</svg>\n","import { Component, EventEmitter, input, Output } from '@angular/core';\nimport { TreeExpandEvent } from '../../../interfaces/tree-expand-event';\nimport { TreeItem } from '../../../interfaces/tree-item';\n\n@Component({\n    selector: 'obl-tree-item',\n    templateUrl: './tree-item.component.html',\n    styleUrls: ['./tree-item.component.scss'],\n    standalone: false\n})\nexport class TreeItemComponent {\n  protected loading = false;\n\n  item = input.required<TreeItem>();\n\n  itemClicked = input.required<EventEmitter<TreeItem>>();\n  itemExpand = input.required<EventEmitter<TreeExpandEvent>>();\n\n  @Output() itemNotExpand: EventEmitter<void> = new EventEmitter<void>();\n\n  getLoading(): boolean {\n    return this.loading;\n  }\n\n  expand(): void {\n    this.item().expanded = !this.item().expanded;\n    if (this.item().expanded) {\n      this.loading = true;\n      if (this.itemExpand()) {\n        this.itemExpand().emit(\n          {\n            item: this.item(),\n            cb: (items: TreeItem[]) => {\n              this.item().items = items;\n              this.loading = false;\n              return items;\n            }\n          }\n        );\n      }\n    } else {\n      this.itemNotExpand.emit();\n    }\n  }\n}\n","@if (item()) {\n  <div class=\"tree-item-head\">\n    <div class=\"tree-item-icon-space\">\n      @if (item().subItems && !getLoading()) {\n        <button (click)=\"expand()\">\n          @if (item().expanded) {\n            <obl-icon\n              [name]=\"'subtract-box'\"\n              [width]=\"12\"\n            ></obl-icon>\n          } @else {\n            <obl-icon [name]=\"'add-box'\" [width]=\"12\"></obl-icon>\n          }\n        </button>\n      }\n      @if (getLoading()) {\n        <obl-spinner class=\"spinner\"></obl-spinner>\n      }\n    </div>\n    <button\n      class=\"tree-item-title\"\n      (click)=\"itemClicked() && itemClicked().emit(item())\"\n    >\n      {{ item().title }}\n    </button>\n  </div>\n\n  @if (item().subItems && item().items.length && item().expanded) {\n    <div class=\"tree-childs-container\">\n      <div class=\"arrow-container\">\n        <obl-vertical-arrow #arrow></obl-vertical-arrow>\n      </div>\n      <div class=\"child-items\" #childItems>\n        @for ( child of (!getLoading() && item().items) || []; track child.id) {\n          <obl-tree-item\n            [item]=\"child\"\n            [itemClicked]=\"itemClicked()\"\n            [itemExpand]=\"itemExpand()\"\n            (itemNotExpand)=\"arrow.reload(); itemNotExpand.emit()\"\n          ></obl-tree-item>\n        }\n      </div>\n    </div>\n  }\n}\n\n","import { TreeExpandEvent } from './../../interfaces/tree-expand-event';\nimport { Component, EventEmitter, input, Output } from '@angular/core';\nimport { TreeItem } from '../../interfaces/tree-item';\n\n@Component({\n    selector: 'obl-tree',\n    templateUrl: './tree.component.html',\n    styleUrls: ['./tree.component.scss'],\n    standalone: false\n})\nexport class TreeComponent {\n  items = input<TreeItem[]>();\n\n  @Output() itemClicked: EventEmitter<TreeItem> = new EventEmitter<TreeItem>();\n  @Output() itemExpand: EventEmitter<TreeExpandEvent> = new EventEmitter<TreeExpandEvent>();\n}\n","@if (items() && items()?.length) {\n  @for (item of items(); track item.id) {\n    <obl-tree-item\n      [item]=\"item\"\n      [itemClicked]=\"itemClicked\"\n      [itemExpand]=\"itemExpand\"\n    ></obl-tree-item>\n  }\n}\n","import { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { LoadingModule } from '@obliczeniowo/elementary/loading';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreeComponent } from './components/tree/tree.component';\nimport { VerticalArrowComponent } from './components/vertical-arrow/vertical-arrow.component';\nimport { TreeItemComponent } from './components/tree/tree-item/tree-item.component';\n\n@NgModule({\n  declarations: [\n    TreeComponent,\n    VerticalArrowComponent,\n    TreeItemComponent\n  ],\n  imports: [\n    CommonModule,\n    LoadingModule,\n    IconsModule\n  ],\n  exports: [\n    TreeComponent,\n    VerticalArrowComponent,\n  ]\n})\nexport class TreeModule { }\n","import { TreeItem } from './tree-item';\n\nexport interface TreeExpandEvent {\n  item: TreeItem;\n  cb: (items: TreeItem[]) => TreeItem[];\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.VerticalArrowComponent","i1.TreeItemComponent"],"mappings":"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"}