{"version":3,"sources":["webpack://checkout/./src/app/order/OrderSummaryPrice.tsx","webpack://checkout/./src/app/order/getItemsCount.ts","webpack://checkout/./src/app/order/OrderSummarySection.tsx","webpack://checkout/./src/app/order/OrderSummaryTotal.tsx","webpack://checkout/./src/app/ui/icon/IconChevronUp.tsx","webpack://checkout/./src/app/ui/icon/IconChevronDown.tsx","webpack://checkout/./src/app/order/mapFromCustom.tsx","webpack://checkout/./src/app/order/getOrderSummaryItemImage.tsx","webpack://checkout/./src/app/order/mapFromDigital.tsx","webpack://checkout/./src/app/order/mapFromGiftCertificate.tsx","webpack://checkout/./src/app/order/mapFromPhysical.tsx","webpack://checkout/./src/app/order/OrderSummaryItem.tsx","webpack://checkout/./src/app/order/OrderSummaryItems.tsx","webpack://checkout/./src/app/order/OrderSummaryDiscount.tsx","webpack://checkout/./src/app/order/OrderSummarySubtotals.tsx","webpack://checkout/./src/app/ui/icon/IconGiftCertificate.tsx","webpack://checkout/./src/app/order/OrderSummaryHeader.tsx","webpack://checkout/./src/app/order/OrderSummary.tsx","webpack://checkout/./src/app/order/removeBundledItems.ts"],"names":["state","highlight","previousAmount","handleTransitionEnd","node","done","addEventListener","setState","getDerivedStateFromProps","props","amount","render","this","actionLabel","onActionTriggered","children","className","currencyCode","label","superscript","testId","zeroLabel","displayValue","getDisplayValue","addEndListener","classNames","in","timeout","href","onClick","isNumberValue","getItemsCount","physicalItems","digitalItems","giftCertificates","customItems","reduce","total","item","quantity","length","shopperCurrencyCode","storeCurrencyCode","orderAmount","currency","hasDifferentCurrency","id","undefined","data","toStoreCurrency","code","withIconContainer","height","viewBox","width","xmlns","d","extendedListPrice","name","getOrderSummaryItemImage","imageUrl","alt","src","getDigitalItemDescription","downloadPageUrl","content","rel","target","TranslatedString","amountAfterDiscount","extendedSalePrice","image","productOptions","options","map","option","value","IconGiftCertificate","extendedComparisonPrice","description","giftWrapping","index","key","ShopperCurrency","handleToggle","isExpanded","items","count","slice","sort","variantId","summaryItemProps","renderActions","getLineItemCount","type","Component","remaining","onRemoved","rest","OrderSummaryPrice","discountAmount","taxes","giftWrappingAmount","shippingAmount","subtotalAmount","handlingAmount","storeCreditAmount","coupons","onRemovedGiftCertificate","onRemovedCoupon","coupon","discountedAmount","displayName","giftCertificate","used","tax","storeCurrency","shopperCurrency","headerLink","additionalLineItems","lineItems","orderSummarySubtotalsProps","nonBundledLineItems","filter","parentId","OrderSummarySection","OrderSummaryItems","OrderSummarySubtotals","OrderSummaryTotal"],"mappings":"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","file":"order-summary-21555ce5.js","sourcesContent":["import classNames from 'classnames';\nimport React, { Component, ReactNode } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { preventDefault } from '../common/dom';\nimport { ShopperCurrency } from '../currency';\n\nexport interface OrderSummaryPriceProps {\n    label: ReactNode;\n    amount?: number | null;\n    zeroLabel?: ReactNode;\n    className?: string;\n    testId?: string;\n    currencyCode?: string;\n    superscript?: string;\n    actionLabel?: ReactNode;\n    onActionTriggered?(): void;\n}\n\nexport interface OrderSummaryPriceState {\n    highlight: boolean;\n    previousAmount?: number;\n}\n\nfunction getDisplayValue(amount?: number | null, zeroLabel?: ReactNode): ReactNode | number {\n    const notYetSetSymbol = '--';\n\n    if (typeof amount === 'undefined' || amount === null) {\n        return notYetSetSymbol;\n    }\n\n    if (zeroLabel && amount === 0) {\n        return zeroLabel;\n    }\n\n    return amount;\n}\n\nfunction isNumberValue(displayValue: number | ReactNode): displayValue is number {\n    return typeof displayValue === 'number';\n}\n\nclass OrderSummaryPrice extends Component<OrderSummaryPriceProps, OrderSummaryPriceState> {\n    static getDerivedStateFromProps(props: OrderSummaryPriceProps, state: OrderSummaryPriceState) {\n        return {\n            highlight: props.amount !== state.previousAmount,\n            previousAmount: props.amount,\n        };\n    }\n\n    state = {\n        highlight: false,\n        previousAmount: 0,\n    };\n\n    render(): ReactNode {\n        const {\n            amount,\n            actionLabel,\n            onActionTriggered,\n            children,\n            className,\n            currencyCode,\n            label,\n            superscript,\n            testId,\n            zeroLabel,\n        } = this.props;\n\n        const { highlight } = this.state;\n        const displayValue = getDisplayValue(amount, zeroLabel);\n\n        return (\n            <div data-test={ testId }>\n                <CSSTransition\n                    addEndListener={ this.handleTransitionEnd }\n                    classNames=\"changeHighlight\"\n                    in={ highlight }\n                    timeout={ {} }\n                >\n                    <div\n                        aria-live=\"polite\"\n                        className={ classNames(\n                            'cart-priceItem',\n                            'optimizedCheckout-contentPrimary',\n                            className\n                        ) }\n                    >\n                        <span className=\"cart-priceItem-label\">\n                            <span data-test=\"cart-price-label\">\n                                { label }\n                                { '  ' }\n                            </span>\n                            { currencyCode && <span className=\"cart-priceItem-currencyCode\">\n                                { `(${currencyCode}) ` }\n                            </span> }\n                            { onActionTriggered && actionLabel && <span className=\"cart-priceItem-link\">\n                                <a\n                                    data-test=\"cart-price-callback\"\n                                    href=\"#\"\n                                    onClick={ preventDefault(onActionTriggered) }\n                                >\n                                    { actionLabel }\n                                </a>\n                            </span> }\n                        </span>\n\n                        <span className=\"cart-priceItem-value\">\n                            <span data-test=\"cart-price-value\">\n                                { isNumberValue(displayValue) ?\n                                    <ShopperCurrency amount={ displayValue } /> :\n                                    displayValue }\n                            </span>\n\n                            { superscript && <sup data-test=\"cart-price-value-superscript\">\n                                { superscript }\n                            </sup> }\n                        </span>\n\n                        { children }\n                    </div>\n                </CSSTransition>\n            </div>\n        );\n    }\n\n    private handleTransitionEnd: (node: HTMLElement, done: () => void) => void = (node, done) => {\n        const { previousAmount } = this.state;\n\n        node.addEventListener('animationend', ({ target }) => {\n            if (target === node) {\n                this.setState({\n                    highlight: false,\n                    previousAmount,\n                });\n                done();\n            }\n        });\n    };\n}\n\nexport default OrderSummaryPrice;\n","import { LineItemMap } from '@bigcommerce/checkout-sdk';\n\nexport default function getItemsCount({\n    physicalItems,\n    digitalItems,\n    giftCertificates,\n    customItems,\n}: LineItemMap): number {\n    const totalItemsCount = [\n        ...physicalItems,\n        ...digitalItems,\n        ...(customItems || []),\n    ].reduce((total, item) => total += item.quantity, 0);\n\n    return totalItemsCount + giftCertificates.length;\n}\n","import React, { FunctionComponent } from 'react';\n\nconst OrderSummarySection: FunctionComponent = ({\n    children,\n}) => (\n    <section className=\"cart-section optimizedCheckout-orderSummary-cartSection\">\n        { children }\n    </section>\n);\n\nexport default OrderSummarySection;\n","import React, { Fragment, FunctionComponent } from 'react';\n\nimport { withCurrency, TranslatedString, WithCurrencyProps } from '../locale';\n\nimport OrderSummaryPrice from './OrderSummaryPrice';\n\nexport interface OrderSummaryTotalProps {\n    orderAmount: number;\n    shopperCurrencyCode: string;\n    storeCurrencyCode: string;\n}\n\nconst OrderSummaryTotal: FunctionComponent<OrderSummaryTotalProps & WithCurrencyProps> = ({\n    shopperCurrencyCode,\n    storeCurrencyCode,\n    orderAmount,\n    currency,\n}) => {\n\n    const hasDifferentCurrency = shopperCurrencyCode !== storeCurrencyCode;\n    const label = <Fragment>\n        { hasDifferentCurrency ?\n            <TranslatedString id=\"cart.estimated_total_text\" /> :\n            <TranslatedString id=\"cart.total_text\" /> }\n        { ` (${shopperCurrencyCode})` }\n    </Fragment>;\n\n    return (\n        <Fragment>\n            <OrderSummaryPrice\n                amount={ orderAmount }\n                className=\"cart-priceItem--total\"\n                label={ label }\n                superscript={ hasDifferentCurrency ? '*' : undefined }\n                testId=\"cart-total\"\n            />\n            { hasDifferentCurrency && currency && <p\n                className=\"cart-priceItem--totalNote\"\n                data-test=\"cart-price-item-total-note\"\n            >\n                <TranslatedString\n                    data={ {\n                        total: currency.toStoreCurrency(orderAmount),\n                        code: storeCurrencyCode,\n                    } }\n                    id=\"cart.billed_amount_text\"\n                />\n            </p> }\n        </Fragment>\n    );\n};\n\nexport default withCurrency(OrderSummaryTotal);\n","import React, { FunctionComponent } from 'react';\n\nimport withIconContainer from './withIconContainer';\n\nconst IconChevronUp: FunctionComponent = () => (\n    <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\" />\n    </svg>\n);\n\nexport default withIconContainer(IconChevronUp);\n","import React, { FunctionComponent } from 'react';\n\nimport withIconContainer from './withIconContainer';\n\nconst IconChevronDown: FunctionComponent = () => (\n    <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\" />\n    </svg>\n);\n\nexport default withIconContainer(IconChevronDown);\n","import { CustomItem } from '@bigcommerce/checkout-sdk';\n\nimport { OrderSummaryItemProps } from './OrderSummaryItem';\n\nfunction mapFromCustom(item: CustomItem): OrderSummaryItemProps {\n    return {\n        id: item.id,\n        quantity: item.quantity,\n        amount: item.extendedListPrice,\n        name: item.name,\n    };\n}\n\nexport default mapFromCustom;\n","import { DigitalItem, PhysicalItem } from '@bigcommerce/checkout-sdk';\nimport React, { ReactNode } from 'react';\n\nexport default function getOrderSummaryItemImage(item: DigitalItem | PhysicalItem): ReactNode {\n    if (!item.imageUrl) {\n        return;\n    }\n\n    return <img\n        alt={ item.name }\n        data-test=\"cart-item-image\"\n        src={ item.imageUrl }\n    />;\n}\n","import { DigitalItem } from '@bigcommerce/checkout-sdk';\nimport React from 'react';\n\nimport { TranslatedString } from '../locale';\n\nimport getOrderSummaryItemImage from './getOrderSummaryItemImage';\nimport { OrderSummaryItemOption, OrderSummaryItemProps } from './OrderSummaryItem';\n\nfunction mapFromDigital(item: DigitalItem): OrderSummaryItemProps {\n    return {\n        id: item.id,\n        quantity: item.quantity,\n        amount: item.extendedListPrice,\n        amountAfterDiscount: item.extendedSalePrice,\n        name: item.name,\n        image: getOrderSummaryItemImage(item),\n        productOptions: [\n            ...(item.options || []).map(option => ({\n                testId: 'cart-item-product-option',\n                content: `${option.name} ${option.value}`,\n            })),\n            getDigitalItemDescription(item),\n        ],\n    };\n}\n\nfunction getDigitalItemDescription(item: DigitalItem): OrderSummaryItemOption {\n    if (!item.downloadPageUrl) {\n        return {\n            testId: 'cart-item-digital-product',\n            content: <TranslatedString id=\"cart.digital_item_text\" />,\n        };\n    }\n\n    return {\n        testId: 'cart-item-digital-product-download',\n        content:\n            <a\n                href={ item.downloadPageUrl }\n                rel=\"noopener noreferrer\"\n                target=\"_blank\"\n            >\n                <TranslatedString id=\"cart.downloads_action\" />\n            </a>,\n    };\n}\n\nexport default mapFromDigital;\n","import { GiftCertificateItem } from '@bigcommerce/checkout-sdk';\nimport React from 'react';\n\nimport { IconGiftCertificate } from '../ui/icon';\n\nimport { OrderSummaryItemProps } from './OrderSummaryItem';\n\nfunction mapFromGiftCertificate(item: GiftCertificateItem): OrderSummaryItemProps {\n    return {\n        id: item.id,\n        quantity: 1,\n        amount: item.amount,\n        name: item.name,\n        image:\n            <span\n                className=\"productImage-giftCertificate\"\n                data-test=\"cart-item-gift-certificate\"\n            >\n                <IconGiftCertificate />\n            </span>,\n    };\n}\n\nexport default mapFromGiftCertificate;\n","import { PhysicalItem } from '@bigcommerce/checkout-sdk';\n\nimport getOrderSummaryItemImage from './getOrderSummaryItemImage';\nimport { OrderSummaryItemProps } from './OrderSummaryItem';\n\nfunction mapFromPhysical(item: PhysicalItem): OrderSummaryItemProps {\n    return {\n        id: item.id,\n        quantity: item.quantity,\n        amount: item.extendedComparisonPrice,\n        amountAfterDiscount: item.extendedSalePrice,\n        name: item.name,\n        image: getOrderSummaryItemImage(item),\n        description: item.giftWrapping ? item.giftWrapping.name : undefined,\n        productOptions: (item.options || []).map(option => ({\n            testId: 'cart-item-product-option',\n            content: `${option.name} ${option.value}`,\n        })),\n    };\n}\n\nexport default mapFromPhysical;\n","import classNames from 'classnames';\nimport { isNumber } from 'lodash';\nimport React, { memo, FunctionComponent, ReactNode } from 'react';\n\nimport { ShopperCurrency } from '../currency';\n\nexport interface OrderSummaryItemProps {\n    id: string | number;\n    amount: number;\n    quantity: number;\n    name: string;\n    amountAfterDiscount?: number;\n    image?: ReactNode;\n    description?: ReactNode;\n    productOptions?: OrderSummaryItemOption[];\n}\n\nexport interface OrderSummaryItemOption {\n    testId: string;\n    content: ReactNode;\n}\n\nconst OrderSummaryItem: FunctionComponent<OrderSummaryItemProps> = ({\n    amount,\n    amountAfterDiscount,\n    image,\n    name,\n    productOptions,\n    quantity,\n    description,\n}) => (\n    <div className=\"product\" data-test=\"cart-item\">\n        <figure className=\"product-column product-figure\">\n            { image }\n        </figure>\n\n        <div className=\"product-column product-body\">\n            <h5\n                className=\"product-title optimizedCheckout-contentPrimary\"\n                data-test=\"cart-item-product-title\"\n            >\n                { `${quantity} x ${name}` }\n            </h5>\n            <ul\n                className=\"product-options optimizedCheckout-contentSecondary\"\n                data-test=\"cart-item-product-options\"\n            >\n                { (productOptions || []).map((option, index) =>\n                    <li\n                        className=\"product-option\"\n                        data-test={ option.testId }\n                        key={ index }\n                    >\n                        { option.content }\n                    </li>\n                ) }\n            </ul>\n            { description && <div\n                className=\"product-description optimizedCheckout-contentSecondary\"\n                data-test=\"cart-item-product-description\"\n            >\n                { description }\n            </div> }\n        </div>\n\n        <div className=\"product-column product-actions\">\n            <div\n                className={ classNames(\n                    'product-price',\n                    'optimizedCheckout-contentPrimary',\n                    { 'product-price--beforeDiscount': isNumber(amountAfterDiscount) && amountAfterDiscount !== amount }\n                ) }\n                data-test=\"cart-item-product-price\"\n            >\n                <ShopperCurrency amount={ amount } />\n            </div>\n\n            { isNumber(amountAfterDiscount) && amountAfterDiscount !== amount && <div\n                className=\"product-price\"\n                data-test=\"cart-item-product-price--afterDiscount\"\n            >\n                <ShopperCurrency amount={ amountAfterDiscount } />\n            </div> }\n        </div>\n    </div>\n);\n\nexport default memo(OrderSummaryItem);\n","import { LineItemMap } from '@bigcommerce/checkout-sdk';\nimport React, { Fragment, ReactNode } from 'react';\n\nimport { TranslatedString } from '../locale';\nimport { IconChevronDown, IconChevronUp } from '../ui/icon';\n\nimport getItemsCount from './getItemsCount';\nimport mapFromCustom from './mapFromCustom';\nimport mapFromDigital from './mapFromDigital';\nimport mapFromGiftCertificate from './mapFromGiftCertificate';\nimport mapFromPhysical from './mapFromPhysical';\nimport OrderSummaryItem from './OrderSummaryItem';\n\nconst COLLAPSED_ITEMS_LIMIT = 4;\n\nexport interface OrderSummaryItemsProps {\n    items: LineItemMap;\n}\n\ninterface OrderSummaryItemsState {\n    isExpanded: boolean;\n}\n\nclass OrderSummaryItems extends React.Component<OrderSummaryItemsProps, OrderSummaryItemsState> {\n    constructor(props: OrderSummaryItemsProps) {\n        super(props);\n\n        this.state = {\n            isExpanded: false,\n        };\n    }\n\n    render(): ReactNode {\n        const { items } = this.props;\n        const { isExpanded } = this.state;\n\n        return (<Fragment>\n            <h3\n                className=\"cart-section-heading optimizedCheckout-contentPrimary\"\n                data-test=\"cart-count-total\"\n            >\n                <TranslatedString\n                    data={ { count: getItemsCount(items) } }\n                    id=\"cart.item_count_text\"\n                />\n            </h3>\n\n            <ul aria-live=\"polite\" className=\"productList\">\n                {\n                    [\n                        ...items.physicalItems\n                            .slice()\n                            .sort(item => item.variantId)\n                            .map(mapFromPhysical),\n                        ...items.giftCertificates\n                            .slice()\n                            .map(mapFromGiftCertificate),\n                        ...items.digitalItems\n                            .slice()\n                            .sort(item => item.variantId)\n                            .map(mapFromDigital),\n                        ...(items.customItems || [])\n                            .map(mapFromCustom),\n                    ]\n                        .slice(0, isExpanded ? undefined : COLLAPSED_ITEMS_LIMIT)\n                        .map(summaryItemProps =>\n                            <li\n                                className=\"productList-item is-visible\"\n                                key={ summaryItemProps.id }\n                            >\n                                <OrderSummaryItem { ...summaryItemProps } />\n                            </li>\n                        )\n                }\n            </ul>\n\n            { this.renderActions() }\n        </Fragment>);\n    }\n\n    private renderActions(): ReactNode {\n        const { isExpanded } = this.state;\n\n        if (this.getLineItemCount() < 5) {\n            return;\n        }\n\n        return (\n            <div className=\"cart-actions\">\n                <button\n                    className=\"button button--tertiary button--tiny optimizedCheckout-buttonSecondary\"\n                    onClick={ this.handleToggle }\n                    type=\"button\"\n                >\n                        { isExpanded ?\n                            <Fragment>\n                                <TranslatedString id=\"cart.see_less_action\" />\n                                <IconChevronUp />\n                            </Fragment> :\n                            <Fragment>\n                                <TranslatedString id=\"cart.see_all_action\" />\n                                <IconChevronDown />\n                            </Fragment> }\n                </button>\n            </div>\n        );\n    }\n\n    private getLineItemCount(): number {\n        const { items } = this.props;\n\n        return (items.customItems || []).length +\n            items.physicalItems.length +\n            items.digitalItems.length +\n            items.giftCertificates.length;\n    }\n\n    private handleToggle: () => void = () => {\n        const { isExpanded } = this.state;\n\n        this.setState({ isExpanded: !isExpanded });\n    };\n}\n\nexport default OrderSummaryItems;\n","import React, { memo, FunctionComponent } from 'react';\n\nimport { ShopperCurrency } from '../currency';\nimport { TranslatedString } from '../locale';\n\nimport OrderSummaryPrice, { OrderSummaryPriceProps } from './OrderSummaryPrice';\n\nexport interface OrderSummaryDiscountProps extends OrderSummaryPriceProps {\n    remaining?: number;\n    code?: string;\n    onRemoved?(code: string): void;\n}\n\nconst OrderSummaryDiscount: FunctionComponent<OrderSummaryDiscountProps> = ({\n    code,\n    remaining,\n    amount,\n    onRemoved,\n    ...rest\n}) => (\n    <OrderSummaryPrice\n        { ...rest }\n        { ...(onRemoved && {\n            onActionTriggered: () => code && onRemoved(code),\n            actionLabel: <TranslatedString id=\"cart.remove_action\" />,\n        }) }\n        amount={ -1 * (amount || 0) }\n    >\n        { !!remaining && remaining > 0 && <span\n            className=\"cart-priceItem-postFix optimizedCheckout-contentSecondary\"\n            data-test=\"cart-price-remaining\"\n        >\n            <TranslatedString id=\"cart.remaining_text\" />\n            { ': ' }\n            <ShopperCurrency amount={ remaining } />\n        </span> }\n\n        { code && <span\n            className=\"cart-priceItem-postFix optimizedCheckout-contentSecondary\"\n            data-test=\"cart-price-code\"\n        >\n            { code }\n        </span> }\n    </OrderSummaryPrice>\n);\n\nexport default memo(OrderSummaryDiscount);\n","import { Coupon, GiftCertificate, Tax } from '@bigcommerce/checkout-sdk';\nimport React, { memo, Fragment, FunctionComponent } from 'react';\n\nimport { TranslatedString } from '../locale';\n\nimport OrderSummaryDiscount from './OrderSummaryDiscount';\nimport OrderSummaryPrice from './OrderSummaryPrice';\n\nexport interface OrderSummarySubtotalsProps {\n    coupons: Coupon[];\n    giftCertificates?: GiftCertificate[];\n    discountAmount?: number;\n    taxes?: Tax[];\n    giftWrappingAmount?: number;\n    shippingAmount?: number;\n    handlingAmount?: number;\n    storeCreditAmount?: number;\n    subtotalAmount: number;\n    onRemovedGiftCertificate?(code: string): void;\n    onRemovedCoupon?(code: string): void;\n}\n\nconst OrderSummarySubtotals: FunctionComponent<OrderSummarySubtotalsProps> = ({\n    discountAmount,\n    giftCertificates,\n    taxes,\n    giftWrappingAmount,\n    shippingAmount,\n    subtotalAmount,\n    handlingAmount,\n    storeCreditAmount,\n    coupons,\n    onRemovedGiftCertificate,\n    onRemovedCoupon,\n}) => {\n    return (<Fragment>\n        <OrderSummaryPrice\n            amount={ subtotalAmount }\n            className=\"cart-priceItem--subtotal\"\n            label={ <TranslatedString id=\"cart.subtotal_text\" /> }\n            testId=\"cart-subtotal\"\n        />\n\n        { (coupons || [])\n            .map((coupon, index) =>\n                <OrderSummaryDiscount\n                    amount={ coupon.discountedAmount }\n                    code={ coupon.code }\n                    key={ index }\n                    label={ coupon.displayName }\n                    onRemoved={ onRemovedCoupon }\n                    testId=\"cart-coupon\"\n                />\n        ) }\n\n        { !!discountAmount && <OrderSummaryDiscount\n            amount={ discountAmount }\n            label={ <TranslatedString id=\"cart.discount_text\" /> }\n            testId=\"cart-discount\"\n        /> }\n\n        { (giftCertificates || [])\n            .map((giftCertificate, index) =>\n                <OrderSummaryDiscount\n                    amount={ giftCertificate.used }\n                    code={ giftCertificate.code }\n                    key={ index }\n                    label={ <TranslatedString id=\"cart.gift_certificate_text\" /> }\n                    onRemoved={ onRemovedGiftCertificate }\n                    remaining={ giftCertificate.remaining }\n                    testId=\"cart-gift-certificate\"\n                />\n        ) }\n\n        { !!giftWrappingAmount && <OrderSummaryPrice\n            amount={ giftWrappingAmount }\n            label={ <TranslatedString id=\"cart.gift_wrapping_text\" /> }\n            testId=\"cart-gift-wrapping\"\n        /> }\n\n        <OrderSummaryPrice\n            amount={ shippingAmount }\n            label={ <TranslatedString id=\"cart.shipping_text\" /> }\n            testId=\"cart-shipping\"\n            zeroLabel={ <TranslatedString id=\"cart.free_text\" /> }\n        />\n\n        { !!handlingAmount && <OrderSummaryPrice\n            amount={ handlingAmount }\n            label={ <TranslatedString id=\"cart.handling_text\" /> }\n            testId=\"cart-handling\"\n        /> }\n\n        { (taxes || [])\n            .map((tax, index) =>\n                <OrderSummaryPrice\n                    amount={ tax.amount }\n                    key={ index }\n                    label={ tax.name }\n                    testId=\"cart-taxes\"\n                />\n         ) }\n\n        { !!storeCreditAmount && <OrderSummaryDiscount\n            amount={ storeCreditAmount }\n            label={ <TranslatedString id=\"cart.store_credit_text\" /> }\n            testId=\"cart-store-credit\"\n        /> }\n    </Fragment>);\n};\n\nexport default memo(OrderSummarySubtotals);\n","import React, { FunctionComponent } from 'react';\n\nconst IconGiftCertificate: FunctionComponent = () => (\n    <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path d=\"M20 6h-2.18c.11-.31.18-.65.18-1a2.996 2.996 0 0 0-5.5-1.65l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z\" />\n    </svg>\n);\n\nexport default IconGiftCertificate;\n","import React, { FunctionComponent } from 'react';\n\nimport { TranslatedString } from '../locale';\n\nconst OrderSummaryHeader: FunctionComponent = ({ children }) => (\n    <header className=\"cart-header\">\n        <h3 className=\"cart-title optimizedCheckout-headingSecondary\">\n            <TranslatedString id=\"cart.cart_heading\" />\n        </h3>\n       { children }\n    </header>\n);\n\nexport default OrderSummaryHeader;\n","import { LineItemMap, ShopperCurrency, StoreCurrency } from '@bigcommerce/checkout-sdk';\nimport React, { useMemo, FunctionComponent, ReactNode } from 'react';\n\nimport removeBundledItems from './removeBundledItems';\nimport OrderSummaryHeader from './OrderSummaryHeader';\nimport OrderSummaryItems from './OrderSummaryItems';\nimport OrderSummarySection from './OrderSummarySection';\nimport OrderSummarySubtotals, { OrderSummarySubtotalsProps } from './OrderSummarySubtotals';\nimport OrderSummaryTotal from './OrderSummaryTotal';\n\nexport interface OrderSummaryProps {\n    lineItems: LineItemMap;\n    total: number;\n    headerLink: ReactNode;\n    storeCurrency: StoreCurrency;\n    shopperCurrency: ShopperCurrency;\n    additionalLineItems?: ReactNode;\n}\n\nconst OrderSummary: FunctionComponent<OrderSummaryProps & OrderSummarySubtotalsProps> = ({\n    storeCurrency,\n    shopperCurrency,\n    headerLink,\n    additionalLineItems,\n    lineItems,\n    total,\n    ...orderSummarySubtotalsProps\n}) => {\n    const nonBundledLineItems = useMemo(() => (\n        removeBundledItems(lineItems)\n    ), [lineItems]);\n\n    return <article className=\"cart optimizedCheckout-orderSummary\" data-test=\"cart\">\n        <OrderSummaryHeader>\n            { headerLink }\n        </OrderSummaryHeader>\n\n        <OrderSummarySection>\n            <OrderSummaryItems items={ nonBundledLineItems } />\n        </OrderSummarySection>\n\n        <OrderSummarySection>\n            <OrderSummarySubtotals\n                { ...orderSummarySubtotalsProps }\n            />\n            { additionalLineItems }\n        </OrderSummarySection>\n\n        <OrderSummarySection>\n            <OrderSummaryTotal\n                orderAmount={ total }\n                shopperCurrencyCode={ shopperCurrency.code }\n                storeCurrencyCode={ storeCurrency.code }\n            />\n        </OrderSummarySection>\n    </article>;\n};\n\nexport default OrderSummary;\n","import { LineItemMap } from '@bigcommerce/checkout-sdk';\n\nexport default function removeBundledItems(lineItems: LineItemMap): LineItemMap {\n    return {\n        ...lineItems,\n        physicalItems: lineItems.physicalItems.filter(item => (typeof item.parentId !== 'string')),\n        digitalItems: lineItems.digitalItems.filter(item => (typeof item.parentId !== 'string')),\n    };\n}\n"],"sourceRoot":""}