UNPKG

@pdftron/webviewer-react-toolkit

Version:

A React component library for integrating with PDFTron WebViewer API.

26 lines (25 loc) 1.52 kB
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))); };