{"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/modal/ModalTrigger.tsx","webpack://checkout/./src/app/ui/icon/IconGiftCertificate.tsx","webpack://checkout/./src/app/order/getLineItemsCount.ts","webpack://checkout/./src/app/order/OrderSummaryModal.tsx","webpack://checkout/./src/app/order/OrderSummaryDrawer.tsx"],"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","isOpen","canHandleEvent","handleOpen","handleClose","componentDidMount","componentWillUnmount","modal","onRequestClose","getLineItemsCount","renderHeader","headerLink","preventDefault","IconClose","ModalHeader","additionalClassName","additionalLineItems","onAfterOpen","storeCurrency","shopperCurrency","lineItems","orderSummarySubtotalsProps","Modal","additionalBodyClassName","additionalHeaderClassName","header","OrderSummarySection","OrderSummaryItems","OrderSummarySubtotals","OrderSummaryTotal","renderModal","ModalTrigger","productWithImage","getImage"],"mappings":"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","file":"order-summary-drawer-9e46b94b.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, { Component, Fragment, MouseEventHandler, ReactNode } from 'react';\n\nexport interface ModalTriggerProps {\n    children(props: { onClick: MouseEventHandler }): ReactNode;\n    modal(props: ModalTriggerModalProps): ReactNode;\n}\n\nexport interface ModalTriggerModalProps {\n    isOpen: boolean;\n    onRequestClose(): void;\n}\n\nexport interface ModalTriggerState {\n    isOpen: boolean;\n}\n\nexport default class ModalTrigger extends Component<ModalTriggerProps, ModalTriggerState> {\n    state = {\n        isOpen: false,\n    };\n\n    private canHandleEvent: boolean = false;\n\n    componentDidMount(): void {\n        this.canHandleEvent = true;\n    }\n\n    componentWillUnmount(): void {\n        this.canHandleEvent = false;\n    }\n\n    render() {\n        const { children, modal } = this.props;\n        const { isOpen } = this.state;\n\n        return (\n            <Fragment>\n                { children({ onClick: this.handleOpen }) }\n\n                { modal({\n                    isOpen,\n                    onRequestClose: this.handleClose,\n                }) }\n            </Fragment>\n        );\n    }\n\n    private handleOpen: () => void = () => {\n        if (!this.canHandleEvent) {\n            return;\n        }\n\n        this.setState({\n            isOpen: true,\n        });\n    };\n\n    private handleClose: () => void = () => {\n        if (!this.canHandleEvent) {\n            return;\n        }\n\n        this.setState({\n            isOpen: false,\n        });\n    };\n}\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 { LineItemMap } from '@bigcommerce/checkout-sdk';\n\nexport default function getLineItemsCount({\n    physicalItems,\n    digitalItems,\n    giftCertificates,\n    customItems,\n}: LineItemMap): number {\n    return physicalItems.length +\n        digitalItems.length +\n        giftCertificates.length +\n        (customItems || []).length;\n}\n","import { LineItemMap, ShopperCurrency as ShopperCurrencyType, StoreCurrency } from '@bigcommerce/checkout-sdk';\nimport React, { Fragment, FunctionComponent, ReactNode } from 'react';\n\nimport { preventDefault } from '../common/dom';\nimport { TranslatedString } from '../locale';\nimport { IconClose } from '../ui/icon';\nimport { Modal, ModalHeader } from '../ui/modal';\n\nimport OrderSummaryItems from './OrderSummaryItems';\nimport OrderSummarySection from './OrderSummarySection';\nimport OrderSummarySubtotals, { OrderSummarySubtotalsProps } from './OrderSummarySubtotals';\nimport OrderSummaryTotal from './OrderSummaryTotal';\n\nexport interface OrderSummaryDrawerProps {\n    additionalLineItems?: ReactNode;\n    lineItems: LineItemMap;\n    total: number;\n    storeCurrency: StoreCurrency;\n    shopperCurrency: ShopperCurrencyType;\n    isOpen: boolean;\n    headerLink?: ReactNode;\n    onRequestClose?(): void;\n    onAfterOpen?(): void;\n}\n\nconst OrderSummaryModal: FunctionComponent<OrderSummaryDrawerProps & OrderSummarySubtotalsProps> = ({\n    additionalLineItems,\n    children,\n    onRequestClose,\n    onAfterOpen,\n    storeCurrency,\n    shopperCurrency,\n    isOpen,\n    headerLink,\n    lineItems,\n    total,\n    ...orderSummarySubtotalsProps\n}) => (\n<Modal\n    additionalBodyClassName=\"cart-modal-body optimizedCheckout-orderSummary\"\n    additionalHeaderClassName=\"cart-modal-header optimizedCheckout-orderSummary\"\n    header={ renderHeader({ headerLink, onRequestClose }) }\n    isOpen={ isOpen }\n    onAfterOpen={ onAfterOpen }\n    onRequestClose={ onRequestClose }\n>\n    <OrderSummarySection>\n        <OrderSummaryItems items={ lineItems } />\n    </OrderSummarySection>\n    <OrderSummarySection>\n        <OrderSummarySubtotals\n            { ...orderSummarySubtotalsProps }\n        />\n        { additionalLineItems }\n    </OrderSummarySection>\n    <OrderSummarySection>\n        <OrderSummaryTotal\n            orderAmount={ total }\n            shopperCurrencyCode={ shopperCurrency.code }\n            storeCurrencyCode={ storeCurrency.code }\n        />\n    </OrderSummarySection>\n</Modal>\n);\n\nconst renderHeader: FunctionComponent<{\n    headerLink: ReactNode;\n    onRequestClose?(): void;\n}> = ({\n    onRequestClose,\n    headerLink,\n}) => (<Fragment>\n    <a\n        className=\"cart-modal-close\"\n        href=\"#\"\n        onClick={ preventDefault(onRequestClose) }\n    >\n        <span className=\"is-srOnly\">\n            <TranslatedString id=\"common.close_action\" />\n        </span>\n        <IconClose />\n    </a>\n    <ModalHeader additionalClassName=\"cart-modal-title\">\n        <TranslatedString id=\"cart.cart_heading\" />\n    </ModalHeader>\n\n    { headerLink }\n</Fragment>);\n\nexport default OrderSummaryModal;\n","import { LineItemMap, ShopperCurrency as ShopperCurrencyType, StoreCurrency } from '@bigcommerce/checkout-sdk';\nimport classNames from 'classnames';\nimport React, { memo, useCallback, FunctionComponent, ReactNode } from 'react';\n\nimport { ShopperCurrency } from '../currency';\nimport { TranslatedString } from '../locale';\nimport { IconGiftCertificate } from '../ui/icon';\nimport { ModalTrigger } from '../ui/modal';\n\nimport getItemsCount from './getItemsCount';\nimport getLineItemsCount from './getLineItemsCount';\nimport OrderSummaryModal from './OrderSummaryModal';\nimport { OrderSummarySubtotalsProps } from './OrderSummarySubtotals';\n\nexport interface OrderSummaryDrawerProps {\n    lineItems: LineItemMap;\n    total: number;\n    headerLink: ReactNode;\n    storeCurrency: StoreCurrency;\n    shopperCurrency: ShopperCurrencyType;\n    additionalLineItems?: ReactNode;\n}\n\nconst OrderSummaryDrawer: FunctionComponent<OrderSummaryDrawerProps & OrderSummarySubtotalsProps> = ({\n    additionalLineItems,\n    coupons,\n    discountAmount,\n    giftCertificates,\n    handlingAmount,\n    headerLink,\n    lineItems,\n    onRemovedCoupon,\n    onRemovedGiftCertificate,\n    shippingAmount,\n    shopperCurrency,\n    storeCreditAmount,\n    giftWrappingAmount,\n    storeCurrency,\n    subtotalAmount,\n    taxes,\n    total,\n}) => {\n    const renderModal = useCallback(props => (\n        <OrderSummaryModal\n            { ...props }\n            additionalLineItems={ additionalLineItems }\n            coupons={ coupons }\n            discountAmount={ discountAmount }\n            giftCertificates={ giftCertificates }\n            giftWrappingAmount={  giftWrappingAmount }\n            handlingAmount={ handlingAmount }\n            headerLink={ headerLink }\n            lineItems={ lineItems }\n            onRemovedCoupon={ onRemovedCoupon }\n            onRemovedGiftCertificate={ onRemovedGiftCertificate }\n            shippingAmount={ shippingAmount }\n            shopperCurrency={ shopperCurrency }\n            storeCreditAmount={ storeCreditAmount }\n            storeCurrency={ storeCurrency }\n            subtotalAmount={ subtotalAmount }\n            taxes={ taxes }\n            total={ total }\n        />\n    ), [\n        additionalLineItems,\n        coupons,\n        discountAmount,\n        giftCertificates,\n        handlingAmount,\n        headerLink,\n        lineItems,\n        onRemovedCoupon,\n        onRemovedGiftCertificate,\n        giftWrappingAmount,\n        shippingAmount,\n        shopperCurrency,\n        storeCreditAmount,\n        storeCurrency,\n        subtotalAmount,\n        taxes,\n        total,\n    ]);\n\n    return <ModalTrigger modal={ renderModal }>\n        { ({ onClick }) => <div\n            className=\"cartDrawer optimizedCheckout-orderSummary\"\n            onClick={ onClick }\n        >\n            <figure\n                className={ classNames(\n                    'cartDrawer-figure',\n                    { 'cartDrawer-figure--stack': getLineItemsCount(lineItems) > 1 }\n                ) }\n            >\n                <div className=\"cartDrawer-imageWrapper\">\n                    { getImage(lineItems) }\n                </div>\n            </figure>\n            <div className=\"cartDrawer-body\">\n                <h3 className=\"cartDrawer-items optimizedCheckout-headingPrimary\">\n                    <TranslatedString\n                        data={ { count: getItemsCount(lineItems) } }\n                        id=\"cart.item_count_text\"\n                    />\n                </h3>\n                <a>\n                    <TranslatedString id=\"cart.show_details_action\" />\n                </a>\n            </div>\n            <div className=\"cartDrawer-actions\">\n                <h3 className=\"cartDrawer-total optimizedCheckout-headingPrimary\">\n                    <ShopperCurrency amount={ total } />\n                </h3>\n            </div>\n        </div> }\n    </ModalTrigger>;\n};\n\nfunction getImage(lineItems: LineItemMap): ReactNode {\n    const productWithImage = lineItems.physicalItems[0] || lineItems.digitalItems[0];\n\n    if (productWithImage && productWithImage.imageUrl) {\n        return <img\n            alt={ productWithImage.name }\n            data-test=\"cart-item-image\"\n            src={ productWithImage.imageUrl }\n        />;\n    }\n\n    if (lineItems.giftCertificates.length) {\n        return <IconGiftCertificate />;\n    }\n}\n\nexport default memo(OrderSummaryDrawer);\n"],"sourceRoot":""}