用途:为 TanStack Table 提供矩形单元格区域选择能力,基于 core 与 table-features。选区不是逐单元映射,也不是按位置存储,而是由若干矩形操作组成的顺序日志,每个矩形记录两个由行列 id 标识的角点。
主要能力:支持锚点与焦点两角结构,便于 Shift 扩展;支持 include 与 exclude 操作,按数组顺序生效,exclude 从前序结果中减去;Table 会将日志解析为不相交的正向矩形,用于成员判断与派生读取。提供 table.selectCellRange 以 programmatic 方式替换、包含或排除区域;提供 getSelectedCellCount、getCellSelectionBounds、getSelectedCellRangesData 读取结果;cell.getSelectionEdges 用于按边缘绘制连续轮廓。键盘导航不内置,需外部调用 moveCellSelection、extendCellSelection、setFocusedCell、selectAllCells、resetCellSelection。
必要用法:通过 tableFeatures({ cellSelectionFeature }) 注册;用 cell.getSelectionStartHandler() 与 cell.getSelectionExtendHandler() 分别绑定 onMouseDown 与 onMouseEnter,start 处理器自行管理 document 级 mouseup,勿再绑定 mouseup。设置 enableMultiCellRangeSelection: false 可关闭修饰键行为。
限制与注意:cellSelection 是矩形操作,不能当作逐单元选中表,成员判断应使用 cell.getIsSelected()。存储的操作不等于最终选中区域,exclude 可能把一个包含矩形拆成多个不相交正向区域。范围锚定角点 id,排序、过滤或列重排后会重新计算中间内容,可能扩大范围,必要时在用户侧调用 resetCellSelection(true)。隐藏角点所在列会使范围暂时失效,恢复显示后回归。仅绑定 mousedown 不会产生拖拽。数据变化默认重置选区,可用 autoResetCellSelection: false 关闭,autoResetAll 优先级更高。表格只返回原始值,TSV 序列化属于应用层。为避免每次拖拽全表重渲染,应按行订阅 cellSelection 原子。具体支持平台与版本要求资料未提供。