ragflow / web /src /utils /document-util.ts
balibabu
Feat: Modify the data structure of the chunk in the conversation #3909 (#3955)
a432686
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);
};