"use strict";
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
var _inherits = function (subClass, superClass) { Iif (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); Eif (superClass) subClass.__proto__ = superClass; };
var _classCallCheck = function (instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
var Actions = require("flummox").Actions;
var invariant = _interopRequire(require("invariant"));
var isArray = _interopRequire(require("lodash/lang/isArray"));
var isObject = _interopRequire(require("lodash/lang/isObject"));
var DragDropActions = (function (_Actions) {
function DragDropActions(manager) {
_classCallCheck(this, DragDropActions);
_Actions.call(this);
this.manager = manager;
}
_inherits(DragDropActions, _Actions);
DragDropActions.prototype.beginDrag = function beginDrag(sourceHandle) {
var monitor = this.manager.getMonitor();
var registry = this.manager.getRegistry();
invariant(!monitor.isDragging(), "Cannot call beginDrag while dragging.");
if (!monitor.canDrag(sourceHandle)) {
return;
}
var source = registry.getSource(sourceHandle);
var item = source.beginDrag(monitor, sourceHandle);
invariant(isObject(item), "Item must be an object.");
registry.pinSource(sourceHandle);
var itemType = registry.getSourceType(sourceHandle);
return { itemType: itemType, item: item, sourceHandle: sourceHandle };
};
DragDropActions.prototype.hover = function hover(targetHandles) {
invariant(isArray(targetHandles), "Target handles must be an array.");
targetHandles = targetHandles.slice(0);
var registry = this.manager.getRegistry();
for (var i = 0; i < targetHandles.length; i++) {
invariant(targetHandles.lastIndexOf(targetHandles[i]) === i, "Target handles should be unique in the passed array.");
invariant(registry.getTarget(targetHandles[i]), "All hovered target handles must be registered.");
}
return { targetHandles: targetHandles };
};
DragDropActions.prototype.drop = function drop() {
var _this = this;
var monitor = this.manager.getMonitor();
var registry = this.manager.getRegistry();
invariant(monitor.isDragging(), "Cannot call drop while not dragging.");
var _getActionIds = this.getActionIds();
var dropActionId = _getActionIds.drop;
var targetHandles = monitor.getTargetHandles().filter(monitor.canDrop, monitor);
targetHandles.reverse();
targetHandles.forEach(function (targetHandle, index) {
var target = registry.getTarget(targetHandle);
var dropResult = target.drop(monitor, targetHandle);
invariant(typeof dropResult === "undefined" || isObject(dropResult), "Drop result must either be an object or undefined.");
if (typeof dropResult === "undefined") {
dropResult = index === 0 ? true : monitor.getDropResult();
}
_this.dispatch(dropActionId, { dropResult: dropResult });
});
};
DragDropActions.prototype.endDrag = function endDrag() {
var monitor = this.manager.getMonitor();
var registry = this.manager.getRegistry();
invariant(monitor.isDragging(), "Cannot call endDrag while not dragging.");
var sourceHandle = monitor.getSourceHandle();
var source = registry.getSource(sourceHandle, true);
source.endDrag(monitor, sourceHandle);
registry.unpinSource();
return {};
};
return DragDropActions;
})(Actions);
module.exports = DragDropActions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYW4vRG9jdW1lbnRzL1Byb2plY3RzL2RuZC1jb3JlL21vZHVsZXMvYWN0aW9ucy9EcmFnRHJvcEFjdGlvbnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7SUFBUyxPQUFPLFdBQVEsU0FBUyxFQUF4QixPQUFPOztJQUNULFNBQVMsMkJBQU0sV0FBVzs7SUFDMUIsT0FBTywyQkFBTSxxQkFBcUI7O0lBQ2xDLFFBQVEsMkJBQU0sc0JBQXNCOztJQUV0QixlQUFlO0FBQ3ZCLFdBRFEsZUFBZSxDQUN0QixPQUFPLEVBQUU7MEJBREYsZUFBZTs7QUFFaEMsdUJBQU8sQ0FBQztBQUNSLFFBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0dBQ3hCOztZQUprQixlQUFlOztBQUFmLGlCQUFlLFdBTWxDLFNBQVMsR0FBQSxtQkFBQyxZQUFZLEVBQUU7QUFDdEIsUUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMxQyxRQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzVDLGFBQVMsQ0FDUCxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFDckIsdUNBQXVDLENBQ3hDLENBQUM7QUFDRixRQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtBQUNsQyxhQUFPO0tBQ1I7O0FBRUQsUUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoRCxRQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNyRCxhQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLHlCQUF5QixDQUFDLENBQUM7O0FBRXJELFlBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7O0FBRWpDLFFBQU0sUUFBUSxHQUFHLFFBQVEsQ0FB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Q0FBQyxDQUFDO0FBQ3RELFVBQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDOztBQUV0QyxZQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7O0FBRXZCLFdBQU8sRUFBRSxDQUFDO0dBQ1g7O1NBN0ZrQixlQUFlO0dBQVMsT0FBTzs7aUJBQS9CLGVBQWUiLCJmaWxlIjoiL1VzZXJzL2Rhbi9Eb2N1bWVudHMvUHJvamVjdHMvZG5kLWNvcmUvbW9kdWxlcy9hY3Rpb25zL0RyYWdEcm9wQWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbnMgfSBmcm9tICdmbHVtbW94JztcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50JztcbmltcG9ydCBpc0FycmF5IGZyb20gJ2xvZGFzaC9sYW5nL2lzQXJyYXknO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9sYW5nL2lzT2JqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhZ0Ryb3BBY3Rpb25zIGV4dGVuZHMgQWN0aW9ucyB7XG4gIGNvbnN0cnVjdG9yKG1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gIH1cblxuICBiZWdpbkRyYWcoc291cmNlSGFuZGxlKSB7XG4gICAgY29uc3QgbW9uaXRvciA9IHRoaXMubWFuYWdlci5nZXRNb25pdG9yKCk7XG4gICAgY29uc3QgcmVnaXN0cnkgPSB0aGlzLm1hbmFnZXIuZ2V0UmVnaXN0cnkoKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICAhbW9uaXRvci5pc0RyYWdnaW5nKCksXG4gICAgICAnQ2Fubm90IGNhbGwgYmVnaW5EcmFnIHdoaWxlIGRyYWdnaW5nLidcbiAgICApO1xuICAgIGlmICghbW9uaXRvci5jYW5EcmFnKHNvdXJjZUhhbmRsZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2UgPSByZWdpc3RyeS5nZXRTb3VyY2Uoc291cmNlSGFuZGxlKTtcbiAgICBjb25zdCBpdGVtID0gc291cmNlLmJlZ2luRHJhZyhtb25pdG9yLCBzb3VyY2VIYW5kbGUpO1xuICAgIGludmFyaWFudChpc09iamVjdChpdGVtKSwgJ0l0ZW0gbXVzdCBiZSBhbiBvYmplY3QuJyk7XG5cbiAgICByZWdpc3RyeS5waW5Tb3VyY2Uoc291cmNlSGFuZGxlKTtcblxuICAgIGNvbnN0IGl0ZW1UeXBlID0gcmVnaXN0cnkuZ2V0U291cmNlVHlwZShzb3VyY2VIYW5kbGUpO1xuICAgIHJldHVybiB7IGl0ZW1UeXBlLCBpdGVtLCBzb3VyY2VIYW5kbGUgfTtcbiAgfVxuXG4gIGhvdmVyKHRhcmdldEhhbmRsZXMpIHtcbiAgICBpbnZhcmlhbnQoaXNBcnJheSh0YXJnZXRIYW5kbGVzKSwgJ1RhcmdldCBoYW5kbGVzIG11c3QgYmUgYW4gYXJyYXkuJyk7XG4gICAgdGFyZ2V0SGFuZGxlcyA9IHRhcmdldEhhbmRsZXMuc2xpY2UoMCk7XG5cbiAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMubWFuYWdlci5nZXRSZWdpc3RyeSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0SGFuZGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICB0YXJnZXRIYW5kbGVzLmxhc3RJbmRleE9mKHRhcmdldEhhbmRsZXNbaV0pID09PSBpLFxuICAgICAgICAnVGFyZ2V0IGhhbmRsZXMgc2hvdWxkIGJlIHVuaXF1ZSBpbiB0aGUgcGFzc2VkIGFycmF5LidcbiAgICAgICk7XG4gICAgICBpbnZhcmlhbnQoXG4gICAgICAgIHJlZ2lzdHJ5LmdldFRhcmdldCh0YXJnZXRIYW5kbGVzW2ldKSxcbiAgICAgICAgJ0FsbCBob3ZlcmVkIHRhcmdldCBoYW5kbGVzIG11c3QgYmUgcmVnaXN0ZXJlZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IHRhcmdldEhhbmRsZXMgfTtcbiAgfVxuXG4gIGRyb3AoKSB7XG4gICAgY29uc3QgbW9uaXRvciA9IHRoaXMubWFuYWdlci5nZXRNb25pdG9yKCk7XG4gICAgY29uc3QgcmVnaXN0cnkgPSB0aGlzLm1hbmFnZXIuZ2V0UmVnaXN0cnkoKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBtb25pdG9yLmlzRHJhZ2dpbmcoKSxcbiAgICAgICdDYW5ub3QgY2FsbCBkcm9wIHdoaWxlIG5vdCBkcmFnZ2luZy4nXG4gICAgKTtcblxuICAgIGNvbnN0IHsgZHJvcDogZHJvcEFjdGlvbklkIH0gPSB0aGlzLmdldEFjdGlvbklkcygpO1xuICAgIGNvbnN0IHRhcmdldEhhbmRsZXMgPSBtb25pdG9yXG4gICAgICAuZ2V0VGFyZ2V0SGFuZGxlcygpXG4gICAgICAuZmlsdGVyKG1vbml0b3IuY2FuRHJvcCwgbW9uaXRvcik7XG5cbiAgICB0YXJnZXRIYW5kbGVzLnJldmVyc2UoKTtcbiAgICB0YXJnZXRIYW5kbGVzLmZvckVhY2goKHRhcmdldEhhbmRsZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHJlZ2lzdHJ5LmdldFRhcmdldCh0YXJnZXRIYW5kbGUpO1xuXG4gICAgICBsZXQgZHJvcFJlc3VsdCA9IHRhcmdldC5kcm9wKG1vbml0b3IsIHRhcmdldEhhbmRsZSk7XG4gICAgICBpbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBkcm9wUmVzdWx0ID09PSAndW5kZWZpbmVkJyB8fCBpc09iamVjdChkcm9wUmVzdWx0KSxcbiAgICAgICAgJ0Ryb3AgcmVzdWx0IG11c3QgZWl0aGVyIGJlIGFuIG9iamVjdCBvciB1bmRlZmluZWQuJ1xuICAgICAgKTtcbiAgICAgIGlmICh0eXBlb2YgZHJvcFJlc3VsdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZHJvcFJlc3VsdCA9IGluZGV4ID09PSAwID9cbiAgICAgICAgICB0cnVlIDpcbiAgICAgICAgICBtb25pdG9yLmdldERyb3BSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXNwYXRjaChkcm9wQWN0aW9uSWQsIHsgZHJvcFJlc3VsdCB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGVuZERyYWcoKSB7XG4gICAgY29uc3QgbW9uaXRvciA9IHRoaXMubWFuYWdlci5nZXRNb25pdG9yKCk7XG4gICAgY29uc3QgcmVnaXN0cnkgPSB0aGlzLm1hbmFnZXIuZ2V0UmVnaXN0cnkoKTtcbiAgICBpbnZhcmlhbnQoXG4gICAgICBtb25pdG9yLmlzRHJhZ2dpbmcoKSxcbiAgICAgICdDYW5ub3QgY2FsbCBlbmREcmFnIHdoaWxlIG5vdCBkcmFnZ2luZy4nXG4gICAgKTtcblxuICAgIGNvbnN0IHNvdXJjZUhhbmRsZSA9IG1vbml0b3IuZ2V0U291cmNlSGFuZGxlKCk7XG4gICAgY29uc3Qgc291cmNlID0gcmVnaXN0cnkuZ2V0U291cmNlKHNvdXJjZUhhbmRsZSwgdHJ1ZSk7XG4gICAgc291cmNlLmVuZERyYWcobW9uaXRvciwgc291cmNlSGFuZGxlKTtcblxuICAgIHJlZ2lzdHJ5LnVucGluU291cmNlKCk7XG5cbiAgICByZXR1cm4ge307XG4gIH1cbn0iXX0= |