From 536adf6e0ac4fac922aca4204cea09a5ef65f837 Mon Sep 17 00:00:00 2001 From: Ephraim Atta-Duncan Date: Thu, 15 Feb 2024 10:05:36 +0000 Subject: [PATCH] fix: reduce text size? --- .../src/app/(signing)/sign/[token]/form.tsx | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/(signing)/sign/[token]/form.tsx b/apps/web/src/app/(signing)/sign/[token]/form.tsx index 7569b0d02..12cb4f26f 100644 --- a/apps/web/src/app/(signing)/sign/[token]/form.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/form.tsx @@ -10,6 +10,12 @@ import { useForm } from 'react-hook-form'; import { z } from 'zod'; import { useAnalytics } from '@documenso/lib/client-only/hooks/use-analytics'; +import { useElementScaleSize } from '@documenso/lib/client-only/hooks/use-element-scale-size'; +import { useFieldPageCoords } from '@documenso/lib/client-only/hooks/use-field-page-coords'; +import { + DEFAULT_HANDWRITING_FONT_SIZE, + MIN_HANDWRITING_FONT_SIZE, +} from '@documenso/lib/constants/pdf'; import { sortFieldsByPosition, validateFieldsInserted } from '@documenso/lib/utils/fields'; import type { Document, Field, Recipient } from '@documenso/prisma/client'; import { trpc } from '@documenso/trpc/react'; @@ -43,7 +49,14 @@ const ZSigningpadSchema = z.union([ export type TSigningpadSchema = z.infer; -export const SigningForm = ({ document, recipient, fields }: SigningFormProps) => { +export const SigningForm = ({ document: _document, recipient, fields }: SigningFormProps) => { + const fontVariable = '--font-signature'; + const minFontSize = MIN_HANDWRITING_FONT_SIZE; + const maxFontSize = DEFAULT_HANDWRITING_FONT_SIZE; + const fontVariableValue = getComputedStyle(document.documentElement).getPropertyValue( + fontVariable, + ); + const router = useRouter(); const analytics = useAnalytics(); const { data: session } = useSession(); @@ -70,6 +83,8 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) = resolver: zodResolver(ZSigningpadSchema), }); + const { height, width } = useFieldPageCoords(fields.find((field) => field.type === 'SIGNATURE')!); + const signatureDataUrl = watch('signatureDataUrl'); const signatureText = watch('signatureText'); @@ -93,18 +108,30 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) = await completeDocumentWithToken({ token: recipient.token, - documentId: document.id, + documentId: _document.id, }); analytics.capture('App: Recipient has completed signing', { signerId: recipient.id, - documentId: document.id, + documentId: _document.id, timestamp: new Date().toISOString(), }); router.push(`/sign/${recipient.token}/complete`); }; + const scalingFactor = useElementScaleSize( + { + height, + width, + }, + signatureText || '', + maxFontSize, + fontVariableValue, + ); + + const fontSize = maxFontSize * scalingFactor; + return (
+

{signatureText}

)} @@ -241,7 +276,7 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) =