"use client"; import React from "react"; import { LayoutRendererProps } from "../BaseLayoutRenderer"; /** * split 컴포넌트 */ export interface SplitLayoutProps extends LayoutRendererProps { renderer: any; // SplitLayoutRenderer 타입 } export const SplitLayout: React.FC = ({ layout, isDesignMode = false, isSelected = false, onClick, className = "", renderer, ...props }) => { if (!layout.layoutConfig.split) { return (
split 설정이 없습니다.
layoutConfig.split가 필요합니다.
); } const splitConfig = layout.layoutConfig.split; const containerStyle = renderer.getLayoutContainerStyle(); // split 컨테이너 스타일 const splitStyle: React.CSSProperties = { ...containerStyle, // TODO: 레이아웃 전용 스타일 정의 height: "100%", width: "100%", }; // 디자인 모드 스타일 if (isDesignMode) { splitStyle.border = isSelected ? "2px solid #3b82f6" : "1px solid #e2e8f0"; splitStyle.borderRadius = "8px"; } return (
{layout.zones.map((zone: any) => { const zoneChildren = renderer.getZoneChildren(zone.id); // TODO: 존별 스타일 정의 const zoneStyle: React.CSSProperties = { // 레이아웃별 존 스타일 구현 }; return renderer.renderZone(zone, zoneChildren, { style: zoneStyle, className: "split-zone", }); })} {/* 디자인 모드에서 빈 영역 표시 */} {isDesignMode && layout.zones.length === 0 && (
split에 존을 추가하세요
)}
); };