import { layoutConfigMode, xyGridMode } from '../types' /** * 获取xy方向的间距 * @param gap */ export function getXYGap (gap: number[] | number) { return { xGap: Array.isArray(gap) ? gap[1] : gap, yGap: Array.isArray(gap) ? gap[0] : gap } } /** * 计算格子大小 * @param layoutOrigin * @param layoutConfig */ export function calcGrid (layoutOrigin: any, layoutConfig: layoutConfigMode): xyGridMode { const { xGap, yGap } = getXYGap(layoutConfig.gap) if (layoutConfig.auto) { return { xGrid: (layoutOrigin.width - xGap * (layoutConfig.cols - 1)) / (layoutConfig.cols), yGrid: (layoutOrigin.height - yGap * (layoutConfig.rows - 1)) / (layoutConfig.rows) } } else { let xGrid = 0 let yGrid = 0 if (typeof layoutConfig.xGrid === 'string' && layoutConfig.xGrid?.indexOf('px') >= 0) { xGrid = layoutConfig.xGrid?.indexOf('px') >= 0 ? parseFloat(layoutConfig.xGrid) : Number(layoutConfig.xGrid) } else { xGrid = (layoutOrigin.width - xGap * (layoutConfig.cols - 1)) / (layoutConfig.cols) } if (typeof layoutConfig.yGrid === 'number') { yGrid = layoutConfig.yGrid } else if (layoutConfig.yGrid?.indexOf('px') >= 0) { yGrid = layoutConfig.yGrid?.indexOf('px') >= 0 ? parseFloat(layoutConfig.yGrid) : Number(layoutConfig.yGrid) } return { xGrid: xGrid, yGrid: yGrid } } }