@ng-dnd/core
Version:
Drag and Drop for Angular
41 lines • 6.22 kB
JavaScript
import { BehaviorSubject, Subscription } from 'rxjs';
import { distinctUntilChanged, map } from 'rxjs/operators';
import { areCollectsEqual } from '../utils/areCollectsEqual';
export class DragLayerConnectionClass {
constructor(manager) {
this.manager = manager;
this.subscription = new Subscription();
this.isTicking = false;
this.handleStateChange = () => {
const monitor = this.manager.getMonitor();
this.collector$.next(monitor);
};
this.handleOffsetChange = () => {
const monitor = this.manager.getMonitor();
this.collector$.next(monitor);
};
const monitor = this.manager.getMonitor();
this.collector$ = new BehaviorSubject(monitor);
this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleOffsetChange);
this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleStateChange);
this.subscription.add(() => {
this.unsubscribeFromOffsetChange();
this.unsubscribeFromStateChange();
});
this.handleStateChange();
}
listen(mapFn) {
return this.collector$.pipe(map(mapFn), distinctUntilChanged(areCollectsEqual));
}
unsubscribe() {
this.collector$.complete();
this.subscription.unsubscribe();
}
add(teardown) {
return this.subscription.add(teardown);
}
get closed() {
return this.subscription.closed;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1sYXllci1jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ludGVybmFsL2RyYWctbGF5ZXItY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsWUFBb0IsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFGcEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBZ0IxQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRVYsc0JBQWlCLEdBQUcsR0FBRyxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFzQixDQUFDO1lBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUNNLHVCQUFrQixHQUFHLEdBQUcsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBc0IsQ0FBQztZQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUF0QkEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFtQixPQUFPLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQywwQkFBMEIsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQWFELE1BQU0sQ0FBSSxLQUF1QztRQUMvQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxRQUF1QjtRQUN6QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTWFuYWdlciwgVW5zdWJzY3JpYmUgfSBmcm9tICdkbmQtY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgVGVhcmRvd25Mb2dpYyB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERyYWdMYXllciB9IGZyb20gJy4uL2Nvbm5lY3Rpb24tdHlwZXMnO1xuaW1wb3J0IHsgRHJhZ0xheWVyTW9uaXRvciB9IGZyb20gJy4uL2xheWVyLW1vbml0b3InO1xuaW1wb3J0IHsgYXJlQ29sbGVjdHNFcXVhbCB9IGZyb20gJy4uL3V0aWxzL2FyZUNvbGxlY3RzRXF1YWwnO1xuXG5leHBvcnQgY2xhc3MgRHJhZ0xheWVyQ29ubmVjdGlvbkNsYXNzIGltcGxlbWVudHMgRHJhZ0xheWVyIHtcbiAgdW5zdWJzY3JpYmVGcm9tT2Zmc2V0Q2hhbmdlOiBVbnN1YnNjcmliZTtcbiAgdW5zdWJzY3JpYmVGcm9tU3RhdGVDaGFuZ2U6IFVuc3Vic2NyaWJlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3RvciQ6IEJlaGF2aW9yU3ViamVjdDxEcmFnTGF5ZXJNb25pdG9yPjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYW5hZ2VyOiBEcmFnRHJvcE1hbmFnZXIpIHtcbiAgICBjb25zdCBtb25pdG9yID0gdGhpcy5tYW5hZ2VyLmdldE1vbml0b3IoKTtcbiAgICB0aGlzLmNvbGxlY3RvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERyYWdMYXllck1vbml0b3I+KG1vbml0b3IpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tT2Zmc2V0Q2hhbmdlID0gbW9uaXRvci5zdWJzY3JpYmVUb09mZnNldENoYW5nZSh0aGlzLmhhbmRsZU9mZnNldENoYW5nZSk7XG4gICAgdGhpcy51bnN1YnNjcmliZUZyb21TdGF0ZUNoYW5nZSA9IG1vbml0b3Iuc3Vic2NyaWJlVG9TdGF0ZUNoYW5nZSh0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCgoKSA9PiB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlRnJvbU9mZnNldENoYW5nZSgpO1xuICAgICAgdGhpcy51bnN1YnNjcmliZUZyb21TdGF0ZUNoYW5nZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgaXNUaWNraW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yID0gdGhpcy5tYW5hZ2VyLmdldE1vbml0b3IoKSBhcyBEcmFnTGF5ZXJNb25pdG9yO1xuICAgIHRoaXMuY29sbGVjdG9yJC5uZXh0KG1vbml0b3IpO1xuICB9O1xuICBwcml2YXRlIGhhbmRsZU9mZnNldENoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yID0gdGhpcy5tYW5hZ2VyLmdldE1vbml0b3IoKSBhcyBEcmFnTGF5ZXJNb25pdG9yO1xuICAgIHRoaXMuY29sbGVjdG9yJC5uZXh0KG1vbml0b3IpO1xuICB9O1xuXG4gIGxpc3RlbjxQPihtYXBGbjogKG1vbml0b3I6IERyYWdMYXllck1vbml0b3IpID0+IFApOiBPYnNlcnZhYmxlPFA+IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0b3IkLnBpcGUobWFwKG1hcEZuKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoYXJlQ29sbGVjdHNFcXVhbCkpO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5jb2xsZWN0b3IkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFkZCh0ZWFyZG93bjogVGVhcmRvd25Mb2dpYykge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGVhcmRvd24pO1xuICB9XG5cbiAgZ2V0IGNsb3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb24uY2xvc2VkO1xuICB9XG59XG4iXX0=