{"version":3,"file":"ui-vts-kit-ng-vts-cdk-resize-observer.mjs","sources":["../../components/cdk/resize-observer/resize-observer.service.ts","../../components/cdk/resize-observer/resize-observer.directive.ts","../../components/cdk/resize-observer/resize-observer.module.ts","../../components/cdk/resize-observer/public-api.ts","../../components/cdk/resize-observer/ui-vts-kit-ng-vts-cdk-resize-observer.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 { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n */\n@Injectable({ providedIn: 'root' })\nexport class VtsResizeObserverFactory {\n  create(callback: ResizeObserverCallback): ResizeObserver | null {\n    return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n  }\n}\n\n/** An injectable service that allows watching elements for changes to their content. */\n@Injectable({ providedIn: 'root' })\nexport class VtsResizeObserver implements OnDestroy {\n  /** Keeps track of the existing ResizeObservers so they can be reused. */\n  private observedElements = new Map<\n    Element,\n    {\n      observer: ResizeObserver | null;\n      stream: Subject<ResizeObserverEntry[]>;\n      count: number;\n    }\n  >();\n\n  constructor(private nzResizeObserverFactory: VtsResizeObserverFactory) {}\n\n  ngOnDestroy(): void {\n    this.observedElements.forEach((_, element) => this.cleanupObserver(element));\n  }\n\n  observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n    const element = coerceElement(elementOrRef);\n\n    return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n      const stream = this.observeElement(element);\n      const subscription = stream.subscribe(observer);\n\n      return () => {\n        subscription.unsubscribe();\n        this.unobserveElement(element);\n      };\n    });\n  }\n\n  /**\n   * Observes the given element by using the existing ResizeObserver if available, or creating a\n   * new one if not.\n   */\n  private observeElement(element: Element): Subject<ResizeObserverEntry[]> {\n    if (!this.observedElements.has(element)) {\n      const stream = new Subject<ResizeObserverEntry[]>();\n      const observer = this.nzResizeObserverFactory.create((mutations: ResizeObserverEntry[]) =>\n        stream.next(mutations)\n      );\n      if (observer) {\n        observer.observe(element);\n      }\n      this.observedElements.set(element, { observer, stream, count: 1 });\n    } else {\n      this.observedElements.get(element)!.count++;\n    }\n    return this.observedElements.get(element)!.stream;\n  }\n\n  /**\n   * Un-observes the given element and cleans up the underlying ResizeObserver if nobody else is\n   * observing this element.\n   */\n  private unobserveElement(element: Element): void {\n    if (this.observedElements.has(element)) {\n      this.observedElements.get(element)!.count--;\n      if (!this.observedElements.get(element)!.count) {\n        this.cleanupObserver(element);\n      }\n    }\n  }\n\n  /** Clean up the underlying ResizeObserver for the specified element. */\n  private cleanupObserver(element: Element): void {\n    if (this.observedElements.has(element)) {\n      const { observer, stream } = this.observedElements.get(element)!;\n      if (observer) {\n        observer.disconnect();\n      }\n      stream.complete();\n      this.observedElements.delete(element);\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  AfterContentInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { BooleanInput } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { VtsResizeObserver } from './resize-observer.service';\n\n@Directive({\n  selector: '[nzResizeObserver]'\n})\nexport class VtsResizeObserverDirective implements AfterContentInit, OnDestroy, OnChanges {\n  static ngAcceptInputType_nzResizeObserverDisabled: BooleanInput;\n  @Output() readonly nzResizeObserve = new EventEmitter<ResizeObserverEntry[]>();\n  @Input() @InputBoolean() nzResizeObserverDisabled = false;\n  private currentSubscription: Subscription | null = null;\n\n  private subscribe(): void {\n    this.unsubscribe();\n    this.currentSubscription = this.nzResizeObserver\n      .observe(this.elementRef)\n      .subscribe(this.nzResizeObserve);\n  }\n\n  private unsubscribe(): void {\n    this.currentSubscription?.unsubscribe();\n  }\n\n  constructor(\n    private nzResizeObserver: VtsResizeObserver,\n    private elementRef: ElementRef<HTMLElement>\n  ) {}\n\n  ngAfterContentInit(): void {\n    if (!this.currentSubscription && !this.nzResizeObserverDisabled) {\n      this.subscribe();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzResizeObserve } = changes;\n    if (nzResizeObserve) {\n      if (this.nzResizeObserverDisabled) {\n        this.unsubscribe();\n      } else {\n        this.subscribe();\n      }\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 { NgModule } from '@angular/core';\n\nimport { VtsResizeObserverDirective } from './resize-observer.directive';\nimport { VtsResizeObserverFactory } from './resize-observer.service';\n\n@NgModule({\n  providers: [VtsResizeObserverFactory],\n  declarations: [VtsResizeObserverDirective],\n  exports: [VtsResizeObserverDirective]\n})\nexport class VtsResizeObserverModule {}\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 { VtsResizeObserverModule } from './resize-observer.module';\nexport { VtsResizeObserverDirective } from './resize-observer.directive';\nexport { VtsResizeObserver, VtsResizeObserverFactory } from './resize-observer.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VtsResizeObserver"],"mappings":"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"}