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)