UNPKG

@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
"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;