{"version":3,"file":"EnvelopesView-DXKipyLY.js","sources":["../../../app/javascript/components/addOns/envelopes/EnvelopeColourControls.vue","../../../app/javascript/components/addOns/envelopes/EnvelopeColours.vue","../../../app/javascript/components/addressList/AddressListCreateModal.vue","../../../app/javascript/components/addressList/AddressForm.vue","../../../app/javascript/components/addressList/ListAddressEditingArea.vue","../../../app/javascript/components/addressList/ListAddress.vue","../../../app/javascript/components/addressList/AddressListEditModal.vue","../../../app/javascript/components/addOns/envelopes/RecipientAddressingModal.vue","../../../app/javascript/components/addOns/envelopes/RecipientAddressing.vue","../../../app/javascript/utils/unprintableCharacters.js","../../../app/javascript/components/addOns/envelopes/ReturnAddressModal.vue","../../../app/javascript/components/addOns/envelopes/ReturnAddressing.vue","../../../app/javascript/components/addOns/envelopes/EnvelopeAddressingSelection.vue","../../../app/javascript/components/addOns/envelopes/EnvelopeColourSelection.vue","../../../app/javascript/components/addOns/envelopes/EnvelopeColourSelectionComplete.vue","../../../app/javascript/components/addOns/envelopes/EnvelopesFlow.vue","../../../app/javascript/components/addOns/EnvelopesView.vue"],"sourcesContent":["<template>\n  <div class=\"flex flex-wrap gap-5 items-start mb-4 items-center\">\n    <div\n      v-for=\"(option, index) in envelopeType.envelope_options\"\n      :key=\"option.id\"\n      :class=\"{\n        'border border-ink border-2 p-1 active-circle': swatchActive(\n          option,\n          index\n        ),\n        'bg-white border border-paper-5 border-2': !showThumbnail(option),\n        'cursor-pointer': !swatchActive(option, index)\n      }\"\n      class=\"h-6 w-6 br-circle overflow-hidden relative\"\n      @click.stop=\"selectEnvelopeOption(option, index)\">\n      <img\n        v-if=\"showThumbnail(option)\"\n        :src=\"option.thumb_image\"\n        :alt=\"option.name\"\n        class=\"block aspect-ratio-1x1 br-circle w-full\" />\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\n\nexport default {\n  name: \"EnvelopeColourControls\",\n  props: {\n    envelopeType: {\n      type: Object,\n      default: () => {}\n    },\n    swatchIndexSelected: {\n      type: Number,\n      required: true\n    },\n    currentEnvelopeTypeIsActive: {\n      type: Boolean,\n      required: true\n    }\n  },\n  emits: [\"set-swatch-selected\"],\n  computed: {\n    ...mapGetters({\n      isActive: \"isActiveEnvelopeOption\"\n    }),\n    showThumbnail() {\n      return option => !option.thumb_image.includes(\"missing.png\");\n    },\n    swatchActive() {\n      // We want to retain the previously selected swatch / image if the user\n      // changes to a difference envelope type. This ensures this\n      return (option, index) => {\n        if (!this.isActive(option) && !this.currentEnvelopeTypeIsActive) {\n          return this.swatchIndexSelected === index;\n        }\n\n        return this.isActive(option);\n      };\n    }\n  },\n  methods: {\n    async selectEnvelopeOption(option, index) {\n      if (!this.isActive(option)) {\n        await this.$store.dispatch(\"setEnvelopeOption\", option.id);\n\n        this.$emit(\"set-swatch-selected\", index);\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.active-circle {\n  height: 36px;\n  width: 36px;\n}\n</style>\n","<template>\n  <li\n    :class=\"{ 'border-ink': currentEnvelopeTypeIsActive }\"\n    class=\"border-paper-2 border bg-paper-2 cursor-pointer flex-1\"\n    @click=\"selectEnvelopeOption(types.envelope_options[0])\">\n    <div>\n      <img\n        :src=\"mainImage\"\n        class=\"block w-full aspect-ratio-1x1 bg-paper-3 object-contain\"\n        @load=\"$store.commit('setLoading', false)\" />\n    </div>\n    <div class=\"flex px-4 py-5 gap-4 flex-row sm:flex-col md:flex-row\">\n      <radio-input\n        :input-id=\"types.name\"\n        label-class=\"mt-2\"\n        :current-value=\"currentEnvelopeTypeIsActive\"\n        :value=\"true\" />\n      <div>\n        <h2 class=\"mb-4 typeset-6 text-ink\">\n          {{ heading }}\n        </h2>\n        <p class=\"mb-4\">{{ subheading }}</p>\n        <envelope-colour-controls\n          :envelope-type=\"types\"\n          :swatch-index-selected=\"swatchIndexSelected\"\n          :current-envelope-type-is-active=\"currentEnvelopeTypeIsActive\"\n          @set-swatch-selected=\"setSwatchSelected\" />\n        <p\n          v-if=\"types.price_per_unit.actual.raw > 0\"\n          class=\"typeset-6\">\n          +{{ types.price_per_unit.actual.formatted\n          }}{{ t(\"add-ons.envelopes.totals.each\") }}\n        </p>\n        <p\n          v-else\n          class=\"typeset-6\">\n          {{ t(\"add-ons.envelopes.totals.free\") }}\n        </p>\n      </div>\n    </div>\n  </li>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport RadioInput from \"../../shared/RadioInput.vue\";\n\nimport EnvelopeColourControls from \"./EnvelopeColourControls.vue\";\n\nexport default {\n  name: \"EnvelopeColours\",\n  components: {\n    EnvelopeColourControls,\n    RadioInput\n  },\n  props: {\n    types: {\n      type: Object,\n      default: () => {}\n    }\n  },\n  data() {\n    return {\n      swatchIndexSelected: 0\n    };\n  },\n  computed: {\n    ...mapGetters({\n      isActive: \"isActiveEnvelopeOption\"\n    }),\n    ...mapState({\n      activeOption: state => state.cartItem.current_envelope_option.option,\n      cartItem: state => state.cartItem\n    }),\n    mainImage() {\n      if (this.currentEnvelopeTypeIsActive) {\n        return this.activeOption.full_image;\n      }\n      return this.types.envelope_options[this.swatchIndexSelected].full_image;\n    },\n    currentEnvelopeTypeIsActive() {\n      return this.types.envelope_options.some(\n        t => t.id === this.activeOption.id\n      );\n    },\n    heading() {\n      return this.t(\n        `add-ons.envelopes.colour-controls.heading.${this.types.name.split(\" \").join(\"\").toLowerCase()}`\n      );\n    },\n    subheading() {\n      return this.t(\n        `add-ons.envelopes.colour-controls.subheading.${this.types.name.split(\" \").join(\"\").toLowerCase()}`\n      );\n    }\n  },\n  methods: {\n    selectEnvelopeOption(option) {\n      if (!this.isActive(option)) {\n        this.swatchIndexSelected = 0;\n        this.$store.dispatch(\"setEnvelopeOption\", option.id);\n      }\n    },\n    setSwatchSelected(index) {\n      this.swatchIndexSelected = index;\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"px-3 pb-3 pt-0\">\n    <div class=\"mb-5\">\n      <h4 class=\"typeset-6 mb-3\">{{ t(\"address-lists.upload.title\") }}</h4>\n      <p\n        v-if=\"responsiveMode\"\n        class=\"typeset-7 mb-3\">\n        {{ t(\"address-lists.upload.mobile-description\") }}\n      </p>\n      <template v-else>\n        <ul class=\"px-4\">\n          <li\n            v-for=\"number in 4\"\n            :key=\"number\"\n            class=\"mb-3\">\n            {{ t(`address-lists.upload.description.point-${number}`) }}\n          </li>\n        </ul>\n        <p class=\"typeset-7 mb-3\">\n          {{ t(\"address-lists.upload.description\") }}\n        </p>\n        <a\n          class=\"btn btn-secondary mr-2\"\n          data-cy=\"download-our-template\"\n          @click.prevent=\"downloadTemplate\">\n          {{ t(\"address-lists.upload.download\") }}\n        </a>\n        <a\n          href=\"#\"\n          class=\"btn btn-primary\"\n          data-cy=\"upload-a-spreadsheet\"\n          @click.prevent=\"openFileInput\">\n          {{ t(\"address-lists.upload.upload\") }}\n        </a>\n        <input\n          ref=\"fileupload\"\n          type=\"file\"\n          class=\"hidden\"\n          accept=\".csv, .xlsx\"\n          @change=\"handleFile($event.target.files)\" />\n      </template>\n    </div>\n    <div :class=\"{ 'mb-5': extraOptionsAvailable }\">\n      <h4 class=\"typeset-6 mb-3\">{{ t(\"address-lists.manually.title\") }}</h4>\n      <p class=\"typeset-7 mb-3\">\n        {{ t(\"address-lists.manually.description\") }}\n      </p>\n      <a\n        href=\"#\"\n        class=\"btn btn-primary\"\n        data-cy=\"manually-create-list\"\n        @click.prevent=\"createAddressList\">\n        {{ t(\"address-lists.manually.cta\") }}\n      </a>\n    </div>\n    <div\n      v-if=\"addressLists.length\"\n      :class=\"{ 'mb-3': cartItem.addressable_events.length }\">\n      <h4 class=\"typeset-6 mb-3\">{{ t(\"address-lists.existing.title\") }}</h4>\n      <p class=\"typeset-7 mb-3\">\n        {{ t(\"address-lists.existing.description\") }}\n      </p>\n      <div class=\"use-list-or-event-container pb-3\">\n        <div\n          v-for=\"list in addressLists\"\n          :key=\"list.id\"\n          class=\"bg-paper-3 p-3 pr-4 inline-flex flex-col mr-3 cursor-pointer existing-address-list\"\n          @click.prevent=\"setAddressList(list)\">\n          <h4 class=\"typeset-7 mb-2\">{{ addressListTitle(list) }}</h4>\n          <p class=\"typeset-8\">\n            {{\n              t(\"address-lists.existing.updated\", { time: list.lastUpdatedAt })\n            }}\n          </p>\n        </div>\n      </div>\n    </div>\n    <div v-if=\"cartItem.addressable_events.length\">\n      <h4 class=\"typeset-6 mb-3\">\n        {{ t(\"address-lists.planner-event.title\") }}\n      </h4>\n      <p class=\"typeset-7 mb-3\">\n        {{ t(\"address-lists.planner-event.description\") }}\n      </p>\n      <div class=\"use-list-or-event-container pb-3\">\n        <div\n          v-for=\"event in cartItem.addressable_events\"\n          :key=\"event.id\"\n          class=\"bg-paper-3 p-3 pr-4 inline-flex flex-col mr-3 cursor-pointer existing-address-list\"\n          @click.prevent=\"createAddressListFromEvent(event)\">\n          <h4 class=\"typeset-7 mb-2\">{{ event.name }}</h4>\n          <p class=\"typeset-8\">{{ addressCount(event.addresses_count) }}</p>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport axios from \"axios\";\n\nexport default {\n  name: \"AddressListCreateModal\",\n  emits: [\"close-modal\"],\n  computed: {\n    ...mapState({\n      addressLists: state => state.addressLists.addressLists,\n      cartItem: state => state.cartItem,\n      locale: state => state.locale,\n      responsiveMode: state => state.responsiveMode\n    }),\n    extraOptionsAvailable() {\n      return (\n        Math.max(\n          this.addressLists.length,\n          this.cartItem.addressable_events.length\n        ) > 0\n      );\n    },\n    addressListTitle() {\n      return list => {\n        if (list.eventName) {\n          return `${list.eventName} - ${this.addressCount(list.addressCount)}`;\n        }\n        return this.addressCount(list.addressCount);\n      };\n    },\n    addressCount() {\n      return count => {\n        if (count === 1) {\n          return this.t(\"address-lists.existing.count.single\");\n        }\n        return this.t(\"address-lists.existing.count.plural\", { count });\n      };\n    }\n  },\n  methods: {\n    createAddressList() {\n      this.$emit(\"close-modal\");\n      this.$store.dispatch(\"addressLists/createAddressListForCartItem\");\n    },\n    openFileInput() {\n      this.$refs.fileupload.click();\n    },\n    async handleFile(files) {\n      if (!files.length) return;\n      analytics.track(\"Uploaded Spreadsheet\", {\n        product_id: `PRODUCT-${this.cartItem.analytics_id}`,\n        location: \"Add Ons Envelope\"\n      });\n\n      this.$emit(\"close-modal\");\n      const [file] = files;\n      const formData = new FormData();\n      // append the file to FormData\n      formData.append(\"csv_upload\", file, file.name);\n      this.$store.dispatch(\"addressLists/batchUpload\", formData);\n    },\n    setAddressList({ id }) {\n      this.$emit(\"close-modal\");\n      this.$store.dispatch(\"addressLists/setAddressListForCartItem\", id);\n    },\n    downloadTemplate() {\n      let templateLocale = \"\";\n      if (this.locale === \"en-US\") {\n        templateLocale = \"us\";\n      } else {\n        templateLocale = \"en\";\n      }\n      axios\n        .get(\n          `https://d1o785do8fyxgx.cloudfront.net/addresses-${templateLocale}.csv`,\n          {\n            responseType: \"blob\"\n          }\n        )\n        .then(({ data }) => {\n          const blob = new Blob([data], { type: \"text/csv\" });\n          const link = document.createElement(\"a\");\n          link.href = window.URL.createObjectURL(blob);\n          link.download = \"address_list_template.csv\";\n          link.click();\n        })\n        .catch(error => {\n          console.error(error);\n        });\n    },\n    createAddressListFromEvent({ id }) {\n      this.$emit(\"close-modal\");\n      this.$store.dispatch(\"addressLists/createAddressListFromEvent\", id);\n    }\n  }\n};\n</script>\n","<template>\n  <form\n    class=\"checkout-address-form\"\n    autocomplete=\"off\">\n    <div class=\"grid grid-cols-2 gap-x-4\">\n      <div\n        v-for=\"lineNumber in 6\"\n        :key=\"lineNumber\">\n        <text-input\n          v-model=\"address[`line_${lineNumber}`]\"\n          :label=\"t(`simple-addresses.form.line-${lineNumber}`)\"\n          class=\"mb-4\"\n          :data-cy=\"`address-line-${lineNumber}`\"\n          :input-id=\"`address_line_${lineNumber}`\"\n          :errors=\"maxCharacterCounter(lineNumber)\" />\n      </div>\n    </div>\n    <p\n      v-if=\"formErrors['line_count']\"\n      class=\"text-red-3 typeset-7\"\n      data-cy=\"error-message\">\n      {{ formErrors[\"line_count\"][0] }}\n    </p>\n  </form>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport TextInput from \"../shared/TextInput.vue\";\n\nexport default {\n  name: \"AddressForm\",\n  components: {\n    TextInput\n  },\n  props: {\n    address: {\n      type: Object,\n      required: true\n    }\n  },\n  computed: {\n    ...mapState({\n      formErrors: state => state.addressLists.addresses.formErrors\n    }),\n    maxCharacterCounter() {\n      return lineNumber => {\n        if (this.address[`line_${lineNumber}`]?.length > 65) {\n          return [\n            this.t(\"add-ons.envelopes.recipient-addressing.wrap-warning\")\n          ];\n        }\n        return [];\n      };\n    }\n  }\n};\n</script>\n","<template>\n  <div>\n    <div>\n      <address-form :address=\"editingAddress\" />\n    </div>\n    <div class=\"flex justify-between\">\n      <a\n        v-if=\"showCancel\"\n        href=\"#\"\n        class=\"btn btn-secondary\"\n        @click.prevent=\"$emit('stop-editing')\">\n        {{ t(\"account.addresses.cancel\") }}\n      </a>\n      <btn\n        :promise=\"action()\"\n        :data-cy=\"`${actionName.replaceAll(' ', '-').toLowerCase()}`\"\n        type=\"primary\">\n        {{ actionName }}\n      </btn>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport AddressForm from \"./AddressForm.vue\";\nimport Btn from \"../shared/Btn.vue\";\n\nexport default {\n  name: \"ListAddressEditingArea\",\n  components: {\n    AddressForm,\n    Btn\n  },\n  props: {\n    address: {\n      type: Object,\n      default: () => {}\n    },\n    showCancel: {\n      type: Boolean,\n      default: true\n    }\n  },\n  emits: [\"stop-editing\"],\n  data() {\n    return {\n      editingAddress: null\n    };\n  },\n  computed: {\n    ...mapState({\n      activeAddressList: state => state.cartItem.address_list\n    }),\n    isEditing() {\n      // Returns whether we're creating a new address or updating an\n      // existing one\n      return !!this.editingAddress.id;\n    },\n    actionName() {\n      return this.isEditing\n        ? this.t(\"account.addresses.update-address\")\n        : this.t(\"account.addresses.create-address\");\n    }\n  },\n  beforeMount() {\n    // Clone the prop so that our changes aren't immediately shown\n    // and the user has to save to have them persisted\n    if (this.address) {\n      this.editingAddress = JSON.parse(JSON.stringify(this.address));\n    } else {\n      this.editingAddress = {\n        line_1: \"\",\n        line_2: \"\",\n        line_3: \"\",\n        line_4: \"\",\n        line_5: \"\",\n        line_6: \"\"\n      };\n    }\n  },\n  methods: {\n    action() {\n      return this.isEditing\n        ? this.saveForAddressList()\n        : this.createForAddressList();\n    },\n    createForAddressList() {\n      return () =>\n        this.$store\n          .dispatch(\"addressLists/addresses/create\", {\n            addressList: this.activeAddressList,\n            address: this.editingAddress\n          })\n          .then(() => {\n            this.$emit(\"stop-editing\");\n          });\n    },\n    saveForAddressList() {\n      return () =>\n        this.$store\n          .dispatch(\"addressLists/addresses/update\", {\n            addressList: this.activeAddressList,\n            newAddress: this.editingAddress,\n            address: this.address\n          })\n          .then(() => {\n            this.$emit(\"stop-editing\");\n          });\n    }\n  }\n};\n</script>\n","<template>\n  <div>\n    <slide-transition :duration=\"300\">\n      <div\n        v-if=\"canShowForm\"\n        class=\"address-list-form-container bg-paper-3 my-3\">\n        <list-address-editing-area\n          :address=\"address\"\n          @stop-editing=\"closeForm\" />\n      </div>\n    </slide-transition>\n    <slide-transition :duration=\"300\">\n      <div v-if=\"!canShowForm\">\n        <div class=\"sm:flex items-center p-3\">\n          <div\n            data-cy=\"recipient-address-list\"\n            class=\"flex-1 sm:mr-3 mb-2 sm:mb-0\">\n            {{ address.summary }}\n          </div>\n          <div class=\"inline-flex\">\n            <div class=\"mr-4 sm:mr-3\">\n              <a\n                href=\"#\"\n                class=\"btn btn-small btn-secondary\"\n                data-cy=\"edit-recipient-address\"\n                @click.prevent=\"openForm\">\n                {{ t(\"account.addresses.edit\") }}\n              </a>\n            </div>\n            <div>\n              <a\n                href=\"#\"\n                class=\"btn btn-small btn-delete\"\n                data-cy=\"delete-recipient-address\"\n                @click.prevent=\"handleDelete\">\n                {{ t(\"account.addresses.delete\") }}\n              </a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </slide-transition>\n  </div>\n</template>\n\n<script>\nimport ListAddressEditingArea from \"./ListAddressEditingArea.vue\";\nimport SlideTransition from \"../transitions/SlideTransition.vue\";\n\nexport default {\n  name: \"ListAddress\",\n  components: {\n    ListAddressEditingArea,\n    SlideTransition\n  },\n  props: {\n    address: {\n      type: Object,\n      required: true\n    },\n    canBeActive: {\n      type: Boolean,\n      required: true\n    }\n  },\n  emits: [\"set-active-address-id\", \"deleted\"],\n  data() {\n    return {\n      showForm: false\n    };\n  },\n  computed: {\n    canShowForm() {\n      return this.canBeActive && this.showForm;\n    }\n  },\n  methods: {\n    openForm() {\n      this.$emit(\"set-active-address-id\", this.address.id);\n      this.showForm = true;\n    },\n    closeForm() {\n      this.$emit(\"set-active-address-id\", null);\n      this.showForm = false;\n    },\n    handleDelete() {\n      this.$emit(\"deleted\", this.address);\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"pb-3 pt-0 relative address-list-edit-modal relative\">\n    <fade-transition>\n      <overlay\n        v-if=\"loading\"\n        key=\"loader\"\n        absolutely-positioned />\n      <div\n        v-else\n        key=\"addressList\">\n        <slide-transition>\n          <div\n            v-if=\"uploadData\"\n            class=\"text-center p-2 pt-3 typeset-7 flex justify-center items-center bg-taupe-1\"\n            :class=\"successClass(list)\">\n            <svg-icon\n              name=\"tick\"\n              class=\"mr-3 mb-1\"\n              height=\"11px\"\n              width=\"11px\" />\n            {{\n              t(\"address-lists.edit.success\", {\n                count: uploadData.success_count,\n                fileName: importName\n              })\n            }}\n            <span\n              v-if=\"uploadData.errored_count\"\n              class=\"ml-2\">\n              {{\n                t(\"address-lists.edit.errors\", {\n                  count: uploadData.errored_count\n                })\n              }}\n            </span>\n          </div>\n        </slide-transition>\n        <div\n          v-if=\"list.eventName\"\n          class=\"text-center p-2 pt-3 mb-4 typeset-7 flex justify-center items-center bg-yellow-1\">\n          <svg-icon\n            name=\"warning\"\n            class=\"mr-3 mb-1 text-orange-2\" />\n          {{ t(\"address-lists.planner-event.warning\") }}\n        </div>\n        <div class=\"list-address-list\">\n          <list-address\n            v-for=\"(address, index) in addresses\"\n            :key=\"address.id\"\n            :class=\"{ 'bg-paper-3': index % 2 === 0 }\"\n            :address=\"address\"\n            :can-be-active=\"activeAddressId === address.id\"\n            @deleted=\"deleteAddress($event)\"\n            @set-active-address-id=\"setActiveAddressId($event)\" />\n        </div>\n        <p\n          v-if=\"!addresses.length\"\n          class=\"typeset-6\">\n          {{ t(\"address-lists.edit.add-first\") }}\n        </p>\n        <slide-transition\n          :duration=\"300\"\n          @after-leave=\"showButton = true\">\n          <list-address-editing-area\n            v-if=\"canShowAddressForm\"\n            :address=\"addressForCreation\"\n            :show-cancel=\"addresses.length > 0\"\n            class=\"address-list-form-container bg-paper-3 mt-3\"\n            @stop-editing=\"stopEditing\" />\n        </slide-transition>\n\n        <div v-if=\"canShowButton\">\n          <a\n            href=\"#\"\n            class=\"btn btn-tertiary mt-4\"\n            data-cy=\"new-address\"\n            @click.prevent=\"createAddress\">\n            {{ t(\"address-lists.edit.new-address\") }}\n          </a>\n        </div>\n      </div>\n    </fade-transition>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport ListAddress from \"./ListAddress.vue\";\nimport ListAddressEditingArea from \"./ListAddressEditingArea.vue\";\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport Overlay from \"../shared/Overlay.vue\";\nimport SlideTransition from \"../transitions/SlideTransition.vue\";\nimport SvgIcon from \"../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"AddressListEditModal\",\n  components: {\n    ListAddress,\n    ListAddressEditingArea,\n    FadeTransition,\n    Overlay,\n    SlideTransition,\n    SvgIcon\n  },\n  props: {\n    list: {\n      type: Object,\n      required: true\n    }\n  },\n  data() {\n    return {\n      showAddressForm: false,\n      addressForCreation: null,\n      activeAddressId: null,\n      loading: true,\n      showButton: true\n    };\n  },\n  computed: {\n    ...mapState({\n      addresses: state => state.addressLists.addresses.addresses,\n      uploadData: state => state.addressLists.uploadData\n    }),\n    canShowAddressForm() {\n      return this.showAddressForm && !this.activeAddressId;\n    },\n    canShowButton() {\n      return this.showButton && !this.activeAddressId;\n    },\n    importName() {\n      return this.uploadData.file_name || this.uploadData.event_name;\n    },\n    successClass() {\n      return list => (list.eventName ? \"mb-3\" : \"mb-4\");\n    }\n  },\n  beforeMount() {\n    this.$store.dispatch(\"addressLists/addresses/index\", this.list).then(() => {\n      this.loading = false;\n      this.showAddressForm = this.addresses.length === 0;\n      this.showButton = !(this.addresses.length === 0);\n    });\n  },\n  methods: {\n    createAddress() {\n      this.showButton = false;\n      this.addressForCreation = null;\n      this.activeAddressId = null;\n      this.showAddressForm = true;\n    },\n    stopEditing() {\n      this.showButton = true;\n      this.addressForCreation = null;\n      this.activeAddressId = null;\n      this.showAddressForm = false;\n    },\n    deleteAddress(address) {\n      if (window.confirm(this.t(\"address-lists.edit.confirm-delete\"))) {\n        this.$store.dispatch(\"addressLists/addresses/delete\", {\n          addressList: this.list,\n          address\n        });\n      }\n    },\n    setActiveAddressId(id) {\n      this.showAddressForm = !!id;\n      this.activeAddressId = id;\n    }\n  }\n};\n</script>\n\n<style media=\"screen\">\n.button-fade-in {\n  transition-delay: 0.3s;\n}\n</style>\n","<template>\n  <modal\n    :open=\"modalOpen\"\n    :size=\"modalWidth\"\n    :requires-interaction=\"!!activeAddressList\"\n    @closed=\"hideModal\">\n    <template #header>\n      <h3\n        data-cy=\"recipient-addresses-modal-heading\"\n        class=\"typeset-2\">\n        {{ t(\"add-ons.envelopes.recipient-addressing.modal-title\") }}\n      </h3>\n    </template>\n    <template #body>\n      <address-list-edit-modal\n        v-if=\"activeAddressList\"\n        :list=\"activeAddressList\"\n        @complete=\"hideModal\" />\n      <address-list-create-modal\n        v-else\n        @close-modal=\"hideModal\" />\n    </template>\n    <template\n      v-if=\"activeAddressList\"\n      #footer>\n      <a\n        href=\"#\"\n        class=\"btn btn-primary\"\n        data-cy=\"close-and-save-changes\"\n        @click.prevent=\"closeAndSave\">\n        {{ t(\"add-ons.envelopes.recipient-addressing.modal-close\") }}\n      </a>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport AddressListCreateModal from \"../../addressList/AddressListCreateModal.vue\";\nimport AddressListEditModal from \"../../addressList/AddressListEditModal.vue\";\nimport Modal from \"../../shared/Modal.vue\";\n\nexport default {\n  name: \"RecipientAddressingModal\",\n  components: {\n    AddressListCreateModal,\n    AddressListEditModal,\n    Modal\n  },\n  props: {\n    modalOpen: {\n      type: Boolean,\n      required: true\n    }\n  },\n  emits: [\"show-modal\", \"hide-modal\"],\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem\n    }),\n    activeAddressList() {\n      return this.cartItem.address_list;\n    },\n    modalWidth() {\n      return this.activeAddressList ? \"large\" : \"\";\n    }\n  },\n  watch: {\n    activeAddressList(newValue, oldValue) {\n      // for reopening the modal after a list has been created\n      if (newValue && !oldValue) {\n        // i.e. it was null but is now set\n        this.$emit(\"show-modal\");\n      }\n    }\n  },\n  methods: {\n    hideModal() {\n      this.$emit(\"hide-modal\");\n    },\n    closeAndSave() {\n      if (this.activeAddressList.addressCount === 0) {\n        this.dispatchRemoveAddressList();\n      }\n      this.hideModal();\n    },\n    dispatchRemoveAddressList() {\n      this.$store.dispatch(\n        \"addressLists/removeAddressListForCartItem\",\n        this.activeAddressList\n      );\n    }\n  }\n};\n</script>\n","<template>\n  <li class=\"bg-paper-2 w-full sm:w-75\">\n    <img\n      :src=\"envelopeFront\"\n      class=\"block w-full aspect-ratio-1x1 bg-paper-3 object-contain\" />\n    <div class=\"px-6 py-4\">\n      <h2 class=\"typeset-6 mb-4\">\n        {{ t(\"add-ons.envelopes.totals.recipient-addressing\") }}\n      </h2>\n      <div>\n        <p class=\"mb-4\">\n          {{ t(\"add-ons.envelopes.recipient-addressing.description\") }}\n        </p>\n        <p class=\"typeset-6 mb-4\">\n          {{ formattedPrice }}\n        </p>\n        <div v-if=\"activeAddressList\">\n          <div\n            v-if=\"showExcessiveWarning\"\n            class=\"relative bg-red text-white p-2 pl-6 typeset-7 mb-3\">\n            <svg-icon\n              width=\"17px\"\n              height=\"15px\"\n              class=\"absolute address-list-warning-icon\"\n              name=\"warning\" />\n            {{\n              t(\"add-ons.envelopes.recipient-addressing.too-many-warning\", {\n                quantity: cartItem.envelope_quantity\n              })\n            }}\n          </div>\n          <div\n            v-else-if=\"cartItem.address_list.addressCount > 0\"\n            class=\"bg-forest text-white py-2 mb-3 flex items-center\">\n            <svg-icon\n              name=\"tick\"\n              class=\"mx-3\" />\n            <p class=\"-mb-1\">{{ addressCountMessage }}</p>\n          </div>\n          <a\n            href=\"#\"\n            class=\"btn btn-block btn-tertiary btn-large mb-3\"\n            data-cy=\"edit-address-list\"\n            @click.prevent=\"showModal\">\n            {{ t(\"add-ons.envelopes.recipient-addressing.edit\") }}\n          </a>\n          <btn\n            :promise=\"removeAddressList()\"\n            type=\"delete\"\n            data-cy=\"remove-recipient-address\"\n            class=\"btn-block btn-large\">\n            {{ t(\"add-ons.envelopes.recipient-addressing.remove\") }}\n          </btn>\n        </div>\n        <a\n          v-else\n          href=\"#\"\n          :disabled=\"!loggedIn ? 'disabled' : null\"\n          class=\"btn btn-secondary btn-block btn-large ab-envelopes-recipient\"\n          data-cy=\"add-or-upload-address\"\n          @click.prevent=\"showModal\">\n          {{ t(\"add-ons.envelopes.recipient-addressing.add\") }}\n        </a>\n        <div\n          v-if=\"!loggedIn\"\n          class=\"mt-3 flex gap-2 items-start text-green\">\n          <svg-icon\n            class=\"flex-no-shrink\"\n            name=\"info\"\n            height=\"13px\"\n            width=\"13px\" />\n          <p class=\"typeset-7\">\n            This feature is only available to logged in users. Please\n            <span\n              class=\"underline cursor-pointer\"\n              @click=\"triggerLoginModal\">\n              log in\n            </span>\n            or\n            <span\n              class=\"underline cursor-pointer\"\n              @click=\"triggerRegisterModal\">\n              create an account\n            </span>\n            to access it.\n          </p>\n        </div>\n        <teleport to=\"#end-of-body\">\n          <recipient-addressing-modal\n            :modal-open=\"modalOpen\"\n            @show-modal=\"modalOpen = true\"\n            @hide-modal=\"modalOpen = false\" />\n        </teleport>\n      </div>\n    </div>\n  </li>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport envelopeFront from \"@/app/javascript/images/envelopes/envelope-front.png\";\n\nimport Btn from \"../../shared/Btn.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\nimport RecipientAddressingModal from \"./RecipientAddressingModal.vue\";\n\nexport default {\n  name: \"RecipientAddressing\",\n  components: {\n    Btn,\n    SvgIcon,\n    RecipientAddressingModal\n  },\n  data() {\n    return {\n      modalOpen: false,\n      envelopeFront\n    };\n  },\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem,\n      loggedIn: state => state.loggedIn\n    }),\n    activeAddressList() {\n      return this.cartItem.address_list;\n    },\n    formattedPrice() {\n      if (this.cartItem.recipient_addressing_prices.potential.raw) {\n        return `+ ${\n          this.cartItem.recipient_addressing_prices.potential.formatted\n        }${this.t(\"add-ons.envelopes.recipient-addressing.each\")}`;\n      }\n      return this.t(\"add-ons.envelopes.totals.free\");\n    },\n    showExcessiveWarning() {\n      return (\n        this.cartItem.envelope_quantity <\n        this.cartItem.address_list.addressCount\n      );\n    },\n    addressCountMessage() {\n      if (this.cartItem.address_list.addressCount === 1) {\n        return this.t(\"add-ons.envelopes.recipient-addressing.added.singular\");\n      }\n      return this.t(\"add-ons.envelopes.recipient-addressing.added.plural\", {\n        quantity: this.cartItem.address_list.addressCount\n      });\n    }\n  },\n  watch: {\n    activeAddressList(newValue, oldValue) {\n      // for reopening the modal after a list has been created\n      if (newValue && !oldValue) {\n        // i.e. it was null but is now set\n        this.showModal();\n      }\n    }\n  },\n  methods: {\n    showModal() {\n      this.modalOpen = true;\n    },\n    removeAddressList() {\n      const vm = this;\n      return () => vm.dispatchRemoveAddressList();\n    },\n    triggerLoginModal() {\n      const showLoginModalEvent = new Event(\"showLoginModal\");\n      window.dispatchEvent(showLoginModalEvent);\n    },\n    triggerRegisterModal() {\n      const showRegisterModalEvent = new Event(\"showRegisterModal\");\n      window.dispatchEvent(showRegisterModalEvent);\n    },\n    dispatchRemoveAddressList() {\n      this.$store.dispatch(\n        \"addressLists/removeAddressListForCartItem\",\n        this.activeAddressList\n      );\n    }\n  }\n};\n</script>\n","const unprintableCharacters =\n  \"!\\\"#$%£'()*+:;<=>?@[\\\\]^_`{|}~\\u2028\\u2029\\u200e\\u200f\\u202a\\u202b\\u202c\\u202d\\u202e\";\n\nexport default unprintableCharacters;\n","<template>\n  <modal\n    key=\"returnAddressModal\"\n    :open=\"open\"\n    size=\"small\"\n    @closed=\"$emit('closed')\">\n    <template #header>\n      <h3\n        data-cy=\"add-return-address-modal-heading\"\n        class=\"typeset-2\">\n        {{ modalTitle }}\n      </h3>\n    </template>\n    <template\n      v-if=\"Object.keys(editingReturnAddress).length > 0\"\n      #body>\n      <p class=\"typeset-7 text-ink mb-4\">\n        {{ t(\"return-address.modal.description\") }}\n      </p>\n      <text-input\n        v-for=\"(property, index) in Object.keys(blankReturnAddress)\"\n        :key=\"property\"\n        v-model=\"editingReturnAddress[property]\"\n        :class=\"{ 'mb-3': index < Object.keys(blankReturnAddress).length - 1 }\"\n        :label=\"t('simple-addresses.form.line-label', { line: index + 1 })\"\n        :data-cy=\"`address-line-${index}`\"\n        :input-id=\"property\"\n        :errors=\"inputFieldErrors(property)\" />\n      <p\n        v-if=\"formErrors['line_count']\"\n        data-cy=\"error-message\"\n        class=\"text-red-3\">\n        {{ formErrors[\"line_count\"][0] }}\n      </p>\n    </template>\n    <template #footer>\n      <div>\n        <button\n          class=\"btn btn-secondary btn-block mb-3\"\n          @click=\"$emit('closed')\">\n          {{ t(\"return-address.modal.cancel\") }}\n        </button>\n        <btn\n          :promise=\"action()\"\n          class=\"btn-block\"\n          data-cy=\"apply-button\"\n          type=\"primary\">\n          {{ t(\"return-address.modal.save\") }}\n        </btn>\n      </div>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { clone } from \"lodash-es\";\nimport { mapState } from \"vuex\";\n\nimport unprintableCharacters from \"@/app/javascript/utils/unprintableCharacters\";\nimport Btn from \"../../shared/Btn.vue\";\nimport Modal from \"../../shared/Modal.vue\";\nimport TextInput from \"../../shared/TextInput.vue\";\n\nexport default {\n  name: \"ReturnAddressModal\",\n  components: {\n    Btn,\n    Modal,\n    TextInput\n  },\n  props: {\n    open: {\n      type: Boolean,\n      required: true\n    },\n    returnAddress: {\n      type: Object,\n      required: true\n    }\n  },\n  emits: [\"closed\"],\n  data() {\n    return {\n      returnAddressModalOpen: false,\n      editingReturnAddress: {},\n      blankReturnAddress: {\n        line_1: \"\",\n        line_2: \"\",\n        line_3: \"\",\n        line_4: \"\",\n        line_5: \"\",\n        line_6: \"\"\n      }\n    };\n  },\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem,\n      formErrors: state => state.returnAddress.formErrors\n    }),\n    hasReturnAddress() {\n      return this.cartItem.return_address;\n    },\n    modalTitle() {\n      return this.hasReturnAddress\n        ? this.t(\"return-address.modal.edit-title\")\n        : this.t(\"return-address.modal.add-title\");\n    },\n    inputFieldErrors() {\n      return property => {\n        const input = this.editingReturnAddress[property];\n        if (input.length > 65) {\n          return [this.t(\"add-ons.envelopes.totals.wrap-warning\")];\n        }\n        const isInvalid = input\n          .split(\"\")\n          .some(char => unprintableCharacters.includes(char));\n        if (isInvalid) {\n          return [this.t(\"add-ons.envelopes.totals.character-warning\")];\n        }\n        return [];\n      };\n    }\n  },\n  beforeMount() {\n    this.editingReturnAddress = clone(this.returnAddress);\n  },\n  methods: {\n    action() {\n      return this.hasReturnAddress\n        ? this.updateReturnAddress()\n        : this.createReturnAddress();\n    },\n    createReturnAddress() {\n      const vm = this;\n      return () =>\n        vm.$store\n          .dispatch(\n            \"returnAddress/createReturnAddress\",\n            vm.editingReturnAddress\n          )\n          .then(() => {\n            vm.$emit(\"closed\");\n          });\n    },\n    updateReturnAddress() {\n      const vm = this;\n      return () =>\n        vm.$store\n          .dispatch(\n            \"returnAddress/updateReturnAddress\",\n            vm.editingReturnAddress\n          )\n          .then(() => {\n            vm.$emit(\"closed\");\n          });\n    }\n  }\n};\n</script>\n","<template>\n  <li class=\"bg-paper-2 w-full sm:w-75\">\n    <img\n      :src=\"envelopeBack\"\n      class=\"block w-full aspect-ratio-1x1 bg-paper-3 object-contain\" />\n    <div class=\"px-6 py-4\">\n      <h2 class=\"mb-4 typeset-6\">\n        {{ t(\"add-ons.envelopes.totals.return-addressing\") }}\n      </h2>\n      <div>\n        <p class=\"typeset-7 mb-4\">{{ t(\"return-address.description\") }}</p>\n        <p class=\"mb-4 typeset-6\">\n          {{ formattedPrice }}\n        </p>\n        <div v-if=\"hasReturnAddress\">\n          <p class=\"typeset-7 text-ink mb-2\">\n            {{ t(\"return-address.current-return-address\") }}\n          </p>\n          <p class=\"typeset-8 mb-3\">\n            <template v-if=\"returnAddress.line_1\">\n              {{ returnAddress.line_1 }}\n              <br />\n            </template>\n            <template v-if=\"returnAddress.line_2\">\n              {{ returnAddress.line_2 }}\n              <br />\n            </template>\n            <template v-if=\"returnAddress.line_3\">\n              {{ returnAddress.line_3 }}\n              <br />\n            </template>\n            <template v-if=\"returnAddress.line_4\">\n              {{ returnAddress.line_4 }}\n              <br />\n            </template>\n            <template v-if=\"returnAddress.line_5\">\n              {{ returnAddress.line_5 }}\n              <br />\n            </template>\n            <template v-if=\"returnAddress.line_6\">\n              {{ returnAddress.line_6 }}\n            </template>\n          </p>\n        </div>\n        <fade-transition mode=\"out-in\">\n          <button\n            v-if=\"!hasReturnAddress\"\n            class=\"btn btn-secondary btn-block btn-large ab-envelopes-return\"\n            data-cy=\"add-return-address\"\n            @click=\"showReturnAddressModal\">\n            {{ t(\"return-address.add-address\") }}\n          </button>\n          <div v-else>\n            <button\n              class=\"btn btn-block btn-secondary btn-large mb-3\"\n              data-cy=\"edit-return-address\"\n              @click=\"showReturnAddressModal\">\n              {{ t(\"return-address.edit-address\") }}\n            </button>\n            <btn\n              :promise=\"deleteReturnAddress()\"\n              type=\"delete\"\n              data-cy=\"delete-return-address\"\n              class=\"btn-block btn-large\">\n              {{ t(\"return-address.delete-address\") }}\n            </btn>\n          </div>\n        </fade-transition>\n\n        <teleport to=\"#end-of-body\">\n          <return-address-modal\n            v-if=\"returnAddressModalShowing\"\n            :open=\"returnAddressModalShowing\"\n            :return-address=\"returnAddress\"\n            @closed=\"hideReturnAddressModal\" />\n        </teleport>\n      </div>\n    </div>\n  </li>\n</template>\n\n<script>\nimport { clone } from \"lodash-es\";\nimport { mapState } from \"vuex\";\n\nimport envelopeBack from \"@/app/javascript/images/envelopes/envelope-back.png\";\n\nimport Btn from \"../../shared/Btn.vue\";\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport ReturnAddressModal from \"./ReturnAddressModal.vue\";\n\nexport default {\n  name: \"ReturnAddressing\",\n  components: {\n    Btn,\n    FadeTransition,\n    ReturnAddressModal\n  },\n  data() {\n    return {\n      returnAddressModalShowing: false,\n      returnAddress: {},\n      blankReturnAddress: {\n        line_1: \"\",\n        line_2: \"\",\n        line_3: \"\",\n        line_4: \"\",\n        line_5: \"\",\n        line_6: \"\"\n      },\n      envelopeBack\n    };\n  },\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem\n    }),\n    hasReturnAddress() {\n      return this.cartItem.return_address;\n    },\n    formattedPrice() {\n      if (this.cartItem.return_addressing_prices.potential.raw) {\n        return `+ ${\n          this.cartItem.return_addressing_prices.potential.formatted\n        }${this.t(\"add-ons.envelopes.recipient-addressing.each\")}`;\n      }\n      return this.t(\"add-ons.envelopes.totals.free\");\n    }\n  },\n  mounted() {\n    this.returnAddress =\n      this.cartItem.return_address || clone(this.blankReturnAddress);\n  },\n  methods: {\n    showReturnAddressModal() {\n      this.returnAddressModalShowing = true;\n    },\n    hideReturnAddressModal() {\n      this.returnAddressModalShowing = false;\n      this.returnAddress =\n        this.cartItem.return_address || clone(this.blankReturnAddress);\n    },\n    deleteReturnAddress() {\n      return () =>\n        this.$store.dispatch(\"returnAddress/deleteReturnAddress\").then(() => {\n          this.returnAddress = clone(this.blankReturnAddress);\n        });\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"mt-6\">\n    <div class=\"-mx-4 md:flex justify-center pb-3 mb-5\">\n      <div class=\"w-full\">\n        <ul\n          class=\"flex list-unstyled flex-col sm:flex-row justify-center gap-5\">\n          <recipient-addressing v-if=\"cartItem.recipient_addressing_enabled\" />\n          <return-addressing v-if=\"cartItem.return_addressing_enabled\" />\n        </ul>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport RecipientAddressing from \"./RecipientAddressing.vue\";\nimport ReturnAddressing from \"./ReturnAddressing.vue\";\n\nexport default {\n  name: \"EnvelopeAddressingSelection\",\n  components: {\n    RecipientAddressing,\n    ReturnAddressing\n  },\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem\n    })\n  }\n};\n</script>\n","<template>\n  <div class=\"mt-6\">\n    <div class=\"md:flex justify-center pb-3\">\n      <div\n        class=\"w-full\"\n        :class=\"{ 'md:w-3/5': envelopeTypesWithOptions.length < 3 }\">\n        <ul\n          class=\"flex list-unstyled flex-col sm:flex-row justify-center gap-5\">\n          <envelope-colours\n            v-for=\"types in envelopeTypesWithOptions\"\n            :key=\"types.id\"\n            :types=\"types\" />\n        </ul>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport EnvelopeColours from \"./EnvelopeColours.vue\";\n\nexport default {\n  name: \"EnvelopeColourSelection\",\n  components: {\n    EnvelopeColours\n  },\n  computed: {\n    ...mapState({\n      envelopeTypes: state => state.cartItem.envelope_types\n    }),\n    envelopeTypesWithOptions() {\n      return this.envelopeTypes.filter(type => type.envelope_options.length);\n    },\n    ...mapState({\n      cartItem: state => state.cartItem\n    })\n  }\n};\n</script>\n","<template>\n  <div class=\"flex sm:justify-end py-2\">\n    <div\n      class=\"flex sm:gap-4 md:gap-7 items-center relative sm:top-6 sm:absolute mt-4 sm:mt-0\">\n      <div class=\"flex items-center gap-4 sm:gap-3 md:gap-4\">\n        <div\n          class=\"h-6 w-6 br-circle border border-ink border-2 p-1\"\n          :class=\"{\n            'bg-white border border-paper-5 border-2':\n              !showThumbnail(activeOption)\n          }\">\n          <img\n            v-if=\"showThumbnail(activeOption)\"\n            :src=\"activeOption.option.thumb_image\"\n            :alt=\"activeOption.option.name\"\n            class=\"block aspect-ratio-1x1 br-circle w-full\" />\n        </div>\n        <div class=\"flex flex-col sm:gap-4 sm:flex-row\">\n          <p class=\"typeset-6\">{{ title }}</p>\n          <p\n            v-if=\"activeOption.type.price_per_unit.actual.raw > 0\"\n            class=\"typeset-6\">\n            +{{ activeOption.type.price_per_unit.actual.formatted\n            }}{{ t(\"add-ons.envelopes.totals.each\") }}\n          </p>\n          <p\n            v-else\n            class=\"typeset-6\">\n            {{ t(\"add-ons.envelopes.totals.free\") }}\n          </p>\n        </div>\n      </div>\n      <button\n        class=\"bg-transparent underline p-0 cursor-pointer hidden sm:block text-ink\">\n        {{ t(\"add-ons.envelopes.edit\") }}\n      </button>\n    </div>\n    <button\n      class=\"bg-transparent underline p-0 cursor-pointer absolute right-5 sm:hidden text-ink\"\n      style=\"top: 39px\">\n      {{ t(\"add-ons.envelopes.edit\") }}\n    </button>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nexport default {\n  name: \"EnvelopeColourSelectionComplete\",\n  emits: [\"envelope-changed\"],\n  computed: {\n    ...mapState({\n      activeOption: state => state.cartItem.current_envelope_option\n    }),\n    title() {\n      return `${this.activeOption.type.name} Envelopes`;\n    },\n    showThumbnail() {\n      return activeOption =>\n        !activeOption.option.thumb_image.includes(\"missing.png\");\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"lg:px-10 m-auto\">\n    <a\n      :href=\"backToEditor\"\n      class=\"my-4 block underline cursor-pointer\">\n      {{ t(\"add-ons.back-to-editor\") }}\n    </a>\n    <h1 class=\"typeset-2 my-4 sm:mb-6\">\n      {{ t(\"add-ons.envelopes.title\") }}\n    </h1>\n    <accordion class=\"relative -mx-4 px-4 sm:px-0 sm:mx-0 sm:mb-7 pb-9 sm:pb-0\">\n      <transition-group appear>\n        <accordion-section\n          v-for=\"(section, index) in sections\"\n          :key=\"index\"\n          ref=\"accordionSectionChildren\"\n          :number=\"index + 1\"\n          bg-classes=\"bg-paper-1\"\n          :name=\"section.title\"\n          :last=\"index + 1 == sections.length\"\n          :hide-numbering=\"sections.length === 1\"\n          :active=\"active(index)\"\n          :complete=\"setComplete(index)\"\n          section-clickable\n          title-classes=\"mt-3\"\n          :can-edit=\"false\"\n          :style=\"{ transitionDelay: `${index * 100}ms` }\"\n          @edit=\"edit(index)\">\n          <slide-transition @after-enter=\"scrollToSection\">\n            <component\n              :is=\"section.component\"\n              v-if=\"active(index)\"\n              :active=\"active(index)\" />\n          </slide-transition>\n          <slide-transition>\n            <component\n              :is=\"section.completedComponent\"\n              v-if=\"setComplete(index)\" />\n          </slide-transition>\n        </accordion-section>\n      </transition-group>\n    </accordion>\n    <div\n      class=\"sticky bottom-0 force-full-width glass flex justify-center items-center py-4\">\n      <button\n        data-cy=\"complete-section\"\n        class=\"btn btn-large btn-primary block sm:inline-block\"\n        @click=\"completeSection()\">\n        {{ t(`add-ons.envelopes.ctas.${ctaText}`) }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport Accordion from \"@/app/javascript/components/shared/Accordion.vue\";\nimport AccordionSection from \"@/app/javascript/components/shared/AccordionSection.vue\";\nimport SlideTransition from \"@/app/javascript/components/transitions/SlideTransition.vue\";\n\nimport EnvelopeColours from \"./EnvelopeColours.vue\";\nimport RecipientAddressing from \"./RecipientAddressing.vue\";\nimport ReturnAddressing from \"./ReturnAddressing.vue\";\nimport EnvelopeAddressingSelection from \"./EnvelopeAddressingSelection.vue\";\nimport EnvelopeColourSelection from \"./EnvelopeColourSelection.vue\";\nimport EnvelopeColourSelectionComplete from \"./EnvelopeColourSelectionComplete.vue\";\n\nexport default {\n  name: \"EnvelopesFlow\",\n  components: {\n    EnvelopeColours,\n    RecipientAddressing,\n    ReturnAddressing,\n    Accordion,\n    AccordionSection,\n    SlideTransition,\n    EnvelopeAddressingSelection,\n    EnvelopeColourSelection,\n    EnvelopeColourSelectionComplete\n  },\n  data() {\n    return {\n      activeIndex: 0,\n      shouldSkipUpsells: false\n    };\n  },\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem,\n      backToEditor: state => state.cartItem.back_to_editor_path,\n      hasRealUpsells: state => state.cartItem.has_real_potential_upsells,\n      basketPath: state => state.paths.basketPath\n    }),\n    topElement() {\n      return this.$refs.accordionSectionChildren[0].$refs.accordionSection;\n    },\n    marginOffset() {\n      return parseInt(getComputedStyle(this.topElement).marginBottom, 10);\n    },\n    closedDrawerHeight() {\n      return index => {\n        return this.$refs.accordionSectionChildren[\n          index\n        ].$refs.accordionSection.getBoundingClientRect().height;\n      };\n    },\n    active() {\n      return index => {\n        return index === this.activeIndex;\n      };\n    },\n    envelopeColourSection() {\n      return {\n        title: this.t(\"add-ons.envelopes.colour-section.title\"),\n        component: \"EnvelopeColourSelection\",\n        completedComponent: \"EnvelopeColourSelectionComplete\"\n      };\n    },\n    ctaText() {\n      return this.lastSection ? \"next-page\" : \"next-section\";\n    },\n    lastSection() {\n      return this.activeIndex === this.sections.length - 1;\n    },\n    envelopeAddressSection() {\n      return {\n        title: this.t(\"add-ons.envelopes.address-section.title\"),\n        component: \"EnvelopeAddressingSelection\"\n      };\n    },\n    sections() {\n      if (this.cartItem.has_envelope_options) {\n        return [this.envelopeColourSection, this.envelopeAddressSection];\n      }\n\n      return [this.envelopeAddressSection];\n    },\n    setComplete() {\n      return index => {\n        // This is a bit fiddly but for a smooth transition in the accordion we need to not show the complete component for index(1)\n        // Because it doesn't have a complete component to show\n\n        return (\n          this.activeIndex > index || (this.activeIndex === 0 && index !== 0)\n        );\n      };\n    }\n  },\n  mounted() {\n    const editFromBasket = localStorage.getItem(\"editFromBasket\");\n    if (parseInt(editFromBasket, 10) === this.cartItem.id) {\n      this.shouldSkipUpsells = true;\n    }\n    localStorage.removeItem(\"editFromBasket\");\n  },\n  methods: {\n    handleRoute() {\n      if (this.hasRealUpsells && !this.shouldSkipUpsells) {\n        this.$router.push(`/cart_items/${this.cartItem.id}/add_ons/extras`);\n        window.scrollTo(0, 0);\n      } else {\n        window.location = this.basketPath;\n      }\n    },\n    scrollToSection() {\n      const element =\n        this.$refs.accordionSectionChildren[this.activeIndex].$refs\n          .accordionSection;\n\n      element.scrollIntoView({ behavior: \"smooth\" });\n    },\n    edit(index) {\n      if (this.activeIndex === index) return;\n\n      this.activeIndex = index;\n    },\n    completeSection() {\n      if (this.activeIndex + 1 < this.sections.length) {\n        this.activeIndex += 1;\n        return;\n      }\n\n      this.handleRoute();\n    }\n  }\n};\n</script>\n","<template>\n  <div v-if=\"canShow\">\n    <envelopes-flow />\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport EnvelopesFlow from \"./envelopes/EnvelopesFlow.vue\";\n\nexport default {\n  name: \"EnvelopesView\",\n  components: {\n    EnvelopesFlow\n  },\n  data() {\n    return {\n      canShow: false\n    };\n  },\n  computed: {\n    ...mapState({\n      cartItem: state => state.cartItem,\n      responsiveMode: state => state.responsiveMode,\n      basketPath: state => state.paths.basketPath\n    })\n  },\n  beforeMount() {\n    const editFromBasket = localStorage.getItem(\"editFromBasket\");\n\n    if (this.cartItem.can_choose_envelopes) {\n      this.canShow = true;\n    } else if (parseInt(editFromBasket, 10) === this.cartItem.id) {\n      localStorage.removeItem(\"editFromBasket\");\n      window.location = this.basketPath;\n    } else {\n      this.$router.replace(`/cart_items/${this.cartItem.id}/add_ons/extras`);\n    }\n  }\n};\n</script>\n"],"names":["_sfc_main","mapGetters","option","index","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_Fragment","_renderList","$props","_normalizeClass","$options","_withModifiers","$event","_createCommentVNode","EnvelopeColourControls","RadioInput","mapState","state","t","_hoisted_4","_cache","_createElementVNode","_ctx","_createVNode","_component_radio_input","_toDisplayString","_component_envelope_colour_controls","$data","_hoisted_5","_hoisted_6","list","count","files","file","formData","id","templateLocale","axios","data","blob","link","error","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","number","args","_hoisted_15","event","TextInput","lineNumber","_a","_component_text_input","AddressForm","Btn","_component_address_form","_component_btn","_withCtx","_createTextVNode","ListAddressEditingArea","SlideTransition","_component_slide_transition","_component_list_address_editing_area","ListAddress","FadeTransition","Overlay","SvgIcon","address","_component_fade_transition","_createBlock","_component_overlay","_component_svg_icon","_component_list_address","AddressListCreateModal","AddressListEditModal","Modal","newValue","oldValue","_component_modal","_createSlots","_component_address_list_edit_modal","_component_address_list_create_modal","RecipientAddressingModal","envelopeFront","vm","showLoginModalEvent","showRegisterModalEvent","_Teleport","_component_recipient_addressing_modal","unprintableCharacters","property","input","char","clone","ReturnAddressModal","envelopeBack","_component_return_address_modal","RecipientAddressing","ReturnAddressing","_component_recipient_addressing","_component_return_addressing","EnvelopeColours","type","types","_component_envelope_colours","activeOption","Accordion","AccordionSection","EnvelopeAddressingSelection","EnvelopeColourSelection","EnvelopeColourSelectionComplete","editFromBasket","_component_accordion","_TransitionGroup","section","_component_accordion_section","_normalizeStyle","_resolveDynamicComponent","EnvelopesFlow","_component_envelopes_flow"],"mappings":"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"}