Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

62 Zeilen
1.5 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = createTargetConnector;
  6. var _wrapConnectorHooks = require('./wrapConnectorHooks');
  7. var _wrapConnectorHooks2 = _interopRequireDefault(_wrapConnectorHooks);
  8. var _areOptionsEqual = require('./areOptionsEqual');
  9. var _areOptionsEqual2 = _interopRequireDefault(_areOptionsEqual);
  10. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  11. function createTargetConnector(backend) {
  12. var currentHandlerId = void 0;
  13. var currentDropTargetNode = void 0;
  14. var currentDropTargetOptions = void 0;
  15. var disconnectCurrentDropTarget = void 0;
  16. function reconnectDropTarget() {
  17. if (disconnectCurrentDropTarget) {
  18. disconnectCurrentDropTarget();
  19. disconnectCurrentDropTarget = null;
  20. }
  21. if (currentHandlerId && currentDropTargetNode) {
  22. disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);
  23. }
  24. }
  25. function receiveHandlerId(handlerId) {
  26. if (handlerId === currentHandlerId) {
  27. return;
  28. }
  29. currentHandlerId = handlerId;
  30. reconnectDropTarget();
  31. }
  32. var hooks = (0, _wrapConnectorHooks2.default)({
  33. dropTarget: function connectDropTarget(node, options) {
  34. if (node === currentDropTargetNode && (0, _areOptionsEqual2.default)(options, currentDropTargetOptions)) {
  35. return;
  36. }
  37. currentDropTargetNode = node;
  38. currentDropTargetOptions = options;
  39. reconnectDropTarget();
  40. }
  41. });
  42. return {
  43. receiveHandlerId: receiveHandlerId,
  44. hooks: hooks
  45. };
  46. }