@dtjoy/dt-design 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/_util/gapSize.d.ts +3 -0
- package/esm/_util/gapSize.js +10 -0
- package/esm/_util/hooks/index.d.ts +1 -0
- package/esm/_util/hooks/index.js +1 -0
- package/esm/_util/hooks/useOrientation.d.ts +2 -0
- package/esm/_util/hooks/useOrientation.js +19 -0
- package/esm/_util/isNonNullable.d.ts +2 -0
- package/esm/_util/isNonNullable.js +4 -0
- package/esm/_util/type.d.ts +2 -1
- package/esm/blockHeader/index.d.ts +1 -1
- package/esm/blockHeader/index.js +13 -10
- package/esm/blockHeader/style/index.d.ts +2 -0
- package/esm/blockHeader/style/index.js +2 -0
- package/esm/blockHeader/{style.less → style/index.less} +143 -141
- package/esm/button/index.d.ts +10 -0
- package/esm/button/index.js +29 -0
- package/esm/button/style/index.d.ts +2 -0
- package/esm/button/style/index.js +2 -0
- package/esm/button/style/index.less +134 -0
- package/esm/button/style/mixin.less +47 -0
- package/esm/collapsible/index.d.ts +97 -0
- package/esm/collapsible/index.js +234 -0
- package/esm/collapsible/style/index.d.ts +1 -0
- package/esm/collapsible/style/index.js +1 -0
- package/esm/collapsible/style/index.less +24 -0
- package/esm/collapsibleActionItems/index.d.ts +24 -0
- package/esm/collapsibleActionItems/index.js +74 -0
- package/esm/collapsibleActionItems/style/index.d.ts +2 -0
- package/esm/collapsibleActionItems/style/index.js +2 -0
- package/esm/collapsibleActionItems/style/index.less +7 -0
- package/esm/flex/index.d.ts +7 -0
- package/esm/flex/index.js +62 -0
- package/esm/flex/interface.d.ts +16 -0
- package/esm/flex/interface.js +1 -0
- package/esm/flex/style/index.d.ts +2 -0
- package/esm/flex/style/index.js +2 -0
- package/esm/flex/style/index.less +77 -0
- package/esm/flex/utils.d.ts +7 -0
- package/esm/flex/utils.js +33 -0
- package/esm/index.d.ts +10 -1
- package/esm/index.js +8 -7
- package/esm/resize/index.d.ts +8 -0
- package/esm/resize/index.js +29 -0
- package/esm/splitter/Panel.d.ts +7 -0
- package/esm/splitter/Panel.js +38 -0
- package/esm/splitter/SplitBar.d.ts +24 -0
- package/esm/splitter/SplitBar.js +185 -0
- package/esm/splitter/Splitter.d.ts +5 -0
- package/esm/splitter/Splitter.js +215 -0
- package/esm/splitter/hooks/sizeUtil.d.ts +3 -0
- package/esm/splitter/hooks/sizeUtil.js +63 -0
- package/esm/splitter/hooks/useItems.d.ts +14 -0
- package/esm/splitter/hooks/useItems.js +44 -0
- package/esm/splitter/hooks/useResizable.d.ts +10 -0
- package/esm/splitter/hooks/useResizable.js +73 -0
- package/esm/splitter/hooks/useResize.d.ts +6 -0
- package/esm/splitter/hooks/useResize.js +158 -0
- package/esm/splitter/hooks/useSizes.d.ts +4 -0
- package/esm/splitter/hooks/useSizes.js +80 -0
- package/esm/splitter/index.d.ts +8 -0
- package/esm/splitter/index.js +5 -0
- package/esm/splitter/interface.d.ts +68 -0
- package/esm/splitter/interface.js +1 -0
- package/esm/splitter/style/index.d.ts +2 -0
- package/esm/splitter/style/index.js +2 -0
- package/esm/splitter/style/index.less +312 -0
- package/esm/statusTag/index.d.ts +28 -0
- package/esm/statusTag/index.js +122 -0
- package/esm/statusTag/style/index.d.ts +2 -0
- package/esm/statusTag/style/index.js +2 -0
- package/esm/statusTag/style/index.less +70 -0
- package/esm/statusTag/style/mixin.less +39 -0
- package/esm/style/index.d.ts +1 -0
- package/esm/style/index.js +1 -0
- package/esm/style/index.less +1 -0
- package/esm/style/mixins/index.less +0 -0
- package/esm/style/themes/index.less +2 -0
- package/esm/style/themes/variable.less +1 -0
- package/lib/_util/gapSize.d.ts +3 -0
- package/lib/_util/gapSize.js +17 -0
- package/lib/_util/hooks/index.d.ts +1 -0
- package/lib/_util/hooks/index.js +16 -0
- package/lib/_util/hooks/useOrientation.d.ts +2 -0
- package/lib/_util/hooks/useOrientation.js +26 -0
- package/lib/_util/isNonNullable.d.ts +2 -0
- package/lib/_util/isNonNullable.js +10 -0
- package/lib/_util/type.d.ts +2 -1
- package/lib/blockHeader/index.d.ts +1 -1
- package/lib/blockHeader/index.js +13 -11
- package/lib/blockHeader/style/index.d.ts +2 -0
- package/lib/blockHeader/style/index.js +4 -0
- package/lib/blockHeader/{style.less → style/index.less} +143 -141
- package/lib/button/index.d.ts +10 -0
- package/lib/button/index.js +33 -0
- package/lib/button/style/index.d.ts +2 -0
- package/lib/button/style/index.js +4 -0
- package/lib/button/style/index.less +134 -0
- package/lib/button/style/mixin.less +47 -0
- package/lib/collapsible/index.d.ts +97 -0
- package/lib/collapsible/index.js +199 -0
- package/lib/collapsible/style/index.d.ts +1 -0
- package/lib/collapsible/style/index.js +3 -0
- package/lib/collapsible/style/index.less +24 -0
- package/lib/collapsibleActionItems/index.d.ts +24 -0
- package/lib/collapsibleActionItems/index.js +68 -0
- package/lib/collapsibleActionItems/style/index.d.ts +2 -0
- package/lib/collapsibleActionItems/style/index.js +4 -0
- package/lib/collapsibleActionItems/style/index.less +7 -0
- package/lib/flex/index.d.ts +7 -0
- package/lib/flex/index.js +60 -0
- package/lib/flex/interface.d.ts +16 -0
- package/lib/flex/interface.js +5 -0
- package/lib/flex/style/index.d.ts +2 -0
- package/lib/flex/style/index.js +4 -0
- package/lib/flex/style/index.less +77 -0
- package/lib/flex/utils.d.ts +7 -0
- package/lib/flex/utils.js +39 -0
- package/lib/index.d.ts +10 -1
- package/lib/index.js +72 -1
- package/lib/resize/index.d.ts +8 -0
- package/lib/resize/index.js +38 -0
- package/lib/splitter/Panel.d.ts +7 -0
- package/lib/splitter/Panel.js +44 -0
- package/lib/splitter/SplitBar.d.ts +24 -0
- package/lib/splitter/SplitBar.js +179 -0
- package/lib/splitter/Splitter.d.ts +5 -0
- package/lib/splitter/Splitter.js +202 -0
- package/lib/splitter/hooks/sizeUtil.d.ts +3 -0
- package/lib/splitter/hooks/sizeUtil.js +56 -0
- package/lib/splitter/hooks/useItems.d.ts +14 -0
- package/lib/splitter/hooks/useItems.js +46 -0
- package/lib/splitter/hooks/useResizable.d.ts +10 -0
- package/lib/splitter/hooks/useResizable.js +83 -0
- package/lib/splitter/hooks/useResize.d.ts +6 -0
- package/lib/splitter/hooks/useResize.js +142 -0
- package/lib/splitter/hooks/useSizes.d.ts +4 -0
- package/lib/splitter/hooks/useSizes.js +62 -0
- package/lib/splitter/index.d.ts +8 -0
- package/lib/splitter/index.js +12 -0
- package/lib/splitter/interface.d.ts +68 -0
- package/lib/splitter/interface.js +5 -0
- package/lib/splitter/style/index.d.ts +2 -0
- package/lib/splitter/style/index.js +4 -0
- package/lib/splitter/style/index.less +312 -0
- package/lib/statusTag/index.d.ts +28 -0
- package/lib/statusTag/index.js +125 -0
- package/lib/statusTag/style/index.d.ts +2 -0
- package/lib/statusTag/style/index.js +4 -0
- package/lib/statusTag/style/index.less +70 -0
- package/lib/statusTag/style/mixin.less +39 -0
- package/lib/style/index.d.ts +1 -0
- package/lib/style/index.js +3 -0
- package/lib/style/index.less +1 -0
- package/lib/style/mixins/index.less +0 -0
- package/lib/style/themes/index.less +2 -0
- package/lib/style/themes/variable.less +1 -0
- package/package.json +142 -141
- package/esm/styles/entry.less +0 -6
- package/esm/styles/variables.less +0 -1
- package/lib/styles/entry.less +0 -6
- package/lib/styles/variables.less +0 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _configProvider = require("antd/es/config-provider");
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _rcResizeObserver = _interopRequireDefault(require("rc-resize-observer"));
|
|
11
|
+
var _useEvent = _interopRequireDefault(require("rc-util/lib/hooks/useEvent"));
|
|
12
|
+
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
|
|
13
|
+
var _useItems = _interopRequireDefault(require("./hooks/useItems"));
|
|
14
|
+
var _useResizable = _interopRequireDefault(require("./hooks/useResizable"));
|
|
15
|
+
var _useResize = _interopRequireDefault(require("./hooks/useResize"));
|
|
16
|
+
var _useSizes = _interopRequireDefault(require("./hooks/useSizes"));
|
|
17
|
+
var _Panel = require("./Panel");
|
|
18
|
+
var _SplitBar = _interopRequireDefault(require("./SplitBar"));
|
|
19
|
+
require("./style/index.less");
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
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); }
|
|
22
|
+
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; }
|
|
23
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /* eslint-disable react/no-array-index-key */ // 替换 v5 配置为 v4 ConfigContext
|
|
24
|
+
// 替换 devUseWarning 为 v4 原生 warning
|
|
25
|
+
const Splitter = props => {
|
|
26
|
+
const {
|
|
27
|
+
prefixCls: customizePrefixCls,
|
|
28
|
+
className,
|
|
29
|
+
style,
|
|
30
|
+
layout = 'horizontal',
|
|
31
|
+
children,
|
|
32
|
+
rootClassName,
|
|
33
|
+
onResizeStart,
|
|
34
|
+
onResize,
|
|
35
|
+
onResizeEnd,
|
|
36
|
+
lazy
|
|
37
|
+
} = props;
|
|
38
|
+
const {
|
|
39
|
+
getPrefixCls,
|
|
40
|
+
direction
|
|
41
|
+
} = (0, _react.useContext)(_configProvider.ConfigContext);
|
|
42
|
+
const prefixCls = getPrefixCls('splitter', customizePrefixCls);
|
|
43
|
+
|
|
44
|
+
// ======================== Direct ========================
|
|
45
|
+
const isVertical = layout === 'vertical';
|
|
46
|
+
const isRTL = direction === 'rtl';
|
|
47
|
+
const reverse = !isVertical && isRTL;
|
|
48
|
+
|
|
49
|
+
// ====================== Items Data ======================
|
|
50
|
+
const items = (0, _useItems.default)(children);
|
|
51
|
+
|
|
52
|
+
// >>> Warning 适配 v4
|
|
53
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
54
|
+
let existSize = false;
|
|
55
|
+
let existUndefinedSize = false;
|
|
56
|
+
items.forEach(item => {
|
|
57
|
+
if (item.size !== undefined) {
|
|
58
|
+
existSize = true;
|
|
59
|
+
} else {
|
|
60
|
+
existUndefinedSize = true;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
if (existSize && existUndefinedSize && !onResize) {
|
|
64
|
+
(0, _warning.default)(false, 'When part of `Splitter.Panel` has `size`, `onResize` is required or change `size` to `defaultSize`.');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ====================== Container =======================
|
|
69
|
+
const [containerSize, setContainerSize] = (0, _react.useState)();
|
|
70
|
+
const onContainerResize = size => {
|
|
71
|
+
const {
|
|
72
|
+
offsetWidth,
|
|
73
|
+
offsetHeight
|
|
74
|
+
} = size;
|
|
75
|
+
const containerSize = isVertical ? offsetHeight : offsetWidth;
|
|
76
|
+
if (containerSize === 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
setContainerSize(containerSize);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// ========================= Size =========================
|
|
83
|
+
const [panelSizes, itemPxSizes, itemPtgSizes, itemPtgMinSizes, itemPtgMaxSizes, updateSizes] = (0, _useSizes.default)(items, containerSize);
|
|
84
|
+
|
|
85
|
+
// ====================== Resizable =======================
|
|
86
|
+
const resizableInfos = (0, _useResizable.default)(items, itemPxSizes, isRTL);
|
|
87
|
+
const [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex] = (0, _useResize.default)(items, resizableInfos, itemPtgSizes, containerSize, updateSizes, isRTL);
|
|
88
|
+
|
|
89
|
+
// ======================== Events ========================
|
|
90
|
+
const onInternalResizeStart = (0, _useEvent.default)(index => {
|
|
91
|
+
onOffsetStart(index);
|
|
92
|
+
onResizeStart?.(itemPxSizes);
|
|
93
|
+
});
|
|
94
|
+
const onInternalResizeUpdate = (0, _useEvent.default)((index, offset, lazyEnd) => {
|
|
95
|
+
const nextSizes = onOffsetUpdate(index, offset);
|
|
96
|
+
if (lazyEnd) {
|
|
97
|
+
onResizeEnd?.(nextSizes);
|
|
98
|
+
} else {
|
|
99
|
+
onResize?.(nextSizes);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
const onInternalResizeEnd = (0, _useEvent.default)(lazyEnd => {
|
|
103
|
+
onOffsetEnd();
|
|
104
|
+
if (!lazyEnd) {
|
|
105
|
+
onResizeEnd?.(itemPxSizes);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const onInternalCollapse = (0, _useEvent.default)((index, type) => {
|
|
109
|
+
const nextSizes = onCollapse(index, type);
|
|
110
|
+
onResize?.(nextSizes);
|
|
111
|
+
onResizeEnd?.(nextSizes);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// ======================== Styles ========================
|
|
115
|
+
// 构建 v4 风格类名(移除 cssinjs 相关 hash 和变量类)
|
|
116
|
+
const containerClassName = (0, _classnames.default)(prefixCls, className, `${prefixCls}-${layout}`, {
|
|
117
|
+
[`${prefixCls}-rtl`]: isRTL
|
|
118
|
+
}, rootClassName
|
|
119
|
+
// 移除 v5 cssinjs 类名
|
|
120
|
+
// contextClassName,
|
|
121
|
+
// cssVarCls,
|
|
122
|
+
// rootCls,
|
|
123
|
+
// hashId
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
// ======================== Render ========================
|
|
127
|
+
const maskCls = `${prefixCls}-mask`;
|
|
128
|
+
const stackSizes = _react.default.useMemo(() => {
|
|
129
|
+
const mergedSizes = [];
|
|
130
|
+
let stack = 0;
|
|
131
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
132
|
+
stack += itemPtgSizes[i];
|
|
133
|
+
mergedSizes.push(stack);
|
|
134
|
+
}
|
|
135
|
+
return mergedSizes;
|
|
136
|
+
}, [itemPtgSizes]);
|
|
137
|
+
|
|
138
|
+
// 合并样式(移除 v5 上下文样式)
|
|
139
|
+
const mergedStyle = {
|
|
140
|
+
...style
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
// 移除 wrapCSSVar 包装(v4 无需 cssinjs 变量注入)
|
|
144
|
+
return /*#__PURE__*/_react.default.createElement(_rcResizeObserver.default, {
|
|
145
|
+
onResize: onContainerResize
|
|
146
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
147
|
+
style: mergedStyle,
|
|
148
|
+
className: containerClassName
|
|
149
|
+
}, items.map((item, idx) => {
|
|
150
|
+
// Panel
|
|
151
|
+
const panel = /*#__PURE__*/_react.default.createElement(_Panel.InternalPanel, _extends({}, item, {
|
|
152
|
+
prefixCls: prefixCls,
|
|
153
|
+
size: panelSizes[idx]
|
|
154
|
+
}));
|
|
155
|
+
|
|
156
|
+
// Split Bar
|
|
157
|
+
let splitBar = null;
|
|
158
|
+
const resizableInfo = resizableInfos[idx];
|
|
159
|
+
if (resizableInfo) {
|
|
160
|
+
const ariaMinStart = (stackSizes[idx - 1] || 0) + itemPtgMinSizes[idx];
|
|
161
|
+
const ariaMinEnd = (stackSizes[idx + 1] || 100) - itemPtgMaxSizes[idx + 1];
|
|
162
|
+
const ariaMaxStart = (stackSizes[idx - 1] || 0) + itemPtgMaxSizes[idx];
|
|
163
|
+
const ariaMaxEnd = (stackSizes[idx + 1] || 100) - itemPtgMinSizes[idx + 1];
|
|
164
|
+
splitBar = /*#__PURE__*/_react.default.createElement(_SplitBar.default, {
|
|
165
|
+
lazy: lazy,
|
|
166
|
+
index: idx,
|
|
167
|
+
active: movingIndex === idx,
|
|
168
|
+
prefixCls: prefixCls,
|
|
169
|
+
vertical: isVertical,
|
|
170
|
+
resizable: resizableInfo.resizable,
|
|
171
|
+
ariaNow: stackSizes[idx] * 100,
|
|
172
|
+
ariaMin: Math.max(ariaMinStart, ariaMinEnd) * 100,
|
|
173
|
+
ariaMax: Math.min(ariaMaxStart, ariaMaxEnd) * 100,
|
|
174
|
+
startCollapsible: resizableInfo.startCollapsible,
|
|
175
|
+
endCollapsible: resizableInfo.endCollapsible,
|
|
176
|
+
showStartCollapsibleIcon: resizableInfo.showStartCollapsibleIcon,
|
|
177
|
+
showEndCollapsibleIcon: resizableInfo.showEndCollapsibleIcon,
|
|
178
|
+
onOffsetStart: onInternalResizeStart,
|
|
179
|
+
onOffsetUpdate: (index, offsetX, offsetY, lazyEnd) => {
|
|
180
|
+
let offset = isVertical ? offsetY : offsetX;
|
|
181
|
+
if (reverse) {
|
|
182
|
+
offset = -offset;
|
|
183
|
+
}
|
|
184
|
+
onInternalResizeUpdate(index, offset, lazyEnd);
|
|
185
|
+
},
|
|
186
|
+
onOffsetEnd: onInternalResizeEnd,
|
|
187
|
+
onCollapse: onInternalCollapse,
|
|
188
|
+
containerSize: containerSize || 0
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
|
|
192
|
+
key: `split-panel-${idx}`
|
|
193
|
+
}, panel, splitBar);
|
|
194
|
+
}), typeof movingIndex === 'number' && /*#__PURE__*/_react.default.createElement("div", {
|
|
195
|
+
"aria-hidden": true,
|
|
196
|
+
className: (0, _classnames.default)(maskCls, `${maskCls}-${layout}`)
|
|
197
|
+
})));
|
|
198
|
+
};
|
|
199
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
200
|
+
Splitter.displayName = 'Splitter';
|
|
201
|
+
}
|
|
202
|
+
var _default = exports.default = Splitter;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.autoPtgSizes = autoPtgSizes;
|
|
7
|
+
function autoPtgSizes(ptgSizes, minPtgSizes, maxPtgSizes) {
|
|
8
|
+
let currentTotalPtg = 0;
|
|
9
|
+
const undefinedIndexes = [];
|
|
10
|
+
ptgSizes.forEach((size, index) => {
|
|
11
|
+
if (size === undefined) {
|
|
12
|
+
undefinedIndexes.push(index);
|
|
13
|
+
} else {
|
|
14
|
+
currentTotalPtg += size;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const restPtg = 1 - currentTotalPtg;
|
|
18
|
+
const undefinedCount = undefinedIndexes.length;
|
|
19
|
+
if (restPtg < 0) {
|
|
20
|
+
const scale = 1 / currentTotalPtg;
|
|
21
|
+
return ptgSizes.map(size => size === undefined ? 0 : size * scale);
|
|
22
|
+
}
|
|
23
|
+
let sumMin = 0;
|
|
24
|
+
let sumMax = 0;
|
|
25
|
+
let limitMin = 0;
|
|
26
|
+
let limitMax = 1;
|
|
27
|
+
for (const index of undefinedIndexes) {
|
|
28
|
+
const min = minPtgSizes[index] || 0;
|
|
29
|
+
const max = maxPtgSizes[index] || 1;
|
|
30
|
+
sumMin += min;
|
|
31
|
+
sumMax += max;
|
|
32
|
+
limitMin = Math.max(limitMin, min);
|
|
33
|
+
limitMax = Math.min(limitMax, max);
|
|
34
|
+
}
|
|
35
|
+
if (sumMin > 1 && sumMax < 1) {
|
|
36
|
+
const avg = 1 / undefinedCount;
|
|
37
|
+
return ptgSizes.map(size => size === undefined ? avg : size);
|
|
38
|
+
}
|
|
39
|
+
const restAvg = restPtg / undefinedCount;
|
|
40
|
+
if (limitMin <= restAvg && restAvg <= limitMax) {
|
|
41
|
+
return ptgSizes.map(size => size === undefined ? restAvg : size);
|
|
42
|
+
}
|
|
43
|
+
const result = [...ptgSizes];
|
|
44
|
+
let remain = restPtg - sumMin;
|
|
45
|
+
for (let i = 0; i < undefinedCount; i += 1) {
|
|
46
|
+
const index = undefinedIndexes[i];
|
|
47
|
+
const min = minPtgSizes[index] || 0;
|
|
48
|
+
const max = maxPtgSizes[index] || 1;
|
|
49
|
+
result[index] = min;
|
|
50
|
+
const canAdd = max - min;
|
|
51
|
+
const add = Math.min(canAdd, remain);
|
|
52
|
+
result[index] += add;
|
|
53
|
+
remain -= add;
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { PanelProps } from '../interface';
|
|
3
|
+
export declare type ItemType = Omit<PanelProps, 'collapsible'> & {
|
|
4
|
+
collapsible: {
|
|
5
|
+
start?: boolean;
|
|
6
|
+
end?: boolean;
|
|
7
|
+
showCollapsibleIcon: 'auto' | boolean;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Convert `children` into `items`.
|
|
12
|
+
*/
|
|
13
|
+
declare function useItems(children: React.ReactNode): ItemType[];
|
|
14
|
+
export default useItems;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _toArray = _interopRequireDefault(require("rc-util/lib/Children/toArray"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
|
+
function getCollapsible(collapsible) {
|
|
13
|
+
if (collapsible && typeof collapsible === 'object') {
|
|
14
|
+
return {
|
|
15
|
+
...collapsible,
|
|
16
|
+
showCollapsibleIcon: collapsible.showCollapsibleIcon === undefined ? 'auto' : collapsible.showCollapsibleIcon
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const mergedCollapsible = !!collapsible;
|
|
20
|
+
return {
|
|
21
|
+
start: mergedCollapsible,
|
|
22
|
+
end: mergedCollapsible,
|
|
23
|
+
showCollapsibleIcon: 'auto'
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Convert `children` into `items`.
|
|
29
|
+
*/
|
|
30
|
+
function useItems(children) {
|
|
31
|
+
const items = React.useMemo(() => (0, _toArray.default)(children).filter(item => /*#__PURE__*/React.isValidElement(item)).map(node => {
|
|
32
|
+
const {
|
|
33
|
+
props
|
|
34
|
+
} = node;
|
|
35
|
+
const {
|
|
36
|
+
collapsible,
|
|
37
|
+
...restProps
|
|
38
|
+
} = props;
|
|
39
|
+
return {
|
|
40
|
+
...restProps,
|
|
41
|
+
collapsible: getCollapsible(collapsible)
|
|
42
|
+
};
|
|
43
|
+
}), [children]);
|
|
44
|
+
return items;
|
|
45
|
+
}
|
|
46
|
+
var _default = exports.default = useItems;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ShowCollapsibleIconMode } from '../SplitBar';
|
|
2
|
+
import type { ItemType } from './useItems';
|
|
3
|
+
export declare type ResizableInfo = {
|
|
4
|
+
resizable: boolean;
|
|
5
|
+
startCollapsible: boolean;
|
|
6
|
+
endCollapsible: boolean;
|
|
7
|
+
showStartCollapsibleIcon: ShowCollapsibleIconMode;
|
|
8
|
+
showEndCollapsibleIcon: ShowCollapsibleIconMode;
|
|
9
|
+
};
|
|
10
|
+
export default function useResizable(items: ItemType[], pxSizes: number[], isRTL: boolean): ResizableInfo[];
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useResizable;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
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); }
|
|
9
|
+
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; }
|
|
10
|
+
function getShowCollapsibleIcon(prev, next) {
|
|
11
|
+
if (prev.collapsible && next.collapsible) {
|
|
12
|
+
if (prev.showCollapsibleIcon === true || next.showCollapsibleIcon === true) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (prev.showCollapsibleIcon === 'auto' || next.showCollapsibleIcon === 'auto') {
|
|
16
|
+
return 'auto';
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (prev.collapsible) {
|
|
21
|
+
return prev.showCollapsibleIcon;
|
|
22
|
+
}
|
|
23
|
+
if (next.collapsible) {
|
|
24
|
+
return next.showCollapsibleIcon;
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
function useResizable(items, pxSizes, isRTL) {
|
|
29
|
+
return React.useMemo(() => {
|
|
30
|
+
const resizeInfos = [];
|
|
31
|
+
for (let i = 0; i < items.length - 1; i += 1) {
|
|
32
|
+
const prevItem = items[i];
|
|
33
|
+
const nextItem = items[i + 1];
|
|
34
|
+
const prevSize = pxSizes[i];
|
|
35
|
+
const nextSize = pxSizes[i + 1];
|
|
36
|
+
const {
|
|
37
|
+
resizable: prevResizable = true,
|
|
38
|
+
min: prevMin,
|
|
39
|
+
collapsible: prevCollapsible
|
|
40
|
+
} = prevItem;
|
|
41
|
+
const {
|
|
42
|
+
resizable: nextResizable = true,
|
|
43
|
+
min: nextMin,
|
|
44
|
+
collapsible: nextCollapsible
|
|
45
|
+
} = nextItem;
|
|
46
|
+
const mergedResizable =
|
|
47
|
+
// Both need to be resizable
|
|
48
|
+
prevResizable && nextResizable && (
|
|
49
|
+
// Prev is not collapsed and limit min size
|
|
50
|
+
prevSize !== 0 || !prevMin) && (
|
|
51
|
+
// Next is not collapsed and limit min size
|
|
52
|
+
nextSize !== 0 || !nextMin);
|
|
53
|
+
const prevEndCollapsible = !!prevCollapsible.end && prevSize > 0;
|
|
54
|
+
const nextStartExpandable = !!nextCollapsible.start && nextSize === 0 && prevSize > 0;
|
|
55
|
+
const startCollapsible = prevEndCollapsible || nextStartExpandable;
|
|
56
|
+
const nextStartCollapsible = !!nextCollapsible.start && nextSize > 0;
|
|
57
|
+
const prevEndExpandable = !!prevCollapsible.end && prevSize === 0 && nextSize > 0;
|
|
58
|
+
const endCollapsible = nextStartCollapsible || prevEndExpandable;
|
|
59
|
+
const showStartCollapsibleIcon = getShowCollapsibleIcon({
|
|
60
|
+
collapsible: prevEndCollapsible,
|
|
61
|
+
showCollapsibleIcon: prevCollapsible.showCollapsibleIcon
|
|
62
|
+
}, {
|
|
63
|
+
collapsible: nextStartExpandable,
|
|
64
|
+
showCollapsibleIcon: nextCollapsible.showCollapsibleIcon
|
|
65
|
+
});
|
|
66
|
+
const showEndCollapsibleIcon = getShowCollapsibleIcon({
|
|
67
|
+
collapsible: nextStartCollapsible,
|
|
68
|
+
showCollapsibleIcon: nextCollapsible.showCollapsibleIcon
|
|
69
|
+
}, {
|
|
70
|
+
collapsible: prevEndExpandable,
|
|
71
|
+
showCollapsibleIcon: prevCollapsible.showCollapsibleIcon
|
|
72
|
+
});
|
|
73
|
+
resizeInfos[i] = {
|
|
74
|
+
resizable: mergedResizable,
|
|
75
|
+
startCollapsible: !!(isRTL ? endCollapsible : startCollapsible),
|
|
76
|
+
endCollapsible: !!(isRTL ? startCollapsible : endCollapsible),
|
|
77
|
+
showStartCollapsibleIcon: isRTL ? showEndCollapsibleIcon : showStartCollapsibleIcon,
|
|
78
|
+
showEndCollapsibleIcon: isRTL ? showStartCollapsibleIcon : showEndCollapsibleIcon
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return resizeInfos;
|
|
82
|
+
}, [pxSizes, items]);
|
|
83
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ItemType } from './useItems';
|
|
2
|
+
import type { ResizableInfo } from './useResizable';
|
|
3
|
+
/**
|
|
4
|
+
* Handle user drag resize logic.
|
|
5
|
+
*/
|
|
6
|
+
export default function useResize(items: ItemType[], resizableInfos: ResizableInfo[], percentSizes: number[], containerSize: number | undefined, updateSizes: (sizes: number[]) => void, isRTL: boolean): readonly [(index: number) => void, (index: number, offset: number) => number[], () => void, (index: number, type: 'start' | 'end') => number[], number | undefined];
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useResize;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _useSizes = require("./useSizes");
|
|
9
|
+
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); }
|
|
10
|
+
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; }
|
|
11
|
+
/**
|
|
12
|
+
* Handle user drag resize logic.
|
|
13
|
+
*/
|
|
14
|
+
function useResize(items, resizableInfos, percentSizes, containerSize, updateSizes, isRTL) {
|
|
15
|
+
const limitSizes = items.map(item => [item.min, item.max]);
|
|
16
|
+
const mergedContainerSize = containerSize || 0;
|
|
17
|
+
const ptg2px = ptg => ptg * mergedContainerSize;
|
|
18
|
+
|
|
19
|
+
// ======================== Resize ========================
|
|
20
|
+
function getLimitSize(str, defaultLimit) {
|
|
21
|
+
if (typeof str === 'string') {
|
|
22
|
+
return ptg2px((0, _useSizes.getPtg)(str));
|
|
23
|
+
}
|
|
24
|
+
return str ?? defaultLimit;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Real px sizes
|
|
28
|
+
const [cacheSizes, setCacheSizes] = React.useState([]);
|
|
29
|
+
const cacheCollapsedSize = React.useRef([]);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* When start drag, check the direct is `start` or `end`.
|
|
33
|
+
* This will handle when 2 splitter bar are in the same position.
|
|
34
|
+
*/
|
|
35
|
+
const [movingIndex, setMovingIndex] = React.useState(null);
|
|
36
|
+
const getPxSizes = () => percentSizes.map(ptg2px);
|
|
37
|
+
const onOffsetStart = index => {
|
|
38
|
+
setCacheSizes(getPxSizes());
|
|
39
|
+
setMovingIndex({
|
|
40
|
+
index,
|
|
41
|
+
confirmed: false
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
const onOffsetUpdate = (index, offset) => {
|
|
45
|
+
// First time trigger move index update is not sync in the state
|
|
46
|
+
let confirmedIndex = null;
|
|
47
|
+
|
|
48
|
+
// We need to know what the real index is.
|
|
49
|
+
if ((!movingIndex || !movingIndex.confirmed) && offset !== 0) {
|
|
50
|
+
// Search for the real index
|
|
51
|
+
if (offset > 0) {
|
|
52
|
+
confirmedIndex = index;
|
|
53
|
+
setMovingIndex({
|
|
54
|
+
index,
|
|
55
|
+
confirmed: true
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
for (let i = index; i >= 0; i -= 1) {
|
|
59
|
+
if (cacheSizes[i] > 0 && resizableInfos[i].resizable) {
|
|
60
|
+
confirmedIndex = i;
|
|
61
|
+
setMovingIndex({
|
|
62
|
+
index: i,
|
|
63
|
+
confirmed: true
|
|
64
|
+
});
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const mergedIndex = confirmedIndex ?? movingIndex?.index ?? index;
|
|
71
|
+
const numSizes = [...cacheSizes];
|
|
72
|
+
const nextIndex = mergedIndex + 1;
|
|
73
|
+
|
|
74
|
+
// Get boundary
|
|
75
|
+
const startMinSize = getLimitSize(limitSizes[mergedIndex][0], 0);
|
|
76
|
+
const endMinSize = getLimitSize(limitSizes[nextIndex][0], 0);
|
|
77
|
+
const startMaxSize = getLimitSize(limitSizes[mergedIndex][1], mergedContainerSize);
|
|
78
|
+
const endMaxSize = getLimitSize(limitSizes[nextIndex][1], mergedContainerSize);
|
|
79
|
+
let mergedOffset = offset;
|
|
80
|
+
|
|
81
|
+
// Align with the boundary
|
|
82
|
+
if (numSizes[mergedIndex] + mergedOffset < startMinSize) {
|
|
83
|
+
mergedOffset = startMinSize - numSizes[mergedIndex];
|
|
84
|
+
}
|
|
85
|
+
if (numSizes[nextIndex] - mergedOffset < endMinSize) {
|
|
86
|
+
mergedOffset = numSizes[nextIndex] - endMinSize;
|
|
87
|
+
}
|
|
88
|
+
if (numSizes[mergedIndex] + mergedOffset > startMaxSize) {
|
|
89
|
+
mergedOffset = startMaxSize - numSizes[mergedIndex];
|
|
90
|
+
}
|
|
91
|
+
if (numSizes[nextIndex] - mergedOffset > endMaxSize) {
|
|
92
|
+
mergedOffset = numSizes[nextIndex] - endMaxSize;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Do offset
|
|
96
|
+
numSizes[mergedIndex] += mergedOffset;
|
|
97
|
+
numSizes[nextIndex] -= mergedOffset;
|
|
98
|
+
updateSizes(numSizes);
|
|
99
|
+
return numSizes;
|
|
100
|
+
};
|
|
101
|
+
const onOffsetEnd = () => {
|
|
102
|
+
setMovingIndex(null);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// ======================= Collapse =======================
|
|
106
|
+
const onCollapse = (index, type) => {
|
|
107
|
+
const currentSizes = getPxSizes();
|
|
108
|
+
const adjustedType = isRTL ? type === 'start' ? 'end' : 'start' : type;
|
|
109
|
+
const currentIndex = adjustedType === 'start' ? index : index + 1;
|
|
110
|
+
const targetIndex = adjustedType === 'start' ? index + 1 : index;
|
|
111
|
+
const currentSize = currentSizes[currentIndex];
|
|
112
|
+
const targetSize = currentSizes[targetIndex];
|
|
113
|
+
if (currentSize !== 0 && targetSize !== 0) {
|
|
114
|
+
// Collapse directly
|
|
115
|
+
currentSizes[currentIndex] = 0;
|
|
116
|
+
currentSizes[targetIndex] += currentSize;
|
|
117
|
+
cacheCollapsedSize.current[index] = currentSize;
|
|
118
|
+
} else {
|
|
119
|
+
const totalSize = currentSize + targetSize;
|
|
120
|
+
const currentSizeMin = getLimitSize(limitSizes[currentIndex][0], 0);
|
|
121
|
+
const currentSizeMax = getLimitSize(limitSizes[currentIndex][1], mergedContainerSize);
|
|
122
|
+
const targetSizeMin = getLimitSize(limitSizes[targetIndex][0], 0);
|
|
123
|
+
const targetSizeMax = getLimitSize(limitSizes[targetIndex][1], mergedContainerSize);
|
|
124
|
+
const limitStart = Math.max(currentSizeMin, totalSize - targetSizeMax);
|
|
125
|
+
const limitEnd = Math.min(currentSizeMax, totalSize - targetSizeMin);
|
|
126
|
+
const halfOffset = targetSizeMin || (limitEnd - limitStart) / 2;
|
|
127
|
+
const targetCacheCollapsedSize = cacheCollapsedSize.current[index];
|
|
128
|
+
const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize;
|
|
129
|
+
const shouldUseCache = targetCacheCollapsedSize && targetCacheCollapsedSize <= targetSizeMax && targetCacheCollapsedSize >= targetSizeMin && currentCacheCollapsedSize <= currentSizeMax && currentCacheCollapsedSize >= currentSizeMin;
|
|
130
|
+
if (shouldUseCache) {
|
|
131
|
+
currentSizes[targetIndex] = targetCacheCollapsedSize;
|
|
132
|
+
currentSizes[currentIndex] = currentCacheCollapsedSize;
|
|
133
|
+
} else {
|
|
134
|
+
currentSizes[currentIndex] -= halfOffset;
|
|
135
|
+
currentSizes[targetIndex] += halfOffset;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
updateSizes(currentSizes);
|
|
139
|
+
return currentSizes;
|
|
140
|
+
};
|
|
141
|
+
return [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex?.index];
|
|
142
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PanelProps } from '../interface';
|
|
3
|
+
export declare function getPtg(str: string): number;
|
|
4
|
+
export default function useSizes(items: PanelProps[], containerSize?: number): readonly [(string | number | undefined)[], number[], number[], number[], number[], React.Dispatch<React.SetStateAction<(string | number | undefined)[]>>];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useSizes;
|
|
7
|
+
exports.getPtg = getPtg;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _sizeUtil = require("./sizeUtil");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function getPtg(str) {
|
|
12
|
+
return Number(str.slice(0, -1)) / 100;
|
|
13
|
+
}
|
|
14
|
+
function isPtg(itemSize) {
|
|
15
|
+
return typeof itemSize === 'string' && itemSize.endsWith('%');
|
|
16
|
+
}
|
|
17
|
+
function useSizes(items, containerSize) {
|
|
18
|
+
const propSizes = items.map(item => item.size);
|
|
19
|
+
const itemsCount = items.length;
|
|
20
|
+
const mergedContainerSize = containerSize || 0;
|
|
21
|
+
const ptg2px = ptg => ptg * mergedContainerSize;
|
|
22
|
+
const [innerSizes, setInnerSizes] = _react.default.useState(() => items.map(item => item.defaultSize));
|
|
23
|
+
const sizes = _react.default.useMemo(() => {
|
|
24
|
+
const mergedSizes = [];
|
|
25
|
+
for (let i = 0; i < itemsCount; i += 1) {
|
|
26
|
+
mergedSizes[i] = propSizes[i] ?? innerSizes[i];
|
|
27
|
+
}
|
|
28
|
+
return mergedSizes;
|
|
29
|
+
}, [itemsCount, innerSizes, propSizes]);
|
|
30
|
+
const postPercentMinSizes = _react.default.useMemo(() => items.map(item => {
|
|
31
|
+
if (isPtg(item.min)) {
|
|
32
|
+
return getPtg(item.min);
|
|
33
|
+
}
|
|
34
|
+
return (item.min || 0) / mergedContainerSize;
|
|
35
|
+
}), [items, mergedContainerSize]);
|
|
36
|
+
const postPercentMaxSizes = _react.default.useMemo(() => items.map(item => {
|
|
37
|
+
if (isPtg(item.max)) {
|
|
38
|
+
return getPtg(item.max);
|
|
39
|
+
}
|
|
40
|
+
return (item.max || mergedContainerSize) / mergedContainerSize;
|
|
41
|
+
}), [items, mergedContainerSize]);
|
|
42
|
+
const postPercentSizes = _react.default.useMemo(() => {
|
|
43
|
+
const ptgList = [];
|
|
44
|
+
for (let i = 0; i < itemsCount; i += 1) {
|
|
45
|
+
const itemSize = sizes[i];
|
|
46
|
+
if (isPtg(itemSize)) {
|
|
47
|
+
ptgList[i] = getPtg(itemSize);
|
|
48
|
+
} else if (itemSize || itemSize === 0) {
|
|
49
|
+
const num = Number(itemSize);
|
|
50
|
+
if (!Number.isNaN(num)) {
|
|
51
|
+
ptgList[i] = num / mergedContainerSize;
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
ptgList[i] = undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return (0, _sizeUtil.autoPtgSizes)(ptgList, postPercentMinSizes, postPercentMaxSizes);
|
|
58
|
+
}, [sizes, mergedContainerSize, postPercentMinSizes, postPercentMaxSizes]);
|
|
59
|
+
const postPxSizes = _react.default.useMemo(() => postPercentSizes.map(ptg2px), [postPercentSizes, mergedContainerSize]);
|
|
60
|
+
const panelSizes = _react.default.useMemo(() => containerSize ? postPxSizes : sizes, [postPxSizes, containerSize]);
|
|
61
|
+
return [panelSizes, postPxSizes, postPercentSizes, postPercentMinSizes, postPercentMaxSizes, setInnerSizes];
|
|
62
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Panel from './Panel';
|
|
2
|
+
import SplitterComp from './Splitter';
|
|
3
|
+
export type { SplitterProps } from './interface';
|
|
4
|
+
declare type CompoundedComponent = typeof SplitterComp & {
|
|
5
|
+
Panel: typeof Panel;
|
|
6
|
+
};
|
|
7
|
+
declare const Splitter: CompoundedComponent;
|
|
8
|
+
export default Splitter;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _Panel = _interopRequireDefault(require("./Panel"));
|
|
8
|
+
var _Splitter = _interopRequireDefault(require("./Splitter"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const Splitter = _Splitter.default;
|
|
11
|
+
Splitter.Panel = _Panel.default;
|
|
12
|
+
var _default = exports.default = Splitter;
|