refactor(header, reset-button, useCodeEditorStore): remove unnecessary value prop and refactor related components
This commit is contained in:
parent
3336a9f1d0
commit
353aff9b4d
@ -1,5 +1,3 @@
|
|||||||
"use client";
|
|
||||||
|
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import CopyButton from "./copy-button";
|
import CopyButton from "./copy-button";
|
||||||
import RedoButton from "./redo-button";
|
import RedoButton from "./redo-button";
|
||||||
@ -7,8 +5,6 @@ import UndoButton from "./undo-button";
|
|||||||
import ResetButton from "./reset-button";
|
import ResetButton from "./reset-button";
|
||||||
import FormatButton from "./format-button";
|
import FormatButton from "./format-button";
|
||||||
import LanguageSelector from "./language-selector";
|
import LanguageSelector from "./language-selector";
|
||||||
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
|
|
||||||
import { TEMP_DEFAULT_EDITOR_VALUE } from "@/config/problem/value";
|
|
||||||
|
|
||||||
interface WorkspaceEditorHeaderProps {
|
interface WorkspaceEditorHeaderProps {
|
||||||
className?: string;
|
className?: string;
|
||||||
@ -18,8 +14,6 @@ export default function WorkspaceEditorHeader({
|
|||||||
className,
|
className,
|
||||||
...props
|
...props
|
||||||
}: WorkspaceEditorHeaderProps) {
|
}: WorkspaceEditorHeaderProps) {
|
||||||
const { language } = useCodeEditorStore();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<header
|
<header
|
||||||
{...props}
|
{...props}
|
||||||
@ -30,7 +24,7 @@ export default function WorkspaceEditorHeader({
|
|||||||
<LanguageSelector />
|
<LanguageSelector />
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-x-2">
|
<div className="flex items-center gap-x-2">
|
||||||
<ResetButton value={TEMP_DEFAULT_EDITOR_VALUE[language]} />
|
<ResetButton />
|
||||||
<UndoButton />
|
<UndoButton />
|
||||||
<RedoButton />
|
<RedoButton />
|
||||||
<FormatButton />
|
<FormatButton />
|
||||||
|
@ -9,16 +9,10 @@ import {
|
|||||||
import { RotateCcw } from "lucide-react";
|
import { RotateCcw } from "lucide-react";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
|
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
|
||||||
|
import { TEMP_DEFAULT_EDITOR_VALUE } from "@/config/problem/value";
|
||||||
|
|
||||||
interface ResetButtonProps {
|
export default function ResetButton() {
|
||||||
value: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function ResetButton({
|
|
||||||
value
|
|
||||||
}: ResetButtonProps) {
|
|
||||||
const { editor, language } = useCodeEditorStore();
|
const { editor, language } = useCodeEditorStore();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TooltipProvider delayDuration={0}>
|
<TooltipProvider delayDuration={0}>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
@ -29,6 +23,7 @@ export default function ResetButton({
|
|||||||
aria-label="Reset Code"
|
aria-label="Reset Code"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (editor) {
|
if (editor) {
|
||||||
|
const value = TEMP_DEFAULT_EDITOR_VALUE[language];
|
||||||
const model = editor.getModel();
|
const model = editor.getModel();
|
||||||
if (model) {
|
if (model) {
|
||||||
const fullRange = model.getFullModelRange();
|
const fullRange = model.getFullModelRange();
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { create } from "zustand";
|
import { create } from "zustand";
|
||||||
import { getPath } from "@/lib/utils";
|
import { getPath } from "@/lib/utils";
|
||||||
import type { editor } from "monaco-editor";
|
import type { editor } from "monaco-editor";
|
||||||
import { JudgeResult } from "@/config/judge";
|
import { JudgeResultMetadata } from "@/types/judge";
|
||||||
import { EditorLanguage } from "@/types/editor-language";
|
import { EditorLanguage } from "@/types/editor-language";
|
||||||
import LanguageServerConfig from "@/config/language-server";
|
import LanguageServerConfig from "@/config/language-server";
|
||||||
import { createJSONStorage, persist } from "zustand/middleware";
|
import { createJSONStorage, persist } from "zustand/middleware";
|
||||||
@ -18,7 +18,7 @@ interface CodeEditorState {
|
|||||||
isLspEnabled: boolean;
|
isLspEnabled: boolean;
|
||||||
editorConfig: editor.IEditorConstructionOptions;
|
editorConfig: editor.IEditorConstructionOptions;
|
||||||
editor: editor.IStandaloneCodeEditor | null;
|
editor: editor.IStandaloneCodeEditor | null;
|
||||||
result: JudgeResult | null;
|
result: JudgeResultMetadata | null;
|
||||||
setHydrated: (value: boolean) => void;
|
setHydrated: (value: boolean) => void;
|
||||||
setLanguage: (language: EditorLanguage) => void;
|
setLanguage: (language: EditorLanguage) => void;
|
||||||
setPath: (path: string) => void;
|
setPath: (path: string) => void;
|
||||||
@ -27,7 +27,7 @@ interface CodeEditorState {
|
|||||||
setIsLspEnabled: (enabled: boolean) => void;
|
setIsLspEnabled: (enabled: boolean) => void;
|
||||||
setEditorConfig: (editorConfig: editor.IEditorConstructionOptions) => void;
|
setEditorConfig: (editorConfig: editor.IEditorConstructionOptions) => void;
|
||||||
setEditor: (editor: editor.IStandaloneCodeEditor) => void;
|
setEditor: (editor: editor.IStandaloneCodeEditor) => void;
|
||||||
setResult: (result: JudgeResult) => void;
|
setResult: (result: JudgeResultMetadata) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useCodeEditorStore = create<CodeEditorState>()(
|
export const useCodeEditorStore = create<CodeEditorState>()(
|
||||||
|
Loading…
Reference in New Issue
Block a user