UNPKG

@pisell/layout

Version:

基于 Fusion 设计系统的自然布局体系

96 lines (91 loc) 2.44 kB
import { isNumber, isString } from 'lodash-es'; import { DEFAULT_BREAK_POINTS } from "../common/constant"; /** * 获取当前屏幕断点 * @param breakPoints */ export function getCurBreakPoint(breakPoints) { var screenWidths = []; var tmpMap = {}; var availWidth = document.body.clientWidth; breakPoints.forEach(function (bp) { var width = bp.width; screenWidths.push(width); tmpMap[width] = bp; }); screenWidths = screenWidths.sort(function (a, b) { return a - b; }); var len = screenWidths.length; var ret = tmpMap[screenWidths[0]]; if (availWidth > screenWidths[len - 1]) { ret = tmpMap[screenWidths[len - 1]]; } else { for (var i = 1; i < len; i++) { var breakPoint = tmpMap[screenWidths[i]]; if (screenWidths[i - 1] <= availWidth && availWidth < screenWidths[i]) { ret = breakPoint; } } } return ret; } /** * 获取最大断点列数 */ export function getMaxNumberOfColumns(breakPoints) { if (breakPoints === void 0) { breakPoints = DEFAULT_BREAK_POINTS; } var screenWidths = breakPoints.map(function (bp) { return bp.width; }); var maxWidth = Math.max.apply(Math, screenWidths); var bp = breakPoints.find(function (breakPoint) { return (breakPoint === null || breakPoint === void 0 ? void 0 : breakPoint.width) === maxWidth; }); return (bp === null || bp === void 0 ? void 0 : bp.numberOfColumns) || 12; } /** * 是否为标准的预设尺寸 * @param val */ export function isPresetSize(val) { return ['small', 'medium', 'large'].includes(val); } /** * 为数值包裹自动单位 * eg: * wrapUnit(2) -> 2px * wrapUnit('2em') -> 2em * @param value * @param unit */ export function wrapUnit(value, unit) { if (unit === void 0) { unit = 'px'; } return isNumber(value) ? "" + value + unit : value; } /** * 是否为一个有效的 gap 值: * eg: 0.9 / -9px / auto * @param val */ export function isValidGap(val) { var gapValReg = /^-?[0-9]*\.?[0-9]+([a-z|A-z]*)$/; return isNumber(val) || isString(val) && (gapValReg.test(val) || val === 'auto'); } /** * 获取最终的 gap 值 * @param contextGap 上下文中的 gap 值 * @param propGap 属性中定义的 gap 值 */ export function getGapVal(contextGap, propGap) { if (isValidGap(propGap)) { return wrapUnit(propGap); } else if (isValidGap(contextGap)) { return wrapUnit(contextGap); } return undefined; }