From 45fdb8cce5eb2752e5f916f35b63ba9de1f8ea61 Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Mon, 13 Feb 2023 18:04:44 +0100 Subject: [PATCH 01/24] editor component, viewer component --- apps/web/components/editor/field.tsx | 4 +- apps/web/components/editor/pdf-editor.tsx | 69 ++++++++++++++++++++-- apps/web/components/editor/pdf-viewer.jsx | 72 ++++------------------- 3 files changed, 78 insertions(+), 67 deletions(-) diff --git a/apps/web/components/editor/field.tsx b/apps/web/components/editor/field.tsx index 60204bcd9..e0509dd81 100644 --- a/apps/web/components/editor/field.tsx +++ b/apps/web/components/editor/field.tsx @@ -13,7 +13,7 @@ type FieldPropsType = { id: string; recipient: string; }; - onPositionChangedHandler: any; + onPositionChanged: any; }; export default function Field(props: FieldPropsType) { @@ -31,7 +31,7 @@ export default function Field(props: FieldPropsType) { if (!position) return; const { x, y } = position; - props.onPositionChangedHandler({ x, y }, props.field.id); + props.onPositionChanged({ x, y }, props.field.id); }; return ( diff --git a/apps/web/components/editor/pdf-editor.tsx b/apps/web/components/editor/pdf-editor.tsx index 14f350f45..db187c098 100644 --- a/apps/web/components/editor/pdf-editor.tsx +++ b/apps/web/components/editor/pdf-editor.tsx @@ -1,19 +1,78 @@ import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib/constants"; import { useRouter } from "next/router"; import dynamic from "next/dynamic"; -import React from "react"; +import React, { useState } from "react"; +import { Button } from "@documenso/ui"; +import short from "short-uuid"; +const stc = require("string-to-color"); const PDFViewer = dynamic(() => import("./pdf-viewer"), { ssr: false, }); export default function PDFEditor(props: any) { + const [selectedValue, setSelectedValue] = useState(""); + const [fields, setFields] = useState([]); const router = useRouter(); + function onPositionChangedHandler(position: any, id: any) { + if (!position) return; + const newFields = [...fields]; + fields.find((e) => e.id == id).position = position; + + // no instant redraw neccessary, postion information for saving or later rerender is enough + // setFields(newFields); + } + return ( - + <> + + + + + + ); } diff --git a/apps/web/components/editor/pdf-viewer.jsx b/apps/web/components/editor/pdf-viewer.jsx index eaea14027..01bc9fab9 100644 --- a/apps/web/components/editor/pdf-viewer.jsx +++ b/apps/web/components/editor/pdf-viewer.jsx @@ -2,21 +2,14 @@ import { Fragment, useState } from "react"; import { Document, Page } from "react-pdf/dist/esm/entry.webpack5"; import Field from "./field"; import short from "short-uuid"; -import { Button } from "@documenso/ui"; -const stc = require("string-to-color"); export default function PDFViewer(props) { const [file, setFile] = useState(""); - const [selectedValue, setSelectedValue] = useState(""); const [numPages, setNumPages] = useState(null); const [loading, setLoading] = useState(true); - const [fields, setFields] = useState([]); function onPositionChangedHandler(position, id) { - if (!position) return; - const newFields = [...fields]; - fields.find((e) => e.id == id).position = position; - // setFields(newFields); + props.onPositionChanged(position, id); } function onFileChange(event) { @@ -36,50 +29,7 @@ export default function PDFViewer(props) { return ( <> From f5130e2b3a10ded46ee0595bbeb0b4a0709b5409 Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Mon, 13 Feb 2023 18:12:03 +0100 Subject: [PATCH 02/24] field --- apps/web/components/editor/field.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/components/editor/field.tsx b/apps/web/components/editor/field.tsx index e0509dd81..b2e3aeba6 100644 --- a/apps/web/components/editor/field.tsx +++ b/apps/web/components/editor/field.tsx @@ -45,7 +45,7 @@ export default function Field(props: FieldPropsType) {
{/* todo icons */} From 8fa4f3685611376c87e84f05f08fc0af5a614a6b Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Mon, 13 Feb 2023 18:12:09 +0100 Subject: [PATCH 03/24] ui --- apps/web/components/editor/pdf-editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/components/editor/pdf-editor.tsx b/apps/web/components/editor/pdf-editor.tsx index db187c098..7ae9dd32d 100644 --- a/apps/web/components/editor/pdf-editor.tsx +++ b/apps/web/components/editor/pdf-editor.tsx @@ -53,7 +53,7 @@ export default function PDFEditor(props: any) { id: short.generate().toString(), page: 0, type: "signature", - position: { x: 0, y: -842 }, + position: { x: 0, y: -600 }, recipient: selectedValue, }) ); From c5d3e9662337cd7b507ed201dda7a370c9ee65ff Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Mon, 13 Feb 2023 18:13:04 +0100 Subject: [PATCH 04/24] layout --- apps/web/components/editor/pdf-viewer.jsx | 46 ++++++++++------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/apps/web/components/editor/pdf-viewer.jsx b/apps/web/components/editor/pdf-viewer.jsx index 01bc9fab9..5a8f063f6 100644 --- a/apps/web/components/editor/pdf-viewer.jsx +++ b/apps/web/components/editor/pdf-viewer.jsx @@ -43,33 +43,27 @@ export default function PDFViewer(props) { position: "relative", background: "green", }} + className="mx-auto w-fit" > -
- setLoading(false)} - onRenderError={() => setLoading(false)} - > - {props?.fields - .filter((item) => item.page === index) - .map((item) => ( - - ))} -
+ setLoading(false)} + onRenderError={() => setLoading(false)} + > + {props?.fields + .filter((item) => item.page === index) + .map((item) => ( + + ))}
))} From 47b57f48d6a2edb360d14180dd561383939fefcb Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Mon, 13 Feb 2023 18:14:00 +0100 Subject: [PATCH 05/24] ui --- apps/web/components/editor/pdf-editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/components/editor/pdf-editor.tsx b/apps/web/components/editor/pdf-editor.tsx index 7ae9dd32d..db187c098 100644 --- a/apps/web/components/editor/pdf-editor.tsx +++ b/apps/web/components/editor/pdf-editor.tsx @@ -53,7 +53,7 @@ export default function PDFEditor(props: any) { id: short.generate().toString(), page: 0, type: "signature", - position: { x: 0, y: -600 }, + position: { x: 0, y: -842 }, recipient: selectedValue, }) ); From e267e11ef18c2bdb2f811fe7069ac1b56329ae12 Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Mon, 13 Feb 2023 18:14:48 +0100 Subject: [PATCH 06/24] layout --- apps/web/components/editor/pdf-viewer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/components/editor/pdf-viewer.jsx b/apps/web/components/editor/pdf-viewer.jsx index 5a8f063f6..5a8276686 100644 --- a/apps/web/components/editor/pdf-viewer.jsx +++ b/apps/web/components/editor/pdf-viewer.jsx @@ -69,7 +69,7 @@ export default function PDFViewer(props) { ))}
-