Skip to content

Commit e93b730

Browse files
committed
Merge branch 'sojeong'
2 parents 836395b + 7244a33 commit e93b730

File tree

9 files changed

+2770
-408
lines changed

9 files changed

+2770
-408
lines changed

src/components/ide/AnimationFactory.js

Lines changed: 392 additions & 194 deletions
Large diffs are not rendered by default.

src/components/ide/VisualizationModal.css

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,4 +1075,201 @@ body.dark-mode {
10751075
.main-animation-area {
10761076
padding: 12px;
10771077
}
1078+
}
1079+
/* 스크롤 가능한 시각화 영역 CSS 수정 */
1080+
1081+
/* 🎬 오른쪽: 메인 애니메이션 영역 (스크롤 개선) */
1082+
.main-animation-area {
1083+
flex: 1;
1084+
min-width: 400px;
1085+
background: var(--card);
1086+
padding: 20px;
1087+
display: flex;
1088+
flex-direction: column;
1089+
min-height: 100%;
1090+
1091+
/* 🔥 스크롤 설정 개선 */
1092+
overflow-y: auto; /* 세로 스크롤 활성화 */
1093+
overflow-x: hidden; /* 가로 스크롤 숨김 */
1094+
max-height: 100vh; /* 최대 높이 설정 */
1095+
}
1096+
1097+
/* 애니메이션 래퍼 - 콘텐츠가 넘칠 때 스크롤 가능하도록 */
1098+
.animation-wrapper {
1099+
flex: 1;
1100+
display: flex;
1101+
flex-direction: column;
1102+
min-height: 400px;
1103+
width: 100%;
1104+
1105+
/* 🔥 스크롤 처리 개선 */
1106+
overflow-y: auto;
1107+
overflow-x: hidden;
1108+
border-radius: 12px;
1109+
border: 1px solid var(--border);
1110+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
1111+
}
1112+
1113+
/* 플레이스홀더 애니메이션 스크롤 처리 */
1114+
.placeholder-animation {
1115+
width: 100%;
1116+
min-height: 400px;
1117+
display: flex;
1118+
flex-direction: column;
1119+
background: var(--card);
1120+
border-radius: 12px;
1121+
border: 1px solid var(--border);
1122+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
1123+
1124+
/* 🔥 스크롤 설정 */
1125+
overflow-y: auto;
1126+
overflow-x: hidden;
1127+
max-height: calc(100vh - 200px); /* 헤더와 여백 고려 */
1128+
}
1129+
1130+
.placeholder-content {
1131+
flex: 1;
1132+
display: flex;
1133+
align-items: flex-start;
1134+
justify-content: center;
1135+
padding: 32px 20px;
1136+
1137+
/* 🔥 스크롤 처리 */
1138+
overflow-y: auto;
1139+
overflow-x: hidden;
1140+
}
1141+
1142+
/* 🎨 커스텀 스크롤바 디자인 */
1143+
.main-animation-area::-webkit-scrollbar,
1144+
.animation-wrapper::-webkit-scrollbar,
1145+
.placeholder-animation::-webkit-scrollbar {
1146+
width: 8px;
1147+
}
1148+
1149+
.main-animation-area::-webkit-scrollbar-track,
1150+
.animation-wrapper::-webkit-scrollbar-track,
1151+
.placeholder-animation::-webkit-scrollbar-track {
1152+
background: #f1f5f9;
1153+
border-radius: 4px;
1154+
}
1155+
1156+
.main-animation-area::-webkit-scrollbar-thumb,
1157+
.animation-wrapper::-webkit-scrollbar-thumb,
1158+
.placeholder-animation::-webkit-scrollbar-thumb {
1159+
background: #cbd5e1;
1160+
border-radius: 4px;
1161+
transition: background 0.2s;
1162+
}
1163+
1164+
.main-animation-area::-webkit-scrollbar-thumb:hover,
1165+
.animation-wrapper::-webkit-scrollbar-thumb:hover,
1166+
.placeholder-animation::-webkit-scrollbar-thumb:hover {
1167+
background: #94a3b8;
1168+
}
1169+
1170+
/* Firefox 스크롤바 스타일링 */
1171+
.main-animation-area,
1172+
.animation-wrapper,
1173+
.placeholder-animation {
1174+
scrollbar-width: thin;
1175+
scrollbar-color: #cbd5e1 #f1f5f9;
1176+
}
1177+
1178+
/* 로딩/에러 상태 컨테이너도 스크롤 가능하게 */
1179+
.main-animation-area .loading-container,
1180+
.main-animation-area .error-container,
1181+
.main-animation-area .initial-container {
1182+
flex: 1;
1183+
display: flex;
1184+
flex-direction: column;
1185+
align-items: center;
1186+
justify-content: flex-start; /* center → flex-start */
1187+
gap: 16px;
1188+
padding: 40px;
1189+
text-align: center;
1190+
min-height: 400px;
1191+
1192+
/* 🔥 스크롤 처리 추가 */
1193+
overflow-y: auto;
1194+
max-height: calc(100vh - 200px);
1195+
}
1196+
1197+
/* 📋 2열 레이아웃 높이 제한 */
1198+
.modal-content {
1199+
flex: 1;
1200+
background: var(--bg);
1201+
overflow: hidden;
1202+
display: flex;
1203+
flex-direction: row;
1204+
width: 100%;
1205+
height: 100%;
1206+
max-height: calc(100vh - 120px); /* 헤더 높이 고려 */
1207+
}
1208+
1209+
/* 📋 왼쪽: 정보 패널 스크롤 개선 */
1210+
.info-panel-sidebar {
1211+
width: 250px;
1212+
min-width: 200px;
1213+
max-width: 280px;
1214+
background: var(--card);
1215+
border-right: 1px solid var(--border);
1216+
display: flex;
1217+
flex-direction: column;
1218+
gap: 12px;
1219+
padding: 16px;
1220+
flex-shrink: 0;
1221+
1222+
/* 🔥 스크롤 개선 */
1223+
overflow-y: auto;
1224+
overflow-x: hidden;
1225+
height: 100%;
1226+
max-height: calc(100vh - 120px);
1227+
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.05);
1228+
}
1229+
1230+
/* 정보 패널 스크롤바도 커스터마이징 */
1231+
.info-panel-sidebar::-webkit-scrollbar {
1232+
width: 6px;
1233+
}
1234+
1235+
.info-panel-sidebar::-webkit-scrollbar-track {
1236+
background: #f8fafc;
1237+
border-radius: 3px;
1238+
}
1239+
1240+
.info-panel-sidebar::-webkit-scrollbar-thumb {
1241+
background: #e2e8f0;
1242+
border-radius: 3px;
1243+
}
1244+
1245+
.info-panel-sidebar::-webkit-scrollbar-thumb:hover {
1246+
background: #cbd5e1;
1247+
}
1248+
1249+
/* 반응형 - 모바일에서 스크롤 처리 */
1250+
@media (max-width: 768px) {
1251+
.modal-content {
1252+
flex-direction: column;
1253+
max-height: calc(100vh - 80px);
1254+
}
1255+
1256+
.info-panel-sidebar {
1257+
width: 100%;
1258+
max-height: 200px;
1259+
border-right: none;
1260+
border-bottom: 1px solid var(--border);
1261+
overflow-y: auto;
1262+
}
1263+
1264+
.main-animation-area {
1265+
flex: 1;
1266+
min-height: 250px;
1267+
padding: 16px;
1268+
overflow-y: auto;
1269+
max-height: calc(100vh - 280px);
1270+
}
1271+
1272+
.placeholder-animation {
1273+
max-height: calc(100vh - 320px);
1274+
}
10781275
}

0 commit comments

Comments
 (0)