Spaces:
Sleeping
Sleeping
| ; | |
| var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = createStack; | |
| exports.style = void 0; | |
| var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); | |
| var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); | |
| var React = _interopRequireWildcard(require("react")); | |
| var _propTypes = _interopRequireDefault(require("prop-types")); | |
| var _clsx = _interopRequireDefault(require("clsx")); | |
| var _deepmerge = _interopRequireDefault(require("@mui/utils/deepmerge")); | |
| var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass")); | |
| var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses")); | |
| var _styled = _interopRequireDefault(require("../styled")); | |
| var _useThemeProps = _interopRequireDefault(require("../useThemeProps")); | |
| var _styleFunctionSx = require("../styleFunctionSx"); | |
| var _createTheme = _interopRequireDefault(require("../createTheme")); | |
| var _breakpoints = require("../breakpoints"); | |
| var _spacing = require("../spacing"); | |
| var _jsxRuntime = require("react/jsx-runtime"); | |
| const _excluded = ["component", "direction", "spacing", "divider", "children", "className", "useFlexGap"]; | |
| function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } | |
| function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } | |
| const defaultTheme = (0, _createTheme.default)(); | |
| // widening Theme to any so that the consumer can own the theme structure. | |
| const defaultCreateStyledComponent = (0, _styled.default)('div', { | |
| name: 'MuiStack', | |
| slot: 'Root', | |
| overridesResolver: (props, styles) => styles.root | |
| }); | |
| function useThemePropsDefault(props) { | |
| return (0, _useThemeProps.default)({ | |
| props, | |
| name: 'MuiStack', | |
| defaultTheme | |
| }); | |
| } | |
| /** | |
| * Return an array with the separator React element interspersed between | |
| * each React node of the input children. | |
| * | |
| * > joinChildren([1,2,3], 0) | |
| * [1,0,2,0,3] | |
| */ | |
| function joinChildren(children, separator) { | |
| const childrenArray = React.Children.toArray(children).filter(Boolean); | |
| return childrenArray.reduce((output, child, index) => { | |
| output.push(child); | |
| if (index < childrenArray.length - 1) { | |
| output.push( /*#__PURE__*/React.cloneElement(separator, { | |
| key: `separator-${index}` | |
| })); | |
| } | |
| return output; | |
| }, []); | |
| } | |
| const getSideFromDirection = direction => { | |
| return { | |
| row: 'Left', | |
| 'row-reverse': 'Right', | |
| column: 'Top', | |
| 'column-reverse': 'Bottom' | |
| }[direction]; | |
| }; | |
| const style = ({ | |
| ownerState, | |
| theme | |
| }) => { | |
| let styles = (0, _extends2.default)({ | |
| display: 'flex', | |
| flexDirection: 'column' | |
| }, (0, _breakpoints.handleBreakpoints)({ | |
| theme | |
| }, (0, _breakpoints.resolveBreakpointValues)({ | |
| values: ownerState.direction, | |
| breakpoints: theme.breakpoints.values | |
| }), propValue => ({ | |
| flexDirection: propValue | |
| }))); | |
| if (ownerState.spacing) { | |
| const transformer = (0, _spacing.createUnarySpacing)(theme); | |
| const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => { | |
| if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) { | |
| acc[breakpoint] = true; | |
| } | |
| return acc; | |
| }, {}); | |
| const directionValues = (0, _breakpoints.resolveBreakpointValues)({ | |
| values: ownerState.direction, | |
| base | |
| }); | |
| const spacingValues = (0, _breakpoints.resolveBreakpointValues)({ | |
| values: ownerState.spacing, | |
| base | |
| }); | |
| if (typeof directionValues === 'object') { | |
| Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => { | |
| const directionValue = directionValues[breakpoint]; | |
| if (!directionValue) { | |
| const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column'; | |
| directionValues[breakpoint] = previousDirectionValue; | |
| } | |
| }); | |
| } | |
| const styleFromPropValue = (propValue, breakpoint) => { | |
| if (ownerState.useFlexGap) { | |
| return { | |
| gap: (0, _spacing.getValue)(transformer, propValue) | |
| }; | |
| } | |
| return { | |
| // The useFlexGap={false} implement relies on each child to give up control of the margin. | |
| // We need to reset the margin to avoid double spacing. | |
| '& > :not(style):not(style)': { | |
| margin: 0 | |
| }, | |
| '& > :not(style) ~ :not(style)': { | |
| [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: (0, _spacing.getValue)(transformer, propValue) | |
| } | |
| }; | |
| }; | |
| styles = (0, _deepmerge.default)(styles, (0, _breakpoints.handleBreakpoints)({ | |
| theme | |
| }, spacingValues, styleFromPropValue)); | |
| } | |
| styles = (0, _breakpoints.mergeBreakpointsInOrder)(theme.breakpoints, styles); | |
| return styles; | |
| }; | |
| exports.style = style; | |
| function createStack(options = {}) { | |
| const { | |
| // This will allow adding custom styled fn (for example for custom sx style function) | |
| createStyledComponent = defaultCreateStyledComponent, | |
| useThemeProps = useThemePropsDefault, | |
| componentName = 'MuiStack' | |
| } = options; | |
| const useUtilityClasses = () => { | |
| const slots = { | |
| root: ['root'] | |
| }; | |
| return (0, _composeClasses.default)(slots, slot => (0, _generateUtilityClass.default)(componentName, slot), {}); | |
| }; | |
| const StackRoot = createStyledComponent(style); | |
| const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) { | |
| const themeProps = useThemeProps(inProps); | |
| const props = (0, _styleFunctionSx.extendSxProp)(themeProps); // `color` type conflicts with html color attribute. | |
| const { | |
| component = 'div', | |
| direction = 'column', | |
| spacing = 0, | |
| divider, | |
| children, | |
| className, | |
| useFlexGap = false | |
| } = props, | |
| other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded); | |
| const ownerState = { | |
| direction, | |
| spacing, | |
| useFlexGap | |
| }; | |
| const classes = useUtilityClasses(); | |
| return /*#__PURE__*/(0, _jsxRuntime.jsx)(StackRoot, (0, _extends2.default)({ | |
| as: component, | |
| ownerState: ownerState, | |
| ref: ref, | |
| className: (0, _clsx.default)(classes.root, className) | |
| }, other, { | |
| children: divider ? joinChildren(children, divider) : children | |
| })); | |
| }); | |
| process.env.NODE_ENV !== "production" ? Stack.propTypes /* remove-proptypes */ = { | |
| children: _propTypes.default.node, | |
| direction: _propTypes.default.oneOfType([_propTypes.default.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), _propTypes.default.arrayOf(_propTypes.default.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), _propTypes.default.object]), | |
| divider: _propTypes.default.node, | |
| spacing: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.string]), | |
| sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]) | |
| } : void 0; | |
| return Stack; | |
| } |