### What problem does this PR solve? Feat: Modify the data structure of the chunk in the conversation #3909 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
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);
|
|
};
|