@blockstack/ui
Version:
Blockstack UI components built using React and styled-components with styled-system.
51 lines (43 loc) • 1.69 kB
JavaScript
import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../_virtual/_rollupPluginBabelHelpers.js';
import React__default, { forwardRef, isValidElement, Children, cloneElement } from 'react';
import { Box } from '../box/index.esm.js';
import { Flex } from '../flex/index.esm.js';
var Stack = /*#__PURE__*/forwardRef(function (_ref, ref) {
var isInline = _ref.isInline,
children = _ref.children,
align = _ref.align,
justify = _ref.justify,
_ref$spacing = _ref.spacing,
spacing = _ref$spacing === void 0 ? 2 : _ref$spacing,
shouldWrapChildren = _ref.shouldWrapChildren,
rest = _objectWithoutPropertiesLoose(_ref, ["isInline", "children", "align", "justify", "spacing", "shouldWrapChildren"]);
var validChildren = Array.isArray(children) ? children.filter(isValidElement) : [];
return React__default.createElement(Flex, Object.assign({
align: align,
justify: justify,
flexDir: isInline ? 'row' : 'column',
ref: ref
}, rest), Children.map(validChildren, function (child, index) {
if (!isValidElement(child)) {
return null;
}
if (!Array.isArray(children)) {
return null;
}
var isLastChild = validChildren.length === index + 1;
var spacingProps = isInline ? {
mr: isLastChild ? undefined : spacing
} : {
mb: isLastChild ? undefined : spacing
};
if (shouldWrapChildren) {
return React__default.createElement(Box, Object.assign({
d: "inline-block"
}, spacingProps), child);
}
return cloneElement(child, spacingProps);
}));
});
Stack.displayName = 'Stack';
export { Stack };
//# sourceMappingURL=index.esm.js.map