2024-07-17 11:25:02 +03:00
|
|
|
import styles from '../DrawPDFFields/style.module.scss'
|
|
|
|
import { PdfPage } from '../../types/drawing.ts'
|
2024-08-02 11:43:51 +01:00
|
|
|
import { CurrentUserMark } from '../../types/mark.ts'
|
2024-07-17 11:25:02 +03:00
|
|
|
import PdfMarkItem from './PdfMarkItem.tsx'
|
2024-08-14 12:24:15 +03:00
|
|
|
import { useEffect, useRef } from 'react'
|
2024-07-17 11:25:02 +03:00
|
|
|
interface PdfPageProps {
|
|
|
|
page: PdfPage
|
2024-08-02 11:43:51 +01:00
|
|
|
currentUserMarks: CurrentUserMark[]
|
2024-07-18 15:38:07 +03:00
|
|
|
handleMarkClick: (id: number) => void
|
2024-08-02 11:43:51 +01:00
|
|
|
selectedMarkValue: string
|
|
|
|
selectedMark: CurrentUserMark | null
|
2024-07-17 11:25:02 +03:00
|
|
|
}
|
|
|
|
|
2024-08-05 14:11:15 +03:00
|
|
|
/**
|
|
|
|
* Responsible for rendering a single Pdf Page and its Marks
|
|
|
|
*/
|
2024-08-14 12:24:15 +03:00
|
|
|
const PdfPageItem = ({
|
|
|
|
page,
|
|
|
|
currentUserMarks,
|
|
|
|
handleMarkClick,
|
|
|
|
selectedMarkValue,
|
|
|
|
selectedMark
|
|
|
|
}: PdfPageProps) => {
|
|
|
|
useEffect(() => {
|
|
|
|
if (selectedMark !== null && !!markRefs.current[selectedMark.id]) {
|
|
|
|
markRefs.current[selectedMark.id]?.scrollIntoView({
|
|
|
|
behavior: 'smooth',
|
|
|
|
block: 'end'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}, [selectedMark])
|
|
|
|
const markRefs = useRef<(HTMLDivElement | null)[]>([])
|
2024-07-17 11:25:02 +03:00
|
|
|
return (
|
|
|
|
<div
|
2024-07-18 15:38:07 +03:00
|
|
|
className={styles.pdfImageWrapper}
|
2024-07-17 11:25:02 +03:00
|
|
|
style={{
|
|
|
|
border: '1px solid #c4c4c4',
|
2024-07-18 15:38:07 +03:00
|
|
|
marginBottom: '10px',
|
|
|
|
marginTop: '10px'
|
2024-07-17 11:25:02 +03:00
|
|
|
}}
|
|
|
|
>
|
2024-08-14 12:24:15 +03:00
|
|
|
<img draggable="false" src={page.image} style={{ width: '100%' }} />
|
|
|
|
{currentUserMarks.map((m, i) => (
|
|
|
|
<div key={i} ref={(el) => (markRefs.current[m.id] = el)}>
|
2024-07-18 15:38:07 +03:00
|
|
|
<PdfMarkItem
|
|
|
|
key={i}
|
|
|
|
handleMarkClick={handleMarkClick}
|
2024-08-02 11:43:51 +01:00
|
|
|
selectedMarkValue={selectedMarkValue}
|
|
|
|
userMark={m}
|
|
|
|
selectedMark={selectedMark}
|
2024-08-14 12:24:15 +03:00
|
|
|
/>
|
|
|
|
</div>
|
2024-07-17 11:25:02 +03:00
|
|
|
))}
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2024-08-14 12:24:15 +03:00
|
|
|
export default PdfPageItem
|