From fd5822e3b0dd99dfe22c27be3a410c36a0742368 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 15 May 2026 18:43:03 +0000 Subject: [PATCH 1/4] Initial plan From dd861e8cca0f0262fef8e03310f0a0188cf6d7eb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 15 May 2026 18:47:20 +0000 Subject: [PATCH 2/4] fix(clm): address review feedback for duplication and safety checks Agent-Logs-Url: https://github.com/ApryseSDK/webviewer-samples/sessions/412f218e-3857-49d3-8ab3-6349e37df6e5 Co-authored-by: DavidEGutierrez <172812369+DavidEGutierrez@users.noreply.github.com> --- webviewer-clm/src/App.tsx | 107 +----------------- webviewer-clm/src/AppContent.tsx | 81 ++++--------- webviewer-clm/src/pages/agreements/create.tsx | 4 +- webviewer-clm/src/pages/blog-posts/create.tsx | 58 +--------- webviewer-clm/src/pages/blog-posts/edit.tsx | 62 +--------- webviewer-clm/src/pages/blog-posts/form.tsx | 67 +++++++++++ webviewer-clm/src/pages/templates/create.tsx | 16 ++- 7 files changed, 114 insertions(+), 281 deletions(-) create mode 100644 webviewer-clm/src/pages/blog-posts/form.tsx diff --git a/webviewer-clm/src/App.tsx b/webviewer-clm/src/App.tsx index d2477652..36193e6f 100644 --- a/webviewer-clm/src/App.tsx +++ b/webviewer-clm/src/App.tsx @@ -1,37 +1,21 @@ import { Refine, - GitHubBanner, - WelcomePage, - Authenticated, - useMenu, - useGetIdentity, } from "@refinedev/core"; -import { DevtoolsPanel, DevtoolsProvider } from "@refinedev/devtools"; +import { DevtoolsProvider } from "@refinedev/devtools"; import { RefineKbar, RefineKbarProvider } from "@refinedev/kbar"; -import { - AuthPage, - ErrorComponent, - useNotificationProvider, - ThemedLayout, - ThemedSider, -} from "@refinedev/antd"; +import { useNotificationProvider } from "@refinedev/antd"; import "@refinedev/antd/dist/reset.css"; import { dataProvider, liveProvider } from "@refinedev/supabase"; import { App as AntdApp } from "antd"; -import { BrowserRouter, Route, Routes, Outlet } from "react-router"; +import { BrowserRouter } from "react-router"; import routerProvider, { - NavigateToResource, - CatchAllNavigate, UnsavedChangesNotifier, DocumentTitleHandler, } from "@refinedev/react-router"; -import { TemplateList, TemplateCreate, TemplateEdit } from "./pages/templates"; -import { AppIcon } from "./components/app-icon"; import { supabaseClient } from "./utility"; import { ColorModeContextProvider } from "./contexts/color-mode"; -import { Header } from "./components/header"; import authProvider from "./authProvider"; import { ContainerOutlined, @@ -39,12 +23,7 @@ import { UserOutlined, } from "@ant-design/icons"; import AppContent from "./AppContent"; -import { UserList } from "./pages/users/list"; -import { UserEdit } from "./pages/users/edit"; -import { AgreementCreate, AgreementList, AgreementShow } from "./pages/agreements"; import AccessControlProvider from "./AccessControlProvider"; -import { AgreementSign } from "./pages/agreements/sign"; -import logo from '../src/components/logo.png'; function App() { const resources = [ @@ -77,15 +56,6 @@ function App() { icon: , }, }, - { - name: "agreements", - list: "/agreements", - create: "/agreements/create", - show: "/agreements/show/:id", - meta: { - icon: , - }, - }, ]; return ( @@ -109,76 +79,7 @@ function App() { title: { text: "", icon: <> }, }} > - - } - > - }> - - - - } - > - } - /> - - } /> - } /> - } /> - - - } /> - } /> - - - } /> - } /> - } /> - } /> - - } /> - - } - > - - - } - > - - } - /> - } - /> - } - /> - - + diff --git a/webviewer-clm/src/AppContent.tsx b/webviewer-clm/src/AppContent.tsx index 2fb73b56..5e8b3499 100644 --- a/webviewer-clm/src/AppContent.tsx +++ b/webviewer-clm/src/AppContent.tsx @@ -1,52 +1,26 @@ -import { - Authenticated, - useMenu, - useGetIdentity, -} from "@refinedev/core"; +import { Authenticated } from "@refinedev/core"; import { AuthPage, ErrorComponent, - useNotificationProvider, ThemedLayout, ThemedSider, } from "@refinedev/antd"; import "@refinedev/antd/dist/reset.css"; -import { BrowserRouter, Route, Routes, Outlet } from "react-router"; -import routerProvider, { +import { Route, Routes, Outlet } from "react-router"; +import { NavigateToResource, CatchAllNavigate, } from "@refinedev/react-router"; import { TemplateList, TemplateCreate, TemplateEdit } from "./pages/templates"; import { Header } from "./components/header"; -import { - ContainerOutlined, - FileFilled, - FileOutlined, - UserOutlined, -} from "@ant-design/icons"; -import { UserCreate } from "./pages/users"; import { UserList } from "./pages/users/list"; import { UserEdit } from "./pages/users/edit"; -import { useEffect } from "react"; import { AgreementList, AgreementCreate, AgreementShow } from "./pages/agreements"; +import { AgreementSign } from "./pages/agreements/sign"; const AppContent = () => { - - const { data: identity } = useGetIdentity(); - - useEffect(() => { - console.log(identity); - }, [identity]); - - - const isAdmin = identity?.user_metadata?.role == "admin"; - - useEffect(() => { - console.log("Admin",isAdmin) - },[isAdmin]) - return ( { }> - } - /> - - } /> - } /> - } /> - - - } /> - } /> - - - } /> - } /> - } /> - - } - /> - - } /> - } /> - } /> - + } /> + + } /> + } /> + } /> + + + } /> + } /> + + + } /> + } /> + } /> + } /> + } /> { ); -}; +}; -export default AppContent \ No newline at end of file +export default AppContent; diff --git a/webviewer-clm/src/pages/agreements/create.tsx b/webviewer-clm/src/pages/agreements/create.tsx index e54cb5d6..0da198c6 100644 --- a/webviewer-clm/src/pages/agreements/create.tsx +++ b/webviewer-clm/src/pages/agreements/create.tsx @@ -77,7 +77,7 @@ export const AgreementCreate = () => { return; } const { Core } = instance; - const { PDFNet, Math, Annotations } = Core; + const { PDFNet, Math: PDFNetMath, Annotations } = Core; const { WidgetFlags } = Annotations; await PDFNet.initialize() @@ -125,7 +125,7 @@ export const AgreementCreate = () => { highlights.begin(document); let quad = (await highlights.getCurrentQuads())[0]; - var mathRect = new Math.Quad(quad?.p1x, quad?.p1y, quad?.p2x, quad?.p2y, quad?.p3x, quad?.p3y, quad?.p4x, quad?.p4y).toRect(); + var mathRect = new PDFNetMath.Quad(quad?.p1x, quad?.p1y, quad?.p2x, quad?.p2y, quad?.p3x, quad?.p3y, quad?.p4x, quad?.p4y).toRect(); var rect = new PDFNet.Rect(mathRect.x1, mathRect.y1, mathRect.x2, mathRect.y2); await replacer.addString(result.out_str.slice(1,-1), ''); diff --git a/webviewer-clm/src/pages/blog-posts/create.tsx b/webviewer-clm/src/pages/blog-posts/create.tsx index 0042b868..62cf076e 100644 --- a/webviewer-clm/src/pages/blog-posts/create.tsx +++ b/webviewer-clm/src/pages/blog-posts/create.tsx @@ -1,7 +1,7 @@ import { Create, useForm, useSelect } from "@refinedev/antd"; -import MDEditor from "@uiw/react-md-editor"; -import { Form, Input, Select } from "antd"; +import { Form } from "antd"; import React from "react"; +import { BlogPostFormFields } from "./form"; export const BlogPostCreate = () => { const { formProps, saveButtonProps } = useForm({}); @@ -13,59 +13,7 @@ export const BlogPostCreate = () => { return (
- - - - - - - - - +
); diff --git a/webviewer-clm/src/pages/blog-posts/edit.tsx b/webviewer-clm/src/pages/blog-posts/edit.tsx index 38888cc8..a6bc3f38 100644 --- a/webviewer-clm/src/pages/blog-posts/edit.tsx +++ b/webviewer-clm/src/pages/blog-posts/edit.tsx @@ -1,7 +1,7 @@ import { Edit, useForm, useSelect } from "@refinedev/antd"; -import MDEditor from "@uiw/react-md-editor"; -import { Form, Input, Select } from "antd"; +import { Form } from "antd"; import React from "react"; +import { BlogPostFormFields } from "./form"; export const BlogPostEdit = () => { const { formProps, saveButtonProps, query, formLoading } = useForm({}); @@ -19,60 +19,10 @@ export const BlogPostEdit = () => { return (
- - - - - - - - - +
); diff --git a/webviewer-clm/src/pages/blog-posts/form.tsx b/webviewer-clm/src/pages/blog-posts/form.tsx new file mode 100644 index 00000000..77c053f2 --- /dev/null +++ b/webviewer-clm/src/pages/blog-posts/form.tsx @@ -0,0 +1,67 @@ +import MDEditor from "@uiw/react-md-editor"; +import { Form, Input, Select } from "antd"; + +const statusOptions = [ + { value: "draft", label: "Draft" }, + { value: "published", label: "Published" }, + { value: "rejected", label: "Rejected" }, +]; + +type BlogPostFormFieldsProps = { + categorySelectProps: any; + categoryInitialValue?: string; +}; + +export const BlogPostFormFields = ({ + categorySelectProps, + categoryInitialValue, +}: BlogPostFormFieldsProps) => ( + <> + + + + + + + + + + +); diff --git a/webviewer-clm/src/pages/templates/create.tsx b/webviewer-clm/src/pages/templates/create.tsx index f07a5574..4e9c7188 100644 --- a/webviewer-clm/src/pages/templates/create.tsx +++ b/webviewer-clm/src/pages/templates/create.tsx @@ -1,21 +1,25 @@ -import { Create, useForm, useSelect } from "@refinedev/antd"; -import { Flex, Form, Input, Select } from "antd"; +import { Create, useForm } from "@refinedev/antd"; +import { Flex, Form } from "antd"; import React, { useEffect, useRef, useState } from "react"; -import { InboxOutlined } from "@ant-design/icons"; -import Dragger from "antd/lib/upload/Dragger"; import WebViewer, { WebViewerInstance } from "@pdftron/webviewer"; import { encode } from "base64-arraybuffer"; import { wvCardProps } from "../../utility/wv.props"; export const TemplateCreate = () => { const viewer = useRef(null); const wvInstance = useRef(null); - const { form, formProps, saveButtonProps, onFinish } = useForm({}); + const { formProps, saveButtonProps, onFinish } = useForm({}); const [loading, setLoading] = useState(true); const handleOnFinish = async () => { - const { documentViewer } = wvInstance.current?.Core!; + const documentViewer = wvInstance.current?.Core?.documentViewer; + if (!documentViewer) { + return; + } const document = documentViewer.getDocument(); + if (!document) { + return; + } const title = document.getFilename(); const fileData = await document.getFileData(); const base64 = encode(fileData); From 6553a26f8c8bf6842d29f19eb5f83f8f85b78d17 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 15 May 2026 18:57:49 +0000 Subject: [PATCH 3/4] fix(clm): replace var with const in agreement signature rectangle creation Agent-Logs-Url: https://github.com/ApryseSDK/webviewer-samples/sessions/8353866d-f627-416e-9644-15f8f3337803 Co-authored-by: DavidEGutierrez <172812369+DavidEGutierrez@users.noreply.github.com> --- webviewer-clm/src/pages/agreements/create.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webviewer-clm/src/pages/agreements/create.tsx b/webviewer-clm/src/pages/agreements/create.tsx index 0da198c6..5e7e5203 100644 --- a/webviewer-clm/src/pages/agreements/create.tsx +++ b/webviewer-clm/src/pages/agreements/create.tsx @@ -125,8 +125,8 @@ export const AgreementCreate = () => { highlights.begin(document); let quad = (await highlights.getCurrentQuads())[0]; - var mathRect = new PDFNetMath.Quad(quad?.p1x, quad?.p1y, quad?.p2x, quad?.p2y, quad?.p3x, quad?.p3y, quad?.p4x, quad?.p4y).toRect(); - var rect = new PDFNet.Rect(mathRect.x1, mathRect.y1, mathRect.x2, mathRect.y2); + const mathRect = new PDFNetMath.Quad(quad?.p1x, quad?.p1y, quad?.p2x, quad?.p2y, quad?.p3x, quad?.p3y, quad?.p4x, quad?.p4y).toRect(); + const rect = new PDFNet.Rect(mathRect.x1, mathRect.y1, mathRect.x2, mathRect.y2); await replacer.addString(result.out_str.slice(1,-1), ''); const page = await document.getPage(result?.page_num) From 986bbb02496f99072e470df694f40d3fa3a1d846 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 15 May 2026 18:59:24 +0000 Subject: [PATCH 4/4] style(clm): remove extra spacing in PDFNet.Rect construction Agent-Logs-Url: https://github.com/ApryseSDK/webviewer-samples/sessions/8353866d-f627-416e-9644-15f8f3337803 Co-authored-by: DavidEGutierrez <172812369+DavidEGutierrez@users.noreply.github.com> --- webviewer-clm/src/pages/agreements/create.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webviewer-clm/src/pages/agreements/create.tsx b/webviewer-clm/src/pages/agreements/create.tsx index 5e7e5203..ac805113 100644 --- a/webviewer-clm/src/pages/agreements/create.tsx +++ b/webviewer-clm/src/pages/agreements/create.tsx @@ -126,7 +126,7 @@ export const AgreementCreate = () => { highlights.begin(document); let quad = (await highlights.getCurrentQuads())[0]; const mathRect = new PDFNetMath.Quad(quad?.p1x, quad?.p1y, quad?.p2x, quad?.p2y, quad?.p3x, quad?.p3y, quad?.p4x, quad?.p4y).toRect(); - const rect = new PDFNet.Rect(mathRect.x1, mathRect.y1, mathRect.x2, mathRect.y2); + const rect = new PDFNet.Rect(mathRect.x1, mathRect.y1, mathRect.x2, mathRect.y2); await replacer.addString(result.out_str.slice(1,-1), ''); const page = await document.getPage(result?.page_num)