Spaces:
Sleeping
Sleeping
| ; | |
| var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = createGrid; | |
| var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); | |
| var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); | |
| var React = _interopRequireWildcard(require("react")); | |
| var _propTypes = _interopRequireDefault(require("prop-types")); | |
| var _clsx = _interopRequireDefault(require("clsx")); | |
| var _isMuiElement = _interopRequireDefault(require("@mui/utils/isMuiElement")); | |
| 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 _useTheme = _interopRequireDefault(require("../useTheme")); | |
| var _styleFunctionSx = require("../styleFunctionSx"); | |
| var _createTheme = _interopRequireDefault(require("../createTheme")); | |
| var _gridGenerator = require("./gridGenerator"); | |
| var _jsxRuntime = require("react/jsx-runtime"); | |
| const _excluded = ["className", "children", "columns", "container", "component", "direction", "wrap", "spacing", "rowSpacing", "columnSpacing", "disableEqualOverflow", "unstable_level"]; | |
| 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: 'MuiGrid', | |
| slot: 'Root', | |
| overridesResolver: (props, styles) => styles.root | |
| }); | |
| function useThemePropsDefault(props) { | |
| return (0, _useThemeProps.default)({ | |
| props, | |
| name: 'MuiGrid', | |
| defaultTheme | |
| }); | |
| } | |
| function createGrid(options = {}) { | |
| const { | |
| // This will allow adding custom styled fn (for example for custom sx style function) | |
| createStyledComponent = defaultCreateStyledComponent, | |
| useThemeProps = useThemePropsDefault, | |
| componentName = 'MuiGrid' | |
| } = options; | |
| const GridOverflowContext = /*#__PURE__*/React.createContext(undefined); | |
| if (process.env.NODE_ENV !== 'production') { | |
| GridOverflowContext.displayName = 'GridOverflowContext'; | |
| } | |
| const useUtilityClasses = (ownerState, theme) => { | |
| const { | |
| container, | |
| direction, | |
| spacing, | |
| wrap, | |
| gridSize | |
| } = ownerState; | |
| const slots = { | |
| root: ['root', container && 'container', wrap !== 'wrap' && `wrap-xs-${String(wrap)}`, ...(0, _gridGenerator.generateDirectionClasses)(direction), ...(0, _gridGenerator.generateSizeClassNames)(gridSize), ...(container ? (0, _gridGenerator.generateSpacingClassNames)(spacing, theme.breakpoints.keys[0]) : [])] | |
| }; | |
| return (0, _composeClasses.default)(slots, slot => (0, _generateUtilityClass.default)(componentName, slot), {}); | |
| }; | |
| const GridRoot = createStyledComponent(_gridGenerator.generateGridColumnsStyles, _gridGenerator.generateGridColumnSpacingStyles, _gridGenerator.generateGridRowSpacingStyles, _gridGenerator.generateGridSizeStyles, _gridGenerator.generateGridDirectionStyles, _gridGenerator.generateGridStyles, _gridGenerator.generateGridOffsetStyles); | |
| const Grid = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) { | |
| var _inProps$columns, _inProps$spacing, _ref, _inProps$rowSpacing, _ref2, _inProps$columnSpacin, _ref3, _disableEqualOverflow; | |
| const theme = (0, _useTheme.default)(); | |
| const themeProps = useThemeProps(inProps); | |
| const props = (0, _styleFunctionSx.extendSxProp)(themeProps); // `color` type conflicts with html color attribute. | |
| const overflow = React.useContext(GridOverflowContext); | |
| const { | |
| className, | |
| children, | |
| columns: columnsProp = 12, | |
| container = false, | |
| component = 'div', | |
| direction = 'row', | |
| wrap = 'wrap', | |
| spacing: spacingProp = 0, | |
| rowSpacing: rowSpacingProp = spacingProp, | |
| columnSpacing: columnSpacingProp = spacingProp, | |
| disableEqualOverflow: themeDisableEqualOverflow, | |
| unstable_level: level = 0 | |
| } = props, | |
| rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded); | |
| // Because `disableEqualOverflow` can be set from the theme's defaultProps, the **nested** grid should look at the instance props instead. | |
| let disableEqualOverflow = themeDisableEqualOverflow; | |
| if (level && themeDisableEqualOverflow !== undefined) { | |
| disableEqualOverflow = inProps.disableEqualOverflow; | |
| } | |
| // collect breakpoints related props because they can be customized from the theme. | |
| const gridSize = {}; | |
| const gridOffset = {}; | |
| const other = {}; | |
| Object.entries(rest).forEach(([key, val]) => { | |
| if (theme.breakpoints.values[key] !== undefined) { | |
| gridSize[key] = val; | |
| } else if (theme.breakpoints.values[key.replace('Offset', '')] !== undefined) { | |
| gridOffset[key.replace('Offset', '')] = val; | |
| } else { | |
| other[key] = val; | |
| } | |
| }); | |
| const columns = (_inProps$columns = inProps.columns) != null ? _inProps$columns : level ? undefined : columnsProp; | |
| const spacing = (_inProps$spacing = inProps.spacing) != null ? _inProps$spacing : level ? undefined : spacingProp; | |
| const rowSpacing = (_ref = (_inProps$rowSpacing = inProps.rowSpacing) != null ? _inProps$rowSpacing : inProps.spacing) != null ? _ref : level ? undefined : rowSpacingProp; | |
| const columnSpacing = (_ref2 = (_inProps$columnSpacin = inProps.columnSpacing) != null ? _inProps$columnSpacin : inProps.spacing) != null ? _ref2 : level ? undefined : columnSpacingProp; | |
| const ownerState = (0, _extends2.default)({}, props, { | |
| level, | |
| columns, | |
| container, | |
| direction, | |
| wrap, | |
| spacing, | |
| rowSpacing, | |
| columnSpacing, | |
| gridSize, | |
| gridOffset, | |
| disableEqualOverflow: (_ref3 = (_disableEqualOverflow = disableEqualOverflow) != null ? _disableEqualOverflow : overflow) != null ? _ref3 : false, | |
| // use context value if exists. | |
| parentDisableEqualOverflow: overflow // for nested grid | |
| }); | |
| const classes = useUtilityClasses(ownerState, theme); | |
| let result = /*#__PURE__*/(0, _jsxRuntime.jsx)(GridRoot, (0, _extends2.default)({ | |
| ref: ref, | |
| as: component, | |
| ownerState: ownerState, | |
| className: (0, _clsx.default)(classes.root, className) | |
| }, other, { | |
| children: React.Children.map(children, child => { | |
| if ( /*#__PURE__*/React.isValidElement(child) && (0, _isMuiElement.default)(child, ['Grid'])) { | |
| var _unstable_level, _child$props; | |
| return /*#__PURE__*/React.cloneElement(child, { | |
| unstable_level: (_unstable_level = (_child$props = child.props) == null ? void 0 : _child$props.unstable_level) != null ? _unstable_level : level + 1 | |
| }); | |
| } | |
| return child; | |
| }) | |
| })); | |
| if (disableEqualOverflow !== undefined && disableEqualOverflow !== (overflow != null ? overflow : false)) { | |
| // There are 2 possibilities that should wrap with the GridOverflowContext to communicate with the nested grids: | |
| // 1. It is the root grid with `disableEqualOverflow`. | |
| // 2. It is a nested grid with different `disableEqualOverflow` from the context. | |
| result = /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverflowContext.Provider, { | |
| value: disableEqualOverflow, | |
| children: result | |
| }); | |
| } | |
| return result; | |
| }); | |
| process.env.NODE_ENV !== "production" ? Grid.propTypes /* remove-proptypes */ = { | |
| children: _propTypes.default.node, | |
| className: _propTypes.default.string, | |
| columns: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.number), _propTypes.default.number, _propTypes.default.object]), | |
| columnSpacing: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.string]), | |
| component: _propTypes.default.elementType, | |
| container: _propTypes.default.bool, | |
| 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]), | |
| disableEqualOverflow: _propTypes.default.bool, | |
| lg: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number, _propTypes.default.bool]), | |
| lgOffset: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]), | |
| md: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number, _propTypes.default.bool]), | |
| mdOffset: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]), | |
| rowSpacing: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.string]), | |
| sm: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number, _propTypes.default.bool]), | |
| smOffset: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]), | |
| 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]), | |
| wrap: _propTypes.default.oneOf(['nowrap', 'wrap-reverse', 'wrap']), | |
| xl: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number, _propTypes.default.bool]), | |
| xlOffset: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]), | |
| xs: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number, _propTypes.default.bool]), | |
| xsOffset: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]) | |
| } : void 0; | |
| // @ts-ignore internal logic for nested grid | |
| Grid.muiName = 'Grid'; | |
| return Grid; | |
| } |