@pdftron/webviewer-react-toolkit
Version:
A React component library for integrating with PDFTron WebViewer API.
29 lines (28 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DragLayer = void 0;
var tslib_1 = require("tslib");
var classnames_1 = tslib_1.__importDefault(require("classnames"));
var react_1 = tslib_1.__importStar(require("react"));
var react_dnd_1 = require("react-dnd");
exports.DragLayer = function (_a) {
var children = _a.children, customTranslate = _a.customTranslate, className = _a.className, divProps = tslib_1.__rest(_a, ["children", "customTranslate", "className"]);
var _b = react_dnd_1.useDragLayer(function (monitor) { return ({
currentOffset: monitor.getSourceClientOffset(),
isDragging: monitor.isDragging(),
mousePosition: monitor.getClientOffset(),
}); }), currentOffset = _b.currentOffset, isDragging = _b.isDragging, mousePosition = _b.mousePosition;
var style = react_1.useMemo(function () {
var _a;
if (!currentOffset || !mousePosition)
return { display: 'none' };
var _b = (_a = customTranslate === null || customTranslate === void 0 ? void 0 : customTranslate({ currentOffset: currentOffset, mousePosition: mousePosition })) !== null && _a !== void 0 ? _a : currentOffset, x = _b.x, y = _b.y;
var transform = "translate(" + x + "px, " + y + "px)";
return { transform: transform, WebkitTransform: transform };
}, [currentOffset, customTranslate, mousePosition]);
if (!isDragging)
return null;
var dragLayerClass = classnames_1.default('ui__base ui__dragLayer', className);
return (react_1.default.createElement("div", tslib_1.__assign({}, divProps, { className: dragLayerClass }),
react_1.default.createElement("div", { style: style }, children)));
};