UNPKG

qtsd-fork

Version:

Do not use this please

89 lines (67 loc) 2.36 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createSourceConnector; var _wrapConnectorHooks = require('./wrapConnectorHooks'); var _wrapConnectorHooks2 = _interopRequireDefault(_wrapConnectorHooks); var _areOptionsEqual = require('./areOptionsEqual'); var _areOptionsEqual2 = _interopRequireDefault(_areOptionsEqual); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function createSourceConnector(backend) { var currentHandlerId = void 0; var currentDragSourceNode = void 0; var currentDragSourceOptions = void 0; var disconnectCurrentDragSource = void 0; var currentDragPreviewNode = void 0; var currentDragPreviewOptions = void 0; var disconnectCurrentDragPreview = void 0; function reconnectDragSource() { if (disconnectCurrentDragSource) { disconnectCurrentDragSource(); disconnectCurrentDragSource = null; } if (currentHandlerId && currentDragSourceNode) { disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions); } } function reconnectDragPreview() { if (disconnectCurrentDragPreview) { disconnectCurrentDragPreview(); disconnectCurrentDragPreview = null; } if (currentHandlerId && currentDragPreviewNode) { disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions); } } function receiveHandlerId(handlerId) { if (handlerId === currentHandlerId) { return; } currentHandlerId = handlerId; reconnectDragSource(); reconnectDragPreview(); } var hooks = (0, _wrapConnectorHooks2.default)({ dragSource: function connectDragSource(node, options) { if (node === currentDragSourceNode && (0, _areOptionsEqual2.default)(options, currentDragSourceOptions)) { return; } currentDragSourceNode = node; currentDragSourceOptions = options; reconnectDragSource(); }, dragPreview: function connectDragPreview(node, options) { if (node === currentDragPreviewNode && (0, _areOptionsEqual2.default)(options, currentDragPreviewOptions)) { return; } currentDragPreviewNode = node; currentDragPreviewOptions = options; reconnectDragPreview(); } }); return { receiveHandlerId: receiveHandlerId, hooks: hooks }; }