@dtjoy/dt-design 1.0.1 → 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.
Files changed (141) hide show
  1. package/esm/_util/gapSize.d.ts +3 -0
  2. package/esm/_util/gapSize.js +10 -0
  3. package/esm/_util/hooks/index.d.ts +1 -0
  4. package/esm/_util/hooks/index.js +1 -0
  5. package/esm/_util/hooks/useOrientation.d.ts +2 -0
  6. package/esm/_util/hooks/useOrientation.js +19 -0
  7. package/esm/_util/isNonNullable.d.ts +2 -0
  8. package/esm/_util/isNonNullable.js +4 -0
  9. package/esm/_util/type.d.ts +2 -1
  10. package/esm/blockHeader/index.js +12 -11
  11. package/esm/blockHeader/style/index.d.ts +1 -1
  12. package/esm/blockHeader/style/index.js +1 -1
  13. package/esm/blockHeader/style/index.less +8 -7
  14. package/esm/button/style/index.less +60 -46
  15. package/esm/button/style/mixin.less +47 -0
  16. package/esm/collapsible/index.d.ts +97 -0
  17. package/esm/collapsible/index.js +234 -0
  18. package/esm/collapsible/style/index.d.ts +1 -0
  19. package/esm/collapsible/style/index.js +1 -0
  20. package/esm/collapsible/style/index.less +24 -0
  21. package/esm/collapsibleActionItems/index.d.ts +24 -0
  22. package/esm/collapsibleActionItems/index.js +74 -0
  23. package/esm/collapsibleActionItems/style/index.d.ts +2 -0
  24. package/esm/collapsibleActionItems/style/index.js +2 -0
  25. package/esm/collapsibleActionItems/style/index.less +7 -0
  26. package/esm/flex/index.d.ts +7 -0
  27. package/esm/flex/index.js +62 -0
  28. package/esm/flex/interface.d.ts +16 -0
  29. package/esm/flex/interface.js +1 -0
  30. package/esm/flex/style/index.d.ts +2 -0
  31. package/esm/flex/style/index.js +2 -0
  32. package/esm/flex/style/index.less +77 -0
  33. package/esm/flex/utils.d.ts +7 -0
  34. package/esm/flex/utils.js +33 -0
  35. package/esm/index.d.ts +9 -0
  36. package/esm/index.js +7 -5
  37. package/esm/resize/index.d.ts +8 -0
  38. package/esm/resize/index.js +29 -0
  39. package/esm/splitter/Panel.d.ts +7 -0
  40. package/esm/splitter/Panel.js +38 -0
  41. package/esm/splitter/SplitBar.d.ts +24 -0
  42. package/esm/splitter/SplitBar.js +185 -0
  43. package/esm/splitter/Splitter.d.ts +5 -0
  44. package/esm/splitter/Splitter.js +215 -0
  45. package/esm/splitter/hooks/sizeUtil.d.ts +3 -0
  46. package/esm/splitter/hooks/sizeUtil.js +63 -0
  47. package/esm/splitter/hooks/useItems.d.ts +14 -0
  48. package/esm/splitter/hooks/useItems.js +44 -0
  49. package/esm/splitter/hooks/useResizable.d.ts +10 -0
  50. package/esm/splitter/hooks/useResizable.js +73 -0
  51. package/esm/splitter/hooks/useResize.d.ts +6 -0
  52. package/esm/splitter/hooks/useResize.js +158 -0
  53. package/esm/splitter/hooks/useSizes.d.ts +4 -0
  54. package/esm/splitter/hooks/useSizes.js +80 -0
  55. package/esm/splitter/index.d.ts +8 -0
  56. package/esm/splitter/index.js +5 -0
  57. package/esm/splitter/interface.d.ts +68 -0
  58. package/esm/splitter/interface.js +1 -0
  59. package/esm/splitter/style/index.d.ts +2 -0
  60. package/esm/splitter/style/index.js +2 -0
  61. package/esm/splitter/style/index.less +312 -0
  62. package/esm/statusTag/index.d.ts +28 -0
  63. package/esm/statusTag/index.js +122 -0
  64. package/esm/statusTag/style/index.d.ts +2 -0
  65. package/esm/statusTag/style/index.js +2 -0
  66. package/esm/statusTag/style/index.less +70 -0
  67. package/esm/statusTag/style/mixin.less +39 -0
  68. package/esm/style/mixins/index.less +0 -0
  69. package/esm/style/themes/index.less +2 -1
  70. package/esm/style/themes/variable.less +1 -0
  71. package/lib/_util/gapSize.d.ts +3 -0
  72. package/lib/_util/gapSize.js +17 -0
  73. package/lib/_util/hooks/index.d.ts +1 -0
  74. package/lib/_util/hooks/index.js +16 -0
  75. package/lib/_util/hooks/useOrientation.d.ts +2 -0
  76. package/lib/_util/hooks/useOrientation.js +26 -0
  77. package/lib/_util/isNonNullable.d.ts +2 -0
  78. package/lib/_util/isNonNullable.js +10 -0
  79. package/lib/_util/type.d.ts +2 -1
  80. package/lib/blockHeader/index.js +12 -12
  81. package/lib/blockHeader/style/index.d.ts +1 -1
  82. package/lib/blockHeader/style/index.js +1 -1
  83. package/lib/blockHeader/style/index.less +8 -7
  84. package/lib/button/style/index.less +60 -46
  85. package/lib/button/style/mixin.less +47 -0
  86. package/lib/collapsible/index.d.ts +97 -0
  87. package/lib/collapsible/index.js +199 -0
  88. package/lib/collapsible/style/index.d.ts +1 -0
  89. package/lib/collapsible/style/index.js +3 -0
  90. package/lib/collapsible/style/index.less +24 -0
  91. package/lib/collapsibleActionItems/index.d.ts +24 -0
  92. package/lib/collapsibleActionItems/index.js +68 -0
  93. package/lib/collapsibleActionItems/style/index.d.ts +2 -0
  94. package/lib/collapsibleActionItems/style/index.js +4 -0
  95. package/lib/collapsibleActionItems/style/index.less +7 -0
  96. package/lib/flex/index.d.ts +7 -0
  97. package/lib/flex/index.js +60 -0
  98. package/lib/flex/interface.d.ts +16 -0
  99. package/lib/flex/interface.js +5 -0
  100. package/lib/flex/style/index.d.ts +2 -0
  101. package/lib/flex/style/index.js +4 -0
  102. package/lib/flex/style/index.less +77 -0
  103. package/lib/flex/utils.d.ts +7 -0
  104. package/lib/flex/utils.js +39 -0
  105. package/lib/index.d.ts +9 -0
  106. package/lib/index.js +65 -0
  107. package/lib/resize/index.d.ts +8 -0
  108. package/lib/resize/index.js +38 -0
  109. package/lib/splitter/Panel.d.ts +7 -0
  110. package/lib/splitter/Panel.js +44 -0
  111. package/lib/splitter/SplitBar.d.ts +24 -0
  112. package/lib/splitter/SplitBar.js +179 -0
  113. package/lib/splitter/Splitter.d.ts +5 -0
  114. package/lib/splitter/Splitter.js +202 -0
  115. package/lib/splitter/hooks/sizeUtil.d.ts +3 -0
  116. package/lib/splitter/hooks/sizeUtil.js +56 -0
  117. package/lib/splitter/hooks/useItems.d.ts +14 -0
  118. package/lib/splitter/hooks/useItems.js +46 -0
  119. package/lib/splitter/hooks/useResizable.d.ts +10 -0
  120. package/lib/splitter/hooks/useResizable.js +83 -0
  121. package/lib/splitter/hooks/useResize.d.ts +6 -0
  122. package/lib/splitter/hooks/useResize.js +142 -0
  123. package/lib/splitter/hooks/useSizes.d.ts +4 -0
  124. package/lib/splitter/hooks/useSizes.js +62 -0
  125. package/lib/splitter/index.d.ts +8 -0
  126. package/lib/splitter/index.js +12 -0
  127. package/lib/splitter/interface.d.ts +68 -0
  128. package/lib/splitter/interface.js +5 -0
  129. package/lib/splitter/style/index.d.ts +2 -0
  130. package/lib/splitter/style/index.js +4 -0
  131. package/lib/splitter/style/index.less +312 -0
  132. package/lib/statusTag/index.d.ts +28 -0
  133. package/lib/statusTag/index.js +125 -0
  134. package/lib/statusTag/style/index.d.ts +2 -0
  135. package/lib/statusTag/style/index.js +4 -0
  136. package/lib/statusTag/style/index.less +70 -0
  137. package/lib/statusTag/style/mixin.less +39 -0
  138. package/lib/style/mixins/index.less +0 -0
  139. package/lib/style/themes/index.less +2 -1
  140. package/lib/style/themes/variable.less +1 -0
  141. package/package.json +142 -141
@@ -0,0 +1,179 @@
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 _reactIcons = require("@dtinsight/react-icons");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _useEvent = _interopRequireDefault(require("rc-util/lib/hooks/useEvent"));
11
+ var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ 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); }
14
+ 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; }
15
+ function getValidNumber(num) {
16
+ return typeof num === 'number' && !Number.isNaN(num) && Number.isFinite(num) ? Math.round(num) : 0;
17
+ }
18
+ const SplitBar = props => {
19
+ const {
20
+ prefixCls,
21
+ vertical,
22
+ index,
23
+ active,
24
+ ariaNow,
25
+ ariaMin,
26
+ ariaMax,
27
+ resizable,
28
+ startCollapsible,
29
+ endCollapsible,
30
+ onOffsetStart,
31
+ onOffsetUpdate,
32
+ onOffsetEnd,
33
+ onCollapse,
34
+ lazy,
35
+ containerSize,
36
+ showStartCollapsibleIcon,
37
+ showEndCollapsibleIcon
38
+ } = props;
39
+ const splitBarPrefixCls = `${prefixCls}-bar`;
40
+ const [startPos, setStartPos] = (0, _react.useState)(null);
41
+ const [constrainedOffset, setConstrainedOffset] = (0, _react.useState)(0);
42
+ const constrainedOffsetX = vertical ? 0 : constrainedOffset;
43
+ const constrainedOffsetY = vertical ? constrainedOffset : 0;
44
+ const onMouseDown = e => {
45
+ if (resizable && e.currentTarget) {
46
+ setStartPos([e.pageX, e.pageY]);
47
+ onOffsetStart(index);
48
+ }
49
+ };
50
+ const onTouchStart = e => {
51
+ if (resizable && e.touches.length === 1) {
52
+ const touch = e.touches[0];
53
+ setStartPos([touch.pageX, touch.pageY]);
54
+ onOffsetStart(index);
55
+ }
56
+ };
57
+ const getConstrainedOffset = rawOffset => {
58
+ const currentPos = containerSize * ariaNow / 100;
59
+ const newPos = currentPos + rawOffset;
60
+ const minAllowed = Math.max(0, containerSize * ariaMin / 100);
61
+ const maxAllowed = Math.min(containerSize, containerSize * ariaMax / 100);
62
+ const clampedPos = Math.max(minAllowed, Math.min(maxAllowed, newPos));
63
+ return clampedPos - currentPos;
64
+ };
65
+ const handleLazyMove = (0, _useEvent.default)((offsetX, offsetY) => {
66
+ const constrainedOffsetValue = getConstrainedOffset(vertical ? offsetY : offsetX);
67
+ setConstrainedOffset(constrainedOffsetValue);
68
+ });
69
+ const handleLazyEnd = (0, _useEvent.default)(() => {
70
+ onOffsetUpdate(index, constrainedOffsetX, constrainedOffsetY, true);
71
+ setConstrainedOffset(0);
72
+ onOffsetEnd(true);
73
+ });
74
+ const getVisibilityClass = mode => {
75
+ switch (mode) {
76
+ case true:
77
+ return `${splitBarPrefixCls}-collapse-bar-always-visible`;
78
+ case false:
79
+ return `${splitBarPrefixCls}-collapse-bar-always-hidden`;
80
+ case 'auto':
81
+ return `${splitBarPrefixCls}-collapse-bar-hover-only`;
82
+ }
83
+ };
84
+ (0, _useLayoutEffect.default)(() => {
85
+ if (!startPos) {
86
+ return;
87
+ }
88
+ const onMouseMove = e => {
89
+ const {
90
+ pageX,
91
+ pageY
92
+ } = e;
93
+ const offsetX = pageX - startPos[0];
94
+ const offsetY = pageY - startPos[1];
95
+ if (lazy) {
96
+ handleLazyMove(offsetX, offsetY);
97
+ } else {
98
+ onOffsetUpdate(index, offsetX, offsetY);
99
+ }
100
+ };
101
+ const onMouseUp = () => {
102
+ if (lazy) {
103
+ handleLazyEnd();
104
+ } else {
105
+ onOffsetEnd();
106
+ }
107
+ setStartPos(null);
108
+ };
109
+ const handleTouchMove = e => {
110
+ if (e.touches.length === 1) {
111
+ const touch = e.touches[0];
112
+ const offsetX = touch.pageX - startPos[0];
113
+ const offsetY = touch.pageY - startPos[1];
114
+ if (lazy) {
115
+ handleLazyMove(offsetX, offsetY);
116
+ } else {
117
+ onOffsetUpdate(index, offsetX, offsetY);
118
+ }
119
+ }
120
+ };
121
+ const handleTouchEnd = () => {
122
+ if (lazy) {
123
+ handleLazyEnd();
124
+ } else {
125
+ onOffsetEnd();
126
+ }
127
+ setStartPos(null);
128
+ };
129
+ const eventHandlerMap = {
130
+ mousemove: onMouseMove,
131
+ mouseup: onMouseUp,
132
+ touchmove: handleTouchMove,
133
+ touchend: handleTouchEnd
134
+ };
135
+ for (const [event, handler] of Object.entries(eventHandlerMap)) {
136
+ window.addEventListener(event, handler);
137
+ }
138
+ return () => {
139
+ for (const [event, handler] of Object.entries(eventHandlerMap)) {
140
+ window.removeEventListener(event, handler);
141
+ }
142
+ };
143
+ }, [startPos, index, lazy]);
144
+ const transformStyle = {
145
+ [`--${splitBarPrefixCls}-preview-offset`]: `${constrainedOffset}px`
146
+ };
147
+ const StartIcon = vertical ? _reactIcons.UpOutlined : _reactIcons.LeftOutlined;
148
+ const EndIcon = vertical ? _reactIcons.DownOutlined : _reactIcons.RightOutlined;
149
+ return /*#__PURE__*/_react.default.createElement("div", {
150
+ className: splitBarPrefixCls,
151
+ role: "separator",
152
+ "aria-valuenow": getValidNumber(ariaNow),
153
+ "aria-valuemin": getValidNumber(ariaMin),
154
+ "aria-valuemax": getValidNumber(ariaMax)
155
+ }, lazy && /*#__PURE__*/_react.default.createElement("div", {
156
+ className: (0, _classnames.default)(`${splitBarPrefixCls}-preview`, {
157
+ [`${splitBarPrefixCls}-preview-active`]: !!constrainedOffset
158
+ }),
159
+ style: transformStyle
160
+ }), /*#__PURE__*/_react.default.createElement("div", {
161
+ className: (0, _classnames.default)(`${splitBarPrefixCls}-dragger`, {
162
+ [`${splitBarPrefixCls}-dragger-disabled`]: !resizable,
163
+ [`${splitBarPrefixCls}-dragger-active`]: active
164
+ }),
165
+ onMouseDown: onMouseDown,
166
+ onTouchStart: onTouchStart
167
+ }), startCollapsible && /*#__PURE__*/_react.default.createElement("div", {
168
+ className: (0, _classnames.default)(`${splitBarPrefixCls}-collapse-bar`, `${splitBarPrefixCls}-collapse-bar-start`, getVisibilityClass(showStartCollapsibleIcon)),
169
+ onClick: () => onCollapse(index, 'start')
170
+ }, /*#__PURE__*/_react.default.createElement(StartIcon, {
171
+ className: (0, _classnames.default)(`${splitBarPrefixCls}-collapse-icon`, `${splitBarPrefixCls}-collapse-start`)
172
+ })), endCollapsible && /*#__PURE__*/_react.default.createElement("div", {
173
+ className: (0, _classnames.default)(`${splitBarPrefixCls}-collapse-bar`, `${splitBarPrefixCls}-collapse-bar-end`, getVisibilityClass(showEndCollapsibleIcon)),
174
+ onClick: () => onCollapse(index, 'end')
175
+ }, /*#__PURE__*/_react.default.createElement(EndIcon, {
176
+ className: (0, _classnames.default)(`${splitBarPrefixCls}-collapse-icon`, `${splitBarPrefixCls}-collapse-end`)
177
+ })));
178
+ };
179
+ var _default = exports.default = SplitBar;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { SplitterProps } from './interface';
3
+ import './style/index.less';
4
+ declare const Splitter: React.FC<React.PropsWithChildren<SplitterProps>>;
5
+ export default Splitter;
@@ -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,3 @@
1
+ declare type SizeUnit = number | undefined;
2
+ export declare function autoPtgSizes(ptgSizes: SizeUnit[], minPtgSizes: SizeUnit[], maxPtgSizes: SizeUnit[]): number[];
3
+ export {};
@@ -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];