-
Notifications
You must be signed in to change notification settings - Fork 254
Expand file tree
/
Copy pathcodePreviewPanelClient.tsx
More file actions
68 lines (64 loc) · 2.23 KB
/
codePreviewPanelClient.tsx
File metadata and controls
68 lines (64 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
'use client';
import { useState } from "react";
import { PureCodePreviewPanel } from "./pureCodePreviewPanel";
import { PureMarkDownPreviewPanel } from "./pureMarkDownPreviewPanel";
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
interface SourcePreviewPanelClientProps {
path: string;
repoName: string;
revisionName: string;
source: string;
language: string;
}
export const SourcePreviewPanelClient = ({
source,
language,
path,
repoName,
revisionName,
}: SourcePreviewPanelClientProps) => {
const [viewMode, setViewMode] = useState<string>("preview");
const isMarkdown = language === 'Markdown';
return (
<>
{isMarkdown && (
<>
<div className="p-2 border-b flex">
<ToggleGroup
type="single"
defaultValue="preview"
value={viewMode}
onValueChange={(value) => value && setViewMode(value)}
>
<ToggleGroupItem
value="preview"
aria-label="Preview"
className="w-fit px-4"
>
Preview
</ToggleGroupItem>
<ToggleGroupItem
value="code"
aria-label="Code"
className="w-fit px-4"
>
Code
</ToggleGroupItem>
</ToggleGroup>
</div>
</>
)}
{isMarkdown && viewMode === "preview" ? (
<PureMarkDownPreviewPanel source={source} repoName={repoName} revisionName={revisionName} />
) : (
<PureCodePreviewPanel
source={source}
language={language}
repoName={repoName}
path={path}
revisionName={revisionName}
/>
)}
</>
);
}