UNPKG

@ng-dnd/core

Version:

Drag and Drop for Angular

43 lines 4.38 kB
export class Target { constructor(spec, monitor) { this.spec = spec; this.monitor = monitor; this.monitor = monitor; } withChangeDetection(fn) { const x = fn(); return x; } receiveMonitor(monitor) { this.monitor = monitor; } canDrop() { if (!this.spec.canDrop) { return true; } // Don't run isDragging in the zone. Should be a pure function of `this`. return this.spec.canDrop(this.monitor); } hover() { if (!this.spec.hover) { return; } this.withChangeDetection(() => { this.spec.hover?.(this.monitor); }); } drop() { if (!this.spec.drop) { return undefined; } return this.withChangeDetection(() => { return this.spec.drop?.(this.monitor); }); } } export function createTargetFactory(spec) { return function createTarget(monitor) { return new Target(spec, monitor); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVGFyZ2V0RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jcmVhdGVUYXJnZXRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxNQUFNO0lBQ2pCLFlBQ1UsSUFBb0IsRUFDcEIsT0FBMEI7UUFEMUIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFFbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELG1CQUFtQixDQUFJLEVBQVc7UUFDaEMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBWTtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHlFQUF5RTtRQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQW9CO0lBQ3RELE9BQU8sU0FBUyxZQUFZLENBQUMsT0FBWTtRQUN2QyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJvcFRhcmdldCB9IGZyb20gJ2RuZC1jb3JlJztcbmltcG9ydCB7IERyb3BUYXJnZXRTcGVjIH0gZnJvbSAnLi4vZHJvcC10YXJnZXQtc3BlY2lmaWNhdGlvbic7XG5pbXBvcnQgeyBEcm9wVGFyZ2V0TW9uaXRvciB9IGZyb20gJy4uL3RhcmdldC1tb25pdG9yJztcblxuZXhwb3J0IGNsYXNzIFRhcmdldCBpbXBsZW1lbnRzIERyb3BUYXJnZXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNwZWM6IERyb3BUYXJnZXRTcGVjLFxuICAgIHByaXZhdGUgbW9uaXRvcjogRHJvcFRhcmdldE1vbml0b3JcbiAgKSB7XG4gICAgdGhpcy5tb25pdG9yID0gbW9uaXRvcjtcbiAgfVxuXG4gIHdpdGhDaGFuZ2VEZXRlY3Rpb248VD4oZm46ICgpID0+IFQpOiBUIHtcbiAgICBjb25zdCB4ID0gZm4oKTtcbiAgICByZXR1cm4geDtcbiAgfVxuXG4gIHJlY2VpdmVNb25pdG9yKG1vbml0b3I6IGFueSkge1xuICAgIHRoaXMubW9uaXRvciA9IG1vbml0b3I7XG4gIH1cblxuICBjYW5Ecm9wKCkge1xuICAgIGlmICghdGhpcy5zcGVjLmNhbkRyb3ApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIERvbid0IHJ1biBpc0RyYWdnaW5nIGluIHRoZSB6b25lLiBTaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIGB0aGlzYC5cbiAgICByZXR1cm4gdGhpcy5zcGVjLmNhbkRyb3AodGhpcy5tb25pdG9yKTtcbiAgfVxuXG4gIGhvdmVyKCkge1xuICAgIGlmICghdGhpcy5zcGVjLmhvdmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMud2l0aENoYW5nZURldGVjdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLnNwZWMuaG92ZXI/Lih0aGlzLm1vbml0b3IpO1xuICAgIH0pO1xuICB9XG5cbiAgZHJvcCgpIHtcbiAgICBpZiAoIXRoaXMuc3BlYy5kcm9wKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLndpdGhDaGFuZ2VEZXRlY3Rpb24oKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3BlYy5kcm9wPy4odGhpcy5tb25pdG9yKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFyZ2V0RmFjdG9yeShzcGVjOiBEcm9wVGFyZ2V0U3BlYykge1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlVGFyZ2V0KG1vbml0b3I6IGFueSk6IERyb3BUYXJnZXQge1xuICAgIHJldHVybiBuZXcgVGFyZ2V0KHNwZWMsIG1vbml0b3IpO1xuICB9O1xufVxuIl19