angular-view-observer-directive 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci12aWV3LW9ic2VydmVyLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdmlldy1vYnNlcnZlci1kaXJlY3RpdmUvc3JjL2FuZ3VsYXItdmlldy1vYnNlcnZlci1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { DestroyRef, Directive, effect, ElementRef, inject, input, output } from '@angular/core';
2
+ import { debounceTime, Subject } from "rxjs";
3
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
4
+ import * as i0 from "@angular/core";
5
+ export class AngularViewObserverDirective {
6
+ //#endregion
7
+ //#region Constructor
8
+ constructor() {
9
+ //#region Injection
10
+ this._el = inject(ElementRef);
11
+ this.destroyRef = inject(DestroyRef);
12
+ //#endregion
13
+ //#region Inputs and Outputs
14
+ this.threshold = input(0.1);
15
+ this.ancestorSelector = input();
16
+ this.observerCallback = input();
17
+ this.visibleChange = output();
18
+ this.observer$ = new Subject();
19
+ this.observer$.asObservable().pipe(debounceTime(11), takeUntilDestroyed(this.destroyRef)).subscribe(entry => {
20
+ this.visibleChange.emit(entry.isIntersecting);
21
+ });
22
+ effect(() => {
23
+ const selector = this.ancestorSelector();
24
+ const callback = this.observerCallback();
25
+ let observerOptions = {
26
+ root: null,
27
+ threshold: this.threshold(),
28
+ rootMargin: '0px',
29
+ };
30
+ if (selector) {
31
+ observerOptions.root = this._el.nativeElement.closest(selector);
32
+ }
33
+ this.observer?.disconnect();
34
+ this.observer = new IntersectionObserver((entries, observer) => {
35
+ this.observer$.next(entries[0]);
36
+ if (callback) {
37
+ callback(entries, observer);
38
+ }
39
+ }, observerOptions);
40
+ this.observer.observe(this._el.nativeElement);
41
+ });
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularViewObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
44
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: AngularViewObserverDirective, isStandalone: true, selector: "[viewObserver]", inputs: { threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, ancestorSelector: { classPropertyName: "ancestorSelector", publicName: "ancestorSelector", isSignal: true, isRequired: false, transformFunction: null }, observerCallback: { classPropertyName: "observerCallback", publicName: "observerCallback", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, ngImport: i0 }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularViewObserverDirective, decorators: [{
47
+ type: Directive,
48
+ args: [{
49
+ selector: '[viewObserver]',
50
+ standalone: true
51
+ }]
52
+ }], ctorParameters: () => [] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci12aWV3LW9ic2VydmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdmlldy1vYnNlcnZlci1kaXJlY3RpdmUvc3JjL2xpYi9hbmd1bGFyLXZpZXctb2JzZXJ2ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFDLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7O0FBTTlELE1BQU0sT0FBTyw0QkFBNEI7SUFrQnZDLFlBQVk7SUFFWixxQkFBcUI7SUFDckI7UUFuQkEsbUJBQW1CO1FBQ1gsUUFBRyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxZQUFZO1FBRVosNEJBQTRCO1FBQ3JCLGNBQVMsR0FBRyxLQUFLLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDL0IscUJBQWdCLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsS0FBSyxFQUFZLENBQUM7UUFFckMsa0JBQWEsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUtqQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFLM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ2hDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUNwQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDL0MsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsSUFBSSxlQUFlLEdBQTZCO2dCQUM5QyxJQUFJLEVBQUUsSUFBSTtnQkFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDM0IsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQTtZQUNELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEUsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFFNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRXBCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOytHQXBEVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qjs7NEZBQTVCLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBvdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbdmlld09ic2VydmVyXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclZpZXdPYnNlcnZlckRpcmVjdGl2ZSB7XHJcblxyXG4gIC8vI3JlZ2lvbiBJbmplY3Rpb25cclxuICBwcml2YXRlIF9lbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XHJcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5wdXRzIGFuZCBPdXRwdXRzXHJcbiAgcHVibGljIHRocmVzaG9sZCA9IGlucHV0PG51bWJlcj4oMC4xKTtcclxuICBwdWJsaWMgYW5jZXN0b3JTZWxlY3RvciA9IGlucHV0PHN0cmluZz4oKTtcclxuICBwdWJsaWMgb2JzZXJ2ZXJDYWxsYmFjayA9IGlucHV0PEZ1bmN0aW9uPigpO1xyXG5cclxuICBwdWJsaWMgdmlzaWJsZUNoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvcGVydGllc1xyXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgb2JzZXJ2ZXIkID0gbmV3IFN1YmplY3Q8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIENvbnN0cnVjdG9yXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLm9ic2VydmVyJC5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTEpLFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoZW50cnkgPT4ge1xyXG4gICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChlbnRyeS5pc0ludGVyc2VjdGluZylcclxuICAgIH0pXHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLmFuY2VzdG9yU2VsZWN0b3IoKTtcclxuICAgICAgY29uc3QgY2FsbGJhY2sgPSB0aGlzLm9ic2VydmVyQ2FsbGJhY2soKTtcclxuICAgICAgbGV0IG9ic2VydmVyT3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xyXG4gICAgICAgIHJvb3Q6IG51bGwsXHJcbiAgICAgICAgdGhyZXNob2xkOiB0aGlzLnRocmVzaG9sZCgpLFxyXG4gICAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzZWxlY3Rvcikge1xyXG4gICAgICAgIG9ic2VydmVyT3B0aW9ucy5yb290ID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG5cclxuICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICB0aGlzLm9ic2VydmVyJC5uZXh0KGVudHJpZXNbMF0pO1xyXG4gICAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgICAgY2FsbGJhY2soZW50cmllcywgb2JzZXJ2ZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgb2JzZXJ2ZXJPcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of angular-view-observer-directive
3
+ */
4
+ export * from './lib/angular-view-observer.directive';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdmlldy1vYnNlcnZlci1kaXJlY3RpdmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFuZ3VsYXItdmlldy1vYnNlcnZlci1kaXJlY3RpdmVcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLXZpZXctb2JzZXJ2ZXIuZGlyZWN0aXZlJztcclxuIl19
@@ -0,0 +1,64 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, DestroyRef, input, output, effect, Directive } from '@angular/core';
3
+ import { Subject, debounceTime } from 'rxjs';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+
6
+ class AngularViewObserverDirective {
7
+ //#endregion
8
+ //#region Constructor
9
+ constructor() {
10
+ //#region Injection
11
+ this._el = inject(ElementRef);
12
+ this.destroyRef = inject(DestroyRef);
13
+ //#endregion
14
+ //#region Inputs and Outputs
15
+ this.threshold = input(0.1);
16
+ this.ancestorSelector = input();
17
+ this.observerCallback = input();
18
+ this.visibleChange = output();
19
+ this.observer$ = new Subject();
20
+ this.observer$.asObservable().pipe(debounceTime(11), takeUntilDestroyed(this.destroyRef)).subscribe(entry => {
21
+ this.visibleChange.emit(entry.isIntersecting);
22
+ });
23
+ effect(() => {
24
+ const selector = this.ancestorSelector();
25
+ const callback = this.observerCallback();
26
+ let observerOptions = {
27
+ root: null,
28
+ threshold: this.threshold(),
29
+ rootMargin: '0px',
30
+ };
31
+ if (selector) {
32
+ observerOptions.root = this._el.nativeElement.closest(selector);
33
+ }
34
+ this.observer?.disconnect();
35
+ this.observer = new IntersectionObserver((entries, observer) => {
36
+ this.observer$.next(entries[0]);
37
+ if (callback) {
38
+ callback(entries, observer);
39
+ }
40
+ }, observerOptions);
41
+ this.observer.observe(this._el.nativeElement);
42
+ });
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularViewObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
45
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: AngularViewObserverDirective, isStandalone: true, selector: "[viewObserver]", inputs: { threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, ancestorSelector: { classPropertyName: "ancestorSelector", publicName: "ancestorSelector", isSignal: true, isRequired: false, transformFunction: null }, observerCallback: { classPropertyName: "observerCallback", publicName: "observerCallback", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, ngImport: i0 }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularViewObserverDirective, decorators: [{
48
+ type: Directive,
49
+ args: [{
50
+ selector: '[viewObserver]',
51
+ standalone: true
52
+ }]
53
+ }], ctorParameters: () => [] });
54
+
55
+ /*
56
+ * Public API Surface of angular-view-observer-directive
57
+ */
58
+
59
+ /**
60
+ * Generated bundle index. Do not edit.
61
+ */
62
+
63
+ export { AngularViewObserverDirective };
64
+ //# sourceMappingURL=angular-view-observer-directive.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-view-observer-directive.mjs","sources":["../../../projects/angular-view-observer-directive/src/lib/angular-view-observer.directive.ts","../../../projects/angular-view-observer-directive/src/public-api.ts","../../../projects/angular-view-observer-directive/src/angular-view-observer-directive.ts"],"sourcesContent":["import {DestroyRef, Directive, effect, ElementRef, inject, input, output} from '@angular/core';\r\nimport {debounceTime, Subject} from \"rxjs\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\n\r\n@Directive({\r\n selector: '[viewObserver]',\r\n standalone: true\r\n})\r\nexport class AngularViewObserverDirective {\r\n\r\n //#region Injection\r\n private _el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private destroyRef = inject(DestroyRef);\r\n //#endregion\r\n\r\n //#region Inputs and Outputs\r\n public threshold = input<number>(0.1);\r\n public ancestorSelector = input<string>();\r\n public observerCallback = input<Function>();\r\n\r\n public visibleChange = output<boolean>();\r\n //#endregion\r\n\r\n //#region Properties\r\n private observer: IntersectionObserver | undefined;\r\n private observer$ = new Subject<IntersectionObserverEntry>();\r\n //#endregion\r\n\r\n //#region Constructor\r\n constructor() {\r\n this.observer$.asObservable().pipe(\r\n debounceTime(11),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(entry => {\r\n this.visibleChange.emit(entry.isIntersecting)\r\n })\r\n\r\n effect(() => {\r\n const selector = this.ancestorSelector();\r\n const callback = this.observerCallback();\r\n let observerOptions: IntersectionObserverInit = {\r\n root: null,\r\n threshold: this.threshold(),\r\n rootMargin: '0px',\r\n }\r\n if (selector) {\r\n observerOptions.root = this._el.nativeElement.closest(selector);\r\n }\r\n\r\n this.observer?.disconnect();\r\n\r\n this.observer = new IntersectionObserver((entries, observer) => {\r\n this.observer$.next(entries[0]);\r\n if (callback) {\r\n callback(entries, observer);\r\n }\r\n }, observerOptions);\r\n\r\n this.observer.observe(this._el.nativeElement);\r\n })\r\n }\r\n //#endregion\r\n}\r\n","/*\r\n * Public API Surface of angular-view-observer-directive\r\n */\r\n\r\nexport * from './lib/angular-view-observer.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="angular-view-observer-directive" />
5
+ export * from './public-api';
@@ -0,0 +1,14 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AngularViewObserverDirective {
3
+ private _el;
4
+ private destroyRef;
5
+ threshold: import("@angular/core").InputSignal<number>;
6
+ ancestorSelector: import("@angular/core").InputSignal<string | undefined>;
7
+ observerCallback: import("@angular/core").InputSignal<Function | undefined>;
8
+ visibleChange: import("@angular/core").OutputEmitterRef<boolean>;
9
+ private observer;
10
+ private observer$;
11
+ constructor();
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<AngularViewObserverDirective, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AngularViewObserverDirective, "[viewObserver]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "ancestorSelector": { "alias": "ancestorSelector"; "required": false; "isSignal": true; }; "observerCallback": { "alias": "observerCallback"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
14
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "angular-view-observer-directive",
3
+ "version": "1.0.0",
4
+ "peerDependencies": {
5
+ "@angular/common": ">=17.0.0",
6
+ "@angular/core": ">=17.0.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/angular-view-observer-directive.mjs",
13
+ "typings": "index.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "esm2022": "./esm2022/angular-view-observer-directive.mjs",
21
+ "esm": "./esm2022/angular-view-observer-directive.mjs",
22
+ "default": "./fesm2022/angular-view-observer-directive.mjs"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1 @@
1
+ export * from './lib/angular-view-observer.directive';