UNPKG

autumn-js

Version:

Autumn JS Library

118 lines (116 loc) 3.06 kB
"use client"; import { jsx, jsxs } from "react/jsx-runtime"; import { AutumnContext } from "./AutumnContext"; import { useEffect, useState } from "react"; import { useCustomer } from "./hooks/useCustomer"; const useDialog = (component) => { const [dialogFound, setDialogFound] = useState(false); const [dialogProps, setDialogProps] = useState(null); const [dialogOpen, setDialogOpen] = useState(false); useEffect(() => { if (!dialogOpen) { setTimeout(() => { setDialogProps(null); }, 200); } }, [dialogOpen]); const loadDialog = async () => { if (component) { setDialogFound(true); } else { setDialogFound(false); } }; useEffect(() => { loadDialog(); }, []); return [dialogFound, dialogProps, setDialogProps, dialogOpen, setDialogOpen]; }; const AutumnClientProvider = ({ children, encryptedCustomerId, customerData }) => { let [customer, setCustomer] = useState(null); useCustomer({ encryptedCustomerId, customerData, errorOnNotFound: false }); let [pricingTableProducts, setPricingTableProducts] = useState(null); const [components, setComponents] = useState({}); const [entity, setEntity] = useState(null); const [ prodChangeDialogFound, prodChangeDialogProps, setProdChangeDialogProps, prodChangeDialogOpen, setProdChangeDialogOpen ] = useDialog(components?.productChangeDialog); const [ paywallFound, paywallProps, setPaywallProps, paywallOpen, setPaywallOpen ] = useDialog(components?.paywallDialog); return /* @__PURE__ */ jsxs( AutumnContext.Provider, { value: { encryptedCustomerId, customerData, customer, setCustomer, prodChangeDialog: { found: prodChangeDialogFound, setProps: setProdChangeDialogProps, setOpen: setProdChangeDialogOpen, setComponent: (component) => { setComponents({ ...components, productChangeDialog: component }); } }, paywallDialog: { found: paywallFound, setProps: setPaywallProps, setOpen: setPaywallOpen, setComponent: (component) => { setComponents({ ...components, paywallDialog: component }); } }, pricingTableProducts, setPricingTableProducts, entity, setEntity }, children: [ components?.productChangeDialog && /* @__PURE__ */ jsx( components.productChangeDialog, { open: prodChangeDialogOpen, setOpen: setProdChangeDialogOpen, ...prodChangeDialogProps } ), components?.paywallDialog && /* @__PURE__ */ jsx( components.paywallDialog, { open: paywallOpen, setOpen: setPaywallOpen, ...paywallProps } ), children ] } ); }; export { AutumnClientProvider };