angular-infinity-scrolling 0.0.1
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.
- package/README.md +24 -0
- package/esm2022/angular-infinity-scroller.mjs +5 -0
- package/esm2022/lib/angular-infinity-scroller.directive.mjs +42 -0
- package/esm2022/public-api.mjs +5 -0
- package/fesm2022/angular-infinity-scroller.mjs +53 -0
- package/fesm2022/angular-infinity-scroller.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/angular-infinity-scroller.directive.d.ts +14 -0
- package/package.json +25 -0
- package/public-api.d.ts +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# AngularInfinityScroller
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project angular-infinity-scroller` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project angular-infinity-scroller`.
|
|
8
|
+
> Note: Don't forget to add `--project angular-infinity-scroller` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build angular-infinity-scroller` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build angular-infinity-scroller`, go to the dist folder `cd dist/angular-infinity-scroller` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test angular-infinity-scroller` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1pbmZpbml0eS1zY3JvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItaW5maW5pdHktc2Nyb2xsZXIvc3JjL2FuZ3VsYXItaW5maW5pdHktc2Nyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject, input, output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AngularInfinityScrollerDirective {
|
|
4
|
+
constructor() { }
|
|
5
|
+
scrollDistance = input();
|
|
6
|
+
onScrolled = output();
|
|
7
|
+
el = inject(ElementRef);
|
|
8
|
+
prevScrollHeight = 0;
|
|
9
|
+
ngAfterViewInit() {
|
|
10
|
+
this.el.nativeElement.addEventListener('scroll', this.onScroll.bind(this));
|
|
11
|
+
}
|
|
12
|
+
ngOnDestroy() {
|
|
13
|
+
this.el.nativeElement.removeEventListener('scroll', this.onScroll.bind(this));
|
|
14
|
+
}
|
|
15
|
+
isEmit = true;
|
|
16
|
+
onScroll() {
|
|
17
|
+
const height = Math.floor(this.el?.nativeElement.scrollHeight - this.el.nativeElement.clientHeight);
|
|
18
|
+
const scrollValue = Math.floor(this.el?.nativeElement.scrollTop);
|
|
19
|
+
const emitTriggerHeight = Math.ceil((1 - ((this.scrollDistance() ?? 2) / 10)) * height);
|
|
20
|
+
if (scrollValue >= (emitTriggerHeight) && !this.isEmit) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
else if (scrollValue < (emitTriggerHeight)) {
|
|
24
|
+
this.isEmit = true;
|
|
25
|
+
}
|
|
26
|
+
if (scrollValue >= (emitTriggerHeight) && this.prevScrollHeight !== height) {
|
|
27
|
+
this.onScrolled.emit();
|
|
28
|
+
this.prevScrollHeight = height;
|
|
29
|
+
this.isEmit = false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularInfinityScrollerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
33
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AngularInfinityScrollerDirective, isStandalone: true, selector: "[angularInfinityScroller]", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScrolled: "onScrolled" }, ngImport: i0 });
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularInfinityScrollerDirective, decorators: [{
|
|
36
|
+
type: Directive,
|
|
37
|
+
args: [{
|
|
38
|
+
selector: '[angularInfinityScroller]',
|
|
39
|
+
standalone: true
|
|
40
|
+
}]
|
|
41
|
+
}], ctorParameters: () => [] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1pbmZpbml0eS1zY3JvbGxlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWluZmluaXR5LXNjcm9sbGVyL3NyYy9saWIvYW5ndWxhci1pbmZpbml0eS1zY3JvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTdFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFFM0MsZ0JBQWdCLENBQUM7SUFDVixjQUFjLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDakMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLEVBQUUsR0FBOEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELGdCQUFnQixHQUFVLENBQUMsQ0FBQztJQUNwQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ08sTUFBTSxHQUFXLElBQUksQ0FBQztJQUN0QixRQUFRO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRSxNQUFNLGlCQUFpQixHQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBRSxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pGLElBQUcsV0FBVyxJQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQzthQUNJLElBQUcsV0FBVyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFHLFdBQVcsSUFBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE1BQU0sRUFBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQzt3R0E5QlUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBSjVDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FuZ3VsYXJJbmZpbml0eVNjcm9sbGVyXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhckluZmluaXR5U2Nyb2xsZXJEaXJlY3RpdmUge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gIHB1YmxpYyBzY3JvbGxEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oKTtcclxuICBwdWJsaWMgb25TY3JvbGxlZCA9IG91dHB1dCgpO1xyXG4gIHByaXZhdGUgZWw6RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgcHJpdmF0ZSBwcmV2U2Nyb2xsSGVpZ2h0Om51bWJlciA9IDA7XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc0VtaXQ6Ym9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBvblNjcm9sbCgpOnZvaWR7XHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5lbD8ubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KTtcclxuICAgICAgY29uc3Qgc2Nyb2xsVmFsdWUgPSBNYXRoLmZsb29yKHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wKTtcclxuICAgICAgY29uc3QgZW1pdFRyaWdnZXJIZWlnaHQgID0gTWF0aC5jZWlsKCgxLSgodGhpcy5zY3JvbGxEaXN0YW5jZSgpPz8yKS8xMCkpKmhlaWdodCk7XHJcbiAgICAgIGlmKHNjcm9sbFZhbHVlPj0gKGVtaXRUcmlnZ2VySGVpZ2h0KSAmJiAhdGhpcy5pc0VtaXQpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHNjcm9sbFZhbHVlIDwgKGVtaXRUcmlnZ2VySGVpZ2h0KSl7XHJcbiAgICAgICAgdGhpcy5pc0VtaXQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHNjcm9sbFZhbHVlPj0gKGVtaXRUcmlnZ2VySGVpZ2h0KSAmJiB0aGlzLnByZXZTY3JvbGxIZWlnaHQgIT09IGhlaWdodCl7XHJcbiAgICAgICAgdGhpcy5vblNjcm9sbGVkLmVtaXQoKTtcclxuICAgICAgICB0aGlzLnByZXZTY3JvbGxIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5pc0VtaXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of angular-infinity-scroller
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/angular-infinity-scroller.directive';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItaW5maW5pdHktc2Nyb2xsZXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJDQUEyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFuZ3VsYXItaW5maW5pdHktc2Nyb2xsZXJcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLWluZmluaXR5LXNjcm9sbGVyLmRpcmVjdGl2ZSdcclxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, output, inject, ElementRef, Directive } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class AngularInfinityScrollerDirective {
|
|
5
|
+
constructor() { }
|
|
6
|
+
scrollDistance = input();
|
|
7
|
+
onScrolled = output();
|
|
8
|
+
el = inject(ElementRef);
|
|
9
|
+
prevScrollHeight = 0;
|
|
10
|
+
ngAfterViewInit() {
|
|
11
|
+
this.el.nativeElement.addEventListener('scroll', this.onScroll.bind(this));
|
|
12
|
+
}
|
|
13
|
+
ngOnDestroy() {
|
|
14
|
+
this.el.nativeElement.removeEventListener('scroll', this.onScroll.bind(this));
|
|
15
|
+
}
|
|
16
|
+
isEmit = true;
|
|
17
|
+
onScroll() {
|
|
18
|
+
const height = Math.floor(this.el?.nativeElement.scrollHeight - this.el.nativeElement.clientHeight);
|
|
19
|
+
const scrollValue = Math.floor(this.el?.nativeElement.scrollTop);
|
|
20
|
+
const emitTriggerHeight = Math.ceil((1 - ((this.scrollDistance() ?? 2) / 10)) * height);
|
|
21
|
+
if (scrollValue >= (emitTriggerHeight) && !this.isEmit) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
else if (scrollValue < (emitTriggerHeight)) {
|
|
25
|
+
this.isEmit = true;
|
|
26
|
+
}
|
|
27
|
+
if (scrollValue >= (emitTriggerHeight) && this.prevScrollHeight !== height) {
|
|
28
|
+
this.onScrolled.emit();
|
|
29
|
+
this.prevScrollHeight = height;
|
|
30
|
+
this.isEmit = false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularInfinityScrollerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
34
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AngularInfinityScrollerDirective, isStandalone: true, selector: "[angularInfinityScroller]", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScrolled: "onScrolled" }, ngImport: i0 });
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularInfinityScrollerDirective, decorators: [{
|
|
37
|
+
type: Directive,
|
|
38
|
+
args: [{
|
|
39
|
+
selector: '[angularInfinityScroller]',
|
|
40
|
+
standalone: true
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: () => [] });
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* Public API Surface of angular-infinity-scroller
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Generated bundle index. Do not edit.
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
export { AngularInfinityScrollerDirective };
|
|
53
|
+
//# sourceMappingURL=angular-infinity-scroller.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-infinity-scroller.mjs","sources":["../../../projects/angular-infinity-scroller/src/lib/angular-infinity-scroller.directive.ts","../../../projects/angular-infinity-scroller/src/public-api.ts","../../../projects/angular-infinity-scroller/src/angular-infinity-scroller.ts"],"sourcesContent":["import { Directive, ElementRef, inject, input, output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[angularInfinityScroller]',\r\n standalone: true\r\n})\r\nexport class AngularInfinityScrollerDirective {\r\n\r\n constructor() { }\r\n public scrollDistance = input<number>();\r\n public onScrolled = output();\r\n private el:ElementRef<HTMLDivElement> = inject(ElementRef);\r\n private prevScrollHeight:number = 0;\r\n ngAfterViewInit(): void {\r\n this.el.nativeElement.addEventListener('scroll',this.onScroll.bind(this));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.el.nativeElement.removeEventListener('scroll',this.onScroll.bind(this));\r\n }\r\n private isEmit:boolean = true;\r\n private onScroll():void{\r\n const height = Math.floor(this.el?.nativeElement.scrollHeight - this.el.nativeElement.clientHeight);\r\n const scrollValue = Math.floor(this.el?.nativeElement.scrollTop);\r\n const emitTriggerHeight = Math.ceil((1-((this.scrollDistance()??2)/10))*height);\r\n if(scrollValue>= (emitTriggerHeight) && !this.isEmit){\r\n return;\r\n }\r\n else if(scrollValue < (emitTriggerHeight)){\r\n this.isEmit = true;\r\n }\r\n if(scrollValue>= (emitTriggerHeight) && this.prevScrollHeight !== height){\r\n this.onScrolled.emit();\r\n this.prevScrollHeight = height;\r\n this.isEmit = false;\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of angular-infinity-scroller\r\n */\r\n\r\nexport * from './lib/angular-infinity-scroller.directive'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAMa,gCAAgC,CAAA;AAE3C,IAAA,WAAA,GAAA,GAAiB;IACV,cAAc,GAAG,KAAK,EAAU,CAAC;IACjC,UAAU,GAAG,MAAM,EAAE,CAAC;AACrB,IAAA,EAAE,GAA8B,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,gBAAgB,GAAU,CAAC,CAAC;IACpC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9E;IACO,MAAM,GAAW,IAAI,CAAC;IACtB,QAAQ,GAAA;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACpG,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,cAAc,EAAE,IAAE,CAAC,IAAE,EAAE,CAAC,IAAE,MAAM,CAAC,CAAC;QACjF,IAAG,WAAW,KAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAC;YACnD,OAAO;SACR;AACI,aAAA,IAAG,WAAW,IAAI,iBAAiB,CAAC,EAAC;AACxC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;AACD,QAAA,IAAG,WAAW,KAAI,iBAAiB,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAC;AACvE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAC/B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;KACJ;wGA9BU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACLD;;AAEG;;ACFH;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class AngularInfinityScrollerDirective {
|
|
3
|
+
constructor();
|
|
4
|
+
scrollDistance: import("@angular/core").InputSignal<number | undefined>;
|
|
5
|
+
onScrolled: import("@angular/core").OutputEmitterRef<void>;
|
|
6
|
+
private el;
|
|
7
|
+
private prevScrollHeight;
|
|
8
|
+
ngAfterViewInit(): void;
|
|
9
|
+
ngOnDestroy(): void;
|
|
10
|
+
private isEmit;
|
|
11
|
+
private onScroll;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AngularInfinityScrollerDirective, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AngularInfinityScrollerDirective, "[angularInfinityScroller]", never, { "scrollDistance": { "alias": "scrollDistance"; "required": false; "isSignal": true; }; }, { "onScrolled": "onScrolled"; }, never, never, true, never>;
|
|
14
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "angular-infinity-scrolling",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^18.2.0",
|
|
6
|
+
"@angular/core": "^18.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/angular-infinity-scroller.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-infinity-scroller.mjs",
|
|
21
|
+
"esm": "./esm2022/angular-infinity-scroller.mjs",
|
|
22
|
+
"default": "./fesm2022/angular-infinity-scroller.mjs"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/angular-infinity-scroller.directive';
|