Code coverage report for dnd-core/modules/actions/DragDropActions.js

Statements: 97.06% (66 / 68)      Branches: 77.27% (17 / 22)      Functions: 100% (10 / 10)      Lines: 100% (60 / 60)      Ignored: none     

All files » dnd-core/modules/actions/ » DragDropActions.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103    3   1   50   1   1   1   1   1 1 50   50 50     1   1 52 52 52 51 1     46 46 46   45   45 45     1 56 53   53 53 84 83     44     1 24   24 24 24   23   23   23   23 23 30   30 30 29 7     29       1 25 25 25   24 24 24   24   24     1     1  
"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=