@hy-bricks/canvas 0.6.0 → 0.6.2
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.
- package/CHANGELOG.md +31 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# @hy-bricks/canvas
|
|
2
2
|
|
|
3
|
+
## [0.6.2] - 2026-06-23 · 隐藏实例保活(修隐藏→恢复丢状态)
|
|
4
|
+
|
|
5
|
+
非破坏 patch。@hy-bricks 4 包同步升 0.6.2。
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **隐藏(`hidden`)实例再恢复显示时不再丢组件内部状态**:root 实例 `hidden=true`(`v-show` → `display:none`)会被 RenderScheduler 的 IntersectionObserver 判为"离开视口",超 `disposeDelayMs`(默认 1500ms)就 dispose 卸 vm → 恢复时重挂全新组件、用户选值 / 查询条件 / 取数结果复位(常见症状:恢复后取数裸跑、缺参报错)。修:`hidden` 的 root 实例自动 `RenderScheduler.setHeld` 保活,豁免视口外 dispose,恢复无缝(同一个 vm)。容器子走 Teleport 不经 scheduler,本就不受影响。
|
|
9
|
+
- **Teleport outlet `isConnected` 守卫**:父实例卸载瞬间 outlet DOM 已脱离文档但 ref 残留,`resolveOutlet` 加 `isConnected` 判断 → detached 返 null,不往已移除节点投(消除父卸载瞬间子 Teleport 竞态)。
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **`RenderScheduler.setHeld(id, held)`**:标记实例保活,豁免视口外 dispose(供渲染器实现 hidden 保活)。
|
|
13
|
+
- **`HyperCardPageRenderer` 新 prop `keepHiddenMounted`**(`boolean`,默认 `true`):隐藏实例保活开关;传 `false` 退回老行为(隐藏可被 dispose,省内存但恢复丢状态)。
|
|
14
|
+
- spec:`createRenderScheduler.spec.ts` +4(setHeld);canvas test → 1717。
|
|
15
|
+
|
|
16
|
+
> 已知小尾(记 `docs/feedback/portal-ui/`,后续增强):保活后隐藏实例的数据绑定 / 订阅仍在跑(给不可见组件推更新);要"隐藏暂停取数"需配套"显示时 invalidate 补数",否则恢复显旧值。
|
|
17
|
+
|
|
18
|
+
## [0.6.1] - 2026-06-16 · free-split 编辑控件可见性
|
|
19
|
+
|
|
20
|
+
free-split 容器编辑控件(分隔条 + 叶 affordance)的显示时机修复 + 常驻开关。非破坏,@hy-bricks 4 包同步升 0.6.1。
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- **选中容器内子组件时,父容器控件不再消失**:`InteractionLayer` 的 divider / leaf overlay 可见集从"仅选中容器自身"改为 ancestor-aware —— 选中实例自身是 free-split 容器、或其**最近 free-split 祖先**、或正在内容拖拽的容器,都渲控件。修"选容器看到分隔条 → 再点容器内子组件调参 → 分隔条秒消失、没法拖"。
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- **`freeSplitControlsAlways`**(`createCanvasContext` option / `<HyperCardCanvasDesigner>` prop,`boolean | (() => boolean)`,默认 `false`):
|
|
27
|
+
- `false`(默认,向后兼容)→ 控件按选区显示(上面的 ancestor-aware 口径);
|
|
28
|
+
- `true` → 编辑态下**所有** free-split 容器的控件常驻显示,不用选 / 不用悬停。
|
|
29
|
+
- getter 形式 → 跟 prop / ref 实时联动(开关即时翻转,无需重挂)。给不给用户开关是**宿主策略**(SDK 只出可反应的 prop;参考实现见 portal toolbar「常驻控件」开关)。
|
|
30
|
+
- spec `freeSplit-p3b-interaction-layer.spec.ts` 新增 ancestor-aware + 常驻开关用例(canvas test → 1713)。
|
|
31
|
+
|
|
32
|
+
> 已知小尾(留作后续增强):常驻模式下满内容叶的角落工具条仍 `:hover` 才显(分隔条已常显),详见 `docs/feedback/portal-ui/`。
|
|
33
|
+
|
|
3
34
|
## [0.6.0] - 2026-06-15 · 公开面收口 + 坑点修复 + 性能 + 级联删除
|
|
4
35
|
|
|
5
36
|
deliberate API 收口的 minor。从 `@hy-bricks/canvas` 公开面删掉 test-only / 内部符号,并合入本轮审计发现的 free-split / 命令栈 / 数据绑定运行时坑点修复 + 渲染/交互性能 + 重复实现收口。@hy-bricks 4 包同步升 0.6.0。
|