UNPKG

pdf-e-signature

Version:

A React component that allows users to select positions for e-signatures on PDFs

61 lines (60 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSignature = void 0; var _react = require("react"); const useSignature = () => { const [isModalOpen, setIsModalOpen] = (0, _react.useState)(false); const [selectedPosition, setSelectedPosition] = (0, _react.useState)(null); const [signaturePositions, setSignaturePositions] = (0, _react.useState)([]); const signatureRef = (0, _react.useRef)(null); const clearSignature = () => { signatureRef.current.clear(); }; const saveSignature = async (signaturePositions, onUpdate) => { if (!selectedPosition) return; const signatureImage = signatureRef.current.toDataURL('image/png', { backgroundColor: 'transparent' }); const timestamp = new Date().toLocaleString(); const updatedPositions = signaturePositions.map(pos => pos === selectedPosition ? { ...pos, signature: signatureImage, timestamp: timestamp } : pos); onUpdate(updatedPositions); setIsModalOpen(false); setSelectedPosition(null); }; const handleSignatureUpload = async (e, signaturePositions, onUpdate) => { const file = e.target.files[0]; if (!file || !selectedPosition) return; const reader = new FileReader(); reader.onload = async () => { const timestamp = new Date().toLocaleString(); const updatedPositions = signaturePositions.map(pos => pos === selectedPosition ? { ...pos, signature: reader.result, timestamp: timestamp } : pos); onUpdate(updatedPositions); setIsModalOpen(false); setSelectedPosition(null); }; reader.readAsDataURL(file); }; return { isModalOpen, setIsModalOpen, selectedPosition, setSelectedPosition, signatureRef, clearSignature, saveSignature, handleSignatureUpload, setSignaturePositions, signaturePositions }; }; exports.useSignature = useSignature;