react-resize-demo 2.0.2 → 3.0.0

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/CHANGELOG.md +130 -0
  2. package/README.md +119 -65
  3. package/dist/core/PanelManager.js +2 -0
  4. package/dist/core/PanelManager.js.map +1 -0
  5. package/dist/core/virtualNode.js +2 -0
  6. package/dist/core/virtualNode.js.map +1 -0
  7. package/dist/esm/core/PanelManager.js +2 -0
  8. package/dist/esm/core/PanelManager.js.map +1 -0
  9. package/dist/esm/core/virtualNode.js +2 -0
  10. package/dist/esm/core/virtualNode.js.map +1 -0
  11. package/dist/esm/index.d.ts +14 -3
  12. package/dist/esm/index.js +1 -5
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/strategies/basic/components/ResizeHandle/index.d.ts +18 -0
  15. package/dist/esm/strategies/basic/components/ResizeHandle/index.js +2 -0
  16. package/dist/esm/strategies/basic/components/ResizeHandle/index.js.map +1 -0
  17. package/dist/{components → esm/strategies/basic/components}/ResizePanel/index.d.ts +2 -1
  18. package/dist/esm/strategies/basic/components/ResizePanel/index.js +2 -0
  19. package/dist/esm/strategies/basic/components/ResizePanel/index.js.map +1 -0
  20. package/dist/{components → esm/strategies/basic/components}/ResizePanelGroup/index.d.ts +3 -3
  21. package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js +2 -0
  22. package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
  23. package/dist/esm/strategies/basic/context.d.ts +28 -0
  24. package/dist/esm/strategies/basic/context.js +2 -0
  25. package/dist/esm/strategies/basic/context.js.map +1 -0
  26. package/dist/esm/strategies/basic/resizeAble.js +2 -0
  27. package/dist/esm/strategies/basic/resizeAble.js.map +1 -0
  28. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.d.ts +18 -0
  29. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
  30. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
  31. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +21 -0
  32. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
  33. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
  34. package/dist/esm/strategies/flex/resizeAble.js +2 -0
  35. package/dist/esm/strategies/flex/resizeAble.js.map +1 -0
  36. package/dist/esm/strategies/flex-linked/components/ResizeHandleFlexLinked/index.d.ts +17 -0
  37. package/dist/esm/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js +2 -0
  38. package/dist/esm/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js.map +1 -0
  39. package/dist/esm/strategies/flex-linked/components/ResizePanelFlexLinked/index.d.ts +17 -0
  40. package/dist/esm/strategies/flex-linked/components/ResizePanelFlexLinked/index.js +2 -0
  41. package/dist/esm/strategies/flex-linked/components/ResizePanelFlexLinked/index.js.map +1 -0
  42. package/dist/esm/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.d.ts +20 -0
  43. package/dist/esm/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js +2 -0
  44. package/dist/esm/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js.map +1 -0
  45. package/dist/esm/strategies/flex-linked/context.js +2 -0
  46. package/dist/esm/strategies/flex-linked/context.js.map +1 -0
  47. package/dist/esm/strategies/flex-linked/resizeAble.js +2 -0
  48. package/dist/esm/strategies/flex-linked/resizeAble.js.map +1 -0
  49. package/dist/esm/strategies/linked/components/ResizeHandleLinked/index.d.ts +18 -0
  50. package/dist/esm/strategies/linked/components/ResizeHandleLinked/index.js +2 -0
  51. package/dist/esm/strategies/linked/components/ResizeHandleLinked/index.js.map +1 -0
  52. package/dist/esm/strategies/linked/components/ResizePanelGroupLinked/index.d.ts +19 -0
  53. package/dist/esm/strategies/linked/components/ResizePanelGroupLinked/index.js +2 -0
  54. package/dist/esm/strategies/linked/components/ResizePanelGroupLinked/index.js.map +1 -0
  55. package/dist/esm/strategies/linked/components/ResizePanelLinked/index.d.ts +17 -0
  56. package/dist/esm/strategies/linked/components/ResizePanelLinked/index.js +2 -0
  57. package/dist/esm/strategies/linked/components/ResizePanelLinked/index.js.map +1 -0
  58. package/dist/esm/strategies/linked/context.d.ts +29 -0
  59. package/dist/esm/strategies/linked/context.js +2 -0
  60. package/dist/esm/strategies/linked/context.js.map +1 -0
  61. package/dist/esm/strategies/linked/resizeAble.js +2 -0
  62. package/dist/esm/strategies/linked/resizeAble.js.map +1 -0
  63. package/dist/esm/types/index.d.ts +36 -2
  64. package/dist/index.d.ts +14 -3
  65. package/dist/index.js +1 -14
  66. package/dist/index.js.map +1 -1
  67. package/dist/strategies/basic/components/ResizeHandle/index.d.ts +18 -0
  68. package/dist/strategies/basic/components/ResizeHandle/index.js +2 -0
  69. package/dist/strategies/basic/components/ResizeHandle/index.js.map +1 -0
  70. package/dist/{esm → strategies/basic}/components/ResizePanel/index.d.ts +2 -1
  71. package/dist/strategies/basic/components/ResizePanel/index.js +2 -0
  72. package/dist/strategies/basic/components/ResizePanel/index.js.map +1 -0
  73. package/dist/{esm → strategies/basic}/components/ResizePanelGroup/index.d.ts +3 -3
  74. package/dist/strategies/basic/components/ResizePanelGroup/index.js +2 -0
  75. package/dist/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
  76. package/dist/strategies/basic/context.d.ts +28 -0
  77. package/dist/strategies/basic/context.js +2 -0
  78. package/dist/strategies/basic/context.js.map +1 -0
  79. package/dist/strategies/basic/resizeAble.js +2 -0
  80. package/dist/strategies/basic/resizeAble.js.map +1 -0
  81. package/dist/strategies/flex/components/ResizeHandleFlex/index.d.ts +18 -0
  82. package/dist/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
  83. package/dist/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
  84. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +21 -0
  85. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
  86. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
  87. package/dist/strategies/flex/resizeAble.js +2 -0
  88. package/dist/strategies/flex/resizeAble.js.map +1 -0
  89. package/dist/strategies/flex-linked/components/ResizeHandleFlexLinked/index.d.ts +17 -0
  90. package/dist/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js +2 -0
  91. package/dist/strategies/flex-linked/components/ResizeHandleFlexLinked/index.js.map +1 -0
  92. package/dist/strategies/flex-linked/components/ResizePanelFlexLinked/index.d.ts +17 -0
  93. package/dist/strategies/flex-linked/components/ResizePanelFlexLinked/index.js +2 -0
  94. package/dist/strategies/flex-linked/components/ResizePanelFlexLinked/index.js.map +1 -0
  95. package/dist/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.d.ts +20 -0
  96. package/dist/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js +2 -0
  97. package/dist/strategies/flex-linked/components/ResizePanelGroupFlexLinked/index.js.map +1 -0
  98. package/dist/strategies/flex-linked/context.js +2 -0
  99. package/dist/strategies/flex-linked/context.js.map +1 -0
  100. package/dist/strategies/flex-linked/resizeAble.js +2 -0
  101. package/dist/strategies/flex-linked/resizeAble.js.map +1 -0
  102. package/dist/strategies/linked/components/ResizeHandleLinked/index.d.ts +18 -0
  103. package/dist/strategies/linked/components/ResizeHandleLinked/index.js +2 -0
  104. package/dist/strategies/linked/components/ResizeHandleLinked/index.js.map +1 -0
  105. package/dist/strategies/linked/components/ResizePanelGroupLinked/index.d.ts +19 -0
  106. package/dist/strategies/linked/components/ResizePanelGroupLinked/index.js +2 -0
  107. package/dist/strategies/linked/components/ResizePanelGroupLinked/index.js.map +1 -0
  108. package/dist/strategies/linked/components/ResizePanelLinked/index.d.ts +17 -0
  109. package/dist/strategies/linked/components/ResizePanelLinked/index.js +2 -0
  110. package/dist/strategies/linked/components/ResizePanelLinked/index.js.map +1 -0
  111. package/dist/strategies/linked/context.d.ts +29 -0
  112. package/dist/strategies/linked/context.js +2 -0
  113. package/dist/strategies/linked/context.js.map +1 -0
  114. package/dist/strategies/linked/resizeAble.js +2 -0
  115. package/dist/strategies/linked/resizeAble.js.map +1 -0
  116. package/dist/types/index.d.ts +36 -2
  117. package/package.json +165 -134
  118. package/dist/components/ResizeHandle/index.js +0 -92
  119. package/dist/components/ResizeHandle/index.js.map +0 -1
  120. package/dist/components/ResizePanel/index.js +0 -33
  121. package/dist/components/ResizePanel/index.js.map +0 -1
  122. package/dist/components/ResizePanelGroup/index.js +0 -61
  123. package/dist/components/ResizePanelGroup/index.js.map +0 -1
  124. package/dist/components/shared/context.js +0 -35
  125. package/dist/components/shared/context.js.map +0 -1
  126. package/dist/esm/components/ResizeHandle/index.js +0 -90
  127. package/dist/esm/components/ResizeHandle/index.js.map +0 -1
  128. package/dist/esm/components/ResizePanel/index.js +0 -31
  129. package/dist/esm/components/ResizePanel/index.js.map +0 -1
  130. package/dist/esm/components/ResizePanelGroup/index.js +0 -59
  131. package/dist/esm/components/ResizePanelGroup/index.js.map +0 -1
  132. package/dist/esm/components/shared/context.js +0 -32
  133. package/dist/esm/components/shared/context.js.map +0 -1
  134. package/dist/esm/utils/resizeAble.js +0 -427
  135. package/dist/esm/utils/resizeAble.js.map +0 -1
  136. package/dist/esm/utils/virtualNode.js +0 -164
  137. package/dist/esm/utils/virtualNode.js.map +0 -1
  138. package/dist/utils/resizeAble.js +0 -431
  139. package/dist/utils/resizeAble.js.map +0 -1
  140. package/dist/utils/virtualNode.js +0 -168
  141. package/dist/utils/virtualNode.js.map +0 -1
@@ -1,427 +0,0 @@
1
- import VirtualNodeManager from './virtualNode.js';
2
-
3
- class ResizeAbleCore {
4
- constructor(options) {
5
- Object.defineProperty(this, "prePanelEl", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- Object.defineProperty(this, "nextPanelEl", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- Object.defineProperty(this, "getPanelInfo", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: void 0
22
- });
23
- Object.defineProperty(this, "prePanelIndex", {
24
- enumerable: true,
25
- configurable: true,
26
- writable: true,
27
- value: void 0
28
- });
29
- Object.defineProperty(this, "nextPanelIndex", {
30
- enumerable: true,
31
- configurable: true,
32
- writable: true,
33
- value: void 0
34
- });
35
- Object.defineProperty(this, "direction", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: void 0
40
- });
41
- Object.defineProperty(this, "virtualEnabled", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: void 0
46
- });
47
- Object.defineProperty(this, "virtualConfig", {
48
- enumerable: true,
49
- configurable: true,
50
- writable: true,
51
- value: void 0
52
- });
53
- Object.defineProperty(this, "isResizing", {
54
- enumerable: true,
55
- configurable: true,
56
- writable: true,
57
- value: false
58
- });
59
- Object.defineProperty(this, "prePanelStartSize", {
60
- enumerable: true,
61
- configurable: true,
62
- writable: true,
63
- value: 0
64
- });
65
- Object.defineProperty(this, "nextPanelStartSize", {
66
- enumerable: true,
67
- configurable: true,
68
- writable: true,
69
- value: 0
70
- });
71
- Object.defineProperty(this, "allPanelsStartSizes", {
72
- enumerable: true,
73
- configurable: true,
74
- writable: true,
75
- value: new Map()
76
- });
77
- Object.defineProperty(this, "allPanelsStartPositions", {
78
- enumerable: true,
79
- configurable: true,
80
- writable: true,
81
- value: new Map()
82
- }); // 记录面板初始位置(虚拟化模式使用)
83
- Object.defineProperty(this, "handleSize", {
84
- enumerable: true,
85
- configurable: true,
86
- writable: true,
87
- value: void 0
88
- }); // 拖拽器尺寸(宽度或高度,根据方向)
89
- Object.defineProperty(this, "virtualNodeManager", {
90
- enumerable: true,
91
- configurable: true,
92
- writable: true,
93
- value: null
94
- });
95
- this.prePanelEl = options.prePanelEl;
96
- this.nextPanelEl = options.nextPanelEl;
97
- this.getPanelInfo = options.getPanelInfo;
98
- this.prePanelIndex = options.prePanelIndex;
99
- this.nextPanelIndex = options.nextPanelIndex;
100
- this.direction = options.direction;
101
- this.virtualEnabled = options.virtualEnabled || false;
102
- this.virtualConfig = options.virtualConfig || {};
103
- this.handleSize = options.handleSize || 0;
104
- // 如果启用虚拟化,创建虚拟节点管理器
105
- if (this.virtualEnabled) {
106
- this.virtualNodeManager = new VirtualNodeManager();
107
- }
108
- }
109
- startResize() {
110
- // 设置开始拖拽
111
- this.isResizing = true;
112
- // 记录前一个面板的开始大小
113
- this.prePanelStartSize = this.getSize(this.prePanelEl);
114
- this.allPanelsStartSizes.set(this.prePanelIndex, this.prePanelStartSize);
115
- // 记录后一个面板的开始大小
116
- this.nextPanelStartSize = this.getSize(this.nextPanelEl);
117
- this.allPanelsStartSizes.set(this.nextPanelIndex, this.nextPanelStartSize);
118
- // 根据方向设置尺寸属性
119
- const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';
120
- if (this.virtualEnabled && this.virtualNodeManager) {
121
- // 虚拟化模式:创建虚拟节点并记录初始位置
122
- const prePos = this.getPosition(this.prePanelEl);
123
- this.allPanelsStartPositions.set(this.prePanelIndex, prePos);
124
- this.virtualNodeManager.createVirtualNode(this.prePanelEl, this.virtualConfig);
125
- const nextPos = this.getPosition(this.nextPanelEl);
126
- this.allPanelsStartPositions.set(this.nextPanelIndex, nextPos);
127
- this.virtualNodeManager.createVirtualNode(this.nextPanelEl, this.virtualConfig);
128
- // 记录前面面板的初始尺寸和位置并创建虚拟节点
129
- let prevIndex = this.prePanelIndex - 1;
130
- while (prevIndex >= 0) {
131
- const panelInfo = this.getPanelInfo(prevIndex);
132
- if (!panelInfo)
133
- break;
134
- const size = this.getSize(panelInfo.panelEl);
135
- const pos = this.getPosition(panelInfo.panelEl);
136
- this.allPanelsStartSizes.set(prevIndex, size);
137
- this.allPanelsStartPositions.set(prevIndex, pos);
138
- this.virtualNodeManager.createVirtualNode(panelInfo.panelEl, this.virtualConfig);
139
- prevIndex--;
140
- }
141
- // 记录后续面板的初始尺寸和位置并创建虚拟节点
142
- let nextIndex = this.nextPanelIndex + 1;
143
- let nextPanelInfo = this.getPanelInfo(nextIndex);
144
- while (nextPanelInfo) {
145
- const size = this.getSize(nextPanelInfo.panelEl);
146
- const pos = this.getPosition(nextPanelInfo.panelEl);
147
- this.allPanelsStartSizes.set(nextIndex, size);
148
- this.allPanelsStartPositions.set(nextIndex, pos);
149
- this.virtualNodeManager.createVirtualNode(nextPanelInfo.panelEl, this.virtualConfig);
150
- nextIndex++;
151
- nextPanelInfo = this.getPanelInfo(nextIndex);
152
- }
153
- }
154
- else {
155
- // 非虚拟化模式:直接操作真实节点
156
- // 禁用flex
157
- this.prePanelEl.style.flex = 'none';
158
- this.prePanelEl.style[sizeProperty] = `${this.prePanelStartSize}px`;
159
- this.nextPanelEl.style.flex = 'none';
160
- this.nextPanelEl.style[sizeProperty] = `${this.nextPanelStartSize}px`;
161
- // 记录前面面板的初始尺寸(用于向前拖拽时的级联调整)
162
- let prevIndex = this.prePanelIndex - 1;
163
- while (prevIndex >= 0) {
164
- const panelInfo = this.getPanelInfo(prevIndex);
165
- if (!panelInfo)
166
- break;
167
- const size = this.getSize(panelInfo.panelEl);
168
- this.allPanelsStartSizes.set(prevIndex, size);
169
- panelInfo.panelEl.style.flex = 'none';
170
- panelInfo.panelEl.style[sizeProperty] = `${size}px`;
171
- prevIndex--;
172
- }
173
- // 记录后续面板的初始尺寸(用于向后拖拽时的级联调整)
174
- let nextIndex = this.nextPanelIndex + 1;
175
- let nextPanelInfo = this.getPanelInfo(nextIndex);
176
- while (nextPanelInfo) {
177
- const size = this.getSize(nextPanelInfo.panelEl);
178
- this.allPanelsStartSizes.set(nextIndex, size);
179
- nextPanelInfo.panelEl.style.flex = 'none';
180
- nextPanelInfo.panelEl.style[sizeProperty] = `${size}px`;
181
- nextIndex++;
182
- nextPanelInfo = this.getPanelInfo(nextIndex);
183
- }
184
- }
185
- }
186
- onResize(delta) {
187
- if (!this.isResizing)
188
- return;
189
- if (delta > 0) {
190
- // 向后拖拽(水平布局向右,垂直布局向下):扩大前一个面板,缩小后一个面板
191
- this.adjustPanelsNext(delta);
192
- }
193
- else {
194
- // 向前拖拽(水平布局向左,垂直布局向上):缩小前一个面板,扩大后一个面板
195
- // 将负数转为正数处理
196
- this.adjustPanelsPre(-delta);
197
- }
198
- }
199
- adjustPanelsNext(delta) {
200
- let remainingDelta = delta;
201
- const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';
202
- // 尝试从后一个面板获取空间
203
- const nextPanelInfo = this.getPanelInfo(this.nextPanelIndex);
204
- if (nextPanelInfo) {
205
- const nextStartSize = this.allPanelsStartSizes.get(this.nextPanelIndex) || 0;
206
- const targetNextSize = nextStartSize - remainingDelta;
207
- const newNextSize = Math.max(nextPanelInfo.minSize, targetNextSize);
208
- const actualReduction = nextStartSize - newNextSize;
209
- // 虚拟化模式下更新虚拟节点,否则更新真实节点
210
- if (this.virtualEnabled && this.virtualNodeManager) {
211
- this.virtualNodeManager.updateVirtualNode(this.nextPanelEl, newNextSize, this.direction);
212
- }
213
- else {
214
- this.nextPanelEl.style[sizeProperty] = `${newNextSize}px`;
215
- }
216
- remainingDelta -= actualReduction;
217
- }
218
- // 如果后一个面板达到了最小值,继续从后续的面板中获取空间
219
- if (remainingDelta > 0) {
220
- let nextIndex = this.nextPanelIndex + 1;
221
- while (remainingDelta > 0) {
222
- const nextPanelInfo = this.getPanelInfo(nextIndex);
223
- if (!nextPanelInfo)
224
- break;
225
- const nextStartSize = this.allPanelsStartSizes.get(nextIndex) || 0;
226
- const targetNextSize = nextStartSize - remainingDelta;
227
- const newNextSize = Math.max(nextPanelInfo.minSize, targetNextSize);
228
- const actualReduction = nextStartSize - newNextSize;
229
- // 虚拟化模式下更新虚拟节点,否则更新真实节点
230
- if (this.virtualEnabled && this.virtualNodeManager) {
231
- this.virtualNodeManager.updateVirtualNode(nextPanelInfo.panelEl, newNextSize, this.direction);
232
- }
233
- else {
234
- nextPanelInfo.panelEl.style[sizeProperty] = `${newNextSize}px`;
235
- }
236
- remainingDelta -= actualReduction;
237
- if (newNextSize <= nextPanelInfo.minSize && remainingDelta > 0) {
238
- nextIndex++;
239
- }
240
- else {
241
- break;
242
- }
243
- }
244
- }
245
- // 扩大前一个面板
246
- const prePanelInfo = this.getPanelInfo(this.prePanelIndex);
247
- if (prePanelInfo) {
248
- const preStartSize = this.allPanelsStartSizes.get(this.prePanelIndex) || 0;
249
- const actualGained = delta - remainingDelta; // 实际获得的尺寸
250
- const newPreSize = preStartSize + actualGained;
251
- // 虚拟化模式下更新虚拟节点,否则更新真实节点
252
- if (this.virtualEnabled && this.virtualNodeManager) {
253
- this.virtualNodeManager.updateVirtualNode(this.prePanelEl, newPreSize, this.direction);
254
- // 重新计算所有面板的位置(基于尺寸变化)
255
- this.recalculateAllPanelsPositions();
256
- }
257
- else {
258
- this.prePanelEl.style[sizeProperty] = `${newPreSize}px`;
259
- }
260
- }
261
- }
262
- adjustPanelsPre(delta) {
263
- // 向前拖拽(水平布局向左,垂直布局向上):缩小前一个面板,扩大后一个面板
264
- // delta 此时是正数(表示向前拖拽的距离)
265
- let remainingDelta = delta;
266
- let totalReduced = 0; // 记录从前一个面板实际减少的尺寸总和
267
- const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';
268
- // 先尝试缩小前一个面板
269
- const prePanelInfo = this.getPanelInfo(this.prePanelIndex);
270
- if (prePanelInfo) {
271
- const preStartSize = this.allPanelsStartSizes.get(this.prePanelIndex) || 0;
272
- const targetPreSize = preStartSize - remainingDelta;
273
- const newPreSize = Math.max(prePanelInfo.minSize, targetPreSize);
274
- const actualReduction = preStartSize - newPreSize;
275
- // 虚拟化模式下更新虚拟节点,否则更新真实节点
276
- if (this.virtualEnabled && this.virtualNodeManager) {
277
- this.virtualNodeManager.updateVirtualNode(this.prePanelEl, newPreSize, this.direction);
278
- }
279
- else {
280
- this.prePanelEl.style[sizeProperty] = `${newPreSize}px`;
281
- }
282
- totalReduced += actualReduction;
283
- remainingDelta -= actualReduction;
284
- }
285
- // 如果前一个面板达到最小值,继续缩小更前面的面板(prevPanel)
286
- // 这样可以实现"依次后延"的效果
287
- if (remainingDelta > 0) {
288
- let prevIndex = this.prePanelIndex - 1;
289
- while (remainingDelta > 0 && prevIndex >= 0) {
290
- const prevPanelInfo = this.getPanelInfo(prevIndex);
291
- if (!prevPanelInfo)
292
- break;
293
- const prevStartSize = this.allPanelsStartSizes.get(prevIndex);
294
- if (prevStartSize === undefined)
295
- break;
296
- const targetPrevSize = prevStartSize - remainingDelta;
297
- const newPrevSize = Math.max(prevPanelInfo.minSize, targetPrevSize);
298
- const actualReduction = prevStartSize - newPrevSize;
299
- // 虚拟化模式下更新虚拟节点,否则更新真实节点
300
- if (this.virtualEnabled && this.virtualNodeManager) {
301
- this.virtualNodeManager.updateVirtualNode(prevPanelInfo.panelEl, newPrevSize, this.direction);
302
- }
303
- else {
304
- prevPanelInfo.panelEl.style[sizeProperty] = `${newPrevSize}px`;
305
- }
306
- totalReduced += actualReduction; // 将这部分空间也加到后一个面板
307
- remainingDelta -= actualReduction;
308
- if (newPrevSize <= prevPanelInfo.minSize && remainingDelta > 0) {
309
- prevIndex--; // 继续向前查找
310
- }
311
- else {
312
- break;
313
- }
314
- }
315
- }
316
- // 扩大后一个面板(使用实际减少的尺寸)
317
- const nextPanelInfo = this.getPanelInfo(this.nextPanelIndex);
318
- if (nextPanelInfo) {
319
- const nextStartSize = this.allPanelsStartSizes.get(this.nextPanelIndex) || 0;
320
- const newNextSize = nextStartSize + totalReduced;
321
- // 虚拟化模式下更新虚拟节点,否则更新真实节点
322
- if (this.virtualEnabled && this.virtualNodeManager) {
323
- this.virtualNodeManager.updateVirtualNode(this.nextPanelEl, newNextSize, this.direction);
324
- // 重新计算所有面板的位置(基于尺寸变化)
325
- this.recalculateAllPanelsPositions();
326
- }
327
- else {
328
- this.nextPanelEl.style[sizeProperty] = `${newNextSize}px`;
329
- }
330
- }
331
- }
332
- /**
333
- * 重新计算所有面板的位置(虚拟化模式使用)
334
- * 基于每个面板的初始位置和前面所有面板的尺寸变化
335
- */
336
- recalculateAllPanelsPositions() {
337
- if (!this.virtualEnabled || !this.virtualNodeManager)
338
- return;
339
- // 从第一个面板开始,顺序计算每个面板的新位置
340
- // 使用累积方式:从第一个面板的初始位置开始,依次加上每个面板的当前尺寸和拖拽器尺寸
341
- const firstPanelStartPos = this.allPanelsStartPositions.get(0) || 0;
342
- let currentPosition = firstPanelStartPos;
343
- let index = 0;
344
- let panelInfo = this.getPanelInfo(index);
345
- while (panelInfo) {
346
- const startPos = this.allPanelsStartPositions.get(index);
347
- if (startPos !== undefined) {
348
- // 获取虚拟节点
349
- const virtualEl = this.virtualNodeManager.getVirtualNode(panelInfo.panelEl);
350
- if (virtualEl) {
351
- // 如果是第一个面板,使用初始位置
352
- if (index === 0) {
353
- currentPosition = startPos;
354
- }
355
- else {
356
- // 对于后续面板,使用累积方式计算位置
357
- // 从第一个面板开始,累积所有前面面板的尺寸和拖拽器尺寸
358
- currentPosition = firstPanelStartPos;
359
- for (let i = 0; i < index; i++) {
360
- const prevInfo = this.getPanelInfo(i);
361
- if (prevInfo) {
362
- const prevVEl = this.virtualNodeManager.getVirtualNode(prevInfo.panelEl);
363
- if (prevVEl) {
364
- const prevSize = this.direction === 'horizontal'
365
- ? prevVEl.offsetWidth
366
- : prevVEl.offsetHeight;
367
- currentPosition += prevSize + this.handleSize;
368
- }
369
- }
370
- }
371
- }
372
- // 更新虚拟节点的位置
373
- this.virtualNodeManager.updateVirtualNodePosition(panelInfo.panelEl, currentPosition, this.direction);
374
- }
375
- }
376
- index++;
377
- panelInfo = this.getPanelInfo(index);
378
- }
379
- }
380
- getSize(el) {
381
- return this.direction === 'horizontal' ? el.offsetWidth : el.offsetHeight;
382
- }
383
- getPosition(el) {
384
- // 获取元素相对于父容器的位置
385
- if (this.direction === 'horizontal') {
386
- return el.offsetLeft;
387
- }
388
- else {
389
- return el.offsetTop;
390
- }
391
- }
392
- endResize() {
393
- this.isResizing = false;
394
- if (this.virtualEnabled && this.virtualNodeManager) {
395
- // 虚拟化模式:将最终尺寸应用到真实节点
396
- const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';
397
- // 获取所有虚拟节点的最终尺寸并应用到真实节点
398
- this.allPanelsStartSizes.forEach((_, index) => {
399
- const panelInfo = this.getPanelInfo(index);
400
- if (!panelInfo)
401
- return;
402
- const virtualEl = this.virtualNodeManager.getVirtualNode(panelInfo.panelEl);
403
- if (virtualEl) {
404
- const finalSize = this.direction === 'horizontal'
405
- ? virtualEl.offsetWidth
406
- : virtualEl.offsetHeight;
407
- // 应用最终尺寸到真实节点
408
- panelInfo.panelEl.style.flex = 'none';
409
- panelInfo.panelEl.style[sizeProperty] = `${finalSize}px`;
410
- }
411
- });
412
- // 清理所有虚拟节点
413
- this.virtualNodeManager.removeAllVirtualNodes();
414
- }
415
- this.allPanelsStartSizes.clear();
416
- }
417
- destroy() {
418
- this.endResize();
419
- // 清理虚拟节点管理器
420
- if (this.virtualNodeManager) {
421
- this.virtualNodeManager.destroy();
422
- }
423
- }
424
- }
425
-
426
- export { ResizeAbleCore as default };
427
- //# sourceMappingURL=resizeAble.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resizeAble.js","sources":["../../../src/utils/resizeAble.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,164 +0,0 @@
1
- /**
2
- * 虚拟节点管理模块
3
- * 负责创建、更新、销毁虚拟节点,用于虚拟化拖拽
4
- */
5
- class VirtualNodeManager {
6
- constructor() {
7
- Object.defineProperty(this, "virtualNodes", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: new Map()
12
- }); // 存储虚拟节点映射:realEl -> virtualEl
13
- }
14
- /**
15
- * 创建虚拟节点
16
- * @param originalEl - 原始节点
17
- * @param config - 虚拟化配置
18
- * @returns 虚拟节点
19
- */
20
- createVirtualNode(originalEl, config = {}) {
21
- if (!originalEl || !originalEl.parentElement) {
22
- return null;
23
- }
24
- // 如果已存在虚拟节点,先移除
25
- if (this.virtualNodes.has(originalEl)) {
26
- this.removeVirtualNode(originalEl);
27
- }
28
- // 获取原始节点的位置和尺寸信息
29
- const rect = originalEl.getBoundingClientRect();
30
- const parentRect = originalEl.parentElement.getBoundingClientRect();
31
- const computedStyle = window.getComputedStyle(originalEl);
32
- // 创建虚拟节点(只复制结构,不复制内容以提高性能)
33
- const virtualEl = originalEl.cloneNode(false); // false 表示不复制子节点
34
- // 计算相对于父容器的位置
35
- const top = rect.top - parentRect.top + (originalEl.parentElement.scrollTop || 0);
36
- const left = rect.left - parentRect.left + (originalEl.parentElement.scrollLeft || 0);
37
- // 设置虚拟节点样式
38
- virtualEl.style.cssText = `
39
- position: absolute;
40
- top: ${top}px;
41
- left: ${left}px;
42
- width: ${rect.width}px;
43
- height: ${rect.height}px;
44
- margin: 0;
45
- padding: ${computedStyle.padding};
46
- border: ${computedStyle.border};
47
- box-sizing: ${computedStyle.boxSizing};
48
- pointer-events: none;
49
- z-index: 10000;
50
- opacity: 0.6;
51
- background-color: ${computedStyle.backgroundColor || 'rgba(0, 123, 255, 0.1)'};
52
- overflow: hidden;
53
- box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.3);
54
- `;
55
- // 应用自定义样式
56
- if (config.style) {
57
- Object.assign(virtualEl.style, config.style);
58
- }
59
- // 应用自定义类名
60
- if (config.className) {
61
- virtualEl.className = config.className;
62
- }
63
- // 隐藏原始节点的内容(可选,通过设置透明度)
64
- const originalOpacity = originalEl.style.opacity;
65
- originalEl.style.opacity = '0.3';
66
- originalEl.dataset.originalOpacity = originalOpacity || '';
67
- // 将虚拟节点插入到父容器中
68
- originalEl.parentElement.appendChild(virtualEl);
69
- // 存储映射关系
70
- this.virtualNodes.set(originalEl, virtualEl);
71
- return virtualEl;
72
- }
73
- /**
74
- * 更新虚拟节点尺寸
75
- * @param originalEl - 原始节点
76
- * @param size - 新尺寸
77
- * @param direction - 方向 'horizontal' | 'vertical'
78
- */
79
- updateVirtualNode(originalEl, size, direction) {
80
- const virtualEl = this.virtualNodes.get(originalEl);
81
- if (!virtualEl)
82
- return;
83
- const sizeProperty = direction === 'horizontal' ? 'width' : 'height';
84
- virtualEl.style[sizeProperty] = `${size}px`;
85
- }
86
- /**
87
- * 更新虚拟节点位置(用于级联调整)
88
- * @param originalEl - 原始节点
89
- * @param newPosition - 新位置(绝对位置,不是偏移量)
90
- * @param direction - 方向 'horizontal' | 'vertical'
91
- */
92
- updateVirtualNodePosition(originalEl, newPosition, direction) {
93
- const virtualEl = this.virtualNodes.get(originalEl);
94
- if (!virtualEl)
95
- return;
96
- const positionProperty = direction === 'horizontal' ? 'left' : 'top';
97
- virtualEl.style[positionProperty] = `${newPosition}px`;
98
- }
99
- /**
100
- * 移除虚拟节点
101
- * @param originalEl - 原始节点
102
- */
103
- removeVirtualNode(originalEl) {
104
- const virtualEl = this.virtualNodes.get(originalEl);
105
- if (!virtualEl)
106
- return;
107
- // 恢复原始节点透明度
108
- if (originalEl.dataset.originalOpacity !== undefined) {
109
- originalEl.style.opacity = originalEl.dataset.originalOpacity;
110
- delete originalEl.dataset.originalOpacity;
111
- }
112
- // 移除虚拟节点
113
- if (virtualEl.parentElement) {
114
- virtualEl.parentElement.removeChild(virtualEl);
115
- }
116
- // 移除映射关系
117
- this.virtualNodes.delete(originalEl);
118
- }
119
- /**
120
- * 将最终尺寸应用到真实节点
121
- * @param originalEl - 原始节点
122
- * @param finalSize - 最终尺寸
123
- * @param direction - 方向 'horizontal' | 'vertical'
124
- */
125
- applyToRealNode(originalEl, finalSize, direction) {
126
- const sizeProperty = direction === 'horizontal' ? 'width' : 'height';
127
- originalEl.style[sizeProperty] = `${finalSize}px`;
128
- }
129
- /**
130
- * 移除所有虚拟节点
131
- */
132
- removeAllVirtualNodes() {
133
- const nodesToRemove = Array.from(this.virtualNodes.keys());
134
- nodesToRemove.forEach(originalEl => {
135
- this.removeVirtualNode(originalEl);
136
- });
137
- this.virtualNodes.clear();
138
- }
139
- /**
140
- * 检查是否存在虚拟节点
141
- * @param originalEl - 原始节点
142
- * @returns 是否存在
143
- */
144
- hasVirtualNode(originalEl) {
145
- return this.virtualNodes.has(originalEl);
146
- }
147
- /**
148
- * 获取虚拟节点
149
- * @param originalEl - 原始节点
150
- * @returns 虚拟节点或null
151
- */
152
- getVirtualNode(originalEl) {
153
- return this.virtualNodes.get(originalEl) || null;
154
- }
155
- /**
156
- * 销毁管理器,清理所有资源
157
- */
158
- destroy() {
159
- this.removeAllVirtualNodes();
160
- }
161
- }
162
-
163
- export { VirtualNodeManager as default };
164
- //# sourceMappingURL=virtualNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"virtualNode.js","sources":["../../../src/utils/virtualNode.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}