45 lines
1017 B
JavaScript
45 lines
1017 B
JavaScript
import { shallowRef, triggerRef } from "vue";
|
|
let clientRef;
|
|
const hasSetup = false;
|
|
const fns = [];
|
|
export function onDevtoolsClientConnected(fn) {
|
|
fns.push(fn);
|
|
if (hasSetup)
|
|
return;
|
|
if (typeof window === "undefined")
|
|
return;
|
|
if (window.__NUXT_DEVTOOLS__) {
|
|
fns.forEach((fn2) => fn2(window.__NUXT_DEVTOOLS__));
|
|
}
|
|
Object.defineProperty(window, "__NUXT_DEVTOOLS__", {
|
|
set(value) {
|
|
if (value)
|
|
fns.forEach((fn2) => fn2(value));
|
|
},
|
|
get() {
|
|
return clientRef.value;
|
|
},
|
|
configurable: true
|
|
});
|
|
return () => {
|
|
fns.splice(fns.indexOf(fn), 1);
|
|
};
|
|
}
|
|
export function useDevtoolsClient() {
|
|
if (!clientRef) {
|
|
clientRef = shallowRef();
|
|
onDevtoolsClientConnected(setup);
|
|
}
|
|
function onUpdateReactivity() {
|
|
if (clientRef) {
|
|
triggerRef(clientRef);
|
|
}
|
|
}
|
|
function setup(client) {
|
|
clientRef.value = client;
|
|
if (client.host)
|
|
client.host.hooks.hook("host:update:reactivity", onUpdateReactivity);
|
|
}
|
|
return clientRef;
|
|
}
|