1
This commit is contained in:
@@ -298,6 +298,16 @@ export const LayoutStep: React.FC<Props> = ({ config, splits, onChange }) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// --- ДОБАВЛЕНО: Очистка при выходе мыши ---
|
||||||
|
const handleMouseLeave = () => {
|
||||||
|
setDragging(null);
|
||||||
|
setPhantomMainAxis(null);
|
||||||
|
setHoveredMainSplit(null);
|
||||||
|
setHoveredCell(null);
|
||||||
|
setHoveredPartition(null);
|
||||||
|
setPhantomPartition(null);
|
||||||
|
};
|
||||||
|
|
||||||
// --- RENDER ---
|
// --- RENDER ---
|
||||||
const renderCellsAndPartitions = () => {
|
const renderCellsAndPartitions = () => {
|
||||||
const elements = [];
|
const elements = [];
|
||||||
@@ -430,7 +440,12 @@ export const LayoutStep: React.FC<Props> = ({ config, splits, onChange }) => {
|
|||||||
|
|
||||||
<div className="flex-1 bg-slate-800/30 flex items-center justify-center p-4 overflow-hidden relative">
|
<div className="flex-1 bg-slate-800/30 flex items-center justify-center p-4 overflow-hidden relative">
|
||||||
<div className="relative shadow-2xl bg-[#1e293b] border border-slate-600 rounded-sm overflow-hidden" style={{ width: aspectRatio > 1 ? 'auto' : '100%', height: aspectRatio > 1 ? '100%' : 'auto', aspectRatio: `${1/aspectRatio}`, maxHeight: '100%', maxWidth: '100%', cursor: mode === 'lines' ? (dragging ? 'grabbing' : hoveredMainSplit ? 'col-resize' : 'crosshair') : (dragging ? 'grabbing' : hoveredPartition ? 'grab' : hoveredCell ? 'crosshair' : 'default') }}>
|
<div className="relative shadow-2xl bg-[#1e293b] border border-slate-600 rounded-sm overflow-hidden" style={{ width: aspectRatio > 1 ? 'auto' : '100%', height: aspectRatio > 1 ? '100%' : 'auto', aspectRatio: `${1/aspectRatio}`, maxHeight: '100%', maxWidth: '100%', cursor: mode === 'lines' ? (dragging ? 'grabbing' : hoveredMainSplit ? 'col-resize' : 'crosshair') : (dragging ? 'grabbing' : hoveredPartition ? 'grab' : hoveredCell ? 'crosshair' : 'default') }}>
|
||||||
<svg ref={svgRef} viewBox={`0 0 ${viewBoxW} ${viewBoxH}`} className="w-full h-full touch-none block" onMouseMove={handleMouseMove} onMouseDown={handleMouseDown} onMouseUp={() => setDragging(null)} onMouseLeave={() => setDragging(null)} onContextMenu={(e) => e.preventDefault()}>
|
<svg ref={svgRef} viewBox={`0 0 ${viewBoxW} ${viewBoxH}`} className="w-full h-full touch-none block"
|
||||||
|
onMouseMove={handleMouseMove}
|
||||||
|
onMouseDown={handleMouseDown}
|
||||||
|
onMouseUp={() => setDragging(null)}
|
||||||
|
onMouseLeave={handleMouseLeave} // ДОБАВЛЕН ОБРАБОТЧИК
|
||||||
|
onContextMenu={(e) => e.preventDefault()}>
|
||||||
<defs><pattern id="grid" width="50" height="50" patternUnits="userSpaceOnUse"><path d="M 50 0 L 0 0 0 50" fill="none" stroke="rgba(255,255,255,0.03)" strokeWidth="1"/></pattern></defs>
|
<defs><pattern id="grid" width="50" height="50" patternUnits="userSpaceOnUse"><path d="M 50 0 L 0 0 0 50" fill="none" stroke="rgba(255,255,255,0.03)" strokeWidth="1"/></pattern></defs>
|
||||||
<rect width="100%" height="100%" fill="url(#grid)" />
|
<rect width="100%" height="100%" fill="url(#grid)" />
|
||||||
{renderCellsAndPartitions()}
|
{renderCellsAndPartitions()}
|
||||||
|
|||||||
Reference in New Issue
Block a user