2026-01-02 07:25:50 +08:00
|
|
|
/**
|
|
|
|
|
* 侧边栏与编辑区之间的轻量事件总线
|
|
|
|
|
*/
|
|
|
|
|
export const ASSETS_CHANGED_EVENT = "wolai:assets-changed";
|
|
|
|
|
export const DOCUMENTS_CHANGED_EVENT = "wolai:documents-changed";
|
2026-02-01 08:47:40 +08:00
|
|
|
export const ASSETS_RESTORED_EVENT = "wolai:assets-restored";
|
2026-01-02 07:25:50 +08:00
|
|
|
|
|
|
|
|
type AssetsChangedPayload = {
|
|
|
|
|
docId?: string;
|
|
|
|
|
asset?: unknown;
|
|
|
|
|
assetIds?: string[];
|
|
|
|
|
mindmapDeleted?: boolean;
|
2026-01-08 06:28:14 +08:00
|
|
|
mindmapAssetIds?: string[];
|
2026-01-02 07:25:50 +08:00
|
|
|
};
|
|
|
|
|
|
2026-02-01 08:47:40 +08:00
|
|
|
type AssetsRestoredPayload =
|
|
|
|
|
| { docId: string; kind: "media"; assetId: string; asset?: unknown }
|
|
|
|
|
| { docId: string; kind: "mindmap"; mindmapId: string }
|
|
|
|
|
| { docId: string; kind: "table"; tableId: string };
|
|
|
|
|
|
2026-01-08 06:28:14 +08:00
|
|
|
export function emitAssetsChanged(
|
|
|
|
|
docId?: string,
|
|
|
|
|
asset?: unknown,
|
|
|
|
|
assetIds?: string[],
|
|
|
|
|
mindmapDeleted?: boolean,
|
|
|
|
|
mindmapAssetIds?: string[],
|
|
|
|
|
) {
|
2026-01-02 07:25:50 +08:00
|
|
|
if (typeof window === "undefined") return;
|
2026-01-08 06:28:14 +08:00
|
|
|
const detail: AssetsChangedPayload = { docId, asset, assetIds, mindmapDeleted, mindmapAssetIds };
|
2026-01-02 07:25:50 +08:00
|
|
|
window.dispatchEvent(new CustomEvent(ASSETS_CHANGED_EVENT, { detail }));
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-01 08:47:40 +08:00
|
|
|
export function emitAssetsRestored(payload: AssetsRestoredPayload) {
|
|
|
|
|
if (typeof window === "undefined") return;
|
|
|
|
|
window.dispatchEvent(new CustomEvent(ASSETS_RESTORED_EVENT, { detail: payload }));
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-02 07:25:50 +08:00
|
|
|
export function emitDocumentsChanged(docId?: string) {
|
|
|
|
|
if (typeof window === "undefined") return;
|
|
|
|
|
window.dispatchEvent(new CustomEvent(DOCUMENTS_CHANGED_EVENT, { detail: { docId } }));
|
|
|
|
|
}
|