@pdftron/webviewer-react-toolkit
Version:
A React component library for integrating with PDFTron WebViewer API.
23 lines (22 loc) • 1.12 kB
JavaScript
import classnames from 'classnames';
import React, { useMemo } from 'react';
import { useDragLayer } from 'react-dnd';
export const DragLayer = ({ children, customTranslate, className, ...divProps }) => {
const { currentOffset, isDragging, mousePosition } = useDragLayer((monitor) => ({
currentOffset: monitor.getSourceClientOffset(),
isDragging: monitor.isDragging(),
mousePosition: monitor.getClientOffset(),
}));
const style = useMemo(() => {
if (!currentOffset || !mousePosition)
return { display: 'none' };
const { x, y } = customTranslate?.({ currentOffset, mousePosition }) ?? currentOffset;
const transform = `translate(${x}px, ${y}px)`;
return { transform, WebkitTransform: transform };
}, [currentOffset, customTranslate, mousePosition]);
if (!isDragging)
return null;
const dragLayerClass = classnames('ui__base ui__dragLayer', className);
return (React.createElement("div", Object.assign({}, divProps, { className: dragLayerClass }),
React.createElement("div", { style: style }, children)));
};