@wix/design-system
Version:
@wix/design-system
64 lines (62 loc) • 2.79 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.dragAndDropPuppeteerDriverFactory = void 0;
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var dragAndDropPuppeteerDriverFactory = _ref => {
var element = _ref.element;
return {
beginDrag: function () {
var _beginDrag = (0, _asyncToGenerator2.default)(function* (_ref2) {
var dataHook = _ref2.dataHook;
yield element.page.evaluate((baseElement, sourceDataHook) => {
var sourceElement = baseElement.querySelector("[data-hook=\"".concat(sourceDataHook, "\"]"));
var _sourceElement$getBou = sourceElement.getBoundingClientRect(),
x = _sourceElement$getBou.x,
y = _sourceElement$getBou.y,
height = _sourceElement$getBou.height;
sourceElement.dispatchEvent(new MouseEvent('mousedown', {
bubbles: true,
clientX: x,
clientY: y + height / 2
}));
}, element.element, dataHook);
});
function beginDrag(_x) {
return _beginDrag.apply(this, arguments);
}
return beginDrag;
}(),
dragOver: function () {
var _dragOver = (0, _asyncToGenerator2.default)(function* (_ref3) {
var dataHook = _ref3.dataHook,
offset = _ref3.offset;
var moveMouseToNewPosition = () => element.page.evaluate((baseElement, destinationDataHook, xAxisOffset) => {
var destinationElement = baseElement.querySelector("[data-hook=\"".concat(destinationDataHook, "\"]"));
var _destinationElement$g = destinationElement.getBoundingClientRect(),
x = _destinationElement$g.x,
y = _destinationElement$g.y,
height = _destinationElement$g.height;
var eventOptions = {
bubbles: true,
clientX: xAxisOffset ? x + xAxisOffset : x,
clientY: y + height / 2
};
baseElement.dispatchEvent(new MouseEvent('mousemove', eventOptions));
}, element.element, dataHook, offset == null ? void 0 : offset.x);
// We have to do it twice, because one mousemove event is not enough for item to occupy the new position
yield moveMouseToNewPosition();
yield moveMouseToNewPosition();
});
function dragOver(_x2) {
return _dragOver.apply(this, arguments);
}
return dragOver;
}(),
endDrag: () => element.page.evaluate(baseElement => {
baseElement.dispatchEvent(new MouseEvent('mouseup'));
}, element.element)
};
};
exports.dragAndDropPuppeteerDriverFactory = dragAndDropPuppeteerDriverFactory;
//# sourceMappingURL=dragAndDropPuppeteerDriverFactory.js.map