@forbespro/lead-agent-hook
Version:
Lead Chat Agent Hook React Provider
46 lines (43 loc) • 1.44 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import { createContext, useState, useCallback, useContext } from 'react';
const LeadAgentContext = createContext(void 0);
LeadAgentContext.displayName = "LeadAgentContext";
const LeadAgentProvider = function LeadAgentProvider2({
children,
defaultOpen = false
}) {
const [isOpen, setIsOpen] = useState(defaultOpen);
const [productState, setProductState] = useState({
sku: null,
open: false
});
const openProduct = useCallback((sku) => {
setProductState({ sku, open: true });
setIsOpen(true);
}, []);
const closeProduct = useCallback(() => {
setProductState((prev) => ({ ...prev, open: false }));
}, []);
const openChat = useCallback(() => setIsOpen(true), []);
const closeChat = useCallback(() => setIsOpen(false), []);
const toggleChat = useCallback(() => setIsOpen(!isOpen), [isOpen]);
return /* @__PURE__ */ jsx(LeadAgentContext.Provider, { value: {
isOpen,
openChat,
closeChat,
toggleChat,
product: productState,
openProduct,
closeProduct
}, children });
};
LeadAgentProvider.displayName = "LeadAgentProvider";
function useLeadAgent() {
const context = useContext(LeadAgentContext);
if (context === void 0) {
throw new Error("useLeadAgent must be used within a LeadAgentProvider");
}
return context;
}
export { LeadAgentContext, LeadAgentProvider, useLeadAgent };
//# sourceMappingURL=use-lead-agent.js.map