{"version":3,"sources":["webpack://checkout/./src/app/ui/modal/ModalTrigger.tsx","webpack://checkout/./src/app/order/getLineItemsCount.ts","webpack://checkout/./src/app/order/OrderSummaryModal.tsx","webpack://checkout/./src/app/order/OrderSummaryDrawer.tsx","webpack://checkout/./src/app/cart/CartSummaryDrawer.tsx"],"names":["state","isOpen","canHandleEvent","handleOpen","setState","handleClose","componentDidMount","this","componentWillUnmount","render","props","children","modal","onClick","onRequestClose","getLineItemsCount","physicalItems","digitalItems","giftCertificates","customItems","length","renderHeader","headerLink","className","href","preventDefault","TranslatedString","id","IconClose","ModalHeader","additionalClassName","additionalLineItems","onAfterOpen","storeCurrency","shopperCurrency","lineItems","total","orderSummarySubtotalsProps","Modal","additionalBodyClassName","additionalHeaderClassName","header","OrderSummarySection","OrderSummaryItems","items","OrderSummarySubtotals","OrderSummaryTotal","orderAmount","shopperCurrencyCode","code","storeCurrencyCode","coupons","discountAmount","handlingAmount","onRemovedCoupon","onRemovedGiftCertificate","shippingAmount","storeCreditAmount","giftWrappingAmount","subtotalAmount","taxes","renderModal","ModalTrigger","productWithImage","imageUrl","alt","name","src","IconGiftCertificate","getImage","data","count","getItemsCount","ShopperCurrency","amount","cartUrl","url"],"mappings":"sIAgBA,yE,OACI,EAAAA,MAAQ,CACJC,QAAQ,GAGJ,EAAAC,gBAA0B,EA0B1B,EAAAC,WAAyB,WACxB,EAAKD,gBAIV,EAAKE,SAAS,CACVH,QAAQ,KAIR,EAAAI,YAA0B,WACzB,EAAKH,gBAIV,EAAKE,SAAS,CACVH,QAAQ,K,EAGpB,OAlD0C,yBAOtC,YAAAK,kBAAA,WACIC,KAAKL,gBAAiB,GAG1B,YAAAM,qBAAA,WACID,KAAKL,gBAAiB,GAG1B,YAAAO,OAAA,WACU,MAAsBF,KAAKG,MAAzBC,EAAQ,WAAEC,EAAK,QACfX,EAAWM,KAAKP,MAAK,OAE7B,OACI,kBAAC,WAAQ,KACHW,EAAS,CAAEE,QAASN,KAAKJ,aAEzBS,EAAM,CACJX,OAAM,EACNa,eAAgBP,KAAKF,gBAyBzC,EAlDA,CAA0C,a,6ICd3B,SAASU,EAAkB,G,IACtCC,EAAa,gBACbC,EAAY,eACZC,EAAgB,mBAChBC,EAAW,cAEX,OAAOH,EAAcI,OACjBH,EAAaG,OACbF,EAAiBE,QAChBD,GAAe,IAAIC,O,oFCsDtBC,EAGD,SAAC,G,IACFP,EAAc,iBACdQ,EAAU,aACR,OAAC,kBAAC,WAAQ,KACZ,uBACIC,UAAU,mBACVC,KAAK,IACLX,QAAU,OAAAY,EAAA,GAAeX,IAEzB,0BAAMS,UAAU,aACZ,kBAACG,EAAA,EAAgB,CAACC,GAAG,yBAEzB,kBAACC,EAAA,EAAS,OAEd,kBAACC,EAAA,EAAW,CAACC,oBAAoB,oBAC7B,kBAACJ,EAAA,EAAgB,CAACC,GAAG,uBAGvBL,IAGS,EAhEoF,SAAC,GAChG,IAAAS,EAAmB,sBAEnBjB,GADQ,WACM,kBACdkB,EAAW,cACXC,EAAa,gBACbC,EAAe,kBACfjC,EAAM,SACNqB,EAAU,aACVa,EAAS,YACTC,EAAK,QACFC,EAA0B,mBAXmE,+IAY9F,OACN,kBAACC,EAAA,EAAK,CACFC,wBAAwB,iDACxBC,0BAA0B,mDAC1BC,OAASpB,EAAa,CAAEC,WAAU,EAAER,eAAc,IAClDb,OAASA,EACT+B,YAAcA,EACdlB,eAAiBA,GAEjB,kBAAC4B,EAAA,EAAmB,KAChB,kBAACC,EAAA,EAAiB,CAACC,MAAQT,KAE/B,kBAACO,EAAA,EAAmB,KAChB,kBAACG,EAAA,EAAqB,sBACbR,IAEPN,GAEN,kBAACW,EAAA,EAAmB,KAChB,kBAACI,EAAA,EAAiB,CACdC,YAAcX,EACdY,oBAAsBd,EAAgBe,KACtCC,kBAAoBjB,EAAcgB,UC2E/B,0BA/GqF,SAAC,G,IACjGlB,EAAmB,sBACnBoB,EAAO,UACPC,EAAc,iBACdlC,EAAgB,mBAChBmC,EAAc,iBACd/B,EAAU,aACVa,EAAS,YACTmB,EAAe,kBACfC,EAAwB,2BACxBC,EAAc,iBACdtB,EAAe,kBACfuB,EAAiB,oBACjBC,EAAkB,qBAClBzB,EAAa,gBACb0B,EAAc,iBACdC,EAAK,QACLxB,EAAK,QAECyB,EAAc,uBAAY,SAAAnD,GAAS,OACrC,kBAAC,EAAiB,sBACTA,EAAK,CACVqB,oBAAsBA,EACtBoB,QAAUA,EACVC,eAAiBA,EACjBlC,iBAAmBA,EACnBwC,mBAAsBA,EACtBL,eAAiBA,EACjB/B,WAAaA,EACba,UAAYA,EACZmB,gBAAkBA,EAClBC,yBAA2BA,EAC3BC,eAAiBA,EACjBtB,gBAAkBA,EAClBuB,kBAAoBA,EACpBxB,cAAgBA,EAChB0B,eAAiBA,EACjBC,MAAQA,EACRxB,MAAQA,OAEb,CACCL,EACAoB,EACAC,EACAlC,EACAmC,EACA/B,EACAa,EACAmB,EACAC,EACAG,EACAF,EACAtB,EACAuB,EACAxB,EACA0B,EACAC,EACAxB,IAGJ,OAAO,kBAAC0B,EAAA,EAAY,CAAClD,MAAQiD,IACvB,SAAC,G,IAAEhD,EAAO,UAAO,gCACfU,UAAU,4CACVV,QAAUA,GAEV,4BACIU,UAAY,IACR,oBACA,CAAE,2BAA4BR,EAAkBoB,GAAa,KAGjE,yBAAKZ,UAAU,2BAwB/B,SAAkBY,GACd,IAAM4B,EAAmB5B,EAAUnB,cAAc,IAAMmB,EAAUlB,aAAa,GAE9E,GAAI8C,GAAoBA,EAAiBC,SACrC,OAAO,yBACHC,IAAMF,EAAiBG,KAAI,YACjB,kBACVC,IAAMJ,EAAiBC,WAI/B,GAAI7B,EAAUjB,iBAAiBE,OAC3B,OAAO,kBAACgD,EAAA,EAAmB,MAnCbC,CAASlC,KAGnB,yBAAKZ,UAAU,mBACX,wBAAIA,UAAU,qDACV,kBAACG,EAAA,EAAgB,CACb4C,KAAO,CAAEC,MAAO,OAAAC,EAAA,GAAcrC,IAC9BR,GAAG,0BAGX,2BACI,kBAACD,EAAA,EAAgB,CAACC,GAAG,+BAG7B,yBAAKJ,UAAU,sBACX,wBAAIA,UAAU,qDACV,kBAACkD,EAAA,EAAe,CAACC,OAAStC,c,qHCrF/B,sBAAa,IAAb,CAAoC,gBAhBwB,SAAC,GACxE,IAAAuC,EAAO,UACJjE,EAAK,mBAFgE,aAGtE,OACF,YAAe,UADb,CACiC,yCAC5BA,GAAK,CACRiE,QAAO,EACPrD,WACI,kBAAC,IAAQ,CACLC,UAAU,oCACVqD,IAAMD","file":"cart-summary-drawer-fba29b8a.js","sourcesContent":["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 { 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","import React, { memo, FunctionComponent } from 'react';\n\nimport { withCheckout } from '../checkout';\nimport OrderSummaryDrawer from '../order/OrderSummaryDrawer';\n\nimport mapToCartSummaryProps from './mapToCartSummaryProps';\nimport withRedeemable from './withRedeemable';\nimport { WithCheckoutCartSummaryProps } from './CartSummary';\nimport EditLink from './EditLink';\n\nconst CartSummaryDrawer: FunctionComponent<WithCheckoutCartSummaryProps> = ({\n    cartUrl,\n    ...props\n}) => (\n    withRedeemable(OrderSummaryDrawer)({\n        ...props,\n        cartUrl,\n        headerLink: (\n            <EditLink\n                className=\"modal-header-link cart-modal-link\"\n                url={ cartUrl }\n            />\n        ),\n    })\n);\n\nexport default withCheckout(mapToCartSummaryProps)(memo(CartSummaryDrawer));\n"],"sourceRoot":""}