{"version":3,"file":"loading-tasks.mjs","names":[],"sources":["../../src/utils/loading-tasks.ts"],"sourcesContent":["/** 组件内部异步任务的 Loading 所有权集合，不作为公共包入口导出。 */\nexport function createLoadingTasks(notify: (loading: boolean, text?: string) => void): {\n\tbegin: (text?: string) => () => void;\n\tdispose: () => void;\n} {\n\tconst tasks = new Map<symbol, string | undefined>();\n\tlet disposed = false;\n\tconst update = (): void => {\n\t\tlet text: string | undefined;\n\t\t// 显示最后启动且尚未结束的任务文案。\n\t\tfor (const value of tasks.values()) text = value;\n\t\tnotify(tasks.size > 0, text);\n\t};\n\treturn {\n\t\tbegin(text) {\n\t\t\tif (disposed) return () => undefined;\n\t\t\tconst owner = Symbol();\n\t\t\ttasks.set(owner, text);\n\t\t\tupdate();\n\t\t\treturn () => {\n\t\t\t\t// 旧任务、重复 done 和卸载后的回调均不能移除其他任务。\n\t\t\t\tif (!disposed && tasks.delete(owner)) update();\n\t\t\t};\n\t\t},\n\t\tdispose() {\n\t\t\tif (disposed) return;\n\t\t\tdisposed = true;\n\t\t\ttasks.clear();\n\t\t\tnotify(false);\n\t\t},\n\t};\n}\n"],"mappings":";;AACA,SAAgB,mBAAmB,QAGjC;CACD,MAAM,wBAAQ,IAAI,IAAgC;CAClD,IAAI,WAAW;CACf,MAAM,eAAqB;EAC1B,IAAI;EAEJ,KAAK,MAAM,SAAS,MAAM,OAAO,GAAG,OAAO;EAC3C,OAAO,MAAM,OAAO,GAAG,IAAI;CAC5B;CACA,OAAO;EACN,MAAM,MAAM;GACX,IAAI,UAAU,aAAa,KAAA;GAC3B,MAAM,QAAQ,OAAO;GACrB,MAAM,IAAI,OAAO,IAAI;GACrB,OAAO;GACP,aAAa;IAEZ,IAAI,CAAC,YAAY,MAAM,OAAO,KAAK,GAAG,OAAO;GAC9C;EACD;EACA,UAAU;GACT,IAAI,UAAU;GACd,WAAW;GACX,MAAM,MAAM;GACZ,OAAO,KAAK;EACb;CACD;AACD"}