UNPKG

@godaddy/react

Version:

The `createCheckoutSession` function creates a new checkout session with GoDaddy's commerce API.

63 lines (60 loc) 2.33 kB
import { o as useCheckoutContext, p as useSquare, rt as useGoDaddyContext } from "./checkout-B7yB0DfE.js"; import "./utils-DWBfAHfx.js"; import { useEffect, useState } from "react"; import { jsx } from "react/jsx-runtime"; //#region src/components/checkout/payment/utils/use-load-square.ts let isSquareLoaded = false; let isSquareCDNLoaded = false; const listeners = /* @__PURE__ */ new Set(); function useLoadSquare() { const { squareConfig } = useCheckoutContext(); const { apiHost } = useGoDaddyContext(); const [loaded, setLoaded] = useState(isSquareLoaded); const squareCDN = apiHost && !apiHost.includes("test") && !apiHost.includes("dev") ? "https://web.squarecdn.com/v1/square.js" : "https://sandbox.web.squarecdn.com/v1/square.js"; useEffect(() => { const updateLoaded = (newLoaded) => setLoaded(newLoaded); listeners.add(updateLoaded); if (isSquareLoaded) setLoaded(true); return () => { listeners.delete(updateLoaded); }; }, []); useEffect(() => { if (isSquareLoaded || isSquareCDNLoaded || !squareConfig || !squareCDN) return; isSquareCDNLoaded = true; const script = document.createElement("script"); script.src = squareCDN; script.async = true; script.onload = () => { isSquareLoaded = true; listeners.forEach((listener) => listener(true)); }; document.body.appendChild(script); }, [squareConfig, squareCDN]); return { isSquareLoaded: loaded }; } //#endregion //#region src/components/checkout/payment/payment-methods/credit-card/square.tsx function SquareCreditCardForm() { const { setCard } = useSquare(); const { squareConfig } = useCheckoutContext(); const { isSquareLoaded: isSquareLoaded$1 } = useLoadSquare(); useEffect(() => { if (!isSquareLoaded$1 || !squareConfig || !window?.Square) return; initializePaymentForm(); }, [isSquareLoaded$1, squareConfig]); const initializePaymentForm = async () => { try { if (!squareConfig) return; const cardInstance = await (window?.Square?.payments(squareConfig.appId, squareConfig.locationId)).card({ style: { input: { fontSize: "14px" } } }); await cardInstance.attach("#square-card-container"); setCard(cardInstance); } catch (_error) {} }; return /* @__PURE__ */ jsx("div", { id: "square-card-container", className: "square-card-input" }); } //#endregion export { SquareCreditCardForm };