2025-05-28 15:36:51 -07:00

48 lines
1.6 KiB
JavaScript

import React from 'react';
var defaultContext = /*#__PURE__*/React.createContext(undefined);
var QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one
// instance of the context across the window
// to ensure that if React Query is used across
// different bundles or microfrontends they will
// all use the same **instance** of context, regardless
// of module scoping.
function getQueryClientContext(contextSharing) {
if (contextSharing && typeof window !== 'undefined') {
if (!window.ReactQueryClientContext) {
window.ReactQueryClientContext = defaultContext;
}
return window.ReactQueryClientContext;
}
return defaultContext;
}
export var useQueryClient = function useQueryClient() {
var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));
if (!queryClient) {
throw new Error('No QueryClient set, use QueryClientProvider to set one');
}
return queryClient;
};
export var QueryClientProvider = function QueryClientProvider(_ref) {
var client = _ref.client,
_ref$contextSharing = _ref.contextSharing,
contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,
children = _ref.children;
React.useEffect(function () {
client.mount();
return function () {
client.unmount();
};
}, [client]);
var Context = getQueryClientContext(contextSharing);
return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {
value: contextSharing
}, /*#__PURE__*/React.createElement(Context.Provider, {
value: client
}, children));
};