{"version":3,"file":"chart-observer-size.mjs","sources":["../../../../packages/abc/observers/observer-size.ts","../../../../packages/abc/observers/chart-observer-size.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Injectable,\n  NgModule,\n  NgZone,\n  OnDestroy,\n  Output,\n  inject\n} from '@angular/core';\nimport { Observable, Observer, Subject, Subscription } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class SizeObserver implements OnDestroy {\n  private _observedElements = new Map<\n    Element,\n    {\n      observer: MutationObserver | null;\n      readonly stream: Subject<MutationRecord[]>;\n      count: number;\n    }\n  >();\n\n  ngOnDestroy(): void {\n    this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n  }\n\n  observe(element: Element): Observable<MutationRecord[]> {\n    return new Observable((observer: Observer<MutationRecord[]>) => {\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  private _observeElement(element: Element): Subject<MutationRecord[]> {\n    if (!this._observedElements.has(element)) {\n      const stream = new Subject<MutationRecord[]>();\n      let observer: MutationObserver | null = null;\n      if (typeof MutationObserver !== 'undefined') {\n        observer = new MutationObserver(mutations => stream.next(mutations));\n        observer.observe(element, {\n          attributes: true,\n          attributeOldValue: true,\n          attributeFilter: ['width', 'height', 'style']\n        });\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  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  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@Directive({\n  selector: '[observeSize]',\n  exportAs: 'observeSize',\n  standalone: true\n})\nexport class ObserverSize implements AfterViewInit, OnDestroy {\n  private readonly _obs = inject(SizeObserver);\n  private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly ngZone = inject(NgZone);\n\n  private _sub$: Subscription | null = null;\n  @Output('observeSize') readonly event = new EventEmitter<MutationRecord[]>();\n\n  ngAfterViewInit(): void {\n    if (!this._sub$) {\n      this._sub();\n    }\n  }\n\n  private _sub(): void {\n    this._unsub();\n    const stream = this._obs.observe(this.el);\n    this.ngZone.runOutsideAngular(() => {\n      this._sub$ = stream.subscribe(this.event);\n    });\n  }\n\n  private _unsub(): void {\n    this._sub$?.unsubscribe();\n  }\n\n  ngOnDestroy(): void {\n    this._unsub();\n  }\n}\n\n@NgModule({\n  exports: [ObserverSize],\n  imports: [ObserverSize]\n})\nexport class ObserversModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}