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