{"version":3,"file":"ngx-resize-observer.mjs","sources":["../../../projects/ngx-resize-observer/src/lib/ngx-resize-observer.service.ts","../../../projects/ngx-resize-observer/src/lib/ngx-resize-observer.directive.ts","../../../projects/ngx-resize-observer/src/lib/ngx-resize-observer.module.ts","../../../projects/ngx-resize-observer/src/public-api.ts","../../../projects/ngx-resize-observer/src/ngx-resize-observer.ts"],"sourcesContent":["import { Injectable, NgZone, OnDestroy } from '@angular/core';\n\nexport interface ResizeObserverBoxSize {\n    blockSize: number; // height if horizontal writing mode, width otherwise\n    inlineSize: number; // width if horizontal writing mode, height otherwise\n}\n\nexport type ResizeObserverCallback = (resizes: ResizeObserverEntry[], observer: ResizeObserver) => void;\n\nexport interface ResizeObserverConfig {\n    box?: 'content-box' | 'border-box';\n}\n\nexport type ResizeObserverServiceCallback = (resize: ResizeObserverEntry) => void;\n\n@Injectable()\nexport class NgxResizeObserverService implements OnDestroy {\n    private count = 0;\n    private elementMap = new Map<Element, ResizeObserverServiceCallback>();\n    private observer: ResizeObserver | null = null;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    ngOnDestroy() {\n        if (this.observer) {\n            this.clearObserver();\n        }\n    }\n\n    observe(\n        element: Element,\n        callback: ResizeObserverServiceCallback,\n        boxModel: string\n    ) {\n        if (!this.observer) {\n            this.observer = new ResizeObserver(resizes => {\n                for (const resize of resizes) {\n                    const cb = this.elementMap.get(resize.target);\n\n                    if (cb) {\n                        this.ngZone.run(() => {\n                            cb(resize);\n                        });\n                    }\n                }\n            });\n        }\n\n        if (boxModel === 'border-box') {\n            this.observer.observe(element, {\n                box: 'border-box'\n            });\n        } else {\n            this.observer.observe(element);\n        }\n\n        this.count += 1;\n        this.elementMap.set(element, callback);\n    }\n\n    unobserve(element: Element) {\n        const cb = this.elementMap.get(element);\n\n        if (cb && this.observer) {\n            this.observer.unobserve(element);\n            this.elementMap.delete(element);\n            this.count -= 1;\n\n            if (this.count === 0) {\n                this.clearObserver();\n            }\n        }\n    }\n\n    private clearObserver() {\n        if (this.observer) {\n            this.observer.disconnect();\n        }\n\n        this.observer = null;\n        this.count = 0;\n        this.elementMap = new Map<Element, ResizeObserverServiceCallback>();\n    }\n}\n","import {\n    afterNextRender,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges\n} from '@angular/core';\n\nimport {\n    NgxResizeObserverService,\n} from './ngx-resize-observer.service';\n\n@Directive({\n    selector: '[onResize]'\n})\nexport class NgxResizeObserverDirective\n    implements OnChanges, OnDestroy {\n    @Input() resizeBoxModel = '';\n    @Output() onResize = new EventEmitter<ResizeObserverEntry>();\n    private observing = false;\n\n    constructor(\n        private readonly elementRef: ElementRef,\n        private readonly ngxResizeObserverService: NgxResizeObserverService,\n        private readonly ngZone: NgZone\n    ) {\n        afterNextRender(() => {\n            this.observe();\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (this.observing && (changes['resizeBoxModel'] || changes['onResize'])) {\n            this.unobserve();\n            this.observe();\n        }\n    }\n\n    ngOnDestroy() {\n        this.unobserve();\n    }\n\n    private observe() {\n        if (!this.observing) {\n            this.ngxResizeObserverService.observe(\n                this.elementRef.nativeElement,\n                resize => {\n                    this.ngZone.run(() => {\n                        this.onResize.emit(resize);\n                    });\n                },\n                this.resizeBoxModel\n            );\n            this.observing = true;\n        }\n    }\n\n    private unobserve() {\n        if (this.observing) {\n            this.ngxResizeObserverService.unobserve(this.elementRef.nativeElement);\n            this.observing = false;\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { NgxResizeObserverDirective } from './ngx-resize-observer.directive';\nimport { NgxResizeObserverService } from './ngx-resize-observer.service';\n\n@NgModule({\n    imports: [NgxResizeObserverDirective],\n    exports: [NgxResizeObserverDirective],\n    providers: [NgxResizeObserverService],\n})\nexport class NgxResizeObserverModule {}\n","/*\n * Public API Surface of ngx-resize-observer\n */\n\nexport * from './lib/ngx-resize-observer.directive';\nexport * from './lib/ngx-resize-observer.module';\nexport * from './lib/ngx-resize-observer.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxResizeObserverService"],"mappings":";;;MAgBa,wBAAwB,CAAA;AAKjC,IAAA,WAAA,CAA6B,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;QAJ3B,IAAA,CAAA,KAAK,GAAG,CAAC;AACT,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAA0C;QAC9D,IAAA,CAAA,QAAQ,GAA0B,IAAI;IAEA;IAE9C,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,aAAa,EAAE;QACxB;IACJ;AAEA,IAAA,OAAO,CACH,OAAgB,EAChB,QAAuC,EACvC,QAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;AACzC,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,oBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;oBAE7C,IAAI,EAAE,EAAE;AACJ,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;4BACjB,EAAE,CAAC,MAAM,CAAC;AACd,wBAAA,CAAC,CAAC;oBACN;gBACJ;AACJ,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AAC3B,gBAAA,GAAG,EAAE;AACR,aAAA,CAAC;QACN;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QAClC;AAEA,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC1C;AAEA,IAAA,SAAS,CAAC,OAAgB,EAAA;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AAEvC,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AAEf,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,aAAa,EAAE;YACxB;QACJ;IACJ;IAEQ,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAA0C;IACvE;iIAlES,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qIAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MCKY,0BAA0B,CAAA;AAMnC,IAAA,WAAA,CACqB,UAAsB,EACtB,wBAAkD,EAClD,MAAc,EAAA;QAFd,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,MAAM,GAAN,MAAM;QAPlB,IAAA,CAAA,cAAc,GAAG,EAAE;AAClB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAuB;QACpD,IAAA,CAAA,SAAS,GAAG,KAAK;QAOrB,eAAe,CAAC,MAAK;YACjB,IAAI,CAAC,OAAO,EAAE;AAClB,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;YACtE,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE;QAClB;IACJ;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,SAAS,EAAE;IACpB;IAEQ,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CACjC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,MAAM,IAAG;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACjB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,EACD,IAAI,CAAC,cAAc,CACtB;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACzB;IACJ;IAEQ,SAAS,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B;IACJ;iIA/CS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;sBAGI;;sBACA;;;MCdQ,uBAAuB,CAAA;iIAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAvB,uBAAuB,EAAA,OAAA,EAAA,CAJtB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC1B,0BAA0B,CAAA,EAAA,CAAA,CAAA;kIAG3B,uBAAuB,EAAA,SAAA,EAFrB,CAAC,wBAAwB,CAAC,EAAA,CAAA,CAAA;;2FAE5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,0BAA0B,CAAC;oBACrC,OAAO,EAAE,CAAC,0BAA0B,CAAC;oBACrC,SAAS,EAAE,CAAC,wBAAwB,CAAC;AACxC,iBAAA;;;ACRD;;AAEG;;ACFH;;AAEG;;;;"}