"use strict";
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
var _classCallCheck = function (instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
var invariant = _interopRequire(require("invariant"));
var isArray = _interopRequire(require("lodash/lang/isArray"));
function matchesType(targetType, draggedItemType) {
if (isArray(targetType)) {
return targetType.some(function (t) {
return t === draggedItemType;
});
} else {
return targetType === draggedItemType;
}
}
var DragDropMonitor = (function () {
function DragDropMonitor(flux, registry) {
_classCallCheck(this, DragDropMonitor);
this.dragOperationStore = flux.dragOperationStore;
this.registry = registry;
}
DragDropMonitor.prototype.addChangeListener = function addChangeListener(listener, context) {
this.dragOperationStore.addListener("change", listener, context);
};
DragDropMonitor.prototype.removeChangeListener = function removeChangeListener(listener, context) {
this.dragOperationStore.removeListener("change", listener, context);
};
DragDropMonitor.prototype.canDrag = function canDrag(sourceHandle) {
var source = this.registry.getSource(sourceHandle);
invariant(source, "Expected to find a valid source.");
if (this.isDragging()) {
return false;
}
return source.canDrag(this, sourceHandle);
};
DragDropMonitor.prototype.canDrop = function canDrop(targetHandle) {
var target = this.registry.getTarget(targetHandle);
invariant(target, "Expected to find a valid target.");
if (!this.isDragging() || this.didDrop()) {
return false;
}
var targetType = this.registry.getTargetType(targetHandle);
var draggedItemType = this.getItemType();
return matchesType(targetType, draggedItemType) && target.canDrop(this, targetHandle);
};
DragDropMonitor.prototype.isDragging = function isDragging(sourceHandle) {
var isDragging = this.dragOperationStore.isDragging();
if (!isDragging || typeof sourceHandle === "undefined") {
return isDragging;
}
var sourceType = this.registry.getSourceType(sourceHandle);
var draggedItemType = this.getItemType();
if (sourceType !== draggedItemType) {
return false;
}
var source = this.registry.getSource(sourceHandle, true);
if (!source) {
return false;
}
return source.isDragging(this, sourceHandle);
};
DragDropMonitor.prototype.isOver = function isOver(targetHandle) {
var shallow = arguments[1] === undefined ? false : arguments[1];
var targetHandles = this.getTargetHandles();
if (!targetHandles.length) {
return false;
}
var index = targetHandles.indexOf(targetHandle);
if (shallow) {
return index === targetHandles.length - 1;
} else {
return index > -1;
}
};
DragDropMonitor.prototype.getItemType = function getItemType() {
return this.dragOperationStore.getItemType();
};
DragDropMonitor.prototype.getItem = function getItem() {
return this.dragOperationStore.getItem();
};
DragDropMonitor.prototype.getSourceHandle = function getSourceHandle() {
return this.dragOperationStore.getSourceHandle();
};
DragDropMonitor.prototype.getTargetHandles = function getTargetHandles() {
return this.dragOperationStore.getTargetHandles();
};
DragDropMonitor.prototype.getDropResult = function getDropResult() {
return this.dragOperationStore.getDropResult();
};
DragDropMonitor.prototype.didDrop = function didDrop() {
return this.dragOperationStore.didDrop();
};
return DragDropMonitor;
})();
module.exports = DragDropMonitor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYW4vRG9jdW1lbnRzL1Byb2plY3RzL2RuZC1jb3JlL21vZHVsZXMvRHJhZ0Ryb3BNb25pdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFPLFNBQVMsMkJBQU0sV0FBVzs7SUFDMUIsT0FBTywyQkFBTSxxQkFBcUI7O0FBRXpDLFNBQVMsV0FBVyxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUU7QUFDaEQsTUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDdkIsV0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQzthQUFJLENBQUMsS0FBSyxlQUFlO0tBQUEsQ0FBQyxDQUFDO0dBQ3BELE1BQU07QUFDTCxXQUFPLFVBQVUsS0FBSyxlQUFlLENBQUM7R0FDdkM7Q0FDRjs7SUFFb0IsZUFBZTtBQUN2QixXQURRLGVBQWUsQ0FDdEIsSUFBSSxFQUFFLFFBQVEsRUFBRTswQkFEVCxlQUFlOztBQUVoQyxRQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0FBQ2xELFFBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0dBQzFCOztBQUprQixpQkFBZSxXQU1sQyxpQkFBaUIsR0FBQSwyQkFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFO0FBQ25DLFFBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsRTs7QUFSa0IsaUJBQWUsV0FVbEMsb0JBQW9CLEdBQUEsOEJBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRTtBQUN0QyxRQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7R0FDckU7O0FBWmtCLGlCQUFlLFdBY2xDLE9BQU8sR0FBQSxpQkFBQyxZQUFZLEVBQUU7QUFDcEIsUUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMs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QWUsRUFBRSxDQUFDO0dBQ2xEOztBQW5Ga0IsaUJBQWUsV0FxRmxDLGdCQUFnQixHQUFBLDRCQUFHO0FBQ2pCLFdBQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUM7R0FDbkQ7O0FBdkZrQixpQkFBZSxXQXlGbEMsYUFBYSxHQUFBLHlCQUFHO0FBQ2QsV0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7R0FDaEQ7O0FBM0ZrQixpQkFBZSxXQTZGbEMsT0FBTyxHQUFBLG1CQUFHO0FBQ1IsV0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7R0FDMUM7O1NBL0ZrQixlQUFlOzs7aUJBQWYsZUFBZSIsImZpbGUiOiIvVXNlcnMvZGFuL0RvY3VtZW50cy9Qcm9qZWN0cy9kbmQtY29yZS9tb2R1bGVzL0RyYWdEcm9wTW9uaXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50JztcbmltcG9ydCBpc0FycmF5IGZyb20gJ2xvZGFzaC9sYW5nL2lzQXJyYXknO1xuXG5mdW5jdGlvbiBtYXRjaGVzVHlwZSh0YXJnZXRUeXBlLCBkcmFnZ2VkSXRlbVR5cGUpIHtcbiAgaWYgKGlzQXJyYXkodGFyZ2V0VHlwZSkpIHtcbiAgICByZXR1cm4gdGFyZ2V0VHlwZS5zb21lKHQgPT4gdCA9PT0gZHJhZ2dlZEl0ZW1UeXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGFyZ2V0VHlwZSA9PT0gZHJhZ2dlZEl0ZW1UeXBlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyYWdEcm9wTW9uaXRvciB7XG4gIGNvbnN0cnVjdG9yKGZsdXgsIHJlZ2lzdHJ5KSB7XG4gICAgdGhpcy5kcmFnT3BlcmF0aW9uU3RvcmUgPSBmbHV4LmRyYWdPcGVyYXRpb25TdG9yZTtcbiAgICB0aGlzLnJlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBhZGRDaGFuZ2VMaXN0ZW5lcihsaXN0ZW5lciwgY29udGV4dCkge1xuICAgIHRoaXMuZHJhZ09wZXJhdGlvblN0b3JlLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lciwgY29udGV4dCk7XG4gIH1cblxuICByZW1vdmVDaGFuZ2VMaXN0ZW5lcihsaXN0ZW5lciwgY29udGV4dCkge1xuICAgIHRoaXMuZHJhZ09wZXJhdGlvblN0b3JlLnJlbW92ZUxpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lciwgY29udGV4dCk7XG4gIH1cblxuICBjYW5EcmFnKHNvdXJjZUhhbmRsZSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMucmVnaXN0cnkuZ2V0U291cmNlKHNvdXJjZUhhbmRsZSk7XG4gICAgaW52YXJpYW50KHNvdXJjZSwgJ0V4cGVjdGVkIHRvIGZpbmQgYSB2YWxpZCBzb3VyY2UuJyk7XG5cbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlLmNhbkRyYWcodGhpcywgc291cmNlSGFuZGxlKTtcbiAgfVxuXG4gIGNhbkRyb3AodGFyZ2V0SGFuZGxlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5yZWdpc3RyeS5nZXRUYXJnZXQodGFyZ2V0SGFuZGxlKTtcbiAgICBpbnZhcmlhbnQodGFyZ2V0LCAnRXhwZWN0ZWQgdG8gZmluZCBhIHZhbGlkIHRhcmdldC4nKTtcblxuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKCkgfHwgdGhpcy5kaWREcm9wKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRUeXBlID0gdGhpcy5yZWdpc3RyeS5nZXRUYXJnZXRUeXBlKHRhcmdldEhhbmRsZSk7XG4gICAgY29uc3QgZHJhZ2dlZEl0ZW1UeXBlID0gdGhpcy5nZXRJdGVtVHlwZSgpO1xuICAgIHJldHVybiBtYXRjaGVzVHlwZSh0YXJnZXRUeXBlLCBkcmFnZ2VkSXRlbVR5cGUpICYmXG4gICAgICAgICAgIHRhcmdldC5jYW5Ecm9wKHRoaXMsIHRhcmdldEhhbmRsZSk7XG4gIH1cblxuICBpc0RyYWdnaW5nKHNvdXJjZUhhbmRsZSkge1xuICAgIGNvbnN0IGlzRHJhZ2dpbmcgPSB0aGlzLmRyYWdPcGVyYXRpb25TdG9yZS5pc0RyYWdnaW5nKCk7XG4gICAgaWYgKCFpc0RyYWdnaW5nIHx8IHR5cGVvZiBzb3VyY2VIYW5kbGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gaXNEcmFnZ2luZztcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VUeXBlID0gdGhpcy5yZWdpc3RyeS5nZXRTb3VyY2VUeXBlKHNvdXJjZUhhbmRsZSk7XG4gICAgY29uc3QgZHJhZ2dlZEl0ZW1UeXBlID0gdGhpcy5nZXRJdGVtVHlwZSgpO1xuICAgIGlmIChzb3VyY2VUeXBlICE9PSBkcmFnZ2VkSXRlbVR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgc291cmNlID0gdGhpcy5yZWdpc3RyeS5nZXRTb3VyY2Uoc291cmNlSGFuZGxlLCB0cnVlKTtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBzb3VyY2UuaXNEcmFnZ2luZyh0aGlzLCBzb3VyY2VIYW5kbGUpO1xuICB9XG5cbiAgaXNPdmVyKHRhcmdldEhhbmRsZSwgc2hhbGxvdyA9IGZhbHNlKSB7XG4gICAgY29uc3QgdGFyZ2V0SGFuZGxlcyA9IHRoaXMuZ2V0VGFyZ2V0SGFuZGxlcygpO1xuICAgIGlmICghdGFyZ2V0SGFuZGxlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IHRhcmdldEhhbmRsZXMuaW5kZXhPZih0YXJnZXRIYW5kbGUpO1xuICAgIGlmIChzaGFsbG93KSB7XG4gICAgICByZXR1cm4gaW5kZXggPT09IHRhcmdldEhhbmRsZXMubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGluZGV4ID4gLTE7XG4gICAgfVxuICB9XG5cbiAgZ2V0SXRlbVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ09wZXJhdGlvblN0b3JlLmdldEl0ZW1UeXBlKCk7XG4gIH1cblxuICBnZXRJdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmRyYWdPcGVyYXRpb25TdG9yZS5nZXRJdGVtKCk7XG4gIH1cblxuICBnZXRTb3VyY2VIYW5kbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ09wZXJhdGlvblN0b3JlLmdldFNvdXJjZUhhbmRsZSgpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0SGFuZGxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnT3BlcmF0aW9uU3RvcmUuZ2V0VGFyZ2V0SGFuZGxlcygpO1xuICB9XG5cbiAgZ2V0RHJvcFJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnT3BlcmF0aW9uU3RvcmUuZ2V0RHJvcFJlc3VsdCgpO1xuICB9XG5cbiAgZGlkRHJvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnT3BlcmF0aW9uU3RvcmUuZGlkRHJvcCgpO1xuICB9XG59Il19 |