UNPKG

@ng-dnd/core

Version:

Drag and Drop for Angular

41 lines 6.22 kB
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=