@wordpress/components
Version:
UI components for WordPress.
68 lines (55 loc) • 1.67 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useHStack = useHStack;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _context = require("../context");
var _flex = require("../../flex");
var _utils = require("./utils");
var _getValidChildren = require("../utils/get-valid-children");
/**
* Internal dependencies
*/
/**
*
* @param {import('../context').ViewOwnProps<import('./types').Props, 'div'>} props
*/
function useHStack(props) {
const {
alignment = 'edge',
children,
direction,
spacing = 2,
...otherProps
} = (0, _context.useContextSystem)(props, 'HStack');
const align = (0, _utils.getAlignmentProps)(alignment, direction);
const validChildren = (0, _getValidChildren.getValidChildren)(children);
const clonedChildren = validChildren.map( // @ts-ignore
(
/** @type {import('react').ReactElement} */
child, index) => {
const _key = child.key || `hstack-${index}`;
const _isSpacer = (0, _context.hasConnectNamespace)(child, ['Spacer']);
if (_isSpacer) {
return (0, _element.createElement)(_flex.FlexItem, (0, _extends2.default)({
isBlock: true,
key: _key
}, child.props));
}
return child;
});
const propsForFlex = {
children: clonedChildren,
direction,
justify: 'center',
...align,
...otherProps,
gap: spacing
};
const flexProps = (0, _flex.useFlex)(propsForFlex);
return flexProps;
}
//# sourceMappingURL=hook.js.map