Viewing File: /home/markqprx/iniasli.pro/ssr/assets/checkout-routes-11d490bd.mjs.map
{"version":3,"file":"checkout-routes-11d490bd.mjs","sources":["../../../common/resources/client/auth/guards/not-subscribed-route.tsx","../../../common/resources/client/billing/checkout/checkout-layout.tsx","../../../common/resources/client/billing/requests/use-checkout-product.ts","../../../common/resources/client/billing/checkout/checkout-product-summary.tsx","../../../common/resources/client/billing/checkout/paypal/use-paypal.ts","../../../common/resources/client/billing/checkout/checkout.tsx","../../../common/resources/client/billing/checkout/stripe/checkout-stripe-done.tsx","../../../common/resources/client/billing/checkout/paypal/checkout-paypal-done.tsx","../../../common/resources/client/billing/checkout/checkout-routes.tsx"],"sourcesContent":["import {useAuth} from '../use-auth';\nimport {ReactElement} from 'react';\nimport {Navigate, Outlet} from 'react-router-dom';\n\ninterface GuestRouteProps {\n children: ReactElement;\n}\nexport function NotSubscribedRoute({children}: GuestRouteProps) {\n const {isLoggedIn, isSubscribed} = useAuth();\n\n if (!isLoggedIn) {\n return <Navigate to=\"/register\" replace />;\n }\n\n if (isLoggedIn && isSubscribed) {\n return <Navigate to=\"/billing\" replace />;\n }\n\n return children || <Outlet />;\n}\n","import {Fragment, ReactElement, useEffect} from 'react';\nimport {Navbar} from '../../ui/navigation/navbar/navbar';\nimport {CustomMenu} from '../../menus/custom-menu';\nimport {LocaleSwitcher} from '../../i18n/locale-switcher';\nimport {removeFromLocalStorage} from '../../utils/hooks/local-storage';\nimport {StaticPageTitle} from '../../seo/static-page-title';\nimport {Trans} from '../../i18n/trans';\n\ninterface CheckoutLayoutProps {\n children: [ReactElement, ReactElement];\n}\nexport function CheckoutLayout({children}: CheckoutLayoutProps) {\n const [left, right] = children;\n\n useEffect(() => {\n removeFromLocalStorage('be.onboarding.selected');\n }, []);\n\n return (\n <Fragment>\n <StaticPageTitle>\n <Trans message=\"Checkout\" />\n </StaticPageTitle>\n <Navbar\n size=\"sm\"\n color=\"transparent\"\n className=\"z-10 mb-20 md:mb-0\"\n textColor=\"text-main\"\n logoColor=\"dark\"\n darkModeColor=\"transparent\"\n menuPosition=\"checkout-page-navbar\"\n />\n <div className=\"md:flex w-full mx-auto justify-between px-20 md:px-0 md:pt-128 md:max-w-950\">\n <div className=\"hidden md:block fixed right-0 top-0 w-1/2 h-full bg-alt shadow-[15px_0_30px_0_rgb(0_0_0_/_18%)]\" />\n <div className=\"md:w-400 overflow-hidden\">\n {left}\n <CustomMenu\n menu=\"checkout-page-footer\"\n className=\"text-xs mt-50 text-muted overflow-x-auto\"\n />\n <div className=\"mt-40\">\n <LocaleSwitcher />\n </div>\n </div>\n <div className=\"hidden md:block w-384\">\n <div className=\"relative z-10\">{right}</div>\n </div>\n </div>\n </Fragment>\n );\n}\n","import {keepPreviousData, useQuery} from '@tanstack/react-query';\nimport {apiClient} from '../../http/query-client';\nimport {BackendResponse} from '../../http/backend-response/backend-response';\nimport {Product} from '../product';\nimport {useParams} from 'react-router-dom';\n\nconst endpoint = (productId: string | number) =>\n `billing/products/${productId}`;\n\nexport interface FetchProductResponse extends BackendResponse {\n product: Product;\n}\n\nexport function useCheckoutProduct() {\n const {productId, priceId} = useParams();\n const query = useQuery({\n queryKey: [endpoint(productId!)],\n queryFn: () => fetchProduct(productId!),\n placeholderData: keepPreviousData,\n enabled: productId != null && priceId != null,\n });\n\n const product = query.data?.product;\n const price =\n product?.prices.find(p => p.id === parseInt(priceId!)) ||\n product?.prices[0];\n\n return {status: query.status, product, price};\n}\n\nfunction fetchProduct(\n productId: string | number,\n): Promise<FetchProductResponse> {\n return apiClient.get(endpoint(productId)).then(response => response.data);\n}\n","import {Trans} from '../../i18n/trans';\nimport {FormattedPrice} from '../../i18n/formatted-price';\nimport {useCheckoutProduct} from '../requests/use-checkout-product';\nimport {m} from 'framer-motion';\nimport {Skeleton} from '../../ui/skeleton/skeleton';\nimport {Product} from '../product';\nimport {Price} from '../price';\nimport {FormattedCurrency} from '../../i18n/formatted-currency';\nimport {ProductFeatureList} from '../pricing-table/product-feature-list';\nimport {opacityAnimation} from '../../ui/animation/opacity-animation';\n\ninterface CheckoutProductSummaryProps {\n showBillingLine?: boolean;\n}\nexport function CheckoutProductSummary({\n showBillingLine = true,\n}: CheckoutProductSummaryProps) {\n const {status, product, price} = useCheckoutProduct();\n\n if (status === 'error' || (status !== 'pending' && (!product || !price))) {\n return null;\n }\n\n return (\n <div>\n <h2 className=\"text-2xl mb-30\">\n <Trans message=\"Summary\" />\n </h2>\n {status === 'pending' ? (\n <LoadingSkeleton key=\"loading-skeleton\" />\n ) : (\n <ProductSummary\n product={product!}\n price={price!}\n showBillingLine={showBillingLine}\n />\n )}\n </div>\n );\n}\n\ninterface ProductSummaryProps {\n product: Product;\n price: Price;\n showBillingLine: boolean;\n}\nfunction ProductSummary({\n product,\n price,\n showBillingLine,\n}: ProductSummaryProps) {\n return (\n <m.div>\n <div className=\"text-xl font-semibold mb-6\">{product.name}</div>\n {product.description && (\n <div className=\"text-sm text-muted\">{product.description}</div>\n )}\n <FormattedPrice\n priceClassName=\"font-bold text-4xl\"\n periodClassName=\"text-muted text-xs\"\n variant=\"separateLine\"\n price={price}\n className=\"mt-32\"\n />\n <ProductFeatureList product={product} />\n {showBillingLine && (\n <div className=\"flex items-center justify-between gap-24 border-t pt-24 mt-32 font-medium\">\n <div>\n <Trans message=\"Billed today\" />\n </div>\n <div>\n <FormattedCurrency value={price.amount} currency={price.currency} />\n </div>\n </div>\n )}\n </m.div>\n );\n}\n\nfunction LoadingSkeleton() {\n return (\n <m.div {...opacityAnimation} className=\"max-w-180\">\n <Skeleton className=\"text-xl mb-6\" />\n <Skeleton className=\"text-sm\" />\n <Skeleton className=\"text-4xl mt-32\" />\n </m.div>\n );\n}\n","import {useEffect, useRef, useState} from 'react';\nimport {loadScript} from '@paypal/paypal-js';\nimport {useProducts} from '@common/billing/pricing-table/use-products';\nimport {useSettings} from '@common/core/settings/use-settings';\n\ninterface UsePaypalProps {\n productId?: string;\n priceId?: string;\n}\nexport function usePaypal({productId, priceId}: UsePaypalProps) {\n const {data} = useProducts();\n const paypalLoadStarted = useRef<boolean>(false);\n const paypalButtonsRendered = useRef<boolean>(false);\n const [paypalIsLoaded, setPaypalIsLoaded] = useState(false);\n const paypalElementRef = useRef<HTMLDivElement>(null);\n const {\n base_url,\n billing: {\n stripe: {enable: stripeEnabled},\n paypal: {enable: paypalEnabled, public_key},\n },\n } = useSettings();\n\n useEffect(() => {\n if (!paypalEnabled || !public_key || paypalLoadStarted.current) return;\n loadScript({\n clientId: public_key,\n intent: 'subscription',\n vault: true,\n disableFunding: stripeEnabled ? 'card' : undefined,\n }).then(() => {\n setPaypalIsLoaded(true);\n });\n paypalLoadStarted.current = true;\n }, [public_key, paypalEnabled, stripeEnabled]);\n\n useEffect(() => {\n if (\n !paypalIsLoaded ||\n !window.paypal?.Buttons ||\n !paypalElementRef.current ||\n !data?.products.length ||\n !productId ||\n !priceId ||\n paypalButtonsRendered.current\n )\n return;\n\n const product = data.products.find(p => p.id === parseInt(productId));\n const price = product?.prices.find(p => p.id === parseInt(priceId));\n\n window.paypal\n .Buttons({\n style: {\n label: 'pay',\n },\n createSubscription: (data, actions) => {\n return actions.subscription.create({\n application_context: {\n shipping_preference: 'NO_SHIPPING',\n },\n plan_id: price?.paypal_id!,\n });\n },\n onApprove: (data, actions) => {\n actions.redirect(\n `${base_url}/checkout/${productId}/${priceId}/paypal/done?subscriptionId=${data.subscriptionID}&status=success`\n );\n return Promise.resolve();\n },\n onError: e => {\n location.href = `${base_url}/checkout/${productId}/${priceId}/paypal/done?status=error`;\n },\n })\n .render(paypalElementRef.current)\n .then(() => {\n paypalButtonsRendered.current = true;\n });\n }, [productId, priceId, data, paypalIsLoaded, base_url]);\n\n return {\n paypalElementRef,\n stripeIsEnabled: public_key != null && paypalEnabled,\n };\n}\n","import {Navigate, useParams} from 'react-router-dom';\nimport {Trans} from '../../i18n/trans';\nimport {CheckoutLayout} from './checkout-layout';\nimport {CheckoutProductSummary} from './checkout-product-summary';\nimport {usePaypal} from './paypal/use-paypal';\nimport {StripeElementsForm} from './stripe/stripe-elements-form';\nimport {Fragment} from 'react';\nimport {useProducts} from '../pricing-table/use-products';\nimport {FullPageLoader} from '../../ui/progress/full-page-loader';\nimport {useSettings} from '../../core/settings/use-settings';\n\nexport function Checkout() {\n const {productId, priceId} = useParams();\n const productQuery = useProducts();\n const {paypalElementRef} = usePaypal({\n productId,\n priceId,\n });\n const {\n base_url,\n billing: {stripe},\n } = useSettings();\n\n if (productQuery.isLoading) {\n return <FullPageLoader screen />;\n }\n\n const product = productQuery.data?.products.find(\n p => p.id === parseInt(productId!)\n );\n const price = product?.prices.find(p => p.id === parseInt(priceId!));\n\n // make sure product and price exists in backend\n if (!product || !price || productQuery.status === 'error') {\n return <Navigate to=\"/pricing\" replace />;\n }\n\n return (\n <CheckoutLayout>\n <Fragment>\n <h1 className=\"mb-40 text-4xl\">\n <Trans message=\"Checkout\" />\n </h1>\n {stripe.enable ? (\n <Fragment>\n <StripeElementsForm\n productId={productId}\n priceId={priceId}\n submitLabel={<Trans message=\"Upgrade\" />}\n type=\"subscription\"\n returnUrl={`${base_url}/checkout/${productId}/${priceId}/stripe/done`}\n />\n <Separator />\n </Fragment>\n ) : null}\n <div ref={paypalElementRef} />\n <div className=\"mt-30 text-xs text-muted\">\n <Trans message=\"You’ll be charged until you cancel your subscription. Previous charges won’t be refunded when you cancel unless it’s legally required. Your payment data is encrypted and secure. By subscribing your agree to our terms of service and privacy policy.\" />\n </div>\n </Fragment>\n <CheckoutProductSummary />\n </CheckoutLayout>\n );\n}\n\nfunction Separator() {\n return (\n <div className=\"relative my-20 text-center before:absolute before:left-0 before:top-1/2 before:h-1 before:w-full before:-translate-y-1/2 before:bg-divider\">\n <span className=\"relative z-10 bg px-10 text-sm text-muted\">\n <Trans message=\"or\" />\n </span>\n </div>\n );\n}\n","import {CheckoutLayout} from '../checkout-layout';\nimport {useParams, useSearchParams} from 'react-router-dom';\nimport {loadStripe, PaymentIntent} from '@stripe/stripe-js';\nimport {useEffect, useRef, useState} from 'react';\nimport {message} from '../../../i18n/message';\nimport {CheckoutProductSummary} from '../checkout-product-summary';\nimport {\n BillingRedirectMessage,\n BillingRedirectMessageConfig,\n} from '../../billing-redirect-message';\nimport {useNavigate} from '../../../utils/hooks/use-navigate';\nimport {apiClient} from '../../../http/query-client';\nimport {useSettings} from '../../../core/settings/use-settings';\nimport {useBootstrapData} from '../../../core/bootstrap-data/bootstrap-data-context';\n\nexport function CheckoutStripeDone() {\n const {invalidateBootstrapData} = useBootstrapData();\n const {productId, priceId} = useParams();\n const navigate = useNavigate();\n const {\n billing: {stripe_public_key},\n } = useSettings();\n\n const [params] = useSearchParams();\n const clientSecret = params.get('payment_intent_client_secret');\n\n const [messageConfig, setMessageConfig] =\n useState<BillingRedirectMessageConfig>();\n\n const stripeInitiated = useRef<boolean>();\n\n useEffect(() => {\n if (stripeInitiated.current) return;\n loadStripe(stripe_public_key!).then(async stripe => {\n if (!stripe || !clientSecret) {\n setMessageConfig(getRedirectMessageConfig());\n return;\n }\n stripe.retrievePaymentIntent(clientSecret).then(({paymentIntent}) => {\n if (paymentIntent?.status === 'succeeded') {\n storeSubscriptionDetailsLocally(paymentIntent.id).then(() => {\n invalidateBootstrapData();\n });\n }\n setMessageConfig(\n getRedirectMessageConfig(paymentIntent?.status, productId, priceId)\n );\n });\n });\n stripeInitiated.current = true;\n }, [\n stripe_public_key,\n clientSecret,\n priceId,\n productId,\n invalidateBootstrapData,\n ]);\n\n if (!clientSecret) {\n navigate('/');\n return null;\n }\n\n return (\n <CheckoutLayout>\n <BillingRedirectMessage config={messageConfig} />\n <CheckoutProductSummary showBillingLine={false} />\n </CheckoutLayout>\n );\n}\n\nfunction getRedirectMessageConfig(\n status?: PaymentIntent.Status,\n productId?: string,\n priceId?: string\n): BillingRedirectMessageConfig {\n switch (status) {\n case 'succeeded':\n return {\n message: message('Subscription successful!'),\n status: 'success',\n buttonLabel: message('Return to site'),\n link: '/billing',\n };\n case 'processing':\n return {\n message: message(\n \"Payment processing. We'll update you when payment is received.\"\n ),\n status: 'success',\n buttonLabel: message('Return to site'),\n link: '/billing',\n };\n case 'requires_payment_method':\n return {\n message: message('Payment failed. Please try another payment method.'),\n status: 'error',\n buttonLabel: message('Go back'),\n link: errorLink(productId, priceId),\n };\n default:\n return {\n message: message('Something went wrong'),\n status: 'error',\n buttonLabel: message('Go back'),\n link: errorLink(productId, priceId),\n };\n }\n}\n\nfunction errorLink(productId?: string, priceId?: string): string {\n return productId && priceId ? `/buy/${productId}/${priceId}` : '/';\n}\n\nfunction storeSubscriptionDetailsLocally(paymentIntentId: string) {\n return apiClient.post('billing/stripe/store-subscription-details-locally', {\n payment_intent_id: paymentIntentId,\n });\n}\n","import {CheckoutLayout} from '../checkout-layout';\nimport {useParams, useSearchParams} from 'react-router-dom';\nimport {useEffect, useState} from 'react';\nimport {message} from '@common/i18n/message';\nimport {CheckoutProductSummary} from '../checkout-product-summary';\nimport {\n BillingRedirectMessage,\n BillingRedirectMessageConfig,\n} from '../../billing-redirect-message';\nimport {apiClient} from '@common/http/query-client';\nimport {useBootstrapData} from '@common/core/bootstrap-data/bootstrap-data-context';\n\nexport function CheckoutPaypalDone() {\n const {invalidateBootstrapData} = useBootstrapData();\n const {productId, priceId} = useParams();\n const [params] = useSearchParams();\n\n const [messageConfig, setMessageConfig] =\n useState<BillingRedirectMessageConfig>();\n\n useEffect(() => {\n const subscriptionId = params.get('subscriptionId');\n const status = params.get('status');\n setMessageConfig(getRedirectMessageConfig(status, productId, priceId));\n if (subscriptionId && status === 'success') {\n storeSubscriptionDetailsLocally(subscriptionId).then(() => {\n invalidateBootstrapData();\n });\n }\n }, [priceId, productId, params, invalidateBootstrapData]);\n\n return (\n <CheckoutLayout>\n <BillingRedirectMessage config={messageConfig} />\n <CheckoutProductSummary showBillingLine={false} />\n </CheckoutLayout>\n );\n}\n\nfunction getRedirectMessageConfig(\n status?: 'success' | 'error' | string | null,\n productId?: string,\n priceId?: string\n): BillingRedirectMessageConfig {\n switch (status) {\n case 'success':\n return {\n message: message('Subscription successful!'),\n status: 'success',\n buttonLabel: message('Return to site'),\n link: '/billing',\n };\n default:\n return {\n message: message('Something went wrong. Please try again.'),\n status: 'error',\n buttonLabel: message('Go back'),\n link: errorLink(productId, priceId),\n };\n }\n}\n\nfunction errorLink(productId?: string, priceId?: string): string {\n return productId && priceId ? `/buy/${productId}/${priceId}` : '/';\n}\n\nfunction storeSubscriptionDetailsLocally(subscriptionId: string) {\n return apiClient.post('billing/paypal/store-subscription-details-locally', {\n paypal_subscription_id: subscriptionId,\n });\n}\n","import {Route, Routes} from 'react-router-dom';\nimport {NotSubscribedRoute} from '../../auth/guards/not-subscribed-route';\nimport {Checkout} from './checkout';\nimport React from 'react';\nimport {CheckoutStripeDone} from './stripe/checkout-stripe-done';\nimport {CheckoutPaypalDone} from './paypal/checkout-paypal-done';\n\nexport default function CheckoutRoutes() {\n return (\n <Routes>\n <Route\n path=\":productId/:priceId\"\n element={\n <NotSubscribedRoute>\n <Checkout />\n </NotSubscribedRoute>\n }\n />\n <Route\n path=\":productId/:priceId/stripe/done\"\n element={\n <NotSubscribedRoute>\n <CheckoutStripeDone />\n </NotSubscribedRoute>\n }\n />\n <Route\n path=\":productId/:priceId/paypal/done\"\n element={\n <NotSubscribedRoute>\n <CheckoutPaypalDone />\n </NotSubscribedRoute>\n }\n />\n </Routes>\n );\n}\n"],"names":["data","getRedirectMessageConfig","storeSubscriptionDetailsLocally","errorLink"],"mappings":"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"}
Back to Directory
File Manager