roymondchen
|
025cca365c
|
perf(dep): 依赖收集改为单次遍历批量处理多 target
将 collectItems/removeTargetsDep 改为整棵树只遍历一次、在每个属性上检查所有
target,把结构遍历开销从 ×targets 降到 ×1,收集结果保持一致。
同时修正 dataSourceMethodDeps 字段命名并补充到 MApp schema。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-29 17:55:13 +08:00 |
|
roymondchen
|
b02aa75ddc
|
feat(editor): 历史记录面板支持单步回滚(类 git revert)
将目标历史步骤的修改作为一次新操作反向应用,不破坏原有栈结构,
page/dataSource/codeBlock 三类 service 均提供 revert 能力;
面板新增关闭按钮、步骤编号展示与合并组卡片样式优化。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-29 14:19:44 +08:00 |
|
roymondchen
|
62a2ee6693
|
feat(editor): 历史记录面板支持点击跳转与回到初始状态
- 单步组头部点击跳转到该步骤;合并组头部点击展开/收起,子步行点击跳转到具体步骤
- 列表底部新增「初始」记录项,可一键回到所有修改之前的状态
- editorService/dataSourceService/codeBlockService 新增 goto API;historyService 暴露 cursor 读取器
|
2026-05-28 18:52:11 +08:00 |
|
roymondchen
|
0446202ba6
|
feat(editor): 新增历史记录列表面板
- 新增 history-list 模块(面板、Tab、Bucket、GroupRow 与 composables)
- NavMenu 接入历史记录面板入口
- history/editor/codeBlock/dataSource service 配合面板能力调整
- utils/undo-redo 适配新面板
- 扩展 type.ts 相关类型定义
- 新增 history-list-panel.scss 并在 theme.scss 引入
- 补充 history-list 模块完整单元测试
- playground 同步小幅调整
|
2026-05-28 17:51:52 +08:00 |
|
roymondchen
|
8dae67769c
|
feat(editor): 数据源与代码块 service 支持 undo/redo
- dataSourceService / codeBlockService 新增 undo / redo / canUndo / canRedo 方法
- undo/redo 内部复用 add / update / remove / setCodeDslByIdSync / deleteCodeDslByIds 写回,
并强制 doNotPushHistory,借此自动驱动 initService 中的依赖收集链路
(DepTargetType.DATA_SOURCE / DATA_SOURCE_COND / DATA_SOURCE_METHOD / CODE_BLOCK)
- 更新场景下若 step 带 changeRecords,按 propPath 局部 patch,不冲掉同节点其它无关变更;
缺省退化为整 schema / 整内容替换
- 补充对应单测与 API 文档
|
2026-05-28 16:40:49 +08:00 |
|
roymondchen
|
09558fa027
|
feat(editor): 历史记录接入 changeRecords,undo/redo 按 propPath 局部更新
- 节点 / 数据源 / 代码块的 history step 增加 changeRecords 字段
- editor.update / dataSource.update / codeBlock.setCodeDslById(Sync) 透传 changeRecords 入历史
- applyHistoryOp 的 update 分支:携带 changeRecords 时,按 propPath 从 oldNode/newNode 取值
构造最小 patch 走 update,不冲掉同节点上其它无关变更;缺省退化为整节点替换
(覆盖 sort/moveLayer/拖动等纯快照场景)
- editor.update 增加 changeRecordList 形参,多节点场景每个节点单独保留 records;
use-stage 多选拖动 / 缩放改用 changeRecordList,避免 records 在多节点间共享
- use-code-block-edit.submitCodeBlockHandler 透传 form changeRecords
- 同步更新 editor / dataSource / codeBlock / history service 文档
|
2026-05-28 16:28:35 +08:00 |
|
roymondchen
|
4c855ba50b
|
feat(editor): 写操作支持 doNotPushHistory 选项以跳过历史记录
- editor/codeBlock/dataSource 的 add/update/delete 等接口新增 doNotPushHistory 选项
- 移除不再使用的 editor-history 工具及其单测
- 修复 layer 节点状态在重建时丢失已有 status 的问题
- 同步更新 service 方法文档,新增 dragto 复现用例
|
2026-05-28 16:03:29 +08:00 |
|
roymondchen
|
e2c065f90d
|
feat(editor): 代码块与数据源支持按 id 独立的历史记录
- history service 新增 pushCodeBlock/undoCodeBlock/redoCodeBlock
/canUndoCodeBlock/canRedoCodeBlock 及数据源对称 API
- 按 id 维度各自维护独立 UndoRedo 栈,与页面/节点历史完全解耦
- type 新增 CodeBlockStepValue / DataSourceStepValue 独立类型
- HistoryState 扩展 codeBlockState / dataSourceState 字段
- codeBlockService.setCodeDslByIdSync / deleteCodeDslByIds 自动入历史
- dataSourceService.add / update / remove 自动入历史
- 入栈成功时 emit code-block-history-change / data-source-history-change
- 补充单测共 21 例,更新 history/codeBlock/dataSource 相关文档
|
2026-05-27 19:50:17 +08:00 |
|
roymondchen
|
a341c7d73e
|
fix(editor): 多选时对多个节点的操作合并入同一条历史记录
- moveToContainer 支持数组形参,多选移动整批只产生一条历史记录
- use-stage 拖动多选元素入容器 / 多选拖动缩放整批合成一次调用
- 右键移动至改走 moveToContainer,避免 remove+add 切成两条历史
- 跳过选中目标节点的分支清理 state.nodes 残留旧引用
- history.push 新增可选 pageId 参数,跨页操作正确落到目标页栈
- pushOpHistory 显式按 step.data.id 入栈,避免跨页操作错配
|
2026-05-27 19:09:34 +08:00 |
|
roymondchen
|
de94a75803
|
refactor(editor): 移除 BaseService 废弃的 use/middleware 机制
- 删除已 @deprecated 的 BaseService.use 方法及其 middleware 通道
- 删除 utils/compose.ts 及对应测试(仅服务于 middleware,无其他引用)
- editor.ts 移除 safeOptions/safeParent 兜底,相关方法 options 改用形参默认值
- props.ts fillConfig 的 labelWidth 改为形参默认值,移除 typeof function 兜底
- 同步更新 5 份 service 方法文档,删除 ## use 章节
|
2026-05-27 18:55:38 +08:00 |
|
roymondchen
|
3d038513e3
|
feat(editor): 新增 DSL 修改方法的 doNotSwitchPage 选项
在 add / remove / doRemove / sort / paste / alignCenter / moveToContainer
的 options 对象中新增 doNotSwitchPage,与 doNotSelect 合并为同一配置 DslOpOptions,
用于在 DSL 操作(新增 / 删除 / 跨页移动)会引发当前页面切换时跳过该次切换。
- 抽取共用类型 DslOpOptions 到 type.ts 并对外导出
- 新增 editorService.isOnDifferentPage 辅助方法用于跨页判断
- 修复 doUpdate 同步 state.page 时无条件覆盖的问题:只在被更新页就是当前页时才同步引用,避免「更新非当前页」误把编辑器切到该页
- doRemove 中对已删除节点的引用清理与当前页清空逻辑提升为无条件执行,避免 doNotSelect / doNotSwitchPage 跳过后续 select 时 state 持有已删除节点
- 补充对应单元测试与 API 文档
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-22 16:49:52 +08:00 |
|
roymondchen
|
05e512b1fe
|
feat(editor): 新增 DSL 修改方法的 doNotSelect 选项
- add/remove/sort/alignCenter/moveToContainer/paste 新增 doNotSelect 选项,控制操作后是否自动触发选中变化
- doUpdate/doRemove 改为始终同步当前选中列表中的节点引用,避免 state 持有已被替换/已删除的过期节点
- 顺手修复 doUpdate 在 splice(-1) 时误改最后一个选中项的 bug
- 移除 update/doUpdate 的 selectedAfterUpdate 参数(语义已内化),move 不再暴露无意义的 doNotSelect
- 新增 safeOptions / safeParent 辅助函数,兜底插件机制将 dispatch 注入到形参位置的场景
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-19 17:20:04 +08:00 |
|
roymondchen
|
aab73249d1
|
feat(editor): 新增 alwaysMultiSelect 配置开启常驻多选模式
新增编辑器配置项 alwaysMultiSelect(默认 false),开启后无需按住 Ctrl/Meta
键,组件树与画布点击即多选;当 disabledMultiSelect=true 时本配置失效。同步
在 stage 层 ActionManager 暴露 setAlwaysMultiSelect 方法用于运行时切换,并
补充组件树/服务/画布的状态联动、文档与单元测试。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-11 16:50:40 +08:00 |
|
roymondchen
|
d8133629b4
|
feat(editor): props 服务新增配置/值的批量获取与存在性判断方法
新增 getPropsConfigs、hasPropsConfig、getPropsValues、hasPropsValue 方法,便于外部按类型查询表单配置与初始值。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-08 19:57:06 +08:00 |
|
roymondchen
|
a520626ef6
|
feat(editor): getPropsConfig 支持传入 node 参数并修正 CondOpSelectConfig 类型
- props service 的 getPropsConfig 增加可选 data 参数以传递当前节点信息
- 修正 CondOpSelectConfig 的 type 字段为 'cond-op-select'
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-07 16:24:17 +08:00 |
|
roymondchen
|
26efa75ff2
|
feat(editor): update 支持 selectedAfterUpdate 参数控制是否更新 nodes
Made-with: Cursor
|
2026-04-28 15:50:03 +08:00 |
|
roymondchen
|
b46b571214
|
feat(editor): 没有参考线时不显示参考线切换按钮
Made-with: Cursor
|
2026-04-23 15:42:10 +08:00 |
|
roymondchen
|
26dc70d70c
|
fix(editor): 历史记录信息中添加页面信息
|
2026-04-08 17:19:15 +08:00 |
|
roymondchen
|
0c2f2fd2b5
|
refactor(editor): 拆分 editor service,提取工具函数减少文件行数
将 services/editor.ts 从 1335 行精简到 1075 行,提取以下内容:
- 新增 utils/editor-history.ts:历史操作处理函数(add/remove/update)
- utils/editor.ts 新增:resolveSelectedNode、toggleFixedPosition、
calcMoveStyle、calcAlignCenterStyle、calcLayerTargetIndex、
editorNodeMergeCustomizer、collectRelatedNodes、classifyDragSources
- type.ts 新增:EditorEvents、canUsePluginMethods、AsyncMethodName
- 补充完整的单元测试覆盖所有新增工具函数
Made-with: Cursor
|
2026-04-07 18:25:35 +08:00 |
|
roymondchen
|
637a5bb69a
|
refactor(editor): 历史记录改成记录操作而不是记录副本
|
2026-03-27 15:27:41 +08:00 |
|
roymondchen
|
55eb546ad6
|
feat(form-schema,form,editor): 完善表单配置类型
|
2026-03-20 12:31:55 +08:00 |
|
roymondchen
|
1cb2d57ade
|
refactor(editor): 调整表单配置
|
2025-11-12 19:52:30 +08:00 |
|
roymondchen
|
cdb07dfaea
|
fix(editor): 避免services plugin重复添加
|
2025-07-24 16:43:40 +08:00 |
|
roymondchen
|
5242585500
|
chore: update copyright
|
2025-07-11 15:04:22 +08:00 |
|
roymondchen
|
8d6da3712e
|
feat(editor): service新增removePlugin方法
|
2025-06-26 16:49:32 +08:00 |
|
roymondchen
|
18e8df4a55
|
fix(editor): 防止快捷键重复注册
|
2025-06-25 14:17:43 +08:00 |
|
roymondchen
|
32681964b3
|
feat(editor): stage overlay 支持放大缩小
|
2025-06-20 19:47:51 +08:00 |
|
roymondchen
|
6152a78467
|
feat(editor): 支持禁用数据源与代码块
|
2025-06-09 16:35:08 +08:00 |
|
roymondchen
|
0196eb343a
|
feat(editor): 获取联动组件的方法函数中添加组件id参数
|
2025-05-28 17:47:12 +08:00 |
|
roymondchen
|
054d12601b
|
feat(editor): eventsServic支持插件扩展
|
2025-05-13 16:29:34 +08:00 |
|
roymondchen
|
179b797c5c
|
feat(editor): dsl初始化时收集依赖使用worker
|
2025-05-06 19:59:27 +08:00 |
|
roymondchen
|
e7e9197ae3
|
style: 更新eslint版本,更新eslint配置
|
2025-04-21 20:35:54 +08:00 |
|
roymondchen
|
f5742c107a
|
fix(editor): 获取关联组件的方法默认值
|
2025-03-13 14:30:28 +08:00 |
|
roymondchen
|
9c7d711c16
|
fix(editor): 数据源修改后,依赖重新收集不准确
|
2025-03-12 14:22:33 +08:00 |
|
roymondchen
|
c8e1cffca9
|
feat(core, editor): 删除公共的点击事件实现,由组件自行添加
|
2025-03-06 20:05:49 +08:00 |
|
roymondchen
|
6e2b5aea47
|
fix(editor): 编辑器销毁不应该移除依赖收集任务的事件监听
|
2025-02-12 14:08:27 +08:00 |
|
roymondchen
|
413134b21d
|
feat(editor): 优化依赖收集状态显示,新增剩余任务数量显示
|
2025-02-11 19:25:28 +08:00 |
|
roymondchen
|
6d82c0f730
|
fix(editor): 组件配置列大小缓存不生效
|
2025-02-11 17:25:58 +08:00 |
|
roymondchen
|
877a4eaa49
|
feat(editor): 优化浏览器变小时各列大小变化
|
2025-02-10 19:59:11 +08:00 |
|
roymondchen
|
51ca1e60af
|
fix(editor): 编辑器组件销毁后重置依赖收集
|
2025-01-20 19:55:14 +08:00 |
|
roymondchen
|
040b787e8f
|
feat(editor): 优化依赖收集,数据源代码块分开收集
|
2025-01-14 16:27:04 +08:00 |
|
roymondchen
|
895c461e2b
|
refactor(editor): 优化依赖收集,优先收集数据源依赖
|
2025-01-10 19:31:41 +08:00 |
|
roymondchen
|
552df3a614
|
refactor(editor): service中state改完使用shallowReactive
|
2025-01-09 20:43:54 +08:00 |
|
roymondchen
|
833dbcd8b4
|
fix(editor): select配置项无法清空
|
2025-01-03 17:28:57 +08:00 |
|
roymondchen
|
5cd6d21b2e
|
feat(editor): 组件配置中的样式支持单独一列显示
|
2024-12-17 20:47:33 +08:00 |
|
roymondchen
|
b4136c91c2
|
feat(editor): 优化依赖收集体验,减小收集任务粒度,修改配置时识别是否需要触发重新收集
|
2024-12-09 20:21:34 +08:00 |
|
roymondchen
|
7cd1bc7aec
|
chore: 更新依赖
|
2024-12-09 20:21:34 +08:00 |
|
roymondchen
|
d33ddcfa65
|
fix(editor): 更新组件配置后,如果当前没有任何依赖,不会触发收集,导致画布不更新
|
2024-12-09 20:21:34 +08:00 |
|
roymondchen
|
ed6d9b2b67
|
feat(editor): 页面/页面片不再使用tab分开显示,新增搜索页面
|
2024-12-09 20:21:34 +08:00 |
|
roymondchen
|
fc38fc3957
|
fix(editor): 修复修改页面配置后可能改造页面卡死问题
|
2024-12-09 20:21:34 +08:00 |
|