feat(project): init

This commit is contained in:
2026-02-03 18:05:47 +08:00
commit f37a119eff
188 changed files with 29246 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
import { create } from "zustand"
interface TimerStore {
timer: NodeJS.Timeout | null
startTimer: (fn: Function, delay: number) => void
clearTimer: () => void
}
export const useTimerStore = create<TimerStore>((set, get) => ({
timer: null,
startTimer: (fn, delay) => {
const { timer } = get()
if (timer !== null) {
clearTimeout(timer)
}
const t = setTimeout(() => {
fn()
}, delay)
set({ timer: t })
},
clearTimer: () => {
const { timer } = get()
if (timer !== null) {
clearTimeout(timer)
set({ timer: null })
}
},
}))
interface IntervalStore {
timer: NodeJS.Timeout | null
startTimer: (fn: Function, delay: number) => void
clearTimer: () => void
isAutoSave: boolean
setIsAutoSave: (isAutoSave: boolean) => void
autoSaveGap: number
setAutoSaveGap: (autoSaveGap: number) => void
}
export const useIntervalStore = create<IntervalStore>((set, get) => ({
timer: null,
isAutoSave: false,
autoSaveGap: 5,
startTimer: (fn, delay) => {
const { timer } = get()
if (timer !== null) {
clearInterval(timer)
}
const t = setInterval(() => {
fn()
}, delay)
set((state) => ({ ...state, timer: t }))
},
clearTimer: () => {
const { timer } = get()
if (timer !== null) {
clearInterval(timer)
set((state) => ({ ...state, timer: null }))
}
},
setIsAutoSave: (flag: boolean) => {
set((state) => ({ ...state, isAutoSave: flag }))
},
setAutoSaveGap: (value: number) => {
set((state) => ({ ...state, autoSaveGap: value }))
},
}))