@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.36 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useContext, useRef } from 'react';
import { create } from 'zustand';
import { useShallow } from 'zustand/shallow';
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 }));
}
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));
}
const createSplitSubvariantStore = ({ state }) => create((set) => ({
state,
setState(state) {
set(() => ({
state,
}));
},
}));
//# sourceMappingURL=useSplitSubvariantStore.js.map