{"version":3,"file":"yunzai-dormitory-tree.mjs","sources":["../../../../packages/bcs/yunzai-dormitory-tree/yunzai-dormitory-tree.schema.ts","../../../../packages/bcs/yunzai-dormitory-tree/yunzai-dormitory-tree.types.ts","../../../../packages/bcs/yunzai-dormitory-tree/yunzai-dormitory-tree.service.ts","../../../../packages/bcs/yunzai-dormitory-tree/yunzai-dormitory-tree.component.ts","../../../../packages/bcs/yunzai-dormitory-tree/yunzai-dormitory-tree.module.ts","../../../../packages/bcs/yunzai-dormitory-tree/yunzai-dormitory-tree.ts"],"sourcesContent":["import { SFSchema } from '@yelon/form';\n\nexport const defaultSchema: SFSchema = {\n  properties: {\n    search: {\n      title: 'search',\n      type: 'string',\n      ui: {\n        i18n: 'input.search',\n        widget: 'string'\n      }\n    }\n  }\n};\n","import { SFSchema } from '@yelon/form';\n\nexport enum YunzaiDormitoryTreeType {\n  BUILDING = 0,\n  BUILDING_FLOOR = 1,\n  BUILDING_FLOORS_ROOMS = 2\n}\n\nexport interface YunzaiDormitoryTreeParam {\n  isPower?: boolean;\n  userId?: string;\n  treeType: YunzaiDormitoryTreeType;\n}\n\nexport interface YunzaiDormitoryTree {\n  buildPid: string;\n  children: YunzaiDormitoryTree[];\n  expanded: boolean;\n  floorPid: string;\n  isExpanded: boolean;\n  isLeaf: boolean;\n  key: string;\n  selected: boolean;\n  title: string;\n  type: string;\n}\n\nexport interface YunzaiDormitoryTreeState {\n  loading: boolean;\n  schema: SFSchema;\n  data: YunzaiDormitoryTree[];\n  dataBackup: YunzaiDormitoryTree[];\n  expandKeys: string[];\n}\n\nexport interface YunzaiDormitoryTreeProps {\n  wrap?: boolean;\n  expand?: boolean;\n  multiple?: boolean;\n  param?: YunzaiDormitoryTreeParam;\n  data?: YunzaiDormitoryTree[];\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport { _HttpClient } from '@yelon/theme';\nimport { YunzaiResponse } from '@yelon/util';\n\nimport { YunzaiDormitoryTree, YunzaiDormitoryTreeParam, YunzaiDormitoryTreeType } from './yunzai-dormitory-tree.types';\n\n@Injectable()\nexport class YunzaiDormitoryTreeService {\n  private readonly http: _HttpClient = inject(_HttpClient);\n\n  tree(\n    param: YunzaiDormitoryTreeParam = {\n      isPower: false,\n      treeType: YunzaiDormitoryTreeType.BUILDING_FLOORS_ROOMS\n    }\n  ): Observable<YunzaiDormitoryTree[]> {\n    return this.http.post(`/auth/dorm/tree`, param).pipe(\n      map((response: YunzaiResponse<YunzaiDormitoryTree[]>) => {\n        return response.data;\n      })\n    );\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { catchError, debounceTime, map, of, Subject, switchMap, takeUntil, throwError, zip } from 'rxjs';\n\nimport { SFComponent, SFValueChange, YelonFormModule } from '@yelon/form';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzFormatEmitEvent, NzTreeModule, NzTreeNode } from 'ng-zorro-antd/tree';\n\nimport { defaultSchema } from './yunzai-dormitory-tree.schema';\nimport { YunzaiDormitoryTreeService } from './yunzai-dormitory-tree.service';\nimport { YunzaiDormitoryTree, YunzaiDormitoryTreeParam, YunzaiDormitoryTreeProps, YunzaiDormitoryTreeState, YunzaiDormitoryTreeType } from './yunzai-dormitory-tree.types';\n@Component({\n  selector: `yunzai-dormitory-tree`,\n  template: `\n    <nz-spin [nzSpinning]=\"state.loading\">\n      @if (isWrapped) {\n        <nz-card>\n          <ng-container [ngTemplateOutlet]=\"content\" />\n        </nz-card>\n      } @else {\n        <ng-container [ngTemplateOutlet]=\"content\" />\n      }\n    </nz-spin>\n\n    <ng-template #content>\n      <ng-container [ngTemplateOutlet]=\"dormitoryForm\" />\n      @if (nodes.length > 0) {\n        <nz-tree\n          (nzClick)=\"activeNode($event)\"\n          [nzExpandedKeys]=\"state.expandKeys\"\n          [nzData]=\"nodes\"\n          [nzShowLine]=\"true\"\n          [nzMultiple]=\"isMultiple\"\n          [nzExpandedIcon]=\"blank\"\n          [nzBlockNode]=\"true\"\n          [nzHideUnMatched]=\"true\"\n          [nzTreeTemplate]=\"treeTemplate\"\n        />\n      } @else {\n        <nz-empty />\n      }\n    </ng-template>\n\n    <ng-template #treeTemplate let-node let-origin=\"origin\">\n      @if (!node.isLeaf) {\n        <span [title]=\"node.title\">\n          <i nz-icon nzTheme=\"twotone\" [nzType]=\"node.isExpanded ? 'minus-square' : 'plus-square'\" (click)=\"open(node)\"></i>\n          <span class=\"leaf-name\">{{ node.title }}</span>\n        </span>\n      } @else {\n        <span [title]=\"node.title\">\n          <span nz-icon nzType=\"file\" nzTheme=\"twotone\"></span>\n          <span class=\"leaf-name\">{{ node.title }}</span>\n        </span>\n      }\n    </ng-template>\n\n    <ng-template #dormitoryForm>\n      <sf #form layout=\"inline\" [button]=\"'none'\" [schema]=\"state.schema\" />\n    </ng-template>\n    <ng-template #blank />\n  `,\n\n  providers: [YunzaiDormitoryTreeService],\n  imports: [NzSpinModule, YelonFormModule, NzCardModule, NzIconModule, NzEmptyModule, NzTreeModule, CommonModule]\n})\nexport class YunzaiDormitoryTreeComponent implements OnInit, OnDestroy, AfterViewInit {\n  @ViewChild('form') sf!: SFComponent;\n\n  @Input() props?: YunzaiDormitoryTreeProps;\n\n  @Output() readonly onQueryComplete: EventEmitter<YunzaiDormitoryTree[]> = new EventEmitter<YunzaiDormitoryTree[]>();\n\n  @Output() readonly onSelect: EventEmitter<YunzaiDormitoryTree[]> = new EventEmitter<YunzaiDormitoryTree[]>();\n  private readonly service: YunzaiDormitoryTreeService = inject(YunzaiDormitoryTreeService);\n  private $destroy = new Subject();\n\n  state: YunzaiDormitoryTreeState = {\n    loading: false,\n    schema: defaultSchema,\n    data: [],\n    dataBackup: [],\n    expandKeys: []\n  };\n\n  get data(): YunzaiDormitoryTree[] {\n    if (this.props && this.props.data) {\n      return this.props.data;\n    }\n    return this.state.data;\n  }\n\n  set data(dorms: YunzaiDormitoryTree[]) {\n    if (this.props && this.props.data) {\n      this.props.data = dorms;\n    } else {\n      this.state.data = dorms;\n    }\n  }\n\n  get nodes(): NzTreeNode[] {\n    return this.data as any[];\n  }\n\n  get isMultiple(): boolean {\n    if (this.props) {\n      return !!this.props.multiple;\n    }\n    return false;\n  }\n\n  get param(): YunzaiDormitoryTreeParam {\n    if (this.props && this.props.param) {\n      return this.props.param;\n    }\n    return { isPower: false, treeType: YunzaiDormitoryTreeType.BUILDING_FLOORS_ROOMS };\n  }\n\n  get isWrapped(): boolean {\n    if (this.props) {\n      return !!this.props.wrap;\n    }\n    return false;\n  }\n\n  get isExpanded(): boolean {\n    if (this.props) {\n      return !!this.props.expand;\n    }\n    return false;\n  }\n\n  ngOnInit(): void {\n    if (!this.props?.data) {\n      this.query(this.param);\n    } else {\n      this.state.dataBackup = this.data;\n      this.mapDormTree(this.data as any);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.hookFormChange();\n  }\n\n  hookFormChange(): void {\n    this.sf.formValueChange\n      .pipe(\n        takeUntil(this.$destroy),\n        debounceTime(1000),\n        map(value => {\n          this.load();\n          return value;\n        }),\n        switchMap((valueChange: SFValueChange) => {\n          const {\n            value: { search }\n          } = valueChange;\n          if (this.props && this.props.data) {\n            return zip(of(search), of(this.state.dataBackup));\n          }\n          return zip(of(search), this.service.tree(this.param));\n        }),\n        map(([search, dorms]) => {\n          this.state.expandKeys = [];\n          if (search && search.trim() !== '') {\n            dorms = this.recursionSearch(search, dorms);\n            this.onQueryComplete.emit(dorms);\n          }\n          this.mapDormTree(dorms as any);\n          this.data = dorms;\n        }),\n        catchError(error => {\n          this.unload();\n          return throwError(error);\n        })\n      )\n      .subscribe(() => {\n        this.unload();\n      });\n  }\n\n  recursionSearch(search: string, dorms: YunzaiDormitoryTree[]): YunzaiDormitoryTree[] {\n    const results: YunzaiDormitoryTree[] = [];\n    const searchInDorm = (dorm: YunzaiDormitoryTree): void => {\n      if (dorm.title.includes(search)) {\n        results.push(dorm);\n      }\n      if (dorm.children && dorm.children.length > 0) {\n        for (const child of dorm.children) {\n          searchInDorm(child);\n        }\n      }\n    };\n    for (const dorm of dorms) {\n      searchInDorm(dorm);\n    }\n    return results;\n  }\n\n  query(param: YunzaiDormitoryTreeParam): void {\n    this.load();\n    this.service\n      .tree(param)\n      .pipe(\n        takeUntil(this.$destroy),\n        map((dorms: YunzaiDormitoryTree[]) => {\n          this.state.expandKeys = [];\n          this.onQueryComplete.emit(dorms);\n          this.mapDormTree(dorms as any);\n          this.data = dorms;\n        }),\n        catchError(error => {\n          this.unload();\n          return throwError(error);\n        })\n      )\n      .subscribe(() => {\n        this.unload();\n      });\n  }\n\n  load(): void {\n    this.state.loading = true;\n  }\n\n  unload(): void {\n    this.state.loading = false;\n  }\n\n  mapDormTree(tree: NzTreeNode[]): void {\n    if (tree && tree.length && tree.length > 0) {\n      tree.forEach(item => {\n        if (this.isExpanded && !this.state.expandKeys.includes(item.key)) {\n          this.state.expandKeys.push(item.key);\n        }\n        item.isExpanded = this.isExpanded;\n        item.isLeaf = item.children === null || item.children.length === 0;\n        this.mapDormTree(item.children);\n      });\n    }\n  }\n\n  activeNode(data: NzFormatEmitEvent): void {\n    if (data.node) {\n      this.onSelect.emit([data.node.origin as YunzaiDormitoryTree]);\n    } else if (data.nodes) {\n      const dorms: YunzaiDormitoryTree[] = data.nodes.map(n => n.origin as YunzaiDormitoryTree);\n      this.onSelect.emit(dorms);\n    }\n  }\n\n  open(data: NzTreeNode | NzFormatEmitEvent): void {\n    if (data instanceof NzTreeNode) {\n      data.isExpanded = !data.isExpanded;\n    } else {\n      const node = data.node;\n      if (node) {\n        node.isExpanded = !node.isExpanded;\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.$destroy.complete();\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { YunzaiDormitoryTreeComponent } from './yunzai-dormitory-tree.component';\nimport { YunzaiDormitoryTreeService } from './yunzai-dormitory-tree.service';\n\nconst COMPONENTS = [YunzaiDormitoryTreeComponent];\n\n@NgModule({\n  imports: [...COMPONENTS],\n  providers: [YunzaiDormitoryTreeService],\n  exports: COMPONENTS\n})\nexport class YunzaiDormitoryTreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}