35 lines
789 B
JavaScript
35 lines
789 B
JavaScript
import { shallowRef } from "vue";
|
|
let clientRef;
|
|
const fns = [];
|
|
export function onDevtoolsHostClientConnected(fn) {
|
|
fns.push(fn);
|
|
if (typeof window === "undefined")
|
|
return;
|
|
if (window.__NUXT_DEVTOOLS_HOST__) {
|
|
fns.forEach((fn2) => fn2(window.__NUXT_DEVTOOLS_HOST__));
|
|
}
|
|
Object.defineProperty(window, "__NUXT_DEVTOOLS_HOST__", {
|
|
set(value) {
|
|
if (value)
|
|
fns.forEach((fn2) => fn2(value));
|
|
},
|
|
get() {
|
|
return clientRef.value;
|
|
},
|
|
configurable: true
|
|
});
|
|
return () => {
|
|
fns.splice(fns.indexOf(fn), 1);
|
|
};
|
|
}
|
|
export function useDevtoolsHostClient() {
|
|
if (!clientRef) {
|
|
clientRef = shallowRef();
|
|
onDevtoolsHostClientConnected(setup);
|
|
}
|
|
function setup(client) {
|
|
clientRef.value = client;
|
|
}
|
|
return clientRef;
|
|
}
|