compose-sheet-spi
自动收集自
lib/compose/compose-sheet-spi/README.md。
面向在线 Excel / 腾讯文档式表格的 renderless sheet engine。
- Maven 坐标:
site.addzero:compose-sheet-spi - 本地路径:
lib/compose/compose-sheet-spi - 适用场景:在线单元格编辑、工作表切换、虚拟滚动视口、操作日志、局部协同状态
设计目标
SheetState只管理交互态:当前工作表、视口、选择区、编辑草稿SheetController只管理加载、操作提交、历史栈、并发保护SheetReducer只负责把SheetOperation落到文档快照- UI 层只消费
document + state + controller
最小示例
val controller = rememberSheetController(
dataSource = sheetDataSource,
documentId = "asset-config",
)
controller.selectRange(
SheetRange.single(SheetCellAddress(rowIndex = 0, columnIndex = 0)),
)
controller.startEditing(SheetCellAddress(rowIndex = 0, columnIndex = 0))
controller.updateEditingInput("设备编号")
controller.commitEditing()
controller.pastePlainText("设备编号\t启用\nA-001\ttrue")
val exported = controller.selectedRangeAsPlainText()
边界
- 这个模块只提供 sheet engine 骨架,不内置公式求值器
- 多人协同的 OT / CRDT、presence 广播、权限与审计由上层数据源接入
- 如果只是服务端分页 CRUD 列表,请继续用
compose-crud-spi - 纯文本复制/粘贴默认按
TSV/换行处理,适合表格与剪贴板互通
独立启动验证
- 运行纯引擎场景:
./gradlew :lib:compose:compose-sheet-spi:runSheetEngineScenario
Maven / Gradle
已发布至 Maven Central。
implementation("site.addzero:compose-sheet-spi:latest version")
<dependency>
<groupId>site.addzero</groupId>
<artifactId>compose-sheet-spi</artifactId>
<version>latest version</version>
</dependency>