需要“点击按钮 → 编辑图形 → 回到原页面”的流程时,使用 openTextDiagramDialog。它创建独立 Vue 根并按需加载工作台,包含自己的 Provider;宿主仍需安装工作台样式。
示例初始为 PlantUML 时序图,保存后显示 PNG,再次打开会读取已接受的新版本。取消不改变原对象;离开页面后这个演示内存会话结束。
主题与生命周期
传入实际的 ownerDocument、locale 和宿主 theme;主题不写入文档,预览保留引擎或源码定义的样式。示例根据页面的 CSS color-scheme 生成主题,真实应用可以直接传入自己的 QuireKitTheme。
返回值是立即可用的 TextDiagramDialogHandle。即使懒加载还没完成,也可以调用 close();重复关闭是安全的。提供 signal 可以在宿主卸载时统一关闭。
弹窗在保存成功、取消、外部关闭或加载失败时调用 request.release()。不要把 release 当成保存通知:它也会在取消时执行。保存结果以 commit 返回 saved 为准。
焦点和提交
源码区的 Esc 先处理查找或退出编辑焦点;需要移出源码区时先按 Esc 再按 Tab。弹窗关闭后焦点回到触发位置。提交返回 conflict、readonly、missing 时,工作台显示原因并保留当前草稿。
commit 是同步的本地接受合同,不能返回 Promise。需要服务器持久化的应用,应先定义本地事务与同步策略;不要提前返回 saved 却没有接受对象。详见持久化合同和弹窗 API。