mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-08-26 22:29:24 +00:00

Add watermark feature Auto scroll on review --------- Co-authored-by: Connor Yoh <connor@stirlingpdf.com>
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import { useState, useCallback } from 'react';
|
|
import { defaultWatermarkParameters } from '../../../constants/addWatermarkConstants';
|
|
|
|
export interface AddWatermarkParameters {
|
|
watermarkType?: 'text' | 'image';
|
|
watermarkText: string;
|
|
watermarkImage?: File;
|
|
fontSize: number; // Used for both text size and image size
|
|
rotation: number;
|
|
opacity: number;
|
|
widthSpacer: number;
|
|
heightSpacer: number;
|
|
alphabet: string;
|
|
customColor: string;
|
|
convertPDFToImage: boolean;
|
|
}
|
|
|
|
|
|
export const useAddWatermarkParameters = () => {
|
|
const [parameters, setParameters] = useState<AddWatermarkParameters>(defaultWatermarkParameters);
|
|
|
|
const updateParameter = useCallback(<K extends keyof AddWatermarkParameters>(
|
|
key: K,
|
|
value: AddWatermarkParameters[K]
|
|
) => {
|
|
setParameters(prev => ({ ...prev, [key]: value }));
|
|
}, []);
|
|
|
|
const resetParameters = useCallback(() => {
|
|
setParameters(defaultWatermarkParameters);
|
|
}, []);
|
|
|
|
const validateParameters = useCallback((): boolean => {
|
|
if (!parameters.watermarkType) {
|
|
return false;
|
|
}
|
|
if (parameters.watermarkType === 'text') {
|
|
return parameters.watermarkText.trim().length > 0;
|
|
} else {
|
|
return parameters.watermarkImage !== undefined;
|
|
}
|
|
}, [parameters]);
|
|
|
|
return {
|
|
parameters,
|
|
updateParameter,
|
|
resetParameters,
|
|
validateParameters
|
|
};
|
|
}; |