feat: center dock = 50% of viewport (w/h)

This commit is contained in:
Hermes Agent committed 2026-09-09 18:55:58 +02:00
1 parent 837bdfbfae
commit e57e4c18ea
1 file changed
+5 -1
+5 -1
View File
@@ -29,7 +29,7 @@ export default function () {
// - Лево/Право: ширина 320px, высота = макс (весь viewport по вертикали минус шапка) // - Лево/Право: ширина 320px, высота = макс (весь viewport по вертикали минус шапка)
// - Верх/Низ: высота 320px, ширина = макс (весь viewport по горизонтали) // - Верх/Низ: высота 320px, ширина = макс (весь viewport по горизонтали)
// - Углы: ширина и высота = макс (растянуть обе оси на весь viewport) // - Углы: ширина и высота = макс (растянуть обе оси на весь viewport)
// - Центр: текущий размер, только центрирует (не трогает размеры) // - Центр: размер = 50% viewport (по ширине и высоте), центрируется
// Возвращает размер (экранные px) и позицию (canvas-space, прижатую к нужному краю). // Возвращает размер (экранные px) и позицию (canvas-space, прижатую к нужному краю).
const DOCK_EDGE_SIZE = 320 const DOCK_EDGE_SIZE = 320
function computeDock (position: DockPosition, currentWidth: number, currentHeight: number) { function computeDock (position: DockPosition, currentWidth: number, currentHeight: number) {
@@ -42,6 +42,7 @@ export default function () {
position === 'bottom-left' || position === 'bottom-right' position === 'bottom-left' || position === 'bottom-right'
const isLeftRight = position === 'center-left' || position === 'center-right' const isLeftRight = position === 'center-left' || position === 'center-right'
const isTopBottom = position === 'top-center' || position === 'bottom-center' const isTopBottom = position === 'top-center' || position === 'bottom-center'
const isCenter = position === 'center'
let targetW = currentWidth let targetW = currentWidth
let targetH = currentHeight let targetH = currentHeight
@@ -54,6 +55,9 @@ export default function () {
} else if (isTopBottom) { } else if (isTopBottom) {
targetW = maxW targetW = maxW
targetH = DOCK_EDGE_SIZE targetH = DOCK_EDGE_SIZE
} else if (isCenter) {
targetW = Math.round(maxW / 2)
targetH = Math.round(maxH / 2)
} }
// canvas-units от целевого размера // canvas-units от целевого размера
const wCanvas = targetW / zoom const wCanvas = targetW / zoom