From be970248686c0af7d8506cba8c64bf507419da3d Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Sun, 22 Jun 2025 13:07:02 +0200 Subject: so much stuff??? --- apps/web/src/stores/panel-store.ts | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 apps/web/src/stores/panel-store.ts (limited to 'apps/web/src/stores/panel-store.ts') diff --git a/apps/web/src/stores/panel-store.ts b/apps/web/src/stores/panel-store.ts new file mode 100644 index 00000000..ea2dacb9 --- /dev/null +++ b/apps/web/src/stores/panel-store.ts @@ -0,0 +1,79 @@ +import { create } from "zustand"; +import { persist } from "zustand/middleware"; + +interface PanelState { + // Horizontal panel sizes + toolsPanel: number; + previewPanel: number; + propertiesPanel: number; + + // Vertical panel sizes + mainContent: number; + timeline: number; + + // Flag to prevent initial overwrites + isInitialized: boolean; + + // Actions + setToolsPanel: (size: number) => void; + setPreviewPanel: (size: number) => void; + setPropertiesPanel: (size: number) => void; + setMainContent: (size: number) => void; + setTimeline: (size: number) => void; + setInitialized: () => void; +} + +export const usePanelStore = create()( + persist( + (set, get) => ({ + // Default sizes + toolsPanel: 20, + previewPanel: 60, + propertiesPanel: 20, + mainContent: 50, + timeline: 50, + isInitialized: false, + + // Actions + setToolsPanel: (size) => { + const state = get(); + if (!state.isInitialized) return; + set({ toolsPanel: size }); + }, + setPreviewPanel: (size) => { + const state = get(); + if (!state.isInitialized) return; + set({ previewPanel: size }); + }, + setPropertiesPanel: (size) => { + const state = get(); + if (!state.isInitialized) return; + set({ propertiesPanel: size }); + }, + setMainContent: (size) => { + const state = get(); + if (!state.isInitialized) return; + set({ mainContent: size }); + }, + setTimeline: (size) => { + const state = get(); + if (!state.isInitialized) return; + set({ timeline: size }); + }, + setInitialized: () => { + console.log("Panel store initialized for resize events"); + set({ isInitialized: true }); + }, + }), + { + name: "panel-sizes", + partialize: (state) => ({ + toolsPanel: state.toolsPanel, + previewPanel: state.previewPanel, + propertiesPanel: state.propertiesPanel, + mainContent: state.mainContent, + timeline: state.timeline, + }), + } + ) +); -- cgit v1.3.1