1- import { useEffect } from "react" ;
1+ import { useEffect , useState } from "react" ;
22import {
33 AcceptReject ,
44 ExtractedDataDisplay ,
55 FilePreview ,
6+ JSONObject ,
67 useItemData ,
8+ type Highlight ,
79} from "@llamaindex/ui" ;
810import { Clock , XCircle } from "lucide-react" ;
911import { useParams } from "react-router-dom" ;
@@ -18,9 +20,10 @@ import { APP_TITLE } from "@/lib/config";
1820export default function ItemPage ( ) {
1921 const { itemId } = useParams < { itemId : string } > ( ) ;
2022 const { setButtons, setBreadcrumbs } = useToolbar ( ) ;
23+ const [ highlight , setHighlight ] = useState < Highlight | undefined > ( undefined ) ;
2124
2225 // Use the hook to fetch item data
23- const itemHookData = useItemData < MySchema > ( {
26+ const itemHookData = useItemData < MySchema & JSONObject > ( {
2427 // order/remove fields as needed here
2528 jsonSchema : modifyJsonSchema ( MyJsonSchema as any , { } ) ,
2629 itemId : itemId as string ,
@@ -65,7 +68,6 @@ export default function ItemPage() {
6568
6669 const {
6770 item : itemData ,
68- data,
6971 updateData,
7072 loading : isLoading ,
7173 error,
@@ -105,6 +107,7 @@ export default function ItemPage() {
105107 onBoundingBoxClick = { ( box , pageNumber ) => {
106108 console . log ( "Bounding box clicked:" , box , "on page:" , pageNumber ) ;
107109 } }
110+ highlight = { highlight }
108111 />
109112 ) }
110113 </ div >
@@ -113,17 +116,22 @@ export default function ItemPage() {
113116 < div className = "flex-1 bg-white h-full overflow-y-auto" >
114117 < div className = "p-4 space-y-4" >
115118 { /* Extracted Data */ }
116- < ExtractedDataDisplay
117- data = { ( data as Record < string , unknown > ) || { } }
118- confidence = {
119- {
120- /** TODO: add confidence and page citations */
121- }
122- }
119+ < ExtractedDataDisplay < MySchema & JSONObject >
120+ extractedData = { itemData . data }
123121 title = "Extracted Data"
124122 onChange = { ( updatedData ) => {
125123 updateData ( updatedData as any ) ;
126124 } }
125+ onClickField = { ( args ) => {
126+ // TODO: set multiple highlights
127+ setHighlight ( {
128+ page : args . metadata ?. citation ?. [ 0 ] ?. page ?? 1 ,
129+ x : 100 ,
130+ y : 100 ,
131+ width : 0 ,
132+ height : 0 ,
133+ } ) ;
134+ } }
127135 jsonSchema = { itemHookData . jsonSchema }
128136 />
129137 </ div >
0 commit comments