import React, { useCallback } from 'react'; import { JsonViewer, CodeHighlight, Collapse, Button } from '../../index'; import { SideBarCollapseProps } from '../interface'; import cls from 'classnames'; import { cssClasses, strings } from '@douyinfe/semi-foundation/sidebar/constants'; import { IconCodeStroked, IconFullScreenStroked, IconFile } from '@douyinfe/semi-icons'; import { JsonViewerProps } from '../../jsonViewer'; import { CodeHighlightProps } from '../../codeHighlight'; const collapseCls = cssClasses.COLLAPSE; const prefixCls = cssClasses.SIDEBAR; export interface CodeItemProps { name?: string; key?: string; isJson?: boolean; language?: string; content?: string; jsonViewerProps?: JsonViewerProps; codeHighlightProps?: CodeHighlightProps } // interface CodeDetail { // name?: string; // key?: string; // code?: CodeItemProps // } export interface CodeContentProps extends SideBarCollapseProps { style?: React.CSSProperties; className?: string; codes?: CodeItemProps[]; onExpand?: (e: React.MouseEvent, code: CodeItemProps, mode: string) => void } export const CodeItem = React.memo((props: CodeItemProps) => { const { language, content, isJson, jsonViewerProps = {}, codeHighlightProps = {} } = props; return
{isJson ? : }
; }); export const CollapseHeader = React.memo((props: { content: CodeItemProps; mode: string; onExpand: (e: React.MouseEvent, code: CodeItemProps, mode: string) => void }) => { const { content, onExpand, mode } = props; const handleExpand = useCallback((e: React.MouseEvent) => { onExpand?.(e, content, mode); }, [content, onExpand, mode]); return
{mode === 'code' ? : } {content.name}
; }); const CodeContent = React.memo((props: CodeContentProps) => { const { activeKey, codes = [], onExpand, style, className, onChange } = props; return {codes.map((code) => } itemKey={code.key} key={code.key} > )} ; }); export default CodeContent;