@sazito/checkout 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +43 -0
  2. package/dist/chunks/{labels-3zH04p3y.cjs → labels-CnPllzhT.cjs} +15 -2
  3. package/dist/chunks/labels-CnPllzhT.cjs.map +1 -0
  4. package/dist/chunks/{labels-BdxqgReM.js → labels-e8w4zRbg.js} +15 -2
  5. package/dist/chunks/labels-e8w4zRbg.js.map +1 -0
  6. package/dist/chunks/{use-checkout-Bh4tXxFJ.js → use-checkout-BM810__v.js} +5 -3
  7. package/dist/chunks/use-checkout-BM810__v.js.map +1 -0
  8. package/dist/chunks/{use-checkout-DGP2xazd.cjs → use-checkout-DPtLgxlA.cjs} +5 -3
  9. package/dist/chunks/use-checkout-DPtLgxlA.cjs.map +1 -0
  10. package/dist/core/index.cjs +4 -1
  11. package/dist/core/index.cjs.map +1 -1
  12. package/dist/core/index.d.cts +33 -3
  13. package/dist/core/index.d.ts +33 -3
  14. package/dist/core/index.js +2 -1
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/next/index.cjs +26 -7
  17. package/dist/next/index.cjs.map +1 -1
  18. package/dist/next/index.d.cts +24 -3
  19. package/dist/next/index.d.ts +24 -3
  20. package/dist/next/index.js +27 -8
  21. package/dist/next/index.js.map +1 -1
  22. package/dist/next/payment-return.cjs +80 -0
  23. package/dist/next/payment-return.cjs.map +1 -0
  24. package/dist/next/payment-return.d.cts +32 -0
  25. package/dist/next/payment-return.d.ts +32 -0
  26. package/dist/next/payment-return.js +77 -0
  27. package/dist/next/payment-return.js.map +1 -0
  28. package/dist/react/index.cjs +2 -2
  29. package/dist/react/index.d.cts +9 -1
  30. package/dist/react/index.d.ts +9 -1
  31. package/dist/react/index.js +2 -2
  32. package/package.json +15 -1
  33. package/dist/chunks/labels-3zH04p3y.cjs.map +0 -1
  34. package/dist/chunks/labels-BdxqgReM.js.map +0 -1
  35. package/dist/chunks/use-checkout-Bh4tXxFJ.js.map +0 -1
  36. package/dist/chunks/use-checkout-DGP2xazd.cjs.map +0 -1
@@ -3,8 +3,9 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var useCheckout = require('../chunks/use-checkout-DGP2xazd.cjs');
7
- var labels = require('../chunks/labels-3zH04p3y.cjs');
6
+ var useCheckout = require('../chunks/use-checkout-DPtLgxlA.cjs');
7
+ var labels = require('../chunks/labels-CnPllzhT.cjs');
8
+ var next_paymentReturn = require('./payment-return.cjs');
8
9
  require('@sazito/client-sdk');
9
10
 
10
11
  /**
@@ -848,17 +849,35 @@ function SazitoCheckout({ theme, continueShoppingUrl, className, renderNextButto
848
849
  return (jsxRuntime.jsxs("div", { className: `szc-root${className ? ` ${className}` : ''}`, dir: direction, style: themeVars(theme), children: [mobileHead, jsxRuntime.jsx(Stepper, {}), bootstrapping ? (jsxRuntime.jsx(CheckoutLoading, { label: t.loading })) : fatal ? (jsxRuntime.jsx(ErrorBanner, { message: error.message })) : isResult ? (jsxRuntime.jsx("div", { className: "szc-result-wrap", children: jsxRuntime.jsx(ResultStep, { continueShoppingUrl: continueShoppingUrl }) })) : (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { className: `szc-layout${cartEmpty ? ' szc-layout--full' : ''}`, children: [jsxRuntime.jsxs("main", { className: "szc-main", children: [error && !emptyCartError ? jsxRuntime.jsx(ErrorBanner, { message: error.message }) : null, step === 'cart' ? (jsxRuntime.jsx(CartStep, { continueShoppingUrl: continueShoppingUrl, emptyCart: emptyCart, renderEmpty: renderEmptyCart })) : null, step === 'shipping' ? jsxRuntime.jsx(ShippingStep, {}) : null, step === 'payment' ? jsxRuntime.jsx(PaymentStep, {}) : null, actionsVisible && backButtonNode ? (jsxRuntime.jsx("div", { className: "szc-back-row", children: backButtonNode })) : null] }), !cartEmpty ? (jsxRuntime.jsxs("div", { className: "szc-side", children: [jsxRuntime.jsx(OrderSummary, {}), actionsVisible ? jsxRuntime.jsx("div", { className: "szc-side__cta", children: nextButtonNode }) : null] })) : null] }) })), actionsVisible ? (jsxRuntime.jsx("div", { className: "szc-footer-bar", children: jsxRuntime.jsxs("div", { className: "szc-footer", children: [jsxRuntime.jsxs("div", { className: "szc-footer__total", children: [jsxRuntime.jsx("span", { className: "szc-footer__total-label", children: t.total }), jsxRuntime.jsx("span", { className: "szc-footer__total-value", children: money(summary.total) })] }), jsxRuntime.jsx("div", { className: "szc-footer__actions", children: nextButtonNode })] }) })) : null] }));
849
850
  }
850
851
 
851
- function SazitoCheckoutPage({ credentials, config, paymentReturnParams, className, renderNextButton, renderBackButton, renderEmptyCart, emptyCart, }) {
852
- const isReturn = paymentReturnParams != null;
852
+ function SazitoCheckoutPage({ credentials, config, paymentReturn, paymentReturnParams, className, renderNextButton, renderBackButton, renderEmptyCart, emptyCart, }) {
853
+ // The explicit server-parsed value remains authoritative. As a fallback,
854
+ // detect Sazito's well-known nested callback in the browser. This prevents a
855
+ // caught callback route from silently booting a fresh checkout when the host
856
+ // forgot to forward its catch-all params.
857
+ const detectedPaymentReturn = paymentReturn == null &&
858
+ paymentReturnParams == null &&
859
+ typeof window !== 'undefined'
860
+ ? next_paymentReturn.parsePaymentReturnUrl(window.location.href)
861
+ : undefined;
862
+ const resolvedPaymentReturn = paymentReturn ?? detectedPaymentReturn;
863
+ const returnParams = resolvedPaymentReturn?.params ?? paymentReturnParams;
864
+ const isReturn = returnParams != null;
865
+ const checkoutCredentials = resolvedPaymentReturn
866
+ ? { ...credentials, payment: resolvedPaymentReturn.payment }
867
+ : credentials;
853
868
  const client = useCheckout.useSazitoClient();
854
- return (jsxRuntime.jsxs(useCheckout.CheckoutProvider, { client: client, credentials: credentials, config: config, autoStart: !isReturn, children: [isReturn ? jsxRuntime.jsx(ResolveReturn, { params: paymentReturnParams }) : null, jsxRuntime.jsx(SazitoCheckout, { theme: config?.theme, continueShoppingUrl: config?.continueShoppingUrl, className: className, renderNextButton: renderNextButton, renderBackButton: renderBackButton, renderEmptyCart: renderEmptyCart, emptyCart: emptyCart })] }));
869
+ return (jsxRuntime.jsxs(useCheckout.CheckoutProvider, { client: client, credentials: checkoutCredentials, config: config, autoStart: !isReturn, children: [returnParams ? jsxRuntime.jsx(ResolveReturn, { params: returnParams }) : null, jsxRuntime.jsx(SazitoCheckout, { theme: config?.theme, continueShoppingUrl: config?.continueShoppingUrl, className: className, renderNextButton: renderNextButton, renderBackButton: renderBackButton, renderEmptyCart: renderEmptyCart, emptyCart: emptyCart })] }));
855
870
  }
856
871
  function ResolveReturn({ params }) {
857
872
  const { actions } = useCheckout.useCheckout();
873
+ const resolvedKey = react.useRef(null);
874
+ const paramsKey = JSON.stringify(Object.entries(params).sort(([a], [b]) => a.localeCompare(b)));
858
875
  react.useEffect(() => {
876
+ if (resolvedKey.current === paramsKey)
877
+ return;
878
+ resolvedKey.current = paramsKey;
859
879
  void actions.resolvePaymentReturn(params);
860
- // eslint-disable-next-line react-hooks/exhaustive-deps
861
- }, []);
880
+ }, [actions, params, paramsKey]);
862
881
  return null;
863
882
  }
864
883