@pisell/layout
Version:
基于 Fusion 设计系统的自然布局体系
43 lines • 1.7 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
var _excluded = ["className", "size", "direction", "children", "style"];
import { createElement, useContext, useMemo } from 'react';
import classNames from 'classnames';
import { isNumber, isString } from 'lodash-es';
import Context from "./common/context";
import { isPresetSize, wrapUnit } from "./utils";
/**
* 间距
*/
var Space = function Space(props) {
var _classNames;
var className = props.className,
size = props.size,
direction = props.direction,
children = props.children,
style = props.style,
others = _objectWithoutPropertiesLoose(props, _excluded);
var _useContext = useContext(Context),
prefix = _useContext.prefix;
var clsPrefix = prefix + "space";
var isVertical = direction === 'ver';
var spaceCls = classNames(clsPrefix, (_classNames = {}, _classNames[clsPrefix + "--" + size] = isPresetSize(size), _classNames[clsPrefix + "--" + direction] = true, _classNames));
var newStyle = useMemo(function () {
var isCustomSize = isNumber(size) || isString(size) && size !== '' && !isPresetSize(size);
return _extends({}, style, isCustomSize && direction === 'hoz' ? {
height: wrapUnit(size)
} : null, isCustomSize && direction === 'ver' ? {
width: wrapUnit(size)
} : null);
}, [size, style, direction]);
return /*#__PURE__*/createElement(isVertical ? 'span' : 'div', _extends({}, others, {
className: spaceCls,
style: newStyle
}), children);
};
Space.displayName = 'Space';
Space.defaultProps = {
size: 'medium',
direction: 'hoz'
};
export default Space;