wix-style-react
Version:
wix-style-react
186 lines (183 loc) • 6.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.dragAndDropDriverFactory = exports.changeItemDepth = void 0;
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _findInstance = require("./findInstance");
var _dragAndDropTestUtils = require("./dragAndDropTestUtils");
var _constants = require("../../DragAndDrop/Draggable/constants");
var _dragAndDropPuppeteerDriverFactory = require("./dragAndDropPuppeteerDriverFactory");
var _testUtils = require("react-dom/test-utils");
var getManager = instance => (0, _dragAndDropTestUtils.getInstanceOfDraggableProvider)(instance).getManager();
var getDraggableId = (element, dataHook) => element.querySelector("[data-hook=\"".concat(dataHook, "\"]")).getAttribute(_constants.dataAttributes.id);
var simulateMouseMove = (dndInstance, draggableId) => {
getManager(dndInstance).getBackend().simulateHover([(0, _dragAndDropTestUtils.getInstanceOfDraggableTarget)(dndInstance, draggableId).getHandlerId()]);
};
var dragAndDropDriverFactory = _ref => {
var {
base,
element
} = _ref;
var isPuppeteer = (base == null ? void 0 : base.type) === 'puppeteer';
var dragAndDropPuppeteerDriver = (0, _dragAndDropPuppeteerDriverFactory.dragAndDropPuppeteerDriverFactory)({
base,
element
});
return {
beginDrag: function () {
var _beginDrag = (0, _asyncToGenerator2.default)(function* (_ref2) {
var {
dataHook
} = _ref2;
if (isPuppeteer) {
return dragAndDropPuppeteerDriver.beginDrag({
dataHook
});
}
var dndInstance = (0, _findInstance.findInstance)(element);
var draggableId = getDraggableId(element, dataHook);
var handleId = (0, _dragAndDropTestUtils.getInstanceOfDraggableSource)(dndInstance, draggableId).getHandlerId();
yield (0, _testUtils.act)(/*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
getManager(dndInstance).getBackend().simulateBeginDrag([handleId]);
}));
});
function beginDrag(_x) {
return _beginDrag.apply(this, arguments);
}
return beginDrag;
}(),
dragOver: function () {
var _dragOver = (0, _asyncToGenerator2.default)(function* (_ref4) {
var {
dataHook,
offset
} = _ref4;
if (isPuppeteer) {
return dragAndDropPuppeteerDriver.dragOver({
dataHook,
offset
});
}
var dndInstance = (0, _findInstance.findInstance)(element);
var draggableId = getDraggableId(element, dataHook);
if (offset) {
getManager(dndInstance).getMonitor().getClientOffset = jest.fn(() => offset);
// on horizontal item move we have to simulate one more mouse move event
// in order to get correct drop target
yield (0, _testUtils.act)(/*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
simulateMouseMove(dndInstance, draggableId);
}));
}
yield (0, _testUtils.act)(/*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
simulateMouseMove(dndInstance, draggableId);
}));
});
function dragOver(_x2) {
return _dragOver.apply(this, arguments);
}
return dragOver;
}(),
endDrag: function () {
var _endDrag = (0, _asyncToGenerator2.default)(function* (item) {
if (isPuppeteer) {
return dragAndDropPuppeteerDriver.endDrag({
dataHook: item.dataHook
});
}
var backend = getManager((0, _findInstance.findInstance)(element)).getBackend();
yield (0, _testUtils.act)(/*#__PURE__*/(0, _asyncToGenerator2.default)(function* () {
backend.simulateDrop();
backend.simulateEndDrag();
}));
});
function endDrag(_x3) {
return _endDrag.apply(this, arguments);
}
return endDrag;
}(),
getItemPosition: function () {
var _getItemPosition = (0, _asyncToGenerator2.default)(function* (_ref8) {
var {
dataHook
} = _ref8;
var draggableItems = yield base.$$("[".concat(_constants.dataAttributes.draggableTarget, "]")).map(/*#__PURE__*/function () {
var _ref9 = (0, _asyncToGenerator2.default)(function* (item) {
return {
dataHook: yield (yield item.$$("[".concat(_constants.dataAttributes.draggableSource, "]")).get(0)).attr('data-hook')
};
});
return function (_x5) {
return _ref9.apply(this, arguments);
};
}());
return draggableItems.findIndex(item => item.dataHook === dataHook);
});
function getItemPosition(_x4) {
return _getItemPosition.apply(this, arguments);
}
return getItemPosition;
}(),
getItemDepth: function () {
var _getItemDepth = (0, _asyncToGenerator2.default)(function* (_ref0) {
var {
dataHook
} = _ref0;
var depth = yield base.$("[data-hook=\"".concat(dataHook, "\"]")).attr(_constants.dataAttributes.depth);
return parseInt(depth, 10);
});
function getItemDepth(_x6) {
return _getItemDepth.apply(this, arguments);
}
return getItemDepth;
}()
};
};
exports.dragAndDropDriverFactory = dragAndDropDriverFactory;
var changeItemDepthByOneLevel = /*#__PURE__*/function () {
var _ref10 = (0, _asyncToGenerator2.default)(function* (_ref1) {
var {
dragAndDropDriver,
dataHook,
offset
} = _ref1;
yield dragAndDropDriver.beginDrag({
dataHook
});
yield dragAndDropDriver.dragOver({
dataHook,
offset: {
x: offset,
y: 0
}
});
yield dragAndDropDriver.endDrag({
dataHook
});
});
return function changeItemDepthByOneLevel(_x7) {
return _ref10.apply(this, arguments);
};
}();
var changeItemDepth = exports.changeItemDepth = /*#__PURE__*/function () {
var _ref12 = (0, _asyncToGenerator2.default)(function* (_ref11) {
var {
dragAndDropDriver,
depthLevel,
threshold,
dataHook
} = _ref11;
for (var i = 0; i < Math.abs(depthLevel); i++) {
// we have to move one level at a time,
// so the drop targets could be registered successfully
yield changeItemDepthByOneLevel({
dragAndDropDriver,
dataHook,
offset: depthLevel > 0 ? threshold : threshold * -1
});
}
});
return function changeItemDepth(_x8) {
return _ref12.apply(this, arguments);
};
}();
//# sourceMappingURL=dragAndDropDriverFactory.js.map