t-comm
Version:
专业、稳定、纯粹的工具库
98 lines (94 loc) • 3.04 kB
JavaScript
import { b as __awaiter, c as __generator } from './tslib.es6-096fffdd.js';
import { j as justWait, g as getRect } from './element-7376f619.js';
// eslint-disable-next-line @typescript-eslint/naming-convention
var DRAG_TYPE;
(function (DRAG_TYPE) {
DRAG_TYPE["DOT_TO_DOT"] = "DOT_TO_DOT";
DRAG_TYPE["STEPS"] = "STEPS";
})(DRAG_TYPE || (DRAG_TYPE = {}));
var STEP_UNIT = 56;
function dragElement(_a) {
var page = _a.page,
source = _a.source,
target = _a.target,
mode = _a.mode,
_b = _a.reverse,
reverse = _b === void 0 ? false : _b,
_c = _a.stepUnit,
stepUnit = _c === void 0 ? STEP_UNIT : _c;
return __awaiter(this, void 0, void 0, function () {
var sourceRect, targetRect, start, end, _d, unit, steps, i;
return __generator(this, function (_e) {
switch (_e.label) {
case 0:
return [4 /*yield*/, getRect(source, page)];
case 1:
sourceRect = _e.sent();
return [4 /*yield*/, getRect(target, page)];
case 2:
targetRect = _e.sent();
start = (sourceRect.top + sourceRect.bottom) / 2;
end = (targetRect.top + targetRect.bottom) / 2;
if (reverse) {
end = start - (end - start);
}
return [4 /*yield*/, page.mouse.move((sourceRect.left + sourceRect.right) / 2, start)];
case 3:
_e.sent();
return [4 /*yield*/, page.mouse.down()];
case 4:
_e.sent();
_d = mode;
switch (_d) {
case DRAG_TYPE.DOT_TO_DOT:
return [3 /*break*/, 5];
case DRAG_TYPE.STEPS:
return [3 /*break*/, 8];
}
return [3 /*break*/, 14];
case 5:
return [4 /*yield*/, page.mouse.move((targetRect.left + targetRect.right) / 2, end)];
case 6:
_e.sent();
return [4 /*yield*/, justWait(1000)];
case 7:
_e.sent();
return [3 /*break*/, 15];
case 8:
unit = end > start ? stepUnit : -stepUnit;
steps = Math.abs(Math.round((end - start) / unit));
i = 0;
_e.label = 9;
case 9:
if (!(i < steps)) return [3 /*break*/, 13];
return [4 /*yield*/, page.mouse.move((targetRect.left + targetRect.right) / 2, start + unit * (i + 1), {
steps: 1
})];
case 10:
_e.sent();
return [4 /*yield*/, justWait(200)];
case 11:
_e.sent();
_e.label = 12;
case 12:
i++;
return [3 /*break*/, 9];
case 13:
return [3 /*break*/, 15];
case 14:
_e.label = 15;
case 15:
return [4 /*yield*/, page.mouse.up()];
case 16:
_e.sent();
return [2 /*return*/];
}
});
});
}
var drag = /*#__PURE__*/Object.freeze({
__proto__: null,
get DRAG_TYPE () { return DRAG_TYPE; },
dragElement: dragElement
});
export { DRAG_TYPE as D, dragElement as a, drag as d };