UNPKG

6.53 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _typeof = require("@babel/runtime/helpers/typeof");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports["default"] = exports.SpaceContext = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
18var React = _interopRequireWildcard(require("react"));
19
20var _classnames = _interopRequireDefault(require("classnames"));
21
22var _toArray = _interopRequireDefault(require("rc-util/lib/Children/toArray"));
23
24var _configProvider = require("../config-provider");
25
26var _Item = _interopRequireDefault(require("./Item"));
27
28var _useFlexGapSupport = _interopRequireDefault(require("../_util/hooks/useFlexGapSupport"));
29
30function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
32function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
34var __rest = void 0 && (void 0).__rest || function (s, e) {
35 var t = {};
36
37 for (var p in s) {
38 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
39 }
40
41 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
43 }
44 return t;
45};
46
47var SpaceContext = /*#__PURE__*/React.createContext({
48 latestIndex: 0,
49 horizontalSize: 0,
50 verticalSize: 0,
51 supportFlexGap: false
52});
53exports.SpaceContext = SpaceContext;
54var spaceSize = {
55 small: 8,
56 middle: 16,
57 large: 24
58};
59
60function getNumberSize(size) {
61 return typeof size === 'string' ? spaceSize[size] : size || 0;
62}
63
64var Space = function Space(props) {
65 var _classNames;
66
67 var _React$useContext = React.useContext(_configProvider.ConfigContext),
68 getPrefixCls = _React$useContext.getPrefixCls,
69 space = _React$useContext.space,
70 directionConfig = _React$useContext.direction;
71
72 var _props$size = props.size,
73 size = _props$size === void 0 ? (space === null || space === void 0 ? void 0 : space.size) || 'small' : _props$size,
74 align = props.align,
75 className = props.className,
76 children = props.children,
77 _props$direction = props.direction,
78 direction = _props$direction === void 0 ? 'horizontal' : _props$direction,
79 customizePrefixCls = props.prefixCls,
80 split = props.split,
81 style = props.style,
82 _props$wrap = props.wrap,
83 wrap = _props$wrap === void 0 ? false : _props$wrap,
84 otherProps = __rest(props, ["size", "align", "className", "children", "direction", "prefixCls", "split", "style", "wrap"]);
85
86 var supportFlexGap = (0, _useFlexGapSupport["default"])();
87
88 var _React$useMemo = React.useMemo(function () {
89 return (Array.isArray(size) ? size : [size, size]).map(function (item) {
90 return getNumberSize(item);
91 });
92 }, [size]),
93 _React$useMemo2 = (0, _slicedToArray2["default"])(_React$useMemo, 2),
94 horizontalSize = _React$useMemo2[0],
95 verticalSize = _React$useMemo2[1];
96
97 var childNodes = (0, _toArray["default"])(children, {
98 keepEmpty: true
99 });
100 var mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;
101 var prefixCls = getPrefixCls('space', customizePrefixCls);
102 var cn = (0, _classnames["default"])(prefixCls, "".concat(prefixCls, "-").concat(direction), (_classNames = {}, (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-rtl"), directionConfig === 'rtl'), (0, _defineProperty2["default"])(_classNames, "".concat(prefixCls, "-align-").concat(mergedAlign), mergedAlign), _classNames), className);
103 var itemClassName = "".concat(prefixCls, "-item");
104 var marginDirection = directionConfig === 'rtl' ? 'marginLeft' : 'marginRight'; // Calculate latest one
105
106 var latestIndex = 0;
107 var nodes = childNodes.map(function (child, i) {
108 if (child !== null && child !== undefined) {
109 latestIndex = i;
110 }
111 /* eslint-disable react/no-array-index-key */
112
113
114 return /*#__PURE__*/React.createElement(_Item["default"], {
115 className: itemClassName,
116 key: "".concat(itemClassName, "-").concat(i),
117 direction: direction,
118 index: i,
119 marginDirection: marginDirection,
120 split: split,
121 wrap: wrap
122 }, child);
123 /* eslint-enable */
124 });
125 var spaceContext = React.useMemo(function () {
126 return {
127 horizontalSize: horizontalSize,
128 verticalSize: verticalSize,
129 latestIndex: latestIndex,
130 supportFlexGap: supportFlexGap
131 };
132 }, [horizontalSize, verticalSize, latestIndex, supportFlexGap]); // =========================== Render ===========================
133
134 if (childNodes.length === 0) {
135 return null;
136 }
137
138 var gapStyle = {};
139
140 if (supportFlexGap) {
141 gapStyle.columnGap = horizontalSize;
142 gapStyle.rowGap = verticalSize;
143 }
144
145 return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
146 className: cn,
147 style: (0, _extends2["default"])((0, _extends2["default"])((0, _extends2["default"])({}, gapStyle), wrap && {
148 flexWrap: 'wrap',
149 marginBottom: -verticalSize
150 }), style)
151 }, otherProps), /*#__PURE__*/React.createElement(SpaceContext.Provider, {
152 value: spaceContext
153 }, nodes));
154};
155
156var _default = Space;
157exports["default"] = _default;
\No newline at end of file