{"version":3,"file":"UpsellModal-U0Sol_sj.js","sources":["../../../app/javascript/components/addOns/extras/multiple/UpsellModal.vue"],"sourcesContent":["<template>\n  <modal\n    :open=\"!!upsell\"\n    @closed=\"closeModal\">\n    <template\n      v-if=\"upsell\"\n      #header>\n      <h3 class=\"typeset-3\">{{ t(\"stock-items.upsells.quick-view\") }}</h3>\n    </template>\n    <template\n      v-if=\"upsell\"\n      #body>\n      <div class=\"-mx-4\">\n        <div class=\"sm:px-8 px-4 m-auto pb-4\">\n          <div\n            ref=\"imageCarousel\"\n            class=\"upsell-carousel relative\">\n            <div\n              v-for=\"image in upsell.carousel_images\"\n              :key=\"image.id\"\n              class=\"carousel-cell mb-3\">\n              <img\n                :src=\"image.full\"\n                :alt=\"upsell.name\"\n                class=\"product-page-carousel-img img-responsive bg-paper\" />\n            </div>\n            <div\n              v-if=\"upsell.quantity && upsell.quantity > 0\"\n              class=\"border-2 border-green absolute top-0 left-0 right-0 bottom-3 z-2 pointer-events-none\">\n              <div\n                class=\"flex items-center text-white bg-green w-full py-2 justify-center\">\n                <svg-icon\n                  name=\"tick-circle\"\n                  height=\"12\"\n                  width=\"12\"\n                  class=\"mr-3\" />\n                <p>\n                  {{\n                    t(\"add-ons.flash-messages.added-multiple\", {\n                      count: upsell.quantity\n                    })\n                  }}\n                </p>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          v-if=\"perfectPartners || quickView\"\n          class=\"text-center mt-3 mb-6\">\n          <a\n            class=\"underline\"\n            :href=\"upsell.slug\">\n            {{ t(\"stock-items.upsells.view-full-link\") }}\n          </a>\n        </div>\n        <div class=\"m-auto px-4\">\n          <div class=\"flex justify-between items-start mb-5\">\n            <div>\n              <h2 class=\"typeset-6 mr-3 flex-no-shrink\">{{ upsell.name }}</h2>\n              <h2 class=\"typeset-7 mr-3 flex-no-shrink\">\n                {{ upsell.product_type_name }}\n              </h2>\n            </div>\n            <div class=\"flex items-center\">\n              <h2\n                v-if=\"upsell.price.has_discount\"\n                class=\"typeset-7 strikethrough bg-sunflower flex-no-shrink p-2 mr-2\">\n                {{ upsell.price.base }}\n              </h2>\n              <h2\n                v-if=\"!upsell.painted_door\"\n                class=\"typeset-6 mr-3 flex-no-shrink\">\n                {{ upsell.price.actual }}\n              </h2>\n            </div>\n          </div>\n        </div>\n        <h2\n          v-if=\"upsells.length > 1\"\n          class=\"typeset-6 mr-3 flex-no-shrink px-4 mt-4\">\n          {{ t(\"stock-items.upsells.colours\") }}\n        </h2>\n        <div\n          v-if=\"upsells.length > 1\"\n          class=\"grid-cols-7 mb-6 grid gap-3 overflow-x-auto px-4\">\n          <div\n            v-for=\"(variableUpsell, index) in upsells\"\n            :key=\"index\">\n            <div\n              :class=\"{ 'border border-ink': upsell.id === variableUpsell.id }\"\n              class=\"variant-attribute-custom-radio relative cursor-pointer border-ink\">\n              <div class=\"aspect-ratio-1x1\">\n                <div class=\"block h-full w-full object-contain\">\n                  <img\n                    :src=\"variableUpsell.image\"\n                    class=\"img-responsive\"\n                    :alt=\"variableUpsell.name\"\n                    @click=\"handleImageClick(index)\" />\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          v-if=\"upsell.highlights\"\n          class=\"flex-wrap mb-4 items-end parsed-markdown px-4\">\n          <h2 class=\"typeset-6 mr-3 flex-no-shrink mt-4\">\n            {{ t(\"product.highlights\") }}\n          </h2>\n          <p\n            class=\"typeset-7\"\n            v-html=\"upsell.highlights\"></p>\n        </div>\n        <div class=\"px-4\">\n          <slot></slot>\n        </div>\n      </div>\n    </template>\n  </modal>\n</template>\n<script>\nimport Flickity from \"flickity\";\n\nimport Modal from \"../../../shared/Modal.vue\";\nimport SvgIcon from \"../../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"UpsellModal\",\n  components: {\n    Modal,\n    SvgIcon\n  },\n  props: {\n    upsells: {\n      type: Array,\n      default: () => []\n    },\n    upsell: {\n      type: Object,\n      required: true\n    },\n    closeModal: {\n      type: Function,\n      default: () => {}\n    },\n    setCurrentModalImageIndex: {\n      type: Function,\n      default: () => {}\n    },\n    perfectPartners: {\n      type: Boolean,\n      default: false\n    },\n    quickView: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      flickity: null\n    };\n  },\n  mounted() {\n    this.setupCarousel();\n  },\n  methods: {\n    handleImageClick(index) {\n      this.setCurrentModalImageIndex(index);\n      this.setupCarousel();\n    },\n    setupCarousel() {\n      const carousel = this.$refs.imageCarousel;\n      const options = {\n        pageDots: true,\n        prevNextButtons: true,\n        imagesLoaded: true,\n        cellSelector: \".carousel-cell\",\n\n        // These events work around ios 11.3+ bug\n        // https://github.com/metafizzy/flickity/issues/740\n        on: {\n          dragStart() {\n            document.ontouchmove = e => {\n              e.preventDefault();\n            };\n          },\n          dragEnd() {\n            document.ontouchmove = () => {\n              return true;\n            };\n          }\n        }\n      };\n\n      if (this.flickity) {\n        this.flickity.destroy();\n      }\n\n      setTimeout(() => {\n        this.flickity = new Flickity(carousel, options);\n        this.flickity.resize();\n      }, 10);\n    }\n  }\n};\n</script>\n"],"names":["_sfc_main","Modal","SvgIcon","index","carousel","options","Flickity","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_5","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_23","_hoisted_24","_hoisted_25","_createBlock","_component_modal","$props","_createSlots","_withCtx","_createElementVNode","_toDisplayString","_ctx","_hoisted_4","_openBlock","_createElementBlock","_Fragment","_renderList","image","_hoisted_6","_createVNode","_component_svg_icon","_createCommentVNode","_hoisted_8","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","variableUpsell","_normalizeClass","$event","$options","_hoisted_22","_renderSlot"],"mappings":"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"}