{"version":3,"file":"blocks-commons.js","mappings":"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","sources":["webpack://wcPPCP/./packages/blocks/assets/js/hooks/use-load-paypal-script.js","webpack://wcPPCP/./packages/blocks/assets/js/hooks/use-process-payment-failure.js","webpack://wcPPCP/./packages/blocks/assets/js/hooks/use-breakpoint-width.js","webpack://wcPPCP/./packages/blocks/assets/js/paylater-messaging/index.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://wcPPCP/./packages/blocks/assets/js/payment-methods/paypal/simple-paypal.js","webpack://wcPPCP/./packages/blocks/assets/js/payment-methods/paypal/hooks/use-paypal-options.js","webpack://wcPPCP/./packages/blocks/assets/js/payment-methods/paypal/hooks/use-process-payment.js","webpack://wcPPCP/./packages/blocks/assets/js/payment-methods/paypal/index.js","webpack://wcPPCP/./packages/blocks/assets/js/payment-methods/paypal/hooks/use-validate-checkout.js","webpack://wcPPCP/./packages/blocks/assets/js/payment-methods/paypal/hooks/use-paypal-funding-sources.js","webpack://wcPPCP/./packages/blocks/assets/js/utils.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://wcPPCP/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["import {useEffect, useState} from \"@wordpress/element\";\nimport {loadPayPalSdk} from \"@ppcp/utils\";\n\n/*\n'client-id': this.getClientId(),\n'components': this.settings?.components,\n'currency': this.getOption('currency'),\n'intent': this.getOption('intent'),\n'vault': this.getOption('vault')\n */\n\n/**\n *\n * @param params - client-id, components, currency, intent, vault\n * @returns {*}\n */\nexport const useLoadPayPalScript = (params) => {\n    const [paypal, setPayPal] = useState(null);\n\n    useEffect(() => {\n        if (!paypal) {\n            loadPayPalSdk(params).then(paypal => setPayPal(paypal));\n        }\n    }, [paypal]);\n\n    return paypal;\n}","import {useEffect} from '@wordpress/element';\n\nexport const useProcessPaymentFailure = ({event, responseTypes, messageContext = null, setPaymentData}) => {\n    useEffect(() => {\n        const unsubscribe = event((data) => {\n            if (data?.processingResponse?.paymentDetails?.ppcpErrorMessage) {\n                setPaymentData(null);\n                const message = data.processingResponse.paymentDetails.ppcpErrorMessage;\n                return {\n                    type: responseTypes.ERROR,\n                    message,\n                    messageContext\n                }\n            }\n            return null;\n        });\n        return () => unsubscribe();\n    }, [event]);\n}\n\nexport default useProcessPaymentFailure;","import {useState, useEffect, useRef} from '@wordpress/element';\n\nexport const useBreakpointWidth = ({width, node, className = 'wc-ppcp-sm__container'}) => {\n    const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n    const [element, setElement] = useState(node);\n    useEffect(() => {\n        setElement(node);\n    }, [node]);\n\n    useEffect(() => {\n        const handleResize = () => setWindowWidth(window.innerWidth);\n        window.addEventListener('resize', handleResize);\n        return () => window.removeEventListener('resize', handleResize);\n    }, []);\n\n    useEffect(() => {\n        if (element) {\n            if (element.clientWidth <= width) {\n                element.classList.add(className);\n            } else {\n                element.classList.remove(className);\n            }\n        }\n    }, [windowWidth, width, element]);\n}","import {useEffect, useRef, useMemo} from '@wordpress/element';\nimport {ExperimentalOrderMeta, TotalsWrapper} from '@woocommerce/blocks-checkout';\nimport {registerPlugin} from '@wordpress/plugins';\nimport {getSetting} from '@woocommerce/settings';\nimport {useLoadPayPalScript} from \"../hooks\";\n\nconst data = getSetting('paylaterParams');\n\nconst PayLaterMessaging = ({cart, extensions, context}) => {\n    const isEnabled = data.enabled;\n    const el = useRef(null);\n    const {cartTotals} = cart;\n    const {currency_code: currency, total_price} = cartTotals;\n    const paypal = useLoadPayPalScript(getSetting('paypalQueryParams'));\n\n    const options = useMemo(() => {\n        return {\n            amount: total_price / (10 ** cartTotals.currency_minor_unit),\n            currency,\n            placement: 'payment',\n            ...data.options\n        }\n    });\n\n    useEffect(() => {\n        if (paypal) {\n            paypal.Messages(options).render(el.current);\n        }\n    }, [paypal, options]);\n    if (isEnabled) {\n        return (\n            <TotalsWrapper>\n                <div className='wc-block-components-totals-item'>\n                    <div ref={el} className='wc-ppcp-paylater-msg__container'/>\n                </div>\n            </TotalsWrapper>\n        )\n    }\n    return null;\n}\n\nconst render = () => {\n    return (\n        <ExperimentalOrderMeta>\n            <PayLaterMessaging/>\n        </ExperimentalOrderMeta>\n    )\n}\n\nregisterPlugin('wc-ppcp', {render, scope: 'woocommerce-checkout'});\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}","const SimplePayPal = (props) => {\n    return (\n        <PayPalRedirectNotice {...props}/>\n    )\n}\n\nconst PayPalRedirectNotice = (\n    {\n        data\n    }) => {\n    return (\n        <div className=\"wc-ppcp-popup__container\">\n            <img src={data('redirectIcon')}/>\n            <p dangerouslySetInnerHTML={{__html: data('i18n').redirectText}}/>\n        </div>\n    )\n}\n\nexport default SimplePayPal;","import {useEffect, useCallback, useRef} from '@wordpress/element';\nimport {__} from '@wordpress/i18n';\nimport apiFetch from '@wordpress/api-fetch';\nimport {convertPayPalAddressToCart, extractShippingMethod} from \"@ppcp/utils\";\nimport {\n    extractShippingRateParams,\n    getRestPath,\n} from '../../../utils';\n\nexport const usePayPalOptions = (\n    {\n        isExpress,\n        paypal,\n        vault,\n        buttonStyles,\n        shippingData,\n        billing,\n        setError,\n        setPaymentData,\n        onClick,\n        onClose\n    }) => {\n    const currentShippingData = useRef(shippingData);\n    const currentBilling = useRef(billing);\n    const currentData = useRef({onClick, onClose, buttonState: true, actions: {}});\n    useEffect(() => {\n        currentShippingData.current = shippingData;\n        currentBilling.current = billing;\n        currentData.current = {...currentData.current, onClick, onClose};\n    });\n\n    const disableButtons = useCallback(() => {\n        Object.keys(currentData.current.actions).forEach(key => {\n            currentData.current.actions[key].disable();\n            currentData.current.buttonState = false;\n        });\n    }, []);\n\n    const getOptions = useCallback(fundingSource => {\n        const {needsShipping, shippingAddress} = currentShippingData.current;\n        const billingAddress = billing.billingData;\n        const options = {\n            fundingSource: fundingSource,\n            style: getButtonStyle(fundingSource),\n            onApprove,\n            onError\n        };\n        if (isExpress) {\n            options.onClick = () => currentData.current.onClick();\n            options.onCancel = () => currentData.current.onClose()\n        } else {\n            options.onClick = () => {\n                setError(null);\n                // if address is not valid, show a notification that address data must be filled out first\n                if (!isExpress && !currentData.current.buttonState) {\n                    if (needsShipping) {\n                        setError(__('Please fill out all billing and shipping fields before clicking PayPal.', 'pymntpl-paypal-woocommerce'));\n                    } else {\n                        setError(__('Please fill out all billing fields before clicking PayPal.', 'pymntpl-paypal-woocommerce'));\n                    }\n                }\n            }\n        }\n        options.onInit = (data, actions) => {\n            if (!isExpress) {\n                currentData.current.actions[fundingSource] = actions;\n            }\n        }\n        if (isCheckoutFlow()) {\n            options.createOrder = createOrder;\n            if (isExpress && needsShipping && fundingSource !== 'venmo') {\n                options.onShippingChange = onShippingChange;\n            }\n        } else {\n            options.createBillingAgreement = createBillingAgreement;\n        }\n\n        return options;\n    }, [\n        paypal,\n        isExpress,\n        onApprove,\n        onError,\n        createOrder,\n        createBillingAgreement,\n        onShippingChange,\n        setError\n    ]);\n\n    const getButtonStyle = useCallback(fundingSource => {\n        let styles = {};\n        switch (fundingSource) {\n            case paypal.FUNDING.PAYPAL:\n                styles = buttonStyles.paypal;\n                break;\n            case paypal.FUNDING.PAYLATER:\n                styles = buttonStyles.paylater;\n                break;\n            case paypal.FUNDING.CREDIT:\n                const colors = ['black', 'white'];\n                const color = colors.includes(buttonStyles.paylater.color) ? buttonStyles.paylater.color : 'darkblue';\n                styles = {...buttonStyles.paylater, color};\n                break;\n            case paypal.FUNDING.CARD:\n                styles = buttonStyles.card;\n                break;\n            case paypal.FUNDING.VENMO:\n                styles = buttonStyles.venmo;\n                break;\n        }\n        return styles;\n    }, [paypal, buttonStyles]);\n\n    const isCheckoutFlow = useCallback(() => !vault, [vault]);\n\n    const onApprove = useCallback(async (data, actions) => {\n        const paymentData = {\n            order: {},\n            orderId: data.orderID,\n            billingToken: data.billingToken || '',\n            billingTokenData: null\n        }\n        if (data.billingToken) {\n            try {\n                paymentData.billingTokenData = await handleBillingToken(data.billingToken);\n                setPaymentData(paymentData);\n            } catch (error) {\n                setError(error);\n            }\n        } else {\n            actions.order.get().then(response => {\n                setPaymentData({...paymentData, order: response});\n            }).catch(error => {\n                setError(error);\n            });\n        }\n    }, [setError, handleBillingToken]);\n\n    const onShippingChange = useCallback((data, actions) => {\n        const shippingData = currentShippingData.current;\n        const {setSelectedRates} = shippingData;\n        const intermediateAddress = convertPayPalAddressToCart(data?.shipping_address || {}, true);\n        const selectedShippingOption = data?.selected_shipping_option?.id || '';\n        return apiFetch({\n            method: 'POST',\n            url: getRestPath('wc-ppcp/v1/cart/shipping'),\n            data: {\n                order_id: data.orderID,\n                address: intermediateAddress,\n                shipping_method: extractShippingMethod(selectedShippingOption),\n                payment_method: 'ppcp'\n            }\n        }).then(response => {\n            if (response.code) {\n                return actions.reject();\n            } else {\n                return actions.resolve();\n            }\n        }).catch(error => {\n            return actions.reject();\n        }).finally(() => {\n            if (selectedShippingOption) {\n                setSelectedRates(...extractShippingRateParams(selectedShippingOption))\n            }\n        })\n    }, []);\n\n    const onError = useCallback(error => {\n        if (error?.message?.indexOf('Window is closed') > -1) {\n            return;\n        }\n        if (error?.code === 'validation_errors') {\n            setError(error.data.errors[0]);\n        } else {\n            setError(error);\n        }\n    }, [setError]);\n\n    const createOrder = useCallback(async (data, actions) => {\n        const {needsShipping, shippingAddress} = currentShippingData.current;\n        const {billingAddress, email} = currentBilling.current;\n        try {\n            const response = await apiFetch({\n                method: 'POST',\n                url: getRestPath('wc-ppcp/v1/cart/order'),\n                data: {\n                    payment_method: 'ppcp',\n                    address_provided: !isExpress && needsShipping,\n                    checkout_blocks: true,\n                    context: !isExpress ? 'checkout' : null,\n                    ...(needsShipping ? {\n                        shipping_first_name: shippingAddress.first_name,\n                        shipping_last_name: shippingAddress.last_name,\n                        shipping_address_1: shippingAddress.address_1,\n                        shipping_address_2: shippingAddress.address_2,\n                        shipping_postcode: shippingAddress.postcode,\n                        shipping_city: shippingAddress.city,\n                        shipping_state: shippingAddress.state,\n                        shipping_country: shippingAddress.country\n                    } : null),\n                    ...{\n                        billing_first_name: billingAddress.first_name,\n                        billing_last_name: billingAddress.last_name,\n                        billing_address_1: billingAddress.address_1,\n                        billing_address_2: billingAddress.address_2,\n                        billing_postcode: billingAddress.postcode,\n                        billing_city: billingAddress.city,\n                        billing_state: billingAddress.state,\n                        billing_country: billingAddress.country,\n                        billing_email: billingAddress.email,\n                        billing_phone: billingAddress.phone,\n                        billing_company: billingAddress.company\n                    }\n                }\n            });\n            return response;\n        } catch (error) {\n            console.log(error.message);\n            throw error;\n        }\n    }, []);\n\n    const createBillingAgreement = useCallback((data, actions) => {\n        return apiFetch({\n            method: 'POST',\n            url: getRestPath('/wc-ppcp/v1/billing-agreement/token'),\n            data: {\n                context: !isExpress ? 'checkout' : null,\n                payment_method: 'ppcp',\n            }\n        }).then(token => {\n            return token;\n        }).catch(error => setError(error));\n    }, [isExpress, setError]);\n\n    const handleBillingToken = useCallback(async (billingToken) => {\n        try {\n            return apiFetch({\n                method: 'GET',\n                path: `/wc-ppcp/v1/billing-agreement/token/${billingToken}`\n            });\n        } catch (error) {\n            throw error;\n        }\n    }, []);\n\n    return {getOptions};\n}","import {useState, useEffect, useRef, useCallback} from '@wordpress/element';\nimport {convertPayPalAddressToCart, extractFullName} from \"@ppcp/utils\";\nimport {isEmpty} from 'lodash';\nimport {getSetting} from '@woocommerce/settings';\nimport {\n    DEFAULT_BILLING_ADDRESS,\n    DEFAULT_SHIPPING_ADDRESS\n} from \"../../../utils\";\n\nexport const useProcessPayment = (\n    {\n        isExpress,\n        onSubmit,\n        billingData,\n        shippingData,\n        onPaymentSetup,\n        responseTypes,\n        activePaymentMethod,\n        paymentMethodId\n    }) => {\n    const [paymentData, setPaymentData] = useState(null);\n    const currentPaymentData = useRef(null);\n    const currentBillingData = useRef(null);\n    const currentShippingData = useRef(null);\n\n    useEffect(() => {\n        currentPaymentData.current = paymentData;\n        currentBillingData.current = billingData;\n        currentShippingData.current = shippingData;\n    });\n\n    useEffect(() => {\n        if (!isEmpty(paymentData)) {\n            onSubmit();\n        }\n    }, [paymentData, onSubmit]);\n\n    const convertOrderDataToAddress = useCallback((order) => {\n        const {needsShipping} = currentShippingData.current;\n        let address = {};\n        if (!isEmpty(order?.payer?.address?.address_line_1)) {\n            address = convertPayPalAddressToCart(order.payer.address);\n        } else if (needsShipping && !isEmpty(order?.purchase_units?.[0]?.shipping)) {\n            const shipping = order.purchase_units[0].shipping;\n            address = convertPayPalAddressToCart(shipping.address);\n        }\n        if (order?.payer?.name) {\n            address = {...address, ...extractName(order.payer.name)};\n        }\n        if (order?.payer?.email_address && isExpress) {\n            // only override email address if express checkout is being used\n            address = {...address, email: order.payer.email_address};\n        }\n        if (order?.payer?.phone?.phone_number?.national_number) {\n            address = {...address, phone: order.payer.phone.phone_number.national_number};\n        }\n        return address;\n    }, []);\n\n    const convertBillingTokenToAddress = useCallback((data, type = 'billing') => {\n        let address = {};\n        const {needsShipping} = currentShippingData.current;\n        if (type === 'billing') {\n            if (data?.payer_info?.billing_address) {\n                address = convertPayPalAddressToCart(data.payer_info.billing_address);\n            }\n        } else {\n            if (needsShipping && data.shipping_address) {\n                address = convertPayPalAddressToCart(data.shipping_address);\n            }\n        }\n        if (data?.payer_info?.first_name) {\n            address = {...address, first_name: data.payer_info.first_name};\n        }\n        if (data?.payer_info?.last_name) {\n            address = {...address, last_name: data.payer_info.last_name};\n        }\n        if (data?.payer_info?.email && isExpress) {\n            address = {...address, email: data.payer_info.email};\n        }\n        if (data?.payer_info?.phone) {\n            address = {...address, phone: data.payer_info.phone};\n        }\n        return address;\n    }, []);\n\n    const extractName = useCallback((name) => {\n        let first_name, last_name;\n        if (Array.isArray(name)) {\n            [first_name, last_name] = name;\n        } else {\n            ({given_name: first_name, surname: last_name} = name);\n        }\n        return {first_name, last_name};\n    }, []);\n\n    const convertShippingAddress = useCallback(order => {\n        let address = {};\n        if (order?.purchase_units?.[0]?.shipping) {\n            const shipping = order.purchase_units[0].shipping;\n            address = convertPayPalAddressToCart(shipping.address);\n            if (shipping?.name?.full_name) {\n                const name = extractFullName(shipping.name.full_name);\n                address = {...address, ...extractName(name)};\n            }\n        }\n        return address;\n    }, []);\n\n    useEffect(() => {\n        if (activePaymentMethod === paymentMethodId) {\n            const unsubscribe = onPaymentSetup(() => {\n                const billingData = currentBillingData.current;\n                const shippingData = currentShippingData.current;\n                const {shippingAddress, needsShipping} = shippingData;\n                const {orderId, billingToken, billingTokenData = null, order = {}} = currentPaymentData.current;\n                const response = {\n                    meta: {\n                        paymentMethodData: {\n                            ppcp_paypal_order_id: orderId,\n                            ppcp_billing_token: billingToken\n                        },\n                        billingAddress: {\n                            ...DEFAULT_BILLING_ADDRESS,\n                            ...billingData,\n                            ...convertOrderDataToAddress(order),\n                            ...(billingTokenData && convertBillingTokenToAddress(billingTokenData))\n                        }\n                    }\n                }\n                if (needsShipping) {\n                    response.meta.shippingAddress = {\n                        ...DEFAULT_SHIPPING_ADDRESS,\n                        ...shippingAddress,\n                        ...convertShippingAddress(order),\n                        ...(billingTokenData && convertBillingTokenToAddress(billingTokenData, 'shipping'))\n                    }\n                }\n                return {type: responseTypes.SUCCESS, ...response};\n            });\n\n            return () => unsubscribe();\n        }\n    }, [onPaymentSetup, activePaymentMethod]);\n\n    return {paymentData, setPaymentData};\n}","import {useState, useCallback} from '@wordpress/element';\nimport {registerPaymentMethod, registerExpressPaymentMethod} from '@woocommerce/blocks-registry';\nimport {getSetting} from '@woocommerce/settings';\nimport {__} from '@wordpress/i18n';\nimport SimplePayPal from './simple-paypal';\nimport {useBreakpointWidth, useLoadPayPalScript} from \"../../hooks\";\nimport {usePayPalOptions, usePayPalFundingSources, useProcessPayment, useValidateCheckout} from \"./hooks\";\nimport './styles.scss';\nimport {useProcessPaymentFailure} from \"../../hooks\";\nimport {isCartPage, isCheckoutPage} from \"../../utils\";\n\nconst getData = (key) => {\n    const data = getSetting(key);\n    return (key, defaultValue = null) => {\n        if (!data.hasOwnProperty(key)) {\n            data[key] = defaultValue;\n        }\n        return data[key];\n    };\n}\n\nconst data = getData('ppcp_data');\nconst generalData = getData('ppcpGeneralData');\n\nconst isExpressEnabled = () => {\n    const sections = ['paypalSections', 'payLaterSections', 'creditCardSections', 'venmoSections'];\n    for (const section of sections) {\n        if (data(section, []).includes('express_checkout')) {\n            return true;\n        }\n    }\n    return false;\n}\n\nconst isCartEnabled = () => data('paypalSections').includes('cart');\n\nconst ExpressPaymentMethod = ({context = 'express_checkout', ...props}) => {\n    return <PayPalPaymentMethod\n        context={context}\n        isExpress={true}\n        paymentMethodId='paymentplugins_ppcp_express'\n        {...props}/>;\n}\n\nconst PayPalPaymentMethod = (\n    {\n        isExpress = false,\n        context,\n        billing,\n        shippingData,\n        eventRegistration,\n        emitResponse,\n        onError,\n        onClick,\n        onClose,\n        onSubmit,\n        activePaymentMethod,\n        paymentMethodId,\n        ...props\n    }) => {\n    const [error, setError] = useState(false);\n    const queryParams = getSetting('paypalQueryParams');\n    const vault = queryParams.vault === 'true';\n    const {billingData} = billing;\n    const {\n        onPaymentSetup,\n        onCheckoutFail,\n        onCheckoutValidation\n    } = eventRegistration;\n    const {responseTypes, noticeContexts} = emitResponse;\n    const [buttonsContainer, setButtonsContainer] = useState();\n\n    useBreakpointWidth({width: 375, node: buttonsContainer});\n\n    if (!isExpress) {\n        onError = useCallback((error) => {\n            setError(error?.message ? error.message : error);\n        }, []);\n    }\n\n    const setButtonContainerRef = useCallback(el => {\n        setButtonsContainer(el?.parentElement?.parentElement);\n    }, []);\n\n    const {paymentData, setPaymentData} = useProcessPayment({\n        isExpress,\n        onSubmit,\n        billingData,\n        shippingData,\n        onPaymentSetup,\n        responseTypes,\n        activePaymentMethod,\n        paymentMethodId\n    });\n\n    useProcessPaymentFailure({\n        event: onCheckoutFail,\n        responseTypes,\n        messageContext: isExpress ? noticeContexts.EXPRESS_PAYMENTS : noticeContexts.PAYMENTS,\n        setPaymentData\n    });\n\n    useValidateCheckout({\n        isExpress,\n        onCheckoutValidation,\n        paymentData\n    });\n\n    const paypal = useLoadPayPalScript(queryParams);\n\n    const {getOptions} = usePayPalOptions({\n        isExpress,\n        paypal,\n        vault,\n        intent: queryParams.intent,\n        buttonStyles: data('buttons'),\n        billing,\n        shippingData,\n        eventRegistration,\n        setError: onError,\n        setPaymentData,\n        onClick,\n        onClose\n    });\n    const sources = usePayPalFundingSources({\n        data,\n        paypal,\n        context,\n        vault\n    });\n    const cancelPayment = e => {\n        e.preventDefault();\n        setPaymentData(null);\n    }\n\n    if (!isExpress && paymentData) {\n        return (\n            <>\n                <div className={'wc-ppcp-order-review__message'}>\n                    {__('Your PayPal payment method is ready to be processed. Please review your order details then click Place Order',\n                        'pymntpl-paypal-woocommerce')}\n                </div>\n                <a href={'#'} onClick={cancelPayment} className={'wc-ppcp-cancel__payment'}>{__('Cancel', 'pymntpl-paypal-woocommerce')}</a>\n            </>\n        );\n    }\n    if (paypal && sources) {\n        const Button = paypal.Buttons.driver(\"react\", {React, ReactDOM});\n        const BUTTONS = sources.map(source => {\n            const options = getOptions(source);\n            const button = paypal.Buttons(options);\n            return button.isEligible() ? <Button key={source} {...options}/> : null;\n        });\n        return (\n            <>\n                {!isExpress && <ErrorMessage msg={error}/>}\n                <div className='wc-ppcp-paypal__buttons' ref={setButtonContainerRef}>\n                    {BUTTONS}\n                </div>\n            </>\n        );\n    }\n    return null;\n}\n\nconst PaymentMethodLabel = ({components, title, icons, id}) => {\n    if (!Array.isArray(icons)) {\n        icons = [icons];\n    }\n    const {PaymentMethodLabel: Label, PaymentMethodIcons} = components;\n    return (\n        <div className={`wc-ppcp-blocks-payment-method__label ${id}`}>\n            <Label text={title}/>\n            <PaymentMethodIcons icons={icons}/>\n        </div>\n    )\n};\n\nconst ErrorMessage = ({msg}) => {\n    if (msg) {\n        return (\n            <div className={'wc-ppcp-error__message'} dangerouslySetInnerHTML={{__html: msg}}/>\n        )\n    }\n    return null;\n}\n\nif ((isCartPage() && isCartEnabled()) || (isCheckoutPage() && isExpressEnabled())) {\n    let context = 'express_checkout';\n    if (isCartPage()) {\n        context = 'cart';\n    }\n    registerExpressPaymentMethod({\n        name: 'paymentplugins_ppcp_express',\n        canMakePayment: () => true,\n        content: <ExpressPaymentMethod context={context}/>,\n        edit: <ExpressPaymentMethod context={context}/>,\n        supports: {\n            features: data('features')\n        }\n    });\n}\n\nif (isCheckoutPage()) {\n    if (data('placeOrderButtonEnabled')) {\n        registerPaymentMethod({\n            name: 'ppcp',\n            label: <PaymentMethodLabel\n                id='ppcp'\n                title={data('title')}\n                icons={data('icons')}/>,\n            ariaLabel: 'PayPal',\n            canMakePayment: () => true,\n            content: <SimplePayPal data={data}/>,\n            edit: <SimplePayPal data={data}/>,\n            placeOrderButtonLabel: data('i18n').buttonLabel,\n            supports: {\n                showSavedCards: false,\n                showSaveOption: false,\n                features: data('features')\n            }\n        });\n    } else {\n        registerPaymentMethod({\n            name: 'ppcp',\n            label: <PaymentMethodLabel\n                id='ppcp'\n                title={data('title')}\n                icons={data('icons')}/>,\n            ariaLabel: 'PayPal',\n            canMakePayment: () => true,\n            content: <PayPalPaymentMethod context={'checkout'} paymentMethodId={'ppcp'}/>,\n            edit: <PayPalPaymentMethod context={'checkout'} paymentMethodId={'ppcp'}/>,\n            supports: {\n                showSavedCards: false,\n                showSaveOption: false,\n                features: data('features')\n            }\n        });\n    }\n}\n\n\n\n","import {useEffect} from '@wordpress/element';\nimport {__} from '@wordpress/i18n';\n\nexport const useValidateCheckout = (\n    {\n        isExpress,\n        paymentData,\n        onCheckoutValidation\n    }) => {\n    useEffect(() => {\n        if (!isExpress) {\n            const unsubscribe = onCheckoutValidation(() => {\n                // validate that the order has been created.\n                if (!paymentData?.orderId) {\n                    return {\n                        errorMessage: __('Please click the PayPal button before placing your order.', 'pymntpl-paypal-woocommerce')\n                    }\n                }\n                return true;\n            });\n            return unsubscribe;\n        }\n    }, [isExpress, paymentData]);\n}","import {useEffect, useState} from '@wordpress/element';\n\nexport const usePayPalFundingSources = ({data, paypal, context, vault = false}) => {\n    const [sources, setSources] = useState(false);\n    useEffect(() => {\n        if (paypal) {\n            let sources = [];\n            const buttonOrder = data('buttonOrder', []);\n            if (context === 'express_checkout') {\n                if (data('paypalSections', []).includes(context)) {\n                    sources.push(paypal.FUNDING.PAYPAL);\n                }\n            } else {\n                sources.push(paypal.FUNDING.PAYPAL);\n            }\n            if (data('payLaterEnabled') && data('payLaterSections', []).includes(context)) {\n                if (vault) {\n                    sources.push(paypal.FUNDING.CREDIT)\n                } else {\n                    sources.push(paypal.FUNDING.PAYLATER)\n                }\n            }\n            if (data('cardEnabled') && data('creditCardSections', []).includes(context)) {\n                sources.push(paypal.FUNDING.CARD)\n            }\n            if (data('venmoEnabled') && data('venmoSections', []).includes(context)) {\n                sources.push(paypal.FUNDING.VENMO);\n            }\n            sources.sort((a, b) => {\n                return buttonOrder.indexOf(a) < buttonOrder.indexOf(b) ? -1 : 1;\n            });\n            setSources([...sources]);\n        }\n    }, [paypal]);\n\n    return sources;\n}","import {SHIPPING_OPTION_REGEX} from '@ppcp/utils';\nimport {getSetting} from '@woocommerce/settings';\n\nexport const getShippingOptionId = (packageId, rateId) => `${packageId}:${rateId}`;\n\nexport const getSelectedShippingOptionId = (shippingRates) => {\n    let shippingOption = '';\n    shippingRates.forEach((shippingPackage, idx) => {\n        shippingPackage.shipping_rates.forEach(rate => {\n            if (rate.selected) {\n                shippingOption = getShippingOptionId(idx, rate.rate_id);\n            }\n        });\n    });\n    return shippingOption;\n}\n\nexport const extractShippingRateParams = (id) => {\n    const result = id.match(SHIPPING_OPTION_REGEX);\n    if (result) {\n        const {1: packageIdx, 2: rate} = result;\n        return [rate, packageIdx];\n    }\n    return [];\n}\n\nexport const removeNumberPrecision = (value, unit) => {\n    return value / 10 ** unit;\n}\n\nexport const hasShippingOptions = (shippingRates) => shippingRates.map(rate => rate?.shipping_rates.length > 0).filter(Boolean).length > 0;\n\nexport const createPatchRequest = ({billing, shippingData, selectedShippingOption = null}) => {\n    const {shippingRates} = shippingData;\n    const {currency, cartTotal, cartTotalItems} = billing;\n    return [\n        {\n            'op': 'replace',\n            'path': '/purchase_units/@reference_id==\\'default\\'/amount',\n            'value': {\n                currency_code: currency.code,\n                value: removeNumberPrecision(cartTotal.value, currency.minorUnit),\n                breakdown: getAmountBreakdown(cartTotalItems, currency)\n            }\n        },\n        {\n            'op': !selectedShippingOption ? 'add' : 'replace',\n            'path': '/purchase_units/@reference_id==\\'default\\'/shipping/options',\n            'value': getFormattedShippingOptions(shippingRates)\n        }\n    ];\n};\n\nexport const getAmountBreakdown = (cartTotalItems, currency) => {\n    const breakdown = {\n        item_total: 0\n    };\n    for (const cartItem of cartTotalItems) {\n        switch (cartItem.key) {\n            case 'total_items':\n            case 'total_fees':\n                breakdown.item_total += cartItem.value;\n                break;\n            case 'total_discount':\n                breakdown.discount = getBreakdownItem(cartItem, currency);\n                break;\n            case 'total_shipping':\n                breakdown.shipping = getBreakdownItem(cartItem, currency)\n                break;\n            case 'total_tax':\n                breakdown.tax_total = getBreakdownItem(cartItem, currency)\n                break;\n        }\n    }\n    breakdown.item_total = {\n        value: removeNumberPrecision(breakdown.item_total, currency.minorUnit),\n        currency_code: currency.code\n    };\n    return breakdown;\n}\n\nexport const getFormattedShippingOptions = (shippingRates) => {\n    let options = [];\n    shippingRates.forEach((shippingPackage, idx) => {\n        let rates = shippingPackage.shipping_rates.map(rate => {\n            let txt = document.createElement('textarea');\n            txt.innerHTML = rate.name;\n            return {\n                id: getShippingOptionId(idx, rate.rate_id),\n                label: txt.value,\n                type: 'SHIPPING',\n                selected: rate.selected,\n                amount: {\n                    value: removeNumberPrecision(rate.price, rate.currency_minor_unit),\n                    currency_code: rate.currency_code\n                }\n            }\n        });\n        options = [...options, ...rates];\n    });\n    return options;\n}\n\nexport const getBreakdownItem = (cartItem, currency) => {\n    return {\n        value: removeNumberPrecision(cartItem.value, currency.minorUnit),\n        currency_code: currency.code\n    }\n}\nexport const getFormattedCartItems = (cartTotalItems, currency) => {\n    return cartTotalItems.map(cartItem => getFormattedCartItem(cartItem, currency));\n}\n\nexport const getFormattedCartItem = (cartItem, currency) => ({\n    name: cartItem.label,\n    unit_amount: {\n        value: removeNumberPrecision(cartItem.value, currency.minorUnit),\n        currency_code: currency.code\n    },\n    quantity: 1\n})\n\n/**\n * Returns a rest route in ajax form given a route path.\n * @param path\n * @returns {*}\n */\nexport const getRestPath = (path) => {\n    path = path.replace(/^\\//, '');\n    return getSetting('ppcpGeneralData')?.ajaxRestPath?.replace('%s', path);\n}\n\nexport const isUserAdmin = () => getSetting('ppcpGeneralData')?.isAdmin\n\nconst getLocaleFields = (country) => {\n    const countryLocale = getSetting('countryLocale', {});\n    let localeFields = {...countryLocale.default};\n    if (country && countryLocale.hasOwnProperty(country)) {\n        localeFields = Object.entries(countryLocale[country]).reduce((locale, [key, value]) => {\n            locale[key] = {...locale[key], ...value}\n            return locale;\n        }, localeFields);\n    }\n    return localeFields;\n}\n\nexport const isAddressValid = (address, exclude = []) => {\n    const fields = getLocaleFields(address.country);\n    for (const [key, value] of Object.entries(address)) {\n        if (!exclude.includes(key) && fields?.[key] && fields[key].required) {\n            if (isEmpty(value)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\n/**\n * Returns true if the provided value is empty.\n * @param value\n * @returns {boolean}\n */\nconst isEmpty = (value) => {\n    if (typeof value === 'string') {\n        return value.length == 0 || value == '';\n    }\n    if (Array.isArray(value)) {\n        return array.length == 0;\n    }\n    if (typeof value === 'object') {\n        return Object.keys(value).length == 0;\n    }\n    if (typeof value === 'undefined') {\n        return true;\n    }\n    return true;\n}\n\nexport const isCartPage = () => {\n    return getSetting('ppcpGeneralData').context === 'cart';\n}\n\nexport const isCheckoutPage = () => {\n    return getSetting('ppcpGeneralData').context === 'checkout';\n}\n\nexport const DEFAULT_SHIPPING_ADDRESS = {\n    'first_name': '',\n    'last_name': '',\n    'company': '',\n    'address_1': '',\n    'address_2': '',\n    'city': '',\n    'state': '',\n    'postcode': '',\n    'country': '',\n    'phone': '',\n}\n\nexport const DEFAULT_BILLING_ADDRESS = {\n    ...DEFAULT_SHIPPING_ADDRESS,\n    'email': ''\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}"],"names":["useLoadPayPalScript","params","useState","paypal","setPayPal","useEffect","loadPayPalSdk","then","useProcessPaymentFailure","event","responseTypes","messageContext","setPaymentData","unsubscribe","data","processingResponse","paymentDetails","ppcpErrorMessage","message","type","ERROR","useBreakpointWidth","width","node","className","window","innerWidth","windowWidth","setWindowWidth","element","setElement","handleResize","addEventListener","removeEventListener","clientWidth","classList","add","remove","getSetting","PayLaterMessaging","cart","isEnabled","extensions","context","enabled","el","useRef","cartTotals","currency","currency_code","total_price","options","useMemo","amount","currency_minor_unit","placement","Messages","render","current","TotalsWrapper","ref","registerPlugin","ExperimentalOrderMeta","scope","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","PayPalRedirectNotice","src","dangerouslySetInnerHTML","__html","redirectText","props","getData","defaultValue","ExpressPaymentMethod","PayPalPaymentMethod","isExpress","paymentMethodId","billing","shippingData","eventRegistration","emitResponse","onError","onClick","onClose","onSubmit","activePaymentMethod","error","setError","queryParams","vault","billingData","onPaymentSetup","onCheckoutFail","onCheckoutValidation","noticeContexts","buttonsContainer","setButtonsContainer","useCallback","setButtonContainerRef","parentElement","paymentData","currentPaymentData","currentBillingData","currentShippingData","isEmpty","convertOrderDataToAddress","order","needsShipping","address","payer","address_line_1","purchase_units","shipping","convertPayPalAddressToCart","name","extractName","email_address","email","phone","phone_number","national_number","convertBillingTokenToAddress","payer_info","billing_address","shipping_address","first_name","last_name","Array","isArray","given_name","surname","convertShippingAddress","full_name","extractFullName","shippingAddress","orderId","billingToken","billingTokenData","response","meta","paymentMethodData","ppcp_paypal_order_id","ppcp_billing_token","billingAddress","DEFAULT_BILLING_ADDRESS","DEFAULT_SHIPPING_ADDRESS","SUCCESS","useProcessPayment","EXPRESS_PAYMENTS","PAYMENTS","errorMessage","__","useValidateCheckout","buttonStyles","currentBilling","currentData","buttonState","actions","keys","forEach","disable","getOptions","fundingSource","style","getButtonStyle","onApprove","onCancel","onInit","isCheckoutFlow","createOrder","onShippingChange","createBillingAgreement","styles","FUNDING","PAYPAL","PAYLATER","paylater","CREDIT","color","includes","CARD","card","VENMO","venmo","orderID","handleBillingToken","get","catch","setSelectedRates","intermediateAddress","selectedShippingOption","selected_shipping_option","id","apiFetch","method","url","getRestPath","order_id","shipping_method","extractShippingMethod","payment_method","code","reject","resolve","finally","extractShippingRateParams","errors","address_provided","checkout_blocks","shipping_first_name","shipping_last_name","shipping_address_1","address_1","shipping_address_2","address_2","shipping_postcode","postcode","shipping_city","city","shipping_state","state","shipping_country","country","billing_first_name","billing_last_name","billing_address_1","billing_address_2","billing_postcode","billing_city","billing_state","billing_country","billing_email","billing_phone","billing_company","company","console","log","token","path","usePayPalOptions","intent","sources","setSources","buttonOrder","push","sort","a","b","usePayPalFundingSources","href","e","preventDefault","Button","Buttons","driver","React","ReactDOM","BUTTONS","map","isEligible","ErrorMessage","msg","PaymentMethodLabel","components","title","icons","Label","PaymentMethodIcons","text","isCartPage","isCheckoutPage","isExpressEnabled","registerExpressPaymentMethod","canMakePayment","content","edit","supports","features","registerPaymentMethod","label","ariaLabel","placeOrderButtonLabel","buttonLabel","showSavedCards","showSaveOption","result","match","SHIPPING_OPTION_REGEX","packageIdx","replace","ajaxRestPath","_arrayLikeToArray","arr","len","arr2","_arrayWithoutHoles","asyncGeneratorStep","gen","_next","_throw","arg","info","value","done","Promise","_asyncToGenerator","fn","self","args","err","undefined","_defineProperty","obj","defineProperty","enumerable","configurable","writable","_iterableToArray","iter","Symbol","iterator","from","_nonIterableSpread","TypeError","_objectWithoutPropertiesLoose","sourceKeys","_slicedToArray","_i","_s","_e","_arr","_n","_d","next","unsupportedIterableToArray","_toConsumableArray","_unsupportedIterableToArray","o","minLen","n","toString","slice","constructor","test"],"sourceRoot":""}