@lifi/widget
Version:
LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.
36 lines • 1.43 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useContext, useRef } from 'react';
import { useShallow } from 'zustand/shallow';
import { createWithEqualityFn } from 'zustand/traditional';
export const SplitSubvariantStoreContext = createContext(null);
const shouldRecreateStore = (store, props) => {
const { state } = store.getState();
return state !== props.state;
};
export function SplitSubvariantStoreProvider({ children, ...props }) {
const storeRef = useRef(null);
if (!storeRef.current || shouldRecreateStore(storeRef.current, props)) {
storeRef.current = createSplitSubvariantStore(props);
}
return (_jsx(SplitSubvariantStoreContext.Provider, { value: storeRef.current, children: children }));
}
export function useSplitSubvariantStoreContext() {
const useStore = useContext(SplitSubvariantStoreContext);
if (!useStore) {
throw new Error(`You forgot to wrap your component in <${SplitSubvariantStoreProvider.name}>.`);
}
return useStore;
}
export function useSplitSubvariantStore(selector) {
const useStore = useSplitSubvariantStoreContext();
return useStore(useShallow(selector));
}
export const createSplitSubvariantStore = ({ state }) => createWithEqualityFn((set) => ({
state,
setState(state) {
set(() => ({
state,
}));
},
}), Object.is);
//# sourceMappingURL=useSplitSubvariantStore.js.map