{"version":3,"file":"ng-stalk-space.mjs","sources":["../../components/space/ns-space.service.ts","../../components/space/ns-space-host.directive.ts","../../components/space/ns-space-item.directive.ts","../../components/space/ns-space.module.ts","../../components/space/public-api.ts","../../components/space/ng-stalk-space.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable, Input, OnDestroy } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { NsConfigKey, NsConfigService, WithNsConfig } from 'ng-stalk/core/config';\nimport { getLayoutState, MagFrameState } from 'ng-stalk/core/frame-store';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst NS_CONFIG_MODULE_NAME: NsConfigKey = 'space';\n\ninterface SpaceData {\n  id: string;\n  height: number;\n  tag?: string;\n}\n\n@Injectable()\nexport class NsSpaceService implements OnDestroy {\n\n  readonly _nsModuleName: NsConfigKey = NS_CONFIG_MODULE_NAME;\n\n  @Input() @WithNsConfig() @InputBoolean() nsDebug: boolean = false;\n\n  private destroy$: Subject<NzSafeAny>;\n\n  groupChanges: Map<string, BehaviorSubject<number>> = new Map();\n\n  groupAndData: Map<string, SpaceData[]> = new Map();\n\n  // test\n  // mainStream$$: Subject<Observable<Map<string, BehaviorSubject<number>>>> = new Subject();\n  // combinedStream$: Observable<Map<string, BehaviorSubject<number>>>;\n\n  groupStream$: BehaviorSubject<Map<string, number>> = new BehaviorSubject<Map<string, number>>(new Map());\n\n  constructor(\n    public nsConfigService: NsConfigService,\n    private store: Store<MagFrameState>\n  ) {\n    this.destroy$ = new Subject();\n    // this.combinedStream$ = this.mainStream$$.pipe(mergeAll());\n\n    const layout$ = this.store.pipe(select(getLayoutState));\n    layout$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(layoutState => {\n        const newValue = this.groupStream$.getValue();\n        newValue.set('frameContentWidth', layoutState.contentWidth);\n        newValue.set('frameContentHeight', layoutState.contentHeight);\n        this.groupStream$.next(newValue);\n      });\n  }\n\n  public register(group: string, itemId: string, height: number, tag?: string): void {\n    const items: SpaceData[] = this.groupAndData.get(group) || [];\n    const found = items.find(item => item.id === itemId);\n    if (!found) {\n      items.push({\n        id: itemId,\n        height,\n        tag\n      })\n      this.groupAndData.set(group, items);\n      this.updateGroupSubjects(group);\n    } else {\n      if (found.height !== height) {\n        found.height = height;\n        this.updateGroupSubjects(group);\n      }\n    }\n  }\n\n  private updateGroupSubjects(group: string): void {\n    const items: SpaceData[] = this.groupAndData.get(group) || [];\n    const sumHeight: number = items\n      .map(space => space.height)\n      .reduce((sum, current) => {\n        return sum + current;\n      }, 0);\n\n    if (this.nsDebug) {\n      console.log(\"[ns-space-service] current info:\", items);\n    }\n\n    // let heightSubject = this.groupChanges.get(group);\n    // if (heightSubject) {\n    //   heightSubject.next(sumHeight);\n    // } else {\n    //   heightSubject = new BehaviorSubject<number>(sumHeight);\n    //   this.groupChanges.set(group, heightSubject);\n    //   // this.mainStream$$.next(heightSubject);\n    // }\n\n    const newValue = this.groupStream$.getValue();\n    newValue.set(group, sumHeight);\n    this.groupStream$.next(newValue);\n    console.log(\"[NsSpace] updated. group: \", group, \"sumHeight:\", sumHeight);\n  }\n\n  // public updateItem(group: string, itemId: string, height: number): void {\n  //   const items: SpaceData[] = this.groupAndData.get(group) || [];\n  //   const found = items.find(item => item.id === itemId);\n  //   // @ts-ignore\n  //   found.height = height;\n  //\n  //   const sumHeight: number = items\n  //     .map(space => space.height)\n  //     .reduce((sum, current) => {\n  //       return sum + current;\n  //     });\n  //\n  //   const heightSubject = this.groupChanges.get(group)!;\n  //   heightSubject.next(sumHeight);\n  // }\n\n  public onGroupChanges(): BehaviorSubject<Map<string, number>> {\n    return this.groupStream$;\n  }\n\n  // public onSumChanges(group: string): BehaviorSubject<number> {\n  //   let heightSubject = this.groupChanges.get(group);\n  //   if (!heightSubject) {\n  //     heightSubject = new BehaviorSubject<number>(0);\n  //     this.groupChanges.set(group, heightSubject);\n  //   }\n  //   return heightSubject;\n  // }\n\n  unregister(group: string, itemId: string): void {\n    const items: SpaceData[] = this.groupAndData.get(group) || [];\n    const foundIndex = items.findIndex(item => item.id === itemId);\n    if (foundIndex >= 0) {\n      items.splice(foundIndex, 1);\n      this.groupAndData.set(group, items);\n      this.updateGroupSubjects(group);\n    }\n  }\n\n  ngOnDestroy(): void {\n    return this.groupChanges.forEach((subject) => {\n      subject.complete();\n    })\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Host,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { MagUtil } from 'ng-stalk/core/util';\nimport { NzResizeObserver } from \"ng-zorro-antd/cdk/resize-observer\";\nimport { NzSafeAny } from \"ng-zorro-antd/core/types\";\nimport { animationFrameScheduler, asapScheduler, Subject } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\n\nimport { NsSpaceService } from './ns-space.service';\n\nconst RESIZE_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nconst GROUP_HOST_SUFFIX = '-host';\n\n@Directive({\n  selector: '[ns-space-host]',\n  providers: [\n    NsSpaceService\n  ]\n})\nexport class NsSpaceHostDirective implements OnInit, AfterViewInit, OnDestroy {\n\n  @Input('ns-space-host') group?: string | string[];\n  id: string;\n\n  @Input('ns-area-tag') tag?: string;\n\n  private destroy$: Subject<NzSafeAny>;\n\n  @Output() public onResize: EventEmitter<Map<string, number>> = new EventEmitter();\n\n  constructor(\n    private _elRef: ElementRef,\n    private nzResizeObserver: NzResizeObserver,\n    @Host() private nsSpaceService: NsSpaceService,\n  ) {\n    this.destroy$ = new Subject();\n    this.id = MagUtil.generateGUID();\n  }\n\n  ngOnInit(): void {\n    this.nzResizeObserver.observe(this._elRef)\n      .pipe(takeUntil(this.destroy$),\n        auditTime(16, RESIZE_SCHEDULER)\n      )\n      .subscribe((entries) => {\n        for (const entry of entries) {\n          const height = entry.contentRect.height;\n          if (Array.isArray(this.group)) {\n            for (const group of this.group) {\n              this.nsSpaceService.register(group + GROUP_HOST_SUFFIX, this.id, height, this.tag);\n            }\n          } else {\n            this.nsSpaceService.register(this.group! + GROUP_HOST_SUFFIX, this.id, height, this.tag);\n          }\n        }\n      });\n\n    this.nsSpaceService.onGroupChanges()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((groupAndHeightMap) => {\n        this.onResize.emit(groupAndHeightMap)\n      });\n  }\n\n  ngAfterViewInit(): void {\n\n  }\n\n  ngOnDestroy(): void {\n    if (Array.isArray(this.group)) {\n      for (const group of this.group) {\n        this.nsSpaceService.unregister(group + GROUP_HOST_SUFFIX, this.id);\n      }\n    } else {\n      this.nsSpaceService.unregister(this.group! + '-host', this.id);\n    }\n\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n}\n","import {AfterViewInit, Directive, ElementRef, Host, Input, OnDestroy, OnInit} from '@angular/core';\nimport { NzResizeObserver } from \"ng-zorro-antd/cdk/resize-observer\";\nimport {animationFrameScheduler, asapScheduler, Subject} from \"rxjs\";\nimport {auditTime, takeUntil} from \"rxjs/operators\";\nimport { NsSpaceService } from \"./ns-space.service\";\nimport {MagUtil} from \"ng-stalk/core/util\";\nimport {NsConfigKey, NsConfigService, WithNsConfig} from \"ng-stalk/core/config\";\nimport {InputBoolean} from \"ng-zorro-antd/core/util\";\n\nconst NS_CONFIG_MODULE_NAME: NsConfigKey = 'space';\nconst RESIZE_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n@Directive({\n  selector: '[ns-space-item]'\n})\nexport class NsSpaceItemDirective implements OnInit, AfterViewInit, OnDestroy {\n\n  readonly _nsModuleName: NsConfigKey = NS_CONFIG_MODULE_NAME;\n\n  @Input() @WithNsConfig() @InputBoolean() nsDebug: boolean = false;\n\n  @Input('ns-space-item') group?: string | string[];\n  @Input('nsOverwriteDisplayStyle') nsOverwriteDisplayStyle = true;\n  @Input('ns-area-tag') tag?: string;\n  id: string;\n\n  private destroy$: Subject<any>;\n\n  constructor(\n    public nsConfigService: NsConfigService,\n    private _elRef: ElementRef,\n    private nzResizeObserver: NzResizeObserver,\n    @Host() private nsSpaceService: NsSpaceService,\n  ) {\n    this.destroy$ = new Subject();\n    this.id = MagUtil.generateGUID();\n\n  }\n\n  ngOnInit(): void {\n    this.nzResizeObserver.observe(this._elRef)\n      .pipe(takeUntil(this.destroy$),\n        auditTime(16, RESIZE_SCHEDULER)\n      )\n      .subscribe((entries) => {\n        for (const entry of entries) {\n          // console.log('NsSpaceItem.entry => ', entry.contentRect);\n          const height = entry.contentRect.top + entry.contentRect.bottom;\n\n          if (Array.isArray(this.group)) {\n            for (const group of this.group) {\n              if (this.nsDebug) {\n                console.log(\"[ns-area-item] group:\", group, \"id:\", this.id, 'tag:', this.tag, \"h:\", height);\n              }\n              this.nsSpaceService.register(group, this.id, height, this.tag);\n            }\n          } else {\n            if (this.nsDebug) {\n              console.log(\"[ns-area-item] group:\", this.group!, \"id:\", this.id, 'tag:', this.tag, \"h:\", height);\n            }\n            this.nsSpaceService.register(this.group!, this.id, height, this.tag);\n          }\n        }\n      });\n  }\n\n  ngAfterViewInit(): void {\n    // if (this.nsOverwriteDisplayStyle) {\n    //   this._elRef.nativeElement.style.setProperty('display', 'block');\n    // }\n    if (this.nsDebug) {\n      this._elRef.nativeElement.style.setProperty('border', '1px dotted red');\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (Array.isArray(this.group)) {\n      for (const group of this.group) {\n        this.nsSpaceService.unregister(group, this.id);\n      }\n    } else {\n      this.nsSpaceService.unregister(this.group!, this.id);\n    }\n\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {MagFrameStoreModule} from 'ng-stalk/core/frame-store';\nimport { NzResizeObserverModule } from 'ng-zorro-antd/cdk/resize-observer';\n\nimport { NsSpaceHostDirective } from './ns-space-host.directive';\nimport { NsSpaceItemDirective } from './ns-space-item.directive';\n\n@NgModule({\n  declarations: [\n    NsSpaceHostDirective,\n    NsSpaceItemDirective,\n  ],\n  imports: [\n    CommonModule,\n    NzResizeObserverModule,\n    MagFrameStoreModule,\n  ],\n  exports: [\n    NsSpaceHostDirective,\n    NsSpaceItemDirective,\n  ]\n})\nexport class NsSpaceModule { }\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './ns-space-host.directive';\nexport * from './ns-space-item.directive';\nexport * from './ns-space.service';\nexport * from './ns-space.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NS_CONFIG_MODULE_NAME","RESIZE_SCHEDULER","i1","i2.NsSpaceService","i2","i3.NsSpaceService"],"mappings":"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"}