@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
98 lines (97 loc) • 3.25 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
exports.__esModule = true;
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireWildcard(require("styled-components"));
var _defaultTheme = _interopRequireDefault(require("../defaultTheme"));
var _mediaQuery = _interopRequireDefault(require("../utils/mediaQuery"));
var _consts = require("../utils/layout/consts");
var _consts2 = require("../utils/mediaQuery/consts");
var _layout = require("../utils/layout");
var _getGap = _interopRequireDefault(require("./helpers/getGap"));
var _shouldUseFlex = _interopRequireDefault(require("./helpers/shouldUseFlex"));
var _getChildrenMargin = _interopRequireDefault(require("./helpers/getChildrenMargin"));
var _getViewportFlexStyles = _interopRequireDefault(require("./helpers/getViewportFlexStyles"));
// just apply all mediaQueries
// smallMobile - default values are not mediaQuery and needs to be rendered differently
const StyledStack = (0, _styledComponents.default)(({
className,
element: Element,
children,
dataTest
}) => /*#__PURE__*/React.createElement(Element, {
className: className,
"data-test": dataTest
}, children)).withConfig({
displayName: "Stack__StyledStack",
componentId: "sc-53pobq-0"
})(["", ";"], props => Object.values(_consts2.DEVICES).map((viewport, index, devices) => viewport in _mediaQuery.default ? _mediaQuery.default[viewport]((0, _styledComponents.css)(["", ";", ";"], (0, _layout.isDefined)(props[viewport]) && (0, _getViewportFlexStyles.default)(viewport), props.legacy ? (0, _getChildrenMargin.default)({
viewport,
index,
devices
}) : (0, _getGap.default)({
index,
devices
}))) : viewport === "smallMobile" && (0, _styledComponents.css)(["", ";", ";"], (0, _getViewportFlexStyles.default)(viewport), props.legacy ? (0, _getChildrenMargin.default)({
viewport,
index,
devices
}) : (0, _getGap.default)({
index,
devices
}))));
StyledStack.defaultProps = {
theme: _defaultTheme.default
};
const Stack = props => {
const {
dataTest,
inline = false,
spacing = _consts.SPACINGS.MEDIUM,
align = _consts.ALIGNS.START,
legacy = false,
justify = _consts.JUSTIFY.START,
grow = true,
wrap = false,
shrink = false,
basis,
spaceAfter,
children,
mediumMobile,
largeMobile,
tablet,
desktop,
largeDesktop,
as = "div"
} = props;
const isFlex = (0, _shouldUseFlex.default)(props);
const direction = props.direction || (isFlex ? _consts.DIRECTIONS.ROW : _consts.DIRECTIONS.COLUMN);
const smallMobile = {
direction,
align,
justify,
wrap,
grow,
basis,
inline,
shrink,
spacing,
spaceAfter
};
return /*#__PURE__*/React.createElement(StyledStack, {
dataTest: dataTest,
legacy: legacy,
flex: isFlex,
smallMobile: smallMobile,
mediumMobile: mediumMobile,
largeMobile: largeMobile,
tablet: tablet,
desktop: desktop,
largeDesktop: largeDesktop,
element: as
}, children);
};
var _default = Stack;
exports.default = _default;