{"version":3,"file":"CartTotals-CLwcaRuk.js","sources":["../../../app/javascript/components/cart/CartTotal.vue","../../../app/javascript/components/cart/CartTotals.vue"],"sourcesContent":["<template>\n  <div class=\"cart-total flex justify-between items-center\">\n    <span>{{ title }}</span>\n    <div\n      :data-cy=\"`cart-${title}`\"\n      class=\"flex items-center\">\n      {{ cartTotal.formatted }}\n      <span v-if=\"estimatedTotal && showAsterisk\">*</span>\n      <span\n        v-if=\"hasDiscount\"\n        class=\"typeset-8 mb-0 bg-sunflower strikethrough p-2 ml-2 text-ink\">\n        {{ baseTotal.formatted }}\n      </span>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: \"CartTotal\",\n  props: {\n    title: {\n      type: String,\n      default: \"\"\n    },\n    cartTotal: {\n      type: Object,\n      default: () => ({})\n    },\n    baseTotal: {\n      type: Object,\n      required: false\n    },\n    code: {\n      type: String,\n      required: false,\n      default: null\n    },\n    estimatedTotal: {\n      type: Boolean,\n      default: false\n    },\n    showAsterisk: {\n      type: Boolean,\n      default: true\n    }\n  },\n  computed: {\n    hasDiscount() {\n      if (this.baseTotal) {\n        return this.baseTotal.raw > this.cartTotal.raw;\n      }\n\n      return false;\n    }\n  }\n};\n</script>\n","<template>\n  <div>\n    <fade-transition>\n      <overlay v-show=\"loading\" />\n    </fade-transition>\n    <transition-group\n      name=\"cart-totals\"\n      tag=\"div\"\n      class=\"cart-totals\">\n      <cart-total\n        key=\"subtotal\"\n        :title=\"t('cart.totals.subtotal')\"\n        :cart-total=\"subtotal\"\n        :estimated-total=\"estimatedTotal\"\n        class=\"cart-totals-line my-3\" />\n\n      <cart-total\n        v-if=\"negotiatedDiscount && negotiatedDiscount.raw > 0\"\n        key=\"negotiated-discount\"\n        title=\"Bulk order discount\"\n        :cart-total=\"negotiatedDiscount\"\n        class=\"text-green discount-line-promotion cart-totals-line my-3 typeset-7\" />\n\n      <cart-total\n        v-if=\"dynamicBundleDiscount && dynamicBundleDiscount.raw > 0\"\n        key=\"dynamic-bundle-discount\"\n        title=\"Set discount\"\n        :cart-total=\"dynamicBundleDiscount\"\n        class=\"text-green discount-line-promotion cart-totals-line my-3 typeset-7\" />\n\n      <cart-total\n        v-for=\"(promotion, index) in promotions\"\n        :key=\"promotion.name\"\n        :title=\"promotion.name\"\n        :cart-total=\"promotion.discount\"\n        :data-cy=\"`promotion-line-cart-total-${index}`\"\n        class=\"cart-totals-line discount-line-promotion text-green my-3\" />\n\n      <div key=\"cart-discount\">\n        <cart-total\n          v-for=\"code in discountCodes\"\n          :key=\"code.name\"\n          :title=\"code.name\"\n          :code=\"code.code\"\n          :cart-total=\"code.discount\"\n          class=\"cart-totals-line text-green my-3\" />\n      </div>\n\n      <cart-total\n        v-if=\"!simpleTotal && credit.raw < 0\"\n        key=\"credit\"\n        :cart-total=\"credit\"\n        :title=\"t('cart.totals.credit')\"\n        class=\"cart-totals-line text-ink-3 my-3\" />\n\n      <cart-total\n        v-if=\"strippedUkVat.raw < 0\"\n        key=\"strippedUkVat\"\n        :cart-total=\"strippedUkVat\"\n        title=\"UK VAT reduction\"\n        class=\"cart-totals-line my-3\" />\n\n      <cart-total\n        v-if=\"showShippingTotal\"\n        key=\"shipping\"\n        :show-asterisk=\"false\"\n        :title=\"t('cart.totals.shipping')\"\n        :cart-total=\"shipping\"\n        :base-total=\"baseShipping\"\n        :estimated-total=\"estimatedTotal\"\n        :class=\"{ 'text-forest': shipping.raw === 0 }\"\n        class=\"cart-totals-line my-3\" />\n\n      <cart-total\n        v-if=\"!simpleTotal && salesTax.raw > 0\"\n        key=\"salesTax\"\n        :cart-total=\"salesTax\"\n        :estimated-total=\"estimatedTotal\"\n        :title=\"t('cart.totals.tax')\"\n        class=\"cart-totals-line my-3\" />\n\n      <cart-total\n        v-if=\"!simpleTotal && extraCharge.raw > 0\"\n        key=\"extraCharge\"\n        :cart-total=\"extraCharge\"\n        :title=\"t('cart.totals.extra-charge')\"\n        :estimated-total=\"estimatedTotal\"\n        class=\"cart-totals-line my-3\" />\n\n      <p\n        v-if=\"estimatedTotal\"\n        class=\"typeset-7 text-ink-4\">\n        Subject to change, discounts applied during review stage\n      </p>\n      <span v-if=\"showTaxMessage && !paymentRequestModalOpen\">\n        {{ t(\"cart.totals.tax-calculation-message\") }}\n      </span>\n\n      <div\n        v-if=\"showDdpGuarantee\"\n        class=\"border border-ink-2 p-4 flex gap-x-4 my-4\">\n        <svg-icon\n          class=\"flex-no-shrink\"\n          name=\"info\"\n          height=\"13px\"\n          width=\"13px\" />\n        <p>{{ t(\"cart.totals.ddp-guarantee\") }}</p>\n      </div>\n\n      <cart-total\n        key=\"amount-to-pay\"\n        :cart-total=\"total\"\n        :title=\"totalLabelAdjustedForEstimate\"\n        data-cy=\"cart-total-section\"\n        class=\"cart-totals-line text-ink typeset-6 pt-4 mt-4\"\n        :class=\"{ 'border-t border-ink-1': !showDdpGuarantee }\" />\n\n      <div\n        v-if=\"estimatedTotal && !isCheckout\"\n        class=\"text-ink typeset-6 border-t border-ink-2 pt-5 my-5\">\n        <p class=\"typeset-7 mb-3\">\n          {{ t(\"cart.totals.negotiation-message-1\") }}\n        </p>\n        <p class=\"typeset-7 mb-3\">\n          {{ t(\"cart.totals.negotiation-message-2\") }}\n        </p>\n        <p class=\"typeset-7\">\n          {{ t(\"cart.totals.negotiation-message-3\") }}\n        </p>\n      </div>\n    </transition-group>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport CartTotal from \"./CartTotal.vue\";\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport Overlay from \"../shared/Overlay.vue\";\nimport SvgIcon from \"../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"CartTotals\",\n  components: {\n    CartTotal,\n    FadeTransition,\n    Overlay,\n    SvgIcon\n  },\n  props: {\n    showShippingTotal: {\n      type: Boolean,\n      default: true\n    },\n    estimatedTotal: {\n      type: Boolean,\n      default: false\n    },\n    isCheckout: {\n      type: Boolean,\n      default: false\n    },\n    location: {\n      type: String,\n      default: null\n    }\n  },\n  computed: {\n    ...mapState(\"totals\", [\n      \"loading\",\n      \"subtotal\",\n      \"shipping\",\n      \"baseShipping\",\n      \"total\",\n      \"promotions\",\n      \"discountCodes\",\n      \"credit\",\n      \"salesTax\",\n      \"extraCharge\",\n      \"preCreditTotal\",\n      \"strippedUkVat\",\n      \"negotiatedDiscount\",\n      \"dynamicBundleDiscount\"\n    ]),\n    ...mapState(\"cart\", [\"items\", \"paymentRequestModalOpen\"]),\n    showTaxMessage() {\n      return (\n        (window.countryCode === \"/us\" || window.countryCode === \"/ca\") &&\n        this.location === \"cart\"\n      );\n    },\n    showDdpGuarantee() {\n      return window.countryCode === \"/ca\";\n    },\n    simpleTotal() {\n      return (\n        this.preCreditTotal.raw === this.total.raw && this.salesTax.raw === 0.0\n      );\n    },\n    totalLabel() {\n      return this.simpleTotal\n        ? this.t(\"cart.totals.total\")\n        : this.t(\"cart.totals.amount-to-pay\");\n    },\n    totalLabelAdjustedForEstimate() {\n      if (this.estimatedTotal) {\n        return `Estimated total`;\n      }\n      return this.totalLabel;\n    },\n    b2bSlaLength() {\n      return this.items\n        .map(item => {\n          return item.negotiation ? item.negotiation.days_to_produce : 0;\n        })\n        .sort((a, b) => b - a)[0];\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.cart-totals {\n  position: relative;\n  transform-style: preserve-3d;\n  perspective: 800px;\n}\n\n.cart-totals-line {\n  transition:\n    opacity 0.2s ease-in-out,\n    transform 0.4s ease-in-out;\n}\n\n.cart-totals-enter-from,\n.cart-totals-leave-to {\n  opacity: 0;\n  transform: translateZ(-200px);\n}\n\n.cart-totals-enter-active {\n  transition:\n    opacity 0.2s ease-in-out,\n    transform 0.4s ease-in-out;\n}\n\n.cart-totals-enter-to {\n  opacity: 1;\n  transform: translateZ(0);\n}\n\n.cart-totals-move {\n  transition:\n    opacity 0.2s ease-in-out,\n    transform 0.4s ease-in-out;\n}\n\n.cart-totals-leave-active {\n  position: absolute;\n  width: 100%;\n  transition:\n    opacity 0.2s ease-in-out,\n    transform 0.4s ease-in-out;\n}\n</style>\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createElementVNode","$props","_createTextVNode","_toDisplayString","_hoisted_3","_createCommentVNode","$options","_hoisted_4","CartTotal","FadeTransition","Overlay","SvgIcon","mapState","item","a","b","_hoisted_6","_hoisted_7","_hoisted_8","_createVNode","_component_fade_transition","_withCtx","_component_overlay","_ctx","_TransitionGroup","_component_cart_total","_createBlock","_Fragment","_renderList","promotion","index","code","_normalizeClass","_component_svg_icon","_hoisted_5"],"mappings":"gWAkBA,MAAKA,EAAU,CACb,KAAM,YACN,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,EACV,EACD,UAAW,CACT,KAAM,OACN,QAAS,KAAO,CAAE,EACnB,EACD,UAAW,CACT,KAAM,OACN,SAAU,EACX,EACD,KAAM,CACJ,KAAM,OACN,SAAU,GACV,QAAS,IACV,EACD,eAAgB,CACd,KAAM,QACN,QAAS,EACV,EACD,aAAc,CACZ,KAAM,QACN,QAAS,EACX,CACD,EACD,SAAU,CACR,aAAc,CACZ,OAAI,KAAK,UACA,KAAK,UAAU,IAAM,KAAK,UAAU,IAGtC,EACT,CACF,CACF,EAvDOC,EAAA,CAAA,MAAM,8CAA8C,EAD3DC,EAAA,CAAA,SAAA,KAAA,IAAA,CAAA,KAAA,IAAA,EAUQ,MAAM,uFATZ,OAAAC,EAAA,EAAAC,EAaM,MAbNH,EAaM,CAZJI,EAAwB,cAAfC,EAAK,KAAA,EAAA,CAAA,EACdD,EAUM,MAAA,CATH,kBAAiBC,EAAK,KAAA,GACvB,MAAM,sBALZC,EAAAC,EAMSF,EAAS,UAAC,SAAS,EAAG,IACzB,CAAA,EAAYA,EAAA,gBAAkBA,EAAY,kBAA1CF,EAAoD,OAP1DK,EAOkD,GAAC,GAPnDC,EAAA,GAAA,EAAA,EAScC,EAAW,aADnBR,EAAA,EAAAC,EAIO,OAJPQ,EAGKJ,EAAAF,EAAA,UAAU,SAAS,EAAA,CAAA,GAX9BI,EAAA,GAAA,EAAA,CAAA,EAAA,EAAAR,CAAA,gCC8IKF,EAAU,CACb,KAAM,aACN,WAAY,CACV,UAAAa,EACA,eAAAC,EACA,QAAAC,EACAC,QAAAA,CACD,EACD,MAAO,CACL,kBAAmB,CACjB,KAAM,QACN,QAAS,EACV,EACD,eAAgB,CACd,KAAM,QACN,QAAS,EACV,EACD,WAAY,CACV,KAAM,QACN,QAAS,EACV,EACD,SAAU,CACR,KAAM,OACN,QAAS,IACX,CACD,EACD,SAAU,CACR,GAAGC,EAAS,SAAU,CACpB,UACA,WACA,WACA,eACA,QACA,aACA,gBACA,SACA,WACA,cACA,iBACA,gBACA,qBACA,uBACF,CAAC,EACD,GAAGA,EAAS,OAAQ,CAAC,QAAS,yBAAyB,CAAC,EACxD,gBAAiB,CACf,OACG,OAAO,cAAgB,OAAS,OAAO,cAAgB,QACxD,KAAK,WAAa,MAErB,EACD,kBAAmB,CACjB,OAAO,OAAO,cAAgB,KAC/B,EACD,aAAc,CACZ,OACE,KAAK,eAAe,MAAQ,KAAK,MAAM,KAAO,KAAK,SAAS,MAAQ,CAEvE,EACD,YAAa,CACX,OAAO,KAAK,YACR,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,2BAA2B,CACvC,EACD,+BAAgC,CAC9B,OAAI,KAAK,eACA,kBAEF,KAAK,UACb,EACD,cAAe,CACb,OAAO,KAAK,MACT,IAAIC,GACIA,EAAK,YAAcA,EAAK,YAAY,gBAAkB,CAC9D,EACA,KAAK,CAACC,EAAGC,IAAMA,EAAID,CAAC,EAAE,CAAC,CAC5B,CACF,CACF,EArLWlB,EAAA,CAAA,IAAI,eAAe,KAtC9B,IAAA,EA2FQ,MAAM,2BA3Fd,IAAA,CAAA,KAAA,IAAA,EAoGQ,MAAM,gDApGd,IAAA,GAuHQ,MAAM,sDACHoB,EAAA,CAAA,MAAM,gBAAgB,EAGtBC,EAAA,CAAA,MAAM,gBAAgB,EAGtBC,EAAA,CAAA,MAAM,WAAW,mHA7H1BnB,EAkIM,MAAA,KAAA,CAjIJoB,EAEkBC,EAAA,KAAA,CAJtB,QAAAC,EAGM,IAA4B,GAA5BF,EAA4BG,EAAA,KAAA,KAAA,GAAA,EAAA,IAAXC,EAAO,OAAA,MAH9B,EAAA,IAKIJ,EA6HmBK,EAAA,CA5HjB,KAAK,cACL,IAAI,MACJ,MAAM,gBARZ,QAAAH,EASM,IAKkC,CALlCF,EAKkCM,EAAA,CAJhC,IAAI,WACH,MAAOF,EAAC,EAAA,sBAAA,EACR,aAAYA,EAAQ,SACpB,kBAAiBtB,EAAc,eAChC,MAAM,0EAGAsB,EAAkB,oBAAIA,EAAkB,mBAAC,IAAG,OADpDG,EAK+ED,EAAA,CAH7E,IAAI,sBACJ,MAAM,sBACL,aAAYF,EAAkB,mBAC/B,MAAM,8FArBdlB,EAAA,GAAA,EAAA,EAwBckB,EAAqB,uBAAIA,EAAqB,sBAAC,IAAG,OAD1DG,EAK+ED,EAAA,CAH7E,IAAI,0BACJ,MAAM,eACL,aAAYF,EAAqB,sBAClC,MAAM,8FA5BdlB,EAAA,GAAA,EAAA,GA8BMP,EAAA,EAAA,EAAAC,EAMqE4B,OApC3EC,EA+BqCL,EAAA,WA/BrC,CA+BgBM,EAAWC,SADrBJ,EAMqED,EAAA,CAJlE,IAAKI,EAAU,KACf,MAAOA,EAAU,KACjB,aAAYA,EAAU,SACtB,uCAAsCC,CAAK,GAC5C,MAAM,6GAER9B,EAQM,MARNJ,EAQM,EAPJE,EAAA,EAAA,EAAAC,EAM6C4B,EA7CrD,KAAAC,EAwCyBL,EAAa,cAArBQ,QADTL,EAM6CD,EAAA,CAJ1C,IAAKM,EAAK,KACV,MAAOA,EAAK,KACZ,KAAMA,EAAK,KACX,aAAYA,EAAK,SAClB,MAAM,qFAIDzB,EAAW,aAAIiB,EAAM,OAAC,IAAG,OADlCG,EAK6CD,EAAA,CAH3C,IAAI,SACH,aAAYF,EAAM,OAClB,MAAOA,EAAC,EAAA,oBAAA,EACT,MAAM,oEArDdlB,EAAA,GAAA,EAAA,EAwDckB,EAAA,cAAc,IAAG,OADzBG,EAKkCD,EAAA,CAHhC,IAAI,gBACH,aAAYF,EAAa,cAC1B,MAAM,mBACN,MAAM,iDA5DdlB,EAAA,GAAA,EAAA,EA+DcJ,EAAiB,uBADzByB,EASkCD,EAAA,CAPhC,IAAI,WACH,gBAAe,GACf,MAAOF,EAAC,EAAA,sBAAA,EACR,aAAYA,EAAQ,SACpB,aAAYA,EAAY,aACxB,kBAAiBtB,EAAc,eAC/B,MAtET+B,EAsEiC,CAAA,CAAA,cAAAT,EAAA,SAAS,SAC5B,uBAAuB,CAAA,0EAvErClB,EAAA,GAAA,EAAA,GA0EeC,EAAW,aAAIiB,EAAQ,SAAC,IAAG,OADpCG,EAMkCD,EAAA,CAJhC,IAAI,WACH,aAAYF,EAAQ,SACpB,kBAAiBtB,EAAc,eAC/B,MAAOsB,EAAC,EAAA,iBAAA,EACT,MAAM,2EA/EdlB,EAAA,GAAA,EAAA,GAkFeC,EAAW,aAAIiB,EAAW,YAAC,IAAG,OADvCG,EAMkCD,EAAA,CAJhC,IAAI,cACH,aAAYF,EAAW,YACvB,MAAOA,EAAC,EAAA,0BAAA,EACR,kBAAiBtB,EAAc,eAChC,MAAM,2EAvFdI,EAAA,GAAA,EAAA,EA0FcJ,EAAc,oBADtBF,EAII,IAJJF,EAE+B,4DAE/B,GA7FNQ,EAAA,GAAA,EAAA,EA8FkBC,EAAA,iBAAmBiB,EAAuB,6BAAtDxB,EAEO,OAhGbK,IA+FWmB,EAAC,EAAA,qCAAA,CAAA,EAAA,CAAA,GA/FZlB,EAAA,GAAA,EAAA,EAmGcC,EAAgB,kBADxBR,IAAAC,EASM,MATNQ,EASM,CANJY,EAIiBc,EAAA,CAHf,MAAM,iBACN,KAAK,OACL,OAAO,OACP,MAAM,SACRjC,EAA2C,WAArCuB,EAAC,EAAA,2BAAA,CAAA,EAAA,CAAA,KA1GflB,EAAA,GAAA,EAAA,EA6GMc,EAM4DM,EAAA,CAL1D,IAAI,gBACH,aAAYF,EAAK,MACjB,MAAOjB,EAA6B,8BACrC,UAAQ,qBACR,MAlHR0B,EAAA,CAkHc,gDAA+C,CAAA,wBAAA,CACjB1B,EAAgB,iBAAA,CAAA,0CAG9CL,EAAA,iBAAmBA,EAAU,YADrCH,IAAAC,EAYM,MAZNmC,EAYM,CATJlC,EAEI,IAFJgB,EAEIb,EADCoB,EAAC,EAAA,mCAAA,CAAA,EAAA,CAAA,EAENvB,EAEI,IAFJiB,EAEId,EADCoB,EAAC,EAAA,mCAAA,CAAA,EAAA,CAAA,EAENvB,EAEI,IAFJkB,EAEIf,EADCoB,EAAC,EAAA,mCAAA,CAAA,EAAA,CAAA,KA/HdlB,EAAA,GAAA,EAAA,IAAA,EAAA"}