타입별 상세설정 추가

This commit is contained in:
kjs
2025-09-03 11:32:09 +09:00
parent 162ab12806
commit f82d18575e
20 changed files with 4603 additions and 164 deletions

View File

@@ -32,6 +32,32 @@ export const usePanelState = (panels: PanelConfig[]) => {
return initialStates;
});
// 패널 설정이 변경되었을 때 크기 업데이트
useEffect(() => {
setPanelStates((prev) => {
const newStates = { ...prev };
panels.forEach((panel) => {
if (newStates[panel.id]) {
// 기존 패널의 위치는 유지하고 크기만 업데이트
newStates[panel.id] = {
...newStates[panel.id],
size: { width: panel.defaultWidth, height: panel.defaultHeight },
};
} else {
// 새로운 패널이면 전체 초기화
newStates[panel.id] = {
isOpen: false,
position: { x: 0, y: 0 },
size: { width: panel.defaultWidth, height: panel.defaultHeight },
};
}
});
return newStates;
});
}, [panels]);
// 패널 토글
const togglePanel = useCallback((panelId: string) => {
setPanelStates((prev) => ({
@@ -45,6 +71,10 @@ export const usePanelState = (panels: PanelConfig[]) => {
// 패널 열기
const openPanel = useCallback((panelId: string) => {
console.log("📂 패널 열기:", {
panelId,
timestamp: new Date().toISOString(),
});
setPanelStates((prev) => ({
...prev,
[panelId]: {
@@ -56,6 +86,10 @@ export const usePanelState = (panels: PanelConfig[]) => {
// 패널 닫기
const closePanel = useCallback((panelId: string) => {
console.log("📁 패널 닫기:", {
panelId,
timestamp: new Date().toISOString(),
});
setPanelStates((prev) => ({
...prev,
[panelId]: {
@@ -112,7 +146,7 @@ export const usePanelState = (panels: PanelConfig[]) => {
// 단축키 처리
panels.forEach((panel) => {
if (panel.shortcutKey && e.key.toLowerCase() === panel.shortcutKey.toLowerCase()) {
if (panel.shortcutKey && e.key?.toLowerCase() === panel.shortcutKey?.toLowerCase()) {
// Ctrl/Cmd 키와 함께 사용
if (e.ctrlKey || e.metaKey) {
e.preventDefault();
@@ -136,4 +170,3 @@ export const usePanelState = (panels: PanelConfig[]) => {
updatePanelSize,
};
};