import { Ref } from "vue"; import { Destroyable } from "xbsj-xe2/dist-node/xe2-base-utils"; import { destroyVueRef } from "./toVueRef"; export class VueRefDisposer extends Destroyable { disposeVueRef(vueRef: Ref) { this.dispose(() => destroyVueRef(vueRef)); return vueRef; } dvr(vueRef: Ref) { return this.disposeVueRef(vueRef); } } export function createVueDisposer(disposeFunc: (df: () => void) => void) { const disposer = new VueRefDisposer(); disposeFunc(() => disposer.destroy()); return disposer; }