/** * * Copyright 2023-2024 InspectorRAGet Team * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ 'use client'; import cx from 'classnames'; import React from 'react'; import { useState } from 'react'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import rehypeRaw from 'rehype-raw'; import { Button, Tag, Tooltip } from '@carbon/react'; import { ChevronLeft, ChevronRight, ImproveRelevance, } from '@carbon/icons-react'; import { Document } from '@/src/types'; import classes from './DocumentPanel.module.scss'; function renderAnnotations( annotations: | { text: string; authors: string[]; color?: string }[] | undefined, ) { if (annotations === undefined) { return null; } else { return annotations.map((annotation, annotation_idx) => { return (
{annotation.text}
); }); } } export default function DocumentPanel({ documents, className, notify, onMouseDown, onMouseUp, }: { documents: Document[]; className?: string; onMouseDown: Function; onMouseUp: Function; notify?: Function; }) { const [documentIndex, setDocumentIndex] = useState(0); return ( <> {documents.length > 1 ? (
) : null}
onMouseDown(`document_${documentIndex}::text`)} onMouseUp={() => onMouseUp(`document_${documentIndex}::text`)} > {documents[documentIndex].title ? (

{documents[documentIndex].title}

) : null} {renderAnnotations(documents[documentIndex].annotations)}
{documents[documentIndex].text}
); }