react-resize-demo 2.0.3 → 4.1.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 (89) hide show
  1. package/CHANGELOG.md +366 -0
  2. package/README.md +192 -117
  3. package/dist/core/virtualNode.js +2 -0
  4. package/dist/core/virtualNode.js.map +1 -0
  5. package/dist/esm/core/virtualNode.js +2 -0
  6. package/dist/esm/core/virtualNode.js.map +1 -0
  7. package/dist/esm/index.d.ts +7 -3
  8. package/dist/esm/index.js +1 -1
  9. package/dist/esm/strategies/basic/components/ResizeHandle/index.d.ts +25 -0
  10. package/dist/esm/strategies/basic/components/ResizeHandle/index.js +2 -0
  11. package/dist/esm/strategies/basic/components/ResizeHandle/index.js.map +1 -0
  12. package/dist/esm/{components → strategies/basic/components}/ResizePanel/index.d.ts +2 -1
  13. package/dist/esm/strategies/basic/components/ResizePanel/index.js +2 -0
  14. package/dist/esm/strategies/basic/components/ResizePanel/index.js.map +1 -0
  15. package/dist/{components → esm/strategies/basic/components}/ResizePanelGroup/index.d.ts +5 -3
  16. package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js +2 -0
  17. package/dist/esm/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
  18. package/dist/esm/strategies/basic/context.d.ts +29 -0
  19. package/dist/esm/strategies/basic/context.js +2 -0
  20. package/dist/esm/strategies/basic/context.js.map +1 -0
  21. package/dist/esm/strategies/basic/resizeAble.js +2 -0
  22. package/dist/esm/strategies/basic/resizeAble.js.map +1 -0
  23. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.d.ts +25 -0
  24. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
  25. package/dist/esm/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
  26. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +24 -0
  27. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
  28. package/dist/esm/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
  29. package/dist/esm/strategies/flex/resizeAble.js +2 -0
  30. package/dist/esm/strategies/flex/resizeAble.js.map +1 -0
  31. package/dist/esm/types/index.d.ts +32 -2
  32. package/dist/esm/types/index.js +2 -0
  33. package/dist/esm/types/index.js.map +1 -0
  34. package/dist/esm/utils/resizeHelpers.js +2 -0
  35. package/dist/esm/utils/resizeHelpers.js.map +1 -0
  36. package/dist/index.d.ts +7 -3
  37. package/dist/index.js +1 -1
  38. package/dist/strategies/basic/components/ResizeHandle/index.d.ts +25 -0
  39. package/dist/strategies/basic/components/ResizeHandle/index.js +2 -0
  40. package/dist/strategies/basic/components/ResizeHandle/index.js.map +1 -0
  41. package/dist/{components → strategies/basic/components}/ResizePanel/index.d.ts +2 -1
  42. package/dist/strategies/basic/components/ResizePanel/index.js +2 -0
  43. package/dist/strategies/basic/components/ResizePanel/index.js.map +1 -0
  44. package/dist/{esm → strategies/basic}/components/ResizePanelGroup/index.d.ts +5 -3
  45. package/dist/strategies/basic/components/ResizePanelGroup/index.js +2 -0
  46. package/dist/strategies/basic/components/ResizePanelGroup/index.js.map +1 -0
  47. package/dist/strategies/basic/context.d.ts +29 -0
  48. package/dist/strategies/basic/context.js +2 -0
  49. package/dist/strategies/basic/context.js.map +1 -0
  50. package/dist/strategies/basic/resizeAble.js +2 -0
  51. package/dist/strategies/basic/resizeAble.js.map +1 -0
  52. package/dist/strategies/flex/components/ResizeHandleFlex/index.d.ts +25 -0
  53. package/dist/strategies/flex/components/ResizeHandleFlex/index.js +2 -0
  54. package/dist/strategies/flex/components/ResizeHandleFlex/index.js.map +1 -0
  55. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.d.ts +24 -0
  56. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js +2 -0
  57. package/dist/strategies/flex/components/ResizePanelGroupFlex/index.js.map +1 -0
  58. package/dist/strategies/flex/resizeAble.js +2 -0
  59. package/dist/strategies/flex/resizeAble.js.map +1 -0
  60. package/dist/types/index.d.ts +32 -2
  61. package/dist/types/index.js +2 -0
  62. package/dist/types/index.js.map +1 -0
  63. package/dist/utils/resizeHelpers.js +2 -0
  64. package/dist/utils/resizeHelpers.js.map +1 -0
  65. package/package.json +165 -134
  66. package/dist/components/ResizeHandle/index.js +0 -2
  67. package/dist/components/ResizeHandle/index.js.map +0 -1
  68. package/dist/components/ResizePanel/index.js +0 -2
  69. package/dist/components/ResizePanel/index.js.map +0 -1
  70. package/dist/components/ResizePanelGroup/index.js +0 -2
  71. package/dist/components/ResizePanelGroup/index.js.map +0 -1
  72. package/dist/components/shared/context.js +0 -2
  73. package/dist/components/shared/context.js.map +0 -1
  74. package/dist/esm/components/ResizeHandle/index.js +0 -2
  75. package/dist/esm/components/ResizeHandle/index.js.map +0 -1
  76. package/dist/esm/components/ResizePanel/index.js +0 -2
  77. package/dist/esm/components/ResizePanel/index.js.map +0 -1
  78. package/dist/esm/components/ResizePanelGroup/index.js +0 -2
  79. package/dist/esm/components/ResizePanelGroup/index.js.map +0 -1
  80. package/dist/esm/components/shared/context.js +0 -2
  81. package/dist/esm/components/shared/context.js.map +0 -1
  82. package/dist/esm/utils/resizeAble.js +0 -2
  83. package/dist/esm/utils/resizeAble.js.map +0 -1
  84. package/dist/esm/utils/virtualNode.js +0 -2
  85. package/dist/esm/utils/virtualNode.js.map +0 -1
  86. package/dist/utils/resizeAble.js +0 -2
  87. package/dist/utils/resizeAble.js.map +0 -1
  88. package/dist/utils/virtualNode.js +0 -2
  89. package/dist/utils/virtualNode.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,372 @@
5
5
  格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
6
6
  版本号遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/)。
7
7
 
8
+ ## [4.1.0] - 2026-01-17
9
+
10
+ ### 🔧 改进
11
+
12
+ - **代码优化与重构**
13
+ - 移除未使用的变量:`prePanelEl`、`nextPanelEl`(Basic 策略),`nextPanelEl`(Flex 策略)
14
+ - 优化 `startResize` 方法:统一处理逻辑,先处理前面的面板,再处理 prePanel 和 nextPanel,最后处理后面的面板
15
+ - 优化虚拟化节点位置更新逻辑:基于文档算法的简化实现,从 O(n²) 优化到 O(n),代码从 65 行减少到约 50 行
16
+
17
+ - **代码质量提升**
18
+ - 修复所有 lint 错误和警告
19
+ - 改进代码可读性和可维护性
20
+ - 统一代码风格和注释规范
21
+
22
+ ### 📝 技术细节
23
+
24
+ **代码冗余优化**:
25
+ - 移除了仅用于初始化的 `prePanelEl` 和 `nextPanelEl` 变量,后续通过 `getPanelInfo` 获取
26
+ - 提取公共方法 `recordPanelInitialState`,减少虚拟化和非虚拟化模式的重复代码
27
+
28
+ **虚拟化位置更新优化**:
29
+ - 简化位置计算逻辑:从 `allPanelsCurrentSizes` 获取所有面板索引,按顺序遍历
30
+ - 复用已有数据结构:使用 `allPanelsCurrentSizes` 获取当前尺寸(不读取DOM),使用 `panelInfosCache` 获取面板信息
31
+ - 核心逻辑:位置 = 前一个面板的位置 + 前一个面板的尺寸 + handle尺寸
32
+
33
+ **性能影响**:
34
+ - 无性能损失,代码更简洁
35
+ - 保持 O(n) 时间复杂度
36
+ - 减少代码维护成本
37
+
38
+ ## [4.0.0] - 2026-01-17
39
+
40
+ ### 🎉 重大版本更新
41
+
42
+ 这是一个重大版本更新,移除了链表优化策略,简化了代码库和文档。
43
+
44
+ ### 🗑️ 移除
45
+
46
+ - **移除链表优化策略(Linked Strategy)**
47
+ - 移除了 `ResizePanelGroupLinked`、`ResizePanelLinked`、`ResizeHandleLinked` 组件
48
+ - 移除了 `ResizeAbleCoreLinked` 核心类
49
+ - 移除了 `src/strategies/linked/` 目录及其所有文件
50
+
51
+ - **移除 Flex-Linked 策略(Flex-Linked Strategy)**
52
+ - 移除了 `ResizePanelGroupFlexLinked`、`ResizePanelFlexLinked`、`ResizeHandleFlexLinked` 组件
53
+ - 移除了 `ResizeAbleCoreFlexLinked` 核心类
54
+ - 移除了 `src/strategies/flex-linked/` 目录及其所有文件
55
+
56
+ - **移除链表相关类型和工具**
57
+ - 移除了 `ResizeAbleCoreLinkedOptions` 接口
58
+ - 移除了 `ResizeAbleCoreFlexLinkedOptions` 接口
59
+ - 移除了 `PanelNode` 和 `PanelManagerInterface` 的公共导出(保留在内部实现中)
60
+ - 移除了 `OptimizationStrategy` 中的 `'linked'` 选项
61
+
62
+ ### 🔄 变更
63
+
64
+ - **策略简化**
65
+ - 从 4 种策略简化为 2 种策略:Basic 和 Flex
66
+ - Basic 策略:适合面板数量较少的简单场景
67
+ - Flex 策略:推荐使用,提供精确控制和优秀性能
68
+
69
+ - **文档更新**
70
+ - 更新了 README.md,移除所有链表策略的说明和示例
71
+ - 重写了策略对比文档(STRATEGY_COMPARISON.md),只保留 Basic 和 Flex 策略
72
+ - 更新了性能优化时间线(PERFORMANCE_TIMELINE.md),保留历史记录但移除推荐内容
73
+ - 所有文档现在推荐使用 Flex 策略
74
+
75
+ - **导出更新**
76
+ - 从 `src/index.ts` 移除了链表相关组件的导出
77
+ - 从 `src/components/index.tsx` 移除了链表相关组件的导出
78
+ - 从 `src/utils/index.ts` 移除了链表相关工具的导出
79
+
80
+ ### 🔧 改进
81
+
82
+ - **代码简化**
83
+ - 移除了约 2000+ 行链表相关代码
84
+ - 简化了项目结构,更易于维护
85
+ - 减少了代码复杂度
86
+
87
+ - **性能优化**
88
+ - 优化尺寸调整算法:采用"预先计算 + 边界检查"策略
89
+ - 添加预先计算可操作空间,避免无效操作
90
+ - 实现三重约束取最小值,确保不超出边界限制
91
+ - 所有策略现在都支持最大值限制(`maxSize`)
92
+ - 保证数值守恒,无累积误差
93
+
94
+ ### 📝 技术细节
95
+
96
+ **移除原因**:
97
+ - 在实际业务场景中,面板数量通常较少(2-10 个),链表优化的收益不明显
98
+ - 链表策略增加了代码复杂度和维护成本
99
+ - 对于少量面板,数组索引访问的性能已经足够好
100
+
101
+ **迁移指南**:
102
+ - 如果之前使用 `ResizePanelGroupLinked`,请迁移到 `ResizePanelGroupFlex`
103
+ - 如果之前使用 `ResizePanelGroupFlexLinked`,请迁移到 `ResizePanelGroupFlex`
104
+ - Flex 策略提供了更好的性能和精确控制
105
+
106
+ ### 🚨 破坏性变更
107
+
108
+ - **移除的组件**(不再可用):
109
+ - `ResizePanelGroupLinked`、`ResizePanelLinked`、`ResizeHandleLinked`
110
+ - `ResizePanelGroupFlexLinked`、`ResizePanelFlexLinked`、`ResizeHandleFlexLinked`
111
+ - `ResizableContextLinked`、`useResizableContextLinked`
112
+
113
+ - **移除的类型**(不再导出):
114
+ - `ResizeAbleCoreLinkedOptions`
115
+ - `ResizeAbleCoreFlexLinkedOptions`
116
+ - `PanelNode`(公共导出)
117
+ - `PanelManagerInterface`(公共导出)
118
+
119
+ - **API 变更**:
120
+ - `createResizeAbleCore` 函数不再接受 `strategy: 'linked'` 参数
121
+ - `OptimizationStrategy` 类型只保留 `'normal'` 选项
122
+
123
+ ### 📚 文档
124
+
125
+ - 更新了所有文档以反映新的策略结构
126
+ - 移除了指向性推荐内容,但保留了历史变更记录
127
+ - 更新了性能优化时间线,标记链表策略为"已移除"
128
+
129
+ ### ⚠️ 升级建议
130
+
131
+ 1. **检查代码中的链表策略使用**
132
+ ```bash
133
+ # 搜索项目中的链表策略使用
134
+ grep -r "ResizePanelGroupLinked\|ResizePanelFlexLinked" src/
135
+ ```
136
+
137
+ 2. **迁移到 Flex 策略**
138
+ ```tsx
139
+ // 之前
140
+ import { ResizePanelGroupFlexLinked, ResizePanelFlexLinked } from 'react-resize-demo';
141
+
142
+ // 之后
143
+ import { ResizePanelGroupFlex, ResizePanelFlex } from 'react-resize-demo';
144
+ ```
145
+
146
+ 3. **更新导入路径**
147
+ - 所有链表相关的导入都需要更新
148
+ - 类型定义也需要更新
149
+
150
+ ---
151
+
152
+ ## [3.1.2] - 2026-01-13
153
+
154
+ ### ✨ 新增
155
+
156
+ - **自定义拖拽器功能**
157
+ - 所有策略(Basic、Linked、Flex、Flex-Linked)现在都支持自定义拖拽器渲染
158
+ - 新增 `renderHandle` prop,允许通过渲染函数自定义拖拽器的外观和内容
159
+ - 支持拖拽状态反馈:`isResizing` 参数可在拖拽时动态更新样式
160
+ - 完全向后兼容:未提供 `renderHandle` 时使用默认的黑色拖拽器
161
+
162
+ ### 🔧 改进
163
+
164
+ - **用户体验**
165
+ - 允许开发者完全自定义拖拽器的样式和交互效果
166
+ - 支持根据拖拽状态(`isResizing`)动态改变拖拽器外观
167
+ - 提供完整的 TypeScript 类型支持(`ResizeHandleRenderProps`)
168
+
169
+ ### 📝 技术细节
170
+
171
+ **自定义拖拽器实现**:
172
+ - 在所有策略的 `ResizePanelGroup` 组件中添加 `renderHandle` prop
173
+ - 在所有策略的 `ResizeHandle` 组件中支持接收并渲染自定义内容
174
+ - 添加 `isResizing` 状态跟踪,实时反馈拖拽状态
175
+ - 使用自定义渲染时,容器背景自动设为透明,避免样式冲突
176
+ - 所有策略统一导出 `ResizeHandleRenderProps` 类型,便于类型检查
177
+
178
+ **使用示例**:
179
+ ```tsx
180
+ <ResizePanelGroupFlexLinked
181
+ renderHandle={({ prePanelIndex, nextPanelIndex, direction, isResizing }) => (
182
+ <div className="custom-resize-handle" style={{
183
+ backgroundColor: isResizing ? '#0066cc' : '#cccccc',
184
+ }}>
185
+ 自定义拖拽器
186
+ </div>
187
+ )}
188
+ >
189
+ {/* panels */}
190
+ </ResizePanelGroupFlexLinked>
191
+ ```
192
+
193
+ ## [3.1.1] - 2026-01-13
194
+
195
+ ### ✨ 新增
196
+
197
+ - **Flex 策略配置化**
198
+ - 新增 `FlexStrategyConfig` 配置接口,支持自定义计算参数
199
+ - 可在 `ResizePanelGroupFlex` 和 `ResizePanelGroupFlexLinked` 中通过 `flexConfig` prop 配置
200
+ - 支持配置的参数包括:
201
+ - `minDeltaThreshold`: 最小拖拽变化阈值(默认 0.1 像素)
202
+ - `sizeChangeThreshold`: 尺寸变化误差阈值(默认 0.1 像素)
203
+ - `growChangeThreshold`: grow 值变化阈值(默认 0.0001)
204
+ - `growNormalizeBase`: grow 值归一化基数(默认 100)
205
+ - `growPrecisionMultiplier`: grow 值精度倍数(默认 1000,保留3位小数)
206
+ - `flexGrowPrecisionMultiplier`: flex-grow 精度倍数(默认 100,保留2位小数)
207
+
208
+ ### 🔧 改进
209
+
210
+ - **代码可维护性**
211
+ - 将 Flex 和 Flex-Linked 策略中的硬编码常量提取为可配置项
212
+ - 提供默认配置值,确保向后兼容
213
+ - 优化代码结构,便于后续扩展
214
+
215
+ ### 📝 技术细节
216
+
217
+ **配置化实现**:
218
+ - 在 `types/index.ts` 中新增 `FlexStrategyConfig` 接口和 `DEFAULT_FLEX_STRATEGY_CONFIG` 默认配置
219
+ - 在 `ResizeAbleCoreFlex` 和 `ResizeAbleCoreFlexLinked` 中支持配置参数
220
+ - 通过 Context 传递配置到 ResizeHandle 组件
221
+ - 所有配置项都有合理的默认值,无需配置即可使用
222
+
223
+ ## [3.1.0] - 2026-01-11
224
+
225
+ ### ✨ 新增
226
+
227
+ - **RAF 优化(RequestAnimationFrame)**
228
+ - 在所有策略的 ResizeHandle 组件中应用 RAF 优化
229
+ - 鼠标移动时只更新 delta 值,不立即计算
230
+ - 使用 `requestAnimationFrame` 在每帧结束时计算一次
231
+ - 与浏览器渲染同步,避免快速拖拽时的位置偏移
232
+
233
+ - **基于位置的计算方法(Flex 和 Flex-Linked 策略)**
234
+ - 重构计算逻辑,改为基于初始位置和当前 delta 值计算
235
+ - 每次计算都基于初始状态,避免累积误差
236
+ - 根据起始位置、方向、最小值和移动距离,一次性计算所有面板的位置
237
+ - 被压缩的面板减小尺寸,扩大的面板恢复尺寸
238
+
239
+ ### 🔧 改进
240
+
241
+ - **性能优化**
242
+ - 减少计算频率:从每次鼠标移动计算改为每帧计算一次
243
+ - 避免累积误差:基于初始状态计算,而不是基于当前状态累积
244
+ - 解决快速拖拽位置偏移:每帧更新的都是当前帧应得的位置
245
+ - 提升拖拽流畅度:与浏览器渲染同步,更平滑
246
+
247
+ - **代码质量**
248
+ - 统一所有策略的优化方式
249
+ - 改进代码注释,说明优化思路
250
+ - 优化清理逻辑,确保 RAF 正确取消
251
+
252
+ ### 📝 技术细节
253
+
254
+ **RAF 优化实现**:
255
+ - 在 `startResize` 时记录初始位置和重置 delta
256
+ - 在 `onResizeMove` 中只更新 `currentDelta`,不立即计算
257
+ - 使用 `requestAnimationFrame` 在每帧结束时调用 `onResize`
258
+ - 在 `endResize` 时确保最终位置正确(使用最新的 delta 值)
259
+
260
+ **基于位置的计算(Flex/Flex-Linked)**:
261
+ - 在 `startResize` 时记录所有面板的初始位置和尺寸
262
+ - 在 `calculatePanelsByPosition` 中根据 delta 值一次性计算所有面板的新尺寸
263
+ - 使用 `adjustSizesForPositiveDelta` 和 `adjustSizesForNegativeDelta` 处理正向和负向拖拽
264
+ - 根据新尺寸计算新的 grow 值,一次性更新所有面板
265
+
266
+ ### 🐛 修复
267
+
268
+ - 修复 flex-linked 策略在快速拖拽时位置不正确的问题
269
+ - 将 flex-linked 策略的计算逻辑改为与 flex 策略一致的基于位置的计算方法
270
+ - 解决了快速拖拽时的位置偏移问题
271
+
272
+ ## [3.0.0] - 2026-01-10
273
+
274
+ ### 🎉 重大版本更新
275
+
276
+ 这是一个重大版本更新,引入了策略分类架构、性能优化和完整的文档体系。
277
+
278
+ ### ✨ 新增
279
+
280
+ - **策略分类架构**
281
+ - 重构为按策略分类的目录结构(`src/strategies/`)
282
+ - 提供 4 种 resize 策略:
283
+ - **Basic 策略**:适合面板数量 < 10 的简单场景
284
+ - **Linked 策略**:适合面板数量 ≥ 10 的场景
285
+ - **Flex 策略**:适合需要精确控制占比的场景
286
+ - **Flex-Linked 策略**:适合大量面板 + 精确控制的场景(**推荐**)
287
+
288
+ - **性能优化**
289
+ - **节流优化**:使用 `requestAnimationFrame` 节流,减少 DOM 操作 50-70%
290
+ - **面板变化通知**:通过 `onPanelsChange` 回调,只重新渲染变化的面板
291
+ - **自动冻结**:自动冻结未变化面板,减少布局计算 85%
292
+ - **链表优化**:大量面板场景下性能提升 42.9%
293
+
294
+ - **核心工具模块化**
295
+ - 新增 `src/core/` 目录,存放所有策略共享的核心工具
296
+ - `PanelManager.ts`:面板管理器(链表策略使用)
297
+ - `virtualNode.ts`:虚拟节点管理
298
+ - `throttle.ts`:节流工具
299
+
300
+ - **完整文档体系**
301
+ - [策略对比文档](./docs/STRATEGY_COMPARISON.md):详细对比 4 种策略
302
+ - [性能优化时间线](./docs/PERFORMANCE_TIMELINE.md):记录所有性能优化措施
303
+ - [节流优化文档](./docs/THROTTLE_OPTIMIZATION.md):节流优化详细说明
304
+ - [面板变化通知文档](./docs/PANEL_CHANGE_NOTIFICATION.md):面板变化通知机制
305
+
306
+ ### 🔄 变更
307
+
308
+ - **项目结构重构**
309
+ - 从单一组件结构重构为按策略分类的结构
310
+ - `src/components/` → `src/strategies/{strategy}/components/`
311
+ - `src/utils/` → `src/core/`(核心工具)+ `src/strategies/{strategy}/`(策略特定)
312
+
313
+ - **构建产物结构**
314
+ ```
315
+ dist/
316
+ ├── index.js # CJS 主入口
317
+ ├── strategies/ # 策略目录
318
+ │ ├── basic/
319
+ │ ├── linked/
320
+ │ ├── flex/
321
+ │ └── flex-linked/
322
+ ├── core/ # 核心工具
323
+ │ ├── PanelManager.js
324
+ │ ├── virtualNode.js
325
+ │ └── throttle.js
326
+ └── esm/ # ESM 模块
327
+ ```
328
+
329
+ - **移除废弃策略**
330
+ - 移除了 `ResizeAbleCoreOptimized` 和相关的 `Optimized` 组件
331
+ - 统一使用 `Flex-Linked` 策略作为最终版本
332
+
333
+ - **构建优化**
334
+ - 构建前自动清空 `dist` 目录
335
+ - 更新 `package.json` 的 `exports` 字段,支持策略和核心工具的导出路径
336
+
337
+ ### 🔧 改进
338
+
339
+ - **性能提升**
340
+ - FPS 从 30-40 提升到 50-55(+66.7%)
341
+ - CPU 占用从 80-100% 降低到 40-60%(-50%)
342
+ - DOM 操作减少 60-70%
343
+ - React 渲染优化 85%
344
+
345
+ - **代码质量**
346
+ - 修复了最小尺寸限制的 bug(Flex-Linked 策略)
347
+ - 优化了面板变化检测逻辑
348
+ - 改进了链表遍历性能
349
+
350
+ - **开发体验**
351
+ - 更清晰的策略分类,便于维护和扩展
352
+ - 完整的文档体系,便于理解和使用
353
+ - 详细的性能对比和优化建议
354
+
355
+ ### 📝 向后兼容
356
+
357
+ - 保留了 Basic 策略的组件导出(`ResizePanelGroup`、`ResizePanel`、`ResizeHandle`)
358
+ - 保留了旧的导出名称(`ResizablePanelGroup`、`ResizeablePanelGroup` 等)
359
+ - 主入口导入方式保持不变
360
+
361
+ ### 🚨 破坏性变更
362
+
363
+ - 如果直接导入子模块路径,需要更新导入路径
364
+ - `Optimized` 相关组件已移除,请使用 `Flex-Linked` 策略替代
365
+ - 内部 API 结构发生变化,但公共 API 保持兼容
366
+
367
+ ### 📚 文档
368
+
369
+ - 新增策略对比文档,帮助选择最适合的策略
370
+ - 新增性能优化时间线,记录所有优化措施
371
+ - 更新所有文档以反映新的目录结构
372
+ - 更新 README,添加策略说明和性能优化介绍
373
+
8
374
  ## [2.0.3] - 2026-01-10
9
375
 
10
376
  ### 🚀 性能优化