From 0be9cf3baa42d613405b31c0f5c105070c7b99d2 Mon Sep 17 00:00:00 2001 From: ngc2207 Date: Tue, 31 Dec 2024 23:57:27 +0800 Subject: [PATCH] refactor(constants): move languages.ts and themes.ts to editor folder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor(imports): update SUPPORTED_LANGUAGES and SUPPORTED_THEMES import path to use editor folder feat(constants): add MIN_FONT_SIZE态MAX_FONT_SIZE and DEFAULT_FONT_SIZE feat(store): add font size management to code editor store --- src/app/(main)/components/language-selector.tsx | 2 +- src/app/(main)/components/theme-selector.tsx | 2 +- src/constants/{ => editor}/languages.ts | 0 src/constants/editor/options.ts | 5 +++++ src/constants/{ => editor}/themes.ts | 0 src/store/useCodeEditorStore.ts | 10 +++++++--- src/types/index.ts | 2 ++ 7 files changed, 16 insertions(+), 5 deletions(-) rename src/constants/{ => editor}/languages.ts (100%) create mode 100644 src/constants/editor/options.ts rename src/constants/{ => editor}/themes.ts (100%) diff --git a/src/app/(main)/components/language-selector.tsx b/src/app/(main)/components/language-selector.tsx index f1a9424..c5ae98a 100644 --- a/src/app/(main)/components/language-selector.tsx +++ b/src/app/(main)/components/language-selector.tsx @@ -5,8 +5,8 @@ import { SelectContent, SelectTrigger, } from "@/components/ui/select"; -import { SUPPORTED_LANGUAGES } from "@/constants/languages"; import { useCodeEditorStore } from "@/store/useCodeEditorStore"; +import { SUPPORTED_LANGUAGES } from "@/constants/editor/languages"; export default function LanguageSelector() { const { language, setLanguage } = useCodeEditorStore(); diff --git a/src/app/(main)/components/theme-selector.tsx b/src/app/(main)/components/theme-selector.tsx index 28bb7f1..3df140f 100644 --- a/src/app/(main)/components/theme-selector.tsx +++ b/src/app/(main)/components/theme-selector.tsx @@ -6,7 +6,7 @@ import { SelectTrigger, } from "@/components/ui/select"; import { Palette } from "lucide-react"; -import { SUPPORTED_THEMES } from "@/constants/themes"; +import { SUPPORTED_THEMES } from "@/constants/editor/themes"; import { useCodeEditorStore } from "@/store/useCodeEditorStore"; export default function ThemeSelector() { diff --git a/src/constants/languages.ts b/src/constants/editor/languages.ts similarity index 100% rename from src/constants/languages.ts rename to src/constants/editor/languages.ts diff --git a/src/constants/editor/options.ts b/src/constants/editor/options.ts new file mode 100644 index 0000000..6ab9ab2 --- /dev/null +++ b/src/constants/editor/options.ts @@ -0,0 +1,5 @@ +export const MIN_FONT_SIZE = 8; + +export const MAX_FONT_SIZE = 24; + +export const DEFAULT_FONT_SIZE = 16; diff --git a/src/constants/themes.ts b/src/constants/editor/themes.ts similarity index 100% rename from src/constants/themes.ts rename to src/constants/editor/themes.ts diff --git a/src/store/useCodeEditorStore.ts b/src/store/useCodeEditorStore.ts index 71ad224..83809d7 100644 --- a/src/store/useCodeEditorStore.ts +++ b/src/store/useCodeEditorStore.ts @@ -1,16 +1,20 @@ import { create } from "zustand"; import { CodeEditorState } from "@/types"; -import { DEFAULT_THEME } from "@/constants/themes"; -import { DEFAULT_LANGUAGE } from "@/constants/languages"; +import { DEFAULT_THEME } from "@/constants/editor/themes"; +import { DEFAULT_LANGUAGE } from "@/constants/editor/languages"; import { persist, createJSONStorage } from "zustand/middleware"; +import { DEFAULT_FONT_SIZE } from "@/constants/editor/options"; export const useCodeEditorStore = create()( persist( - (set, get) => ({ + (set) => ({ language: DEFAULT_LANGUAGE, theme: DEFAULT_THEME, + fontSize: DEFAULT_FONT_SIZE, + setLanguage: (language: string) => set({ language }), setTheme: (theme: string) => set({ theme }), + setFontSize: (fontSize: number) => set({ fontSize }), }), { name: "code-editor-storage", diff --git a/src/types/index.ts b/src/types/index.ts index 44ecddc..df52baa 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,7 +1,9 @@ export interface CodeEditorState { language: string; theme: string; + fontSize: number; setLanguage: (language: string) => void; setTheme: (theme: string) => void; + setFontSize: (fontSize: number) => void; }