@pdftron/webviewer-react-toolkit
Version:
A React component library for integrating with PDFTron WebViewer API.
26 lines (25 loc) • 1.52 kB
JavaScript
import { __assign, __rest } from "tslib";
import classnames from 'classnames';
import React, { useMemo } from 'react';
import { useDragLayer } from 'react-dnd';
export var DragLayer = function (_a) {
var children = _a.children, customTranslate = _a.customTranslate, className = _a.className, divProps = __rest(_a, ["children", "customTranslate", "className"]);
var _b = useDragLayer(function (monitor) { return ({
currentOffset: monitor.getSourceClientOffset(),
isDragging: monitor.isDragging(),
mousePosition: monitor.getClientOffset(),
}); }), currentOffset = _b.currentOffset, isDragging = _b.isDragging, mousePosition = _b.mousePosition;
var style = 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('ui__base ui__dragLayer', className);
return (React.createElement("div", __assign({}, divProps, { className: dragLayerClass }),
React.createElement("div", { style: style }, children)));
};