mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2026-02-01 20:10:35 +01:00
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import { useBaseParameters } from '../shared/useBaseParameters';
|
|
|
|
export interface SignaturePosition {
|
|
x: number;
|
|
y: number;
|
|
width: number;
|
|
height: number;
|
|
page: number;
|
|
}
|
|
|
|
export interface SignParameters {
|
|
signatureType: 'image' | 'text' | 'draw' | 'canvas';
|
|
signatureData?: string; // Base64 encoded image or text content
|
|
signaturePosition?: SignaturePosition;
|
|
reason?: string;
|
|
location?: string;
|
|
signerName?: string;
|
|
}
|
|
|
|
export const DEFAULT_PARAMETERS: SignParameters = {
|
|
signatureType: 'draw',
|
|
reason: 'Document signing',
|
|
location: 'Digital',
|
|
signerName: '',
|
|
};
|
|
|
|
const validateSignParameters = (parameters: SignParameters): boolean => {
|
|
// Basic validation
|
|
if (!parameters.signatureType) return false;
|
|
|
|
// If signature position is set, validate it
|
|
if (parameters.signaturePosition) {
|
|
const pos = parameters.signaturePosition;
|
|
if (pos.x < 0 || pos.y < 0 || pos.width <= 0 || pos.height <= 0 || pos.page < 0) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// For image signatures, require signature data
|
|
if (parameters.signatureType === 'image' && !parameters.signatureData) {
|
|
return false;
|
|
}
|
|
|
|
// For canvas signatures, require signature data
|
|
if (parameters.signatureType === 'canvas' && !parameters.signatureData) {
|
|
return false;
|
|
}
|
|
|
|
// For text signatures, require signer name
|
|
if (parameters.signatureType === 'text' && !parameters.signerName) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
};
|
|
|
|
export const useSignParameters = () => {
|
|
return useBaseParameters<SignParameters>({
|
|
defaultParameters: DEFAULT_PARAMETERS,
|
|
endpointName: 'add-signature',
|
|
validateFn: validateSignParameters,
|
|
});
|
|
}; |