Skip to content

Commit 7e50d74

Browse files
committed
perf: deregister scroll listener once drag complete
1 parent f6a5cde commit 7e50d74

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/droppable.directive.ts

+10-11
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@ import {
1010
Renderer2
1111
} from '@angular/core';
1212
import { Subscription } from 'rxjs';
13-
import {
14-
distinctUntilChanged,
15-
pairwise,
16-
filter,
17-
map,
18-
mergeMap
19-
} from 'rxjs/operators';
13+
import { distinctUntilChanged, pairwise, filter, map } from 'rxjs/operators';
2014
import { DraggableHelper } from './draggable-helper.provider';
2115

2216
function isCoordinateWithinRectangle(
@@ -80,9 +74,13 @@ export class DroppableDirective implements OnInit, OnDestroy {
8074
let droppableRectangle = this.element.nativeElement.getBoundingClientRect();
8175

8276
/* istanbul ignore next */
83-
this.renderer.listen('window', 'scroll', () => {
84-
droppableRectangle = this.element.nativeElement.getBoundingClientRect();
85-
});
77+
const deregisterScrollListener = this.renderer.listen(
78+
'window',
79+
'scroll',
80+
() => {
81+
droppableRectangle = this.element.nativeElement.getBoundingClientRect();
82+
}
83+
);
8684

8785
let currentDragDropData: any;
8886
const overlaps$ = drag$.pipe(
@@ -141,8 +139,9 @@ export class DroppableDirective implements OnInit, OnDestroy {
141139
});
142140
});
143141

144-
drag$.pipe(mergeMap(() => overlaps$)).subscribe({
142+
drag$.subscribe({
145143
complete: () => {
144+
deregisterScrollListener();
146145
if (dragOverActive) {
147146
this.renderer.removeClass(
148147
this.element.nativeElement,

0 commit comments

Comments
 (0)