From b39bdda36e341d356c506c71485c77d10c1ccf91 Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Tue, 28 Feb 2023 17:07:09 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=20createField=20(object)?= =?UTF-8?q?=20to=20editor=20features?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/components/editor/pdf-editor.tsx | 33 ++++++----------------- packages/features/editor/createField.ts | 31 +++++++++++++++++++++ packages/features/editor/index.ts | 1 + 3 files changed, 40 insertions(+), 25 deletions(-) create mode 100644 packages/features/editor/createField.ts create mode 100644 packages/features/editor/index.ts diff --git a/apps/web/components/editor/pdf-editor.tsx b/apps/web/components/editor/pdf-editor.tsx index 0d31601be..81110d4f7 100644 --- a/apps/web/components/editor/pdf-editor.tsx +++ b/apps/web/components/editor/pdf-editor.tsx @@ -8,6 +8,7 @@ import { Listbox, RadioGroup, Transition } from "@headlessui/react"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/react/24/outline"; import { classNames } from "@documenso/lib"; import { createOrUpdateField, deleteField } from "@documenso/lib/api"; +import { createField } from "@documenso/features/editor"; const stc = require("string-to-color"); const PDFViewer = dynamic(() => import("./pdf-viewer"), { @@ -68,11 +69,7 @@ export default function PDFEditor(props: any) { onMouseUp={(e: any, page: number) => { e.preventDefault(); e.stopPropagation(); - if (adding) { - console.log("adding to page " + page); - addField(e, page); - setAdding(false); - } + addField(e, page); }} onMouseDown={(e: any, page: number) => { addField(e, page); @@ -227,26 +224,12 @@ export default function PDFEditor(props: any) { page: number, type: FieldType = FieldType.SIGNATURE ) { - var rect = e.target.getBoundingClientRect(); - const fieldSize = { width: 192, height: 96 }; - var newFieldX = e.clientX - rect.left - fieldSize.width / 2; //x position within the element. - var newFieldY = e.clientY - rect.top - fieldSize.height / 2; //y position within the element. - if (newFieldX < 0) newFieldX = 0; - if (newFieldY < 0) newFieldY = 0; - - if (newFieldX + fieldSize.width > rect.width) - newFieldX = rect.width - fieldSize.width; - if (newFieldY + fieldSize.height > rect.height) - newFieldY = rect.height - fieldSize.height; - - const signatureField = { - id: -1, - page: page, - type: FieldType.SIGNATURE, - positionX: newFieldX.toFixed(0), - positionY: newFieldY.toFixed(0), - Recipient: selectedRecipient, - }; + const signatureField = createField( + e, + page, + selectedRecipient, + FieldType.SIGNATURE + ); createOrUpdateField(props?.document, signatureField).then((res) => { setFields(fields.concat(res)); diff --git a/packages/features/editor/createField.ts b/packages/features/editor/createField.ts new file mode 100644 index 000000000..3bb8a951d --- /dev/null +++ b/packages/features/editor/createField.ts @@ -0,0 +1,31 @@ +import { FieldType } from "@prisma/client"; + +export const createField = function addField( + e: any, + page: number, + selectedRecipient: any, + type: FieldType = FieldType.SIGNATURE +): any { + var rect = e.target.getBoundingClientRect(); + const fieldSize = { width: 192, height: 96 }; + var newFieldX = e.clientX - rect.left - fieldSize.width / 2; //x position within the element. + var newFieldY = e.clientY - rect.top - fieldSize.height / 2; //y position within the element. + if (newFieldX < 0) newFieldX = 0; + if (newFieldY < 0) newFieldY = 0; + + if (newFieldX + fieldSize.width > rect.width) + newFieldX = rect.width - fieldSize.width; + if (newFieldY + fieldSize.height > rect.height) + newFieldY = rect.height - fieldSize.height; + + const signatureField = { + id: -1, + page: page, + type: type, + positionX: newFieldX.toFixed(0), + positionY: newFieldY.toFixed(0), + Recipient: selectedRecipient, + }; + + return signatureField; +}; diff --git a/packages/features/editor/index.ts b/packages/features/editor/index.ts new file mode 100644 index 000000000..d47dd4c65 --- /dev/null +++ b/packages/features/editor/index.ts @@ -0,0 +1 @@ +export { createField } from "./createField";