Fix: Changed 'HightLightMarkdown' to 'HighLightMarkdown' (#11803)

### What problem does this PR solve?

Fix: Changed 'HightLightMarkdown' to 'HighLightMarkdown', and replaced
the private component with a public component.

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
chanx
2025-12-08 11:11:48 +08:00
committed by GitHub
parent 7dd9ce0b5f
commit 5a2011e687
13 changed files with 25 additions and 76 deletions

View File

@ -1,5 +1,5 @@
import CopyToClipboard from '@/components/copy-to-clipboard'; import CopyToClipboard from '@/components/copy-to-clipboard';
import HightLightMarkdown from '@/components/highlight-markdown'; import HighLightMarkdown from '@/components/highlight-markdown';
import { SharedFrom } from '@/constants/chat'; import { SharedFrom } from '@/constants/chat';
import { useTranslate } from '@/hooks/common-hooks'; import { useTranslate } from '@/hooks/common-hooks';
import { IModalProps } from '@/interfaces/common'; import { IModalProps } from '@/interfaces/common';
@ -111,7 +111,7 @@ const EmbedModal = ({
/> />
</Form.Item> </Form.Item>
</div> </div>
<HightLightMarkdown>{text}</HightLightMarkdown> <HighLightMarkdown>{text}</HighLightMarkdown>
</Card> </Card>
), ),
}, },

View File

@ -1,5 +1,5 @@
import CopyToClipboard from '@/components/copy-to-clipboard'; import CopyToClipboard from '@/components/copy-to-clipboard';
import HightLightMarkdown from '@/components/highlight-markdown'; import HighLightMarkdown from '@/components/highlight-markdown';
import { SelectWithSearch } from '@/components/originui/select-with-search'; import { SelectWithSearch } from '@/components/originui/select-with-search';
import { import {
Dialog, Dialog,
@ -277,7 +277,7 @@ function EmbedDialog({
<div className="max-h-[350px] overflow-auto"> <div className="max-h-[350px] overflow-auto">
<span>{t('embedCode', { keyPrefix: 'search' })}</span> <span>{t('embedCode', { keyPrefix: 'search' })}</span>
<div className="max-h-full overflow-y-auto"> <div className="max-h-full overflow-y-auto">
<HightLightMarkdown>{text}</HightLightMarkdown> <HighLightMarkdown>{text}</HighLightMarkdown>
</div> </div>
</div> </div>
<div className=" font-medium mt-4 mb-1"> <div className=" font-medium mt-4 mb-1">

View File

@ -16,7 +16,7 @@ import { preprocessLaTeX } from '@/utils/chat';
import { useIsDarkTheme } from '../theme-provider'; import { useIsDarkTheme } from '../theme-provider';
import styles from './index.less'; import styles from './index.less';
const HightLightMarkdown = ({ const HighLightMarkdown = ({
children, children,
}: { }: {
children: string | null | undefined; children: string | null | undefined;
@ -56,4 +56,4 @@ const HightLightMarkdown = ({
); );
}; };
export default HightLightMarkdown; export default HighLightMarkdown;

View File

@ -3,10 +3,7 @@
// Inspired by react-hot-toast library // Inspired by react-hot-toast library
import * as React from 'react'; import * as React from 'react';
import type { import type { ToastActionElement, ToastProps } from '@/components/ui/toast';
ToastActionElement,
ToastProps,
} from '@/components/ui/toast';
const TOAST_LIMIT = 1; const TOAST_LIMIT = 1;
const TOAST_REMOVE_DELAY = 1000000; const TOAST_REMOVE_DELAY = 1000000;

View File

@ -1,6 +1,6 @@
import { IModalProps } from '@/interfaces/common'; import { IModalProps } from '@/interfaces/common';
import { IFeedbackRequestBody } from '@/interfaces/request/chat'; import { IFeedbackRequestBody } from '@/interfaces/request/chat';
import HightLightMarkdown from './highlight-markdown'; import HighLightMarkdown from './highlight-markdown';
import SvgIcon from './svg-icon'; import SvgIcon from './svg-icon';
import { Dialog, DialogContent, DialogHeader, DialogTitle } from './ui/dialog'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from './ui/dialog';
@ -25,7 +25,7 @@ export function PromptDialog({
</DialogTitle> </DialogTitle>
</DialogHeader> </DialogHeader>
<section className="max-h-[80vh] overflow-auto"> <section className="max-h-[80vh] overflow-auto">
<HightLightMarkdown>{prompt}</HightLightMarkdown> <HighLightMarkdown>{prompt}</HighLightMarkdown>
</section> </section>
</DialogContent> </DialogContent>
</Dialog> </Dialog>

View File

@ -1,4 +1,4 @@
import HightLightMarkdown from '@/components/highlight-markdown'; import HighLightMarkdown from '@/components/highlight-markdown';
import { import {
Timeline, Timeline,
TimelineContent, TimelineContent,
@ -327,9 +327,9 @@ export const WorkFlowTimeline = ({
<AccordionContent> <AccordionContent>
<div className="space-y-2"> <div className="space-y-2">
<div className="w-full h-[200px] break-words overflow-auto scrollbar-auto p-2 bg-muted"> <div className="w-full h-[200px] break-words overflow-auto scrollbar-auto p-2 bg-muted">
<HightLightMarkdown> <HighLightMarkdown>
{x.data.thoughts || ''} {x.data.thoughts || ''}
</HightLightMarkdown> </HighLightMarkdown>
</div> </div>
</div> </div>
</AccordionContent> </AccordionContent>

View File

@ -43,9 +43,6 @@ export default function MemoryMessage() {
// setRowSelection={setRowSelection} // setRowSelection={setRowSelection}
// loading={loading} // loading={loading}
></MemoryTable> ></MemoryTable>
<div className="flex items-center gap-2">
<div className="h-4 w-4 rounded-full bg-text ">message</div>
</div>
</div> </div>
); );
} }

View File

@ -122,7 +122,7 @@ export function MemoryTable({
cellClassName: 'w-12', cellClassName: 'w-12',
}, },
cell: () => ( cell: () => (
<div className=" hidden group-hover:flex"> <div className=" flex opacity-0 group-hover:opacity-100">
<Button variant={'ghost'} className="bg-transparent"> <Button variant={'ghost'} className="bg-transparent">
<TextSelect /> <TextSelect />
</Button> </Button>

View File

@ -1,4 +1,4 @@
import HightLightMarkdown from '@/components/highlight-markdown'; import HighLightMarkdown from '@/components/highlight-markdown';
import message from '@/components/ui/message'; import message from '@/components/ui/message';
import { Modal } from '@/components/ui/modal/modal'; import { Modal } from '@/components/ui/modal/modal';
import { RAGFlowSelect } from '@/components/ui/select'; import { RAGFlowSelect } from '@/components/ui/select';
@ -102,7 +102,7 @@ const EmbedAppModal = (props: IEmbedAppModalProps) => {
</label> </label>
{/* <div className=" border rounded-lg"> */} {/* <div className=" border rounded-lg"> */}
{/* <pre className="text-sm whitespace-pre-wrap">{text}</pre> */} {/* <pre className="text-sm whitespace-pre-wrap">{text}</pre> */}
<HightLightMarkdown>{text}</HightLightMarkdown> <HighLightMarkdown>{text}</HighLightMarkdown>
{/* </div> */} {/* </div> */}
</div> </div>

View File

@ -1,48 +0,0 @@
import Markdown from 'react-markdown';
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
import rehypeKatex from 'rehype-katex';
import rehypeRaw from 'rehype-raw';
import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import 'katex/dist/katex.min.css'; // `rehype-katex` does not import the CSS for you
import { preprocessLaTeX } from '@/utils/chat';
const HightLightMarkdown = ({
children,
}: {
children: string | null | undefined;
}) => {
return (
<Markdown
remarkPlugins={[remarkGfm, remarkMath]}
rehypePlugins={[rehypeRaw, rehypeKatex]}
className="text-text-primary text-sm"
components={
{
code(props: any) {
const { children, className, ...rest } = props;
const match = /language-(\w+)/.exec(className || '');
return match ? (
<SyntaxHighlighter {...rest} PreTag="div" language={match[1]}>
{String(children).replace(/\n$/, '')}
</SyntaxHighlighter>
) : (
<code
{...rest}
className={`${className} pt-1 px-2 pb-2 m-0 whitespace-break-spaces rounded text-text-primary text-sm`}
>
{children}
</code>
);
},
} as any
}
>
{children ? preprocessLaTeX(children) : children}
</Markdown>
);
};
export default HightLightMarkdown;

View File

@ -1,5 +1,6 @@
import { EmptyType } from '@/components/empty/constant'; import { EmptyType } from '@/components/empty/constant';
import Empty from '@/components/empty/empty'; import Empty from '@/components/empty/empty';
import HighLightMarkdown from '@/components/highlight-markdown';
import { FileIcon } from '@/components/icon-font'; import { FileIcon } from '@/components/icon-font';
import { ImageWithPopover } from '@/components/image'; import { ImageWithPopover } from '@/components/image';
import { Input } from '@/components/originui/input'; import { Input } from '@/components/originui/input';
@ -20,7 +21,6 @@ import { Dispatch, SetStateAction, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { ISearchAppDetailProps } from '../next-searches/hooks'; import { ISearchAppDetailProps } from '../next-searches/hooks';
import PdfDrawer from './document-preview-modal'; import PdfDrawer from './document-preview-modal';
import HightLightMarkdown from './highlight-markdown';
import { ISearchReturnProps } from './hooks'; import { ISearchReturnProps } from './hooks';
import './index.less'; import './index.less';
import MarkdownContent from './markdown-content'; import MarkdownContent from './markdown-content';
@ -217,9 +217,9 @@ export default function SearchingView({
</PopoverTrigger> </PopoverTrigger>
<PopoverContent className="text-text-primary !w-full max-w-lg "> <PopoverContent className="text-text-primary !w-full max-w-lg ">
<div className="max-h-96 overflow-auto scrollbar-thin"> <div className="max-h-96 overflow-auto scrollbar-thin">
<HightLightMarkdown> <HighLightMarkdown>
{chunk.content_with_weight} {chunk.content_with_weight}
</HightLightMarkdown> </HighLightMarkdown>
</div> </div>
</PopoverContent> </PopoverContent>
</Popover> </Popover>

View File

@ -4,7 +4,7 @@ import message from '@/components/ui/message';
import { useSetModalState } from '@/hooks/common-hooks'; import { useSetModalState } from '@/hooks/common-hooks';
import { useHandleSearchChange } from '@/hooks/logic-hooks'; import { useHandleSearchChange } from '@/hooks/logic-hooks';
import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
import searchService from '@/services/search-service'; import searchService, { searchServiceNext } from '@/services/search-service';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { useDebounce } from 'ahooks'; import { useDebounce } from 'ahooks';
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
@ -103,7 +103,7 @@ export const useFetchSearchList = () => {
}, },
], ],
queryFn: async () => { queryFn: async () => {
const { data: response } = await searchService.getSearchList( const { data: response } = await searchServiceNext.getSearchList(
{ {
params: { params: {
keywords: debouncedSearchString, keywords: debouncedSearchString,

View File

@ -1,5 +1,6 @@
import api from '@/utils/api'; import api from '@/utils/api';
import { registerNextServer } from '@/utils/register-server'; import registerServer, { registerNextServer } from '@/utils/register-server';
import request from '@/utils/request';
const { const {
createSearch, createSearch,
@ -48,6 +49,8 @@ const methods = {
method: 'get', method: 'get',
}, },
} as const; } as const;
const searchService = registerNextServer<keyof typeof methods>(methods); const searchService = registerServer<keyof typeof methods>(methods, request);
export const searchServiceNext =
registerNextServer<keyof typeof methods>(methods);
export default searchService; export default searchService;