import { Images, SupportedPreviewDocumentTypes } from '@/constants/common'; import { IReferenceChunk } from '@/interfaces/database/chat'; import { IChunk } from '@/interfaces/database/knowledge'; import { UploadFile } from 'antd'; import { get } from 'lodash'; import { v4 as uuid } from 'uuid'; export const buildChunkHighlights = ( selectedChunk: IChunk | IReferenceChunk, size: { width: number; height: number }, ) => { return Array.isArray(selectedChunk?.positions) && selectedChunk.positions.every((x) => Array.isArray(x)) ? selectedChunk?.positions?.map((x) => { const boundingRect = { width: size.width, height: size.height, x1: x[1], x2: x[2], y1: x[3], y2: x[4], }; return { id: uuid(), comment: { text: '', emoji: '', }, content: { text: get(selectedChunk, 'content_with_weight') || get(selectedChunk, 'content', ''), }, position: { boundingRect: boundingRect, rects: [boundingRect], pageNumber: x[0], }, }; }) : []; }; export const isFileUploadDone = (file: UploadFile) => file.status === 'done'; export const getExtension = (name: string) => name?.slice(name.lastIndexOf('.') + 1).toLowerCase() ?? ''; export const isPdf = (name: string) => { return getExtension(name) === 'pdf'; }; export const getUnSupportedFilesCount = (message: string) => { return message.split('\n').length; }; export const isSupportedPreviewDocumentType = (fileExtension: string) => { return SupportedPreviewDocumentTypes.includes(fileExtension); }; export const isImage = (image: string) => { return [...Images, 'svg'].some((x) => x === image); };