{"version":3,"file":"ngx-observers.mjs","sources":["../../../projects/ngx-observers/src/lib/intersection.directive.ts","../../../projects/ngx-observers/src/lib/mutation.directive.ts","../../../projects/ngx-observers/src/lib/resize.directive.ts","../../../projects/ngx-observers/src/lib/ngx-observers.module.ts","../../../projects/ngx-observers/src/public-api.ts","../../../projects/ngx-observers/src/ngx-observers.ts"],"sourcesContent":["import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\n\n/**\n * IntersectionDirective\n *\n * Allow observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport\n *\n * Example:\n * ```html\n * <div (obsIntersection)=\"intersect($event)\" [obsOptions]=\"{threshold: 0.5}\" #elem=\"directive\">...</div>\n * ```\n */\n@Directive({\n  selector: '[obsIntersection]',\n  exportAs: 'directive'\n})\nexport class IntersectionDirective implements OnInit, OnDestroy {\n\n  /**\n   * Original observer object\n   *\n   * You can access observer within your controller using @ViewChild\n   *\n   * Example:\n   * ```ts\n   * @ViewChild('elem') obsIntersection: IntersectionDirective | undefined; // elem is variable from template (#elem=\"directive\")\n   * ```\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n   */\n  observer: IntersectionObserver | undefined;\n  /**\n   * Observer options input\n   *\n   * You can pass original observer options via [obsOptions] input, to configure observer behaviour.\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n   */\n  @Input('obsOptions') options: IntersectionObserverInit = {};\n  /**\n   * obsIntersection output\n   *\n   * Emits array of IntersectionObserverEntry objects, each representing one threshold which was crossed, either becoming more or less visible than the percentage specified by that threshold.\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver\n   */\n  @Output('obsIntersection') onResize = new EventEmitter<IntersectionObserverEntry[]>() ;\n\n  /**\n   * @ignore\n   */\n  constructor(private readonly element: ElementRef) { }\n\n  /**\n   * @ignore\n   */\n  ngOnInit(): void {\n    this.observer = new IntersectionObserver(entries => this.onResize.emit(entries), this.options);\n    this.observer.observe(this.element.nativeElement);\n  }\n\n  /**\n   * @ignore\n   */\n  ngOnDestroy(): void {\n    this.observer?.disconnect();\n  }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\n\n/**\n * MutationDirective\n *\n * Allow observe DOM tree changes\n *\n * Example:\n * ```html\n * <div (obsMutation)=\"mutate($event)\" [obsOptions]=\"{subtree: false}\" #elem=\"directive\">...</div>\n * ```\n */\n@Directive({\n  selector: '[obsMutation]',\n  exportAs: 'directive'\n})\nexport class MutationDirective implements OnInit, OnDestroy {\n\n  /**\n   * Original observer object\n   *\n   * You can access observer within your controller using @ViewChild\n   *\n   * Example:\n   * ```ts\n   * @ViewChild('elem') obsMutation: MutationDirective | undefined; // elem is variable from template (#elem=\"directive\")\n   * ```\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/MutationObserver\n   */\n  observer: MutationObserver | undefined;\n  /**\n   * Observer options input\n   *\n   * You can pass original observer options via [obsOptions] input, to configure observer behaviour.\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe\n   */\n  @Input('obsOptions') options: MutationObserverInit = {};\n  /**\n   * obsMutation output\n   *\n   * Emits array of MutationRecord objects, describing each change that occurred.\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/MutationObserver\n   */\n  @Output('obsMutation') onResize = new EventEmitter<MutationRecord[]>() ;\n\n  /**\n   * @ignore\n   */\n  constructor(private readonly element: ElementRef) { }\n\n  /**\n   * @ignore\n   */\n  ngOnInit(): void {\n    this.observer = new MutationObserver(entries  => this.onResize.emit(entries));\n    this.observer.observe(this.element.nativeElement, this.options);\n  }\n\n  /**\n   * @ignore\n   */\n  ngOnDestroy(): void {\n    this.observer?.disconnect();\n  }\n\n}\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\n\n/**\n * ResizeDirective\n *\n * Allow observe resize event of given object\n *\n * Example:\n * ```html\n * <div (obsResize)=\"resize($event)\" [obsOptions]=\"{box: 'content-box'}\" #elem=\"directive\">...</div>\n * ```\n */\n@Directive({\n  selector: '[obsResize]',\n  exportAs: 'directive'\n})\nexport class ResizeDirective implements OnInit, OnDestroy {\n\n  /**\n   * Original observer object\n   *\n   * You can access observer within your controller using @ViewChild\n   *\n   * Example:\n   * ```ts\n   * @ViewChild('elem') obsResize: ResizeDirective | undefined; // elem is variable from template (#elem=\"directive\")\n   * ```\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/ResizeObserver\n   */\n  observer: ResizeObserver | undefined;\n  /**\n   * Observer options input\n   *\n   * You can pass original observer options via [obsOptions] input, to configure observer behaviour.\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/observe\n   */\n  @Input('obsOptions') options: ResizeObserverOptions = {};\n  /**\n   * obsResize output\n   *\n   * Emits array of ResizeObserverEntry objects that can be used to access the new dimensions of the element after each change.\n   *\n   * Detailed information can be found: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/ResizeObserver\n   */\n  @Output('obsResize') onResize = new EventEmitter<ResizeObserverEntry[]>() ;\n\n  /**\n   * @ignore\n   */\n  constructor(private readonly element: ElementRef) { }\n\n  /**\n   * @ignore\n   */\n  ngOnInit(): void {\n    this.observer = new ResizeObserver(entries => this.onResize.emit(entries));\n    this.observer.observe(this.element.nativeElement, this.options);\n  }\n\n  /**\n   * @ignore\n   */\n  ngOnDestroy(): void {\n    this.observer?.disconnect();\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport {IntersectionDirective} from \"./intersection.directive\";\nimport {MutationDirective} from \"./mutation.directive\";\nimport {ResizeDirective} from \"./resize.directive\";\n\n\n/**\n * NgxObserversModule\n *\n * Module with all observer directives. You need to import it into your module.\n *\n * Example:\n * ```ts\n * import {NgxObserversModule} from \"ngx-observers\";\n *\n * @NgModule({\n *  //...\n *  imports: [\n *    //...\n *    NgxObserversModule,\n *    //...\n *  ],\n *  //...\n * })\n * ```\n */\n@NgModule({\n  declarations: [\n    IntersectionDirective,\n    MutationDirective,\n    ResizeDirective,\n  ],\n  imports: [\n  ],\n  exports: [\n    IntersectionDirective,\n    MutationDirective,\n    ResizeDirective,\n  ]\n})\nexport class NgxObserversModule { }\n","/*\n * Public API Surface of ngx-observers\n */\nexport * from './lib/ngx-observers.module';\nexport * from './lib/intersection.directive';\nexport * from './lib/mutation.directive';\nexport * from './lib/resize.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}