roymondchen
|
0c1d103cd0
|
fix(runtime): 修复 useDsl 换页后更新失效与重复替换
- 事件处理改为读取最新页面配置(ref),换页后不再更新到旧页面
- react 版事件监听移入 useEffect 并依赖 app,避免监听泄漏
- 按节点对象去重并批量 replaceChildNodes,同一次批量更新的多份相同节点只替换一次
- 忽略非当前页面的 update-data
|
2026-10-30 16:49:34 +08:00 |
|
roymondchen
|
35ed2cc0d0
|
perf(data-source): 迭代器容器数据上下文改为惰性深拷贝
createIteratorContentData 原先整体深拷贝数据源数据,迭代项很多时为 O(N^2)。
改为沿 fields 路径逐层构造新对象,路径之外的对象型字段在首次读取时才拷贝并缓存,
既避免修改原始数据,也保证引用变化可被渲染层感知
|
2026-10-30 16:49:02 +08:00 |
|
roymondchen
|
6f2ffc3ca1
|
fix(data-source): 依赖缓存按节点对象引用判断失效
此前缓存键由节点 id 拼接而成,节点被替换(如修改绑定字段)后 id 不变仍命中旧缓存,
导致新依赖未被收集。改为以首节点为 WeakMap key 并比较节点对象引用,
节点替换后重新收集依赖,节点回收后缓存自动释放
|
2026-10-30 16:48:30 +08:00 |
|
roymondchen
|
dfad691493
|
feat(data-source): 支持批量更新数据源
新增 dataSourceManager.batch(fn, options),fn 中的多次 setData 在结束后
统一更新一次页面:受影响节点只编译、替换一次,并按数据源分别触发 update-data。
- mergeChangeEvents 默认 false,每次变化各触发一次 update-data 并携带自己的
changeEvent,不丢失中间变化;传 true 则每个数据源只触发一次
- 支持嵌套,仅支持同步函数;isBatching 暴露当前是否处于批量更新中
- 页面/页面片节点的替换改为批量 replaceChildNodes,避免每个节点全树搜索
- 数据源字段变更事件在 batch 内仍按每次 setData 触发
|
2026-10-30 16:47:56 +08:00 |
|
roymondchen
|
522a0068f5
|
fix(core): 节点销毁时移除其事件监听
迭代容器等场景会反复重建节点,此前 destroy 只清理事件队列,
事件监听仍留在 EventHelper 上导致泄漏。新增 removeNodeEventsOf,
在 Node.destroy 时按节点移除已绑定的监听
|
2026-10-30 16:47:23 +08:00 |
|
roymondchen
|
2f8a504163
|
perf(utils): 优化节点查找与批量替换
- getNodes 改用 Map 统计待查 id,命中后提前结束遍历,避免每个节点都做一次数组查找
- 新增 replaceChildNodes,一次遍历定位所有目标节点后批量替换(O(K*N) -> O(N+K)),
并按层级由浅到深替换,避免父节点覆盖子节点更新
- compiledNode 读取依赖 keys 时兼容节点依赖缺失
|
2026-10-30 16:46:35 +08:00 |
|
manmanyu
|
ccfc8c0733
|
feat(editor): 新增从组件面板点击/拖动添加组件前的处理函数配置
|
2026-10-30 08:28:44 +00:00 |
|
roymondchen
|
c4cf3b9525
|
fix(dep): 修复共用节点 id 的多个根节点收集依赖时互相清除
多个根节点(如复制出的页面片)共用节点 id 时,逐节点“删除旧依赖 + 收集”会让后一棵树的删除清掉前一棵树刚写入的依赖。改为先统一删除所有节点的旧依赖,再统一收集。
|
2026-10-27 20:52:23 +08:00 |
|
roymondchen
|
d01bc45b17
|
feat(form): 支持 table/group-list 行操作自定义按钮
新增 actionButtons 配置,渲染在内置按钮之后,支持 text/props/icon/display/disabled/handler,
回调可获得当前行数据、列表下标、整体数据等上下文。
|
2026-10-27 20:12:23 +08:00 |
|
roymondchen
|
7e8cb1f9db
|
feat(editor): 支持配置画布 iframe 的 sandbox 属性
新增 iframeSandbox 配置,透传链路为 EditorProps -> StageOptions ->
StageCore -> StageRender,在 createIframe 中设置 src 之前写入 sandbox
属性。默认不设置该属性,保持存量行为不变。
- stage: StageRenderConfig / StageCoreConfig 新增 iframeSandbox 类型
- editor: EditorProps / StageOptions 新增 iframeSandbox 并透传
- docs: 补充 iframeSandbox 说明与 srcdoc、同源限制的注意事项
- test: 覆盖未配置 / false / 空字符串 / 多 token 与 StageCore 透传
|
2026-10-27 16:12:45 +08:00 |
|
roymondchen
|
d017f43573
|
fix(stage): iframe 未就绪时跳过注入 magic,避免 contentWindow 为空报错
|
2026-10-19 17:08:02 +08:00 |
|
roymondchen
|
cbd0442ffc
|
feat(form): 支持 table/group-list 行操作按钮文案与 props 配置
通过 ActionButtonConfig 统一 delete/copy/move/operate 等按钮的 text 与 props,并补充对应单测。
|
2026-10-19 17:08:02 +08:00 |
|
roymondchen
|
8ac1a38601
|
fix(editor): 优化导航更多菜单宽度与溢出分割线
不传 popoverWidth 时按内容撑开,并将溢出项中的分割线改为横向且去掉首尾无意义分割线。
|
2026-10-19 17:08:02 +08:00 |
|
roymondchen
|
7f0e78bf6a
|
chore: 升级根目录与 catalog 依赖版本
|
2026-10-19 16:42:31 +08:00 |
|
roymondchen
|
c6deac8524
|
chore: release v1.8.3
v1.8.3
|
2026-10-13 19:24:00 +08:00 |
|
roymondchen
|
f12f78c9e0
|
fix(form): 日期/时间字段支持 valueFormat 为 X 的秒级时间戳
- 日期类字段 change 时经 normalizeTimestampValue 把选择器输出收成秒级 number,避免 Element Plus 写出秒字符串导致校验失败
- Date/DateTime/Time/Daterange/Timerange 回填 model 时,valueFormat 为 X 直接使用秒级数字,不再拼接展示格式
- typeMatch 对 X 格式要求有限整数,示例值与报错文案区分秒级/毫秒级
- datetimeFormatter 支持 X 格式输出秒级数字
- 补充相应单元测试,并更新 docs/form-config/rules.md 中的校验规则说明
|
2026-10-13 17:11:02 +08:00 |
|
roymondchen
|
94fae10ae0
|
feat(editor): 新增 SDK 层并将核心服务迁移至 sdk 目录
- 新增 packages/editor/src/sdk,通过 sdk.ts 对外导出
- 将 services 下的核心服务迁移至 sdk/services
- 工具函数拆分至 sdk/utils,校验逻辑迁移至 sdk/validate,新增 sdk/wiring
- services/sdk-instance.ts 负责在编辑器中实例化 SDK
- 补充 SDK 相关单元测试,新增 docs/api/editor/sdk.md 文档
|
2026-10-08 19:58:03 +08:00 |
|
roymondchen
|
d9b096c91c
|
chore: release v1.8.2
v1.8.2
|
2026-09-23 16:38:14 +08:00 |
|
roymondchen
|
a100462a52
|
feat(editor): enablePropsFormValidate 改为响应式注入并接管 typeMatchValid / validateOnInit
ENABLE_PROPS_FORM_VALIDATE 原先 provide 的是布尔快照,父组件动态切换
enablePropsFormValidate 后子孙组件拿不到新值。改为与 isLargeStageContainer
一致用 computed 注入,注入键类型变为 InjectionKey<ComputedRef<boolean>>,
PropsPanel / FormPanel 侧统一按 .value 读取。
同时 FormPanel 内 MForm 的 type-match-valid / validate-on-init 由硬编码
true 改为跟随 enablePropsFormValidate,未开启时不再做 typeMatch 校验与
初始化校验。
|
2026-09-23 16:34:08 +08:00 |
|
roymondchen
|
80197be543
|
chore: release v1.8.1
v1.8.1
|
2026-09-23 12:53:08 +08:00 |
|
roymondchen
|
0b89e7e32e
|
fix(stage): 页面不可见时不调用 scrollIntoView
- 新增 isElementVisible / isDocumentVisible,判断页面、画布容器与浏览器 tab 是否可见
- scrollIntoView 在页面不可见时直接返回,避免记录错误的滚动偏移
- 页面不可见时保留 IntersectionObserver 监听,恢复可见后由回调自行决定是否滚动
|
2026-09-23 12:47:03 +08:00 |
|
roymondchen
|
a577d7cee3
|
feat(editor): 数据源字段路径支持数组下标,并细化 field-select 与展示条件的类型校验
|
2026-09-23 11:43:36 +08:00 |
|
roymondchen
|
86fcd5d593
|
chore: release v1.8.0
v1.8.0
|
2026-09-21 16:26:48 +08:00 |
|
roymondchen
|
6b9791a309
|
fix(form): typeMatch 按内容比较对象选项值,避免 Proxy 误判
|
2026-09-21 16:23:57 +08:00 |
|
roymondchen
|
ecff8ceb76
|
chore: release v1.8.0-beta.29
v1.8.0-beta.29
|
2026-09-20 17:16:20 +08:00 |
|
roymondchen
|
77e9f86efb
|
chore: 升级依赖并适配 Vitest 5
|
2026-09-20 17:12:09 +08:00 |
|
roymondchen
|
489a1143b7
|
fix(form): resolve function options and type for typeMatch validation
Add formValues alias to filter callbacks.
Prevent unhandled rejections during sync validation with async configs.
|
2026-09-20 16:50:55 +08:00 |
|
roymondchen
|
be33ef2bd0
|
fix(cli): 进程内解析模块,避免把 specifier 拼进 shell
|
2026-09-20 16:44:37 +08:00 |
|
roymondchen
|
39ef49db7d
|
fix(tmagic-form): 合并宿主 $MAGIC_FORM 与 formOptions,避免二次安装清空 request
|
2026-09-14 21:19:52 +08:00 |
|
roymondchen
|
5a3edacb96
|
fix(editor): 画布 drop 仅还原内部拖拽数据,避免外部源触发 parseDSL 执行
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-09-14 15:22:02 +08:00 |
|
roymondchen
|
911cecfb1d
|
chore: release v1.8.0-beta.28
v1.8.0-beta.28
|
2026-09-09 11:25:18 +08:00 |
|
roymondchen
|
2a4a54a495
|
feat(form): group-list 标题吸顶改为按 header.sticky 显式开启
默认关闭避免长列表误吸顶,嵌套层按外层真实标题/吸底按钮高度让位;属性面板列表通过 stickyAddButton 保持原表现。
|
2026-09-09 11:19:54 +08:00 |
|
roymondchen
|
7e4546899b
|
test(editor): 补充历史回滚单测并精简确认弹窗文案
|
2026-09-09 11:17:22 +08:00 |
|
roymondchen
|
66b54a52f8
|
fix(editor): 丢弃过期 root 快照,避免画布回退与 modelValue 回写死循环
|
2026-09-07 19:02:59 +08:00 |
|
roymondchen
|
7edb01d330
|
chore: update lockfile v1.8.0-beta.27
v1.8.0-beta.27
|
2026-09-04 11:56:13 +08:00 |
|
roymondchen
|
5fa9b37856
|
chore: release v1.8.0-beta.27
|
2026-09-04 11:34:03 +08:00 |
|
roymondchen
|
d1cb8c3853
|
fix(form): 避免 Select init 请求失败或路径缺失时抛出未处理异常
|
2026-09-04 11:27:06 +08:00 |
|
roymondchen
|
092bc2914d
|
feat(data-source): 新增数据源 mounted 生命周期
页面渲染完成后由 runtime 触发 mounted 事件,统一管理数据源 mounted 及 timing=mounted 的方法执行;支持异步注册数据源在 init 后补充 mounted。
|
2026-09-03 20:27:18 +08:00 |
|
roymondchen
|
959c0322b6
|
fix(editor): 修复 eventsService resetState 响应式失效并在编辑器重置时清空
resetState 改为原地清空 reactive 对象以保留代理身份,避免 computed 不更新。
编辑器 reset 时同步调用 eventsService.resetState,并补充文档与单测。
|
2026-09-03 20:02:03 +08:00 |
|
roymondchen
|
b0d43dc277
|
fix(editor,form): 合并宿主 FORM_CONTEXT 并修复 formState mForm 自引用
编辑器不再遮蔽外层 provide 的业务上下文。
formState Proxy 支持 Vue2 时代 vm.mForm 跨字段通信,
并修复 context 自引用导致的栈溢出。
Select 对 valueKey 路径使用可选链。
|
2026-09-02 16:44:01 +08:00 |
|
roymondchen
|
ad2f4e15cc
|
docs: 修正类型定义引用路径并为 editor 类型添加 region 标记
|
2026-09-01 20:01:04 +08:00 |
|
roymondchen
|
f163112eab
|
chore: update lockfile v1.8.0-beta.25
v1.8.0-beta.26
|
2026-09-01 19:46:20 +08:00 |
|
roymondchen
|
260582f141
|
chore: release v1.8.0-beta.26
|
2026-09-01 19:35:44 +08:00 |
|
roymondchen
|
392f9ae7f0
|
ci: 落地 85% 行覆盖率硬门禁并校正 AGENTS.md
|
2026-09-01 15:44:20 +08:00 |
|
roymondchen
|
08b610a4f2
|
fix(editor): 避免 defaultSelected 早于 root 就绪时 select 抛出未处理错误
|
2026-09-01 15:30:25 +08:00 |
|
roymondchen
|
58f2a943b8
|
fix(editor): inject eventBus 时提供 null 默认值
避免未处于 Editor 子树时 Vue 报 injection "eventBus" not found。
|
2026-09-01 15:11:59 +08:00 |
|
roymondchen
|
90e4bec70b
|
fix(form): 避免 Tooltip 无合法触发器时报 ElOnlyChild
对比模式删除按钮与表格未就绪时,ElTooltip 默认插槽会变成 Comment,触发 Element Plus 警告。
|
2026-09-01 15:09:59 +08:00 |
|
roymondchen
|
a7999f50d5
|
feat(form): 用 FormContext 与 provide/inject 替代 extendState 钩子
统一表单业务上下文的注入方式,通过读穿 Proxy 保持 mForm 回调签名不变,并移除 extendFormState/extendState 等分散的扩展钩子。
|
2026-09-01 14:48:42 +08:00 |
|
roymondchen
|
f2ee7ae7b5
|
feat(form): 统一字段值 effect 机制并将 nested 重命名为 innerConfig
将字段挂载时的 model 写入迁移至 registerField effect,
渲染与无渲染校验共用 applyMountValueEffects;
nested 重命名为 innerConfig 以区分配置派生与值写入。
|
2026-09-01 12:05:28 +08:00 |
|
roymondchen
|
02eeb2e87f
|
feat(editor): 统一列表字段添加按钮样式并支持新增后自动滚动
CodeSelect、EventSelect、DisplayConds 使用吸底全宽添加按钮;
group-list 新增后滚到最后一项,避开吸顶标题与吸底按钮。
|
2026-09-01 12:02:09 +08:00 |
|