@tanstack/devtools
Version:
TanStack Devtools is a set of tools for building advanced devtools for your application.
76 lines (73 loc) • 2.01 kB
JavaScript
export { PLUGIN_CONTAINER_ID, PLUGIN_TITLE_CONTAINER_ID } from './chunk/A767CXXU.js';
import { initialState } from './chunk/HURJB5JH.js';
// src/core.ts
var TanStackDevtoolsCore = class {
#config = {
...initialState.settings
};
#plugins = [];
#state = "unmounted";
#mountAbortController;
#dispose;
#eventBus;
#eventBusConfig;
#setPlugins;
constructor(init) {
this.#plugins = init.plugins || [];
this.#eventBusConfig = init.eventBusConfig;
this.#config = {
...this.#config,
...init.config
};
}
mount(el) {
if (typeof document === "undefined") return;
if (this.#state === "mounted" || this.#state === "mounting") {
throw new Error("Devtools is already mounted");
}
this.#state = "mounting";
const { signal } = this.#mountAbortController = new AbortController();
import('./mount-impl/6XBUJYBS.js').then(({ mountDevtools }) => {
if (signal.aborted) {
return;
}
const result = mountDevtools({
el,
plugins: this.#plugins,
config: this.#config,
eventBusConfig: this.#eventBusConfig,
onSetPlugins: (setPlugins) => {
this.#setPlugins = setPlugins;
}
});
this.#dispose = result.dispose;
this.#eventBus = result.eventBus;
this.#state = "mounted";
}).catch((err) => {
this.#state = "unmounted";
console.error("[TanStack Devtools] Failed to load:", err);
});
}
unmount() {
if (this.#state === "unmounted") {
throw new Error("Devtools is not mounted");
}
this.#mountAbortController?.abort();
this.#eventBus?.stop();
this.#dispose?.();
this.#state = "unmounted";
}
setConfig(config) {
this.#config = {
...this.#config,
...config
};
if (config.plugins) {
this.#plugins = config.plugins;
if (this.#state === "mounted" && this.#setPlugins) {
this.#setPlugins(config.plugins);
}
}
}
};
export { TanStackDevtoolsCore };