{"version":3,"file":"editor-BEl4SQgb.js","sources":["../../../node_modules/lodash-es/_baseSome.js","../../../node_modules/lodash-es/some.js","../../../app/javascript/store/modules/preview.js","../../../app/javascript/store/editor.js","../../../app/javascript/mixins/dragListeners.js","../../../app/javascript/components/editor/MergeInputsList.vue","../../../app/javascript/components/editor/MergeProgressBar.vue","../../../node_modules/papaparse/papaparse.min.js","../../../app/javascript/components/editor/desktop/MergeCsvModal.vue","../../../app/javascript/components/editor/desktop/MergeControls.vue","../../../app/javascript/components/editor/desktop/ImageControls.vue","../../../app/javascript/components/editor/desktop/Sticker.vue","../../../app/javascript/components/editor/desktop/StickerControls.vue","../../../app/javascript/components/editor/desktop/FixedImageControls.vue","../../../node_modules/validator/lib/isURL.js","../../../app/javascript/components/editor/desktop/QrCodeControls.vue","../../../app/javascript/components/editor/desktop/AiCta.vue","../../../app/javascript/components/editor/desktop/LayerList.vue","../../../app/javascript/components/editor/desktop/FlexibleEditorPanel.vue","../../../app/javascript/components/shared/tips/Tip.vue","../../../app/javascript/components/shared/tips/TipsArea.vue","../../../app/javascript/components/editor/desktop/CanvasControlsPanel.vue","../../../app/javascript/components/editor/ReminderModal.vue","../../../app/javascript/components/editor/UndoRedoButtons.vue","../../../app/javascript/components/editor/desktop/DesktopEditorCtas.vue","../../../app/javascript/components/editor/EditorCtas.vue","../../../app/javascript/utils/slugify.js","../../../app/javascript/components/editor/items_panel/DoubleThicknessSelector.vue","../../../app/javascript/components/editor/items_panel/ItemsPanelDesignable.vue","../../../app/javascript/components/editor/items_panel/ItemsPanelStockItem.vue","../../../app/javascript/components/editor/items_panel/ItemsPanelSheetVersions.vue","../../../app/javascript/components/editor/ItemsPanel.vue","../../../app/javascript/components/editor/desktop/VariationsPanel.vue","../../../app/javascript/components/editor/desktop/ItemsAndVariationPanel.vue","../../../app/javascript/components/editor/DesktopEditor.vue","../../../app/javascript/components/editor/desktop/PapierAiPrimaryDrawer.vue","../../../app/javascript/api/open_ai.js","../../../app/javascript/components/editor/desktop/PapierAiSecondaryDrawer.vue","../../../app/javascript/components/editor/desktop/PapierAi.vue","../../../app/javascript/utils/editor/keyboardShortcuts.js","../../../app/javascript/components/editor/UneditedOverlay.vue","../../../app/javascript/components/editor/mobile/MobileGiftcardOverlay.vue","../../../app/javascript/components/editor/mobile/MobileStickersModal.vue","../../../app/javascript/components/editor/DesignableSheet.vue","../../../app/javascript/components/editor/Designable.vue","../../../app/javascript/components/editor/HintView.vue","../../../app/javascript/components/editor/mobile/MobileEditorCta.vue","../../../app/javascript/components/editor/mobile/MobileEditorNavigation.vue","../../../app/javascript/components/editor/mobile/SimplifiedMobileEditorNavigation.vue","../../../app/javascript/components/editor/mobile/NewMobileEditorNavigation.vue","../../../app/javascript/components/editor/OptionalOverlay.vue","../../../app/javascript/components/editor/StockItem.vue","../../../app/assets/images/blank.png","../../../app/assets/images/message.png","../../../app/javascript/components/editor/mobile/MobileLeaveBlankModal.vue","../../../app/javascript/components/editor/mobile/MobileEditorControls.vue","../../../app/javascript/components/editor/EditorPanel.vue","../../../app/javascript/components/editor/mobile/MobileMergeEditingOverlay.vue","../../../app/javascript/components/editor/MobileEditor.vue","../../../app/javascript/components/editor/CustomiseAlertModal.vue","../../../app/javascript/components/editor/UnsavedChangesModal.vue","../../../app/javascript/components/editor/MergeAlertModal.vue","../../../app/javascript/pages/Editor.vue","../../../app/javascript/entrypoints/editor.js"],"sourcesContent":["import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction baseSome(collection, predicate) {\n  var result;\n\n  baseEach(collection, function(value, index, collection) {\n    result = predicate(value, index, collection);\n    return !result;\n  });\n  return !!result;\n}\n\nexport default baseSome;\n","import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n *   { 'user': 'barney', 'active': true },\n *   { 'user': 'fred',   'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n  var func = isArray(collection) ? arraySome : baseSome;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\"] }] */\nimport offscreenRenderer from \"../../utils/offscreenRenderer\";\n\nconst state = {\n  previewTemplateData: null,\n  templatedPreviewImage: null\n};\n\nconst actions = {\n  async generateTemplatedPreviewImage({ state, commit, rootState }) {\n    if (!state.previewTemplateData) return;\n\n    const allSheets = rootState.design.designables\n      .map(designable => designable.designable_sheets)\n      .flat();\n\n    const images = state.previewTemplateData.sheet_ids.map(sheetId => {\n      const matchingSheet = allSheets.find(sheet => {\n        const { id, designable_sheet_group_id: groupId } = sheet;\n\n        if (id === sheetId) return true;\n\n        // If the sheet is part of a group, we want to match by the group id\n        // e.g. wall calendars and christmas card sets.\n        if (\n          groupId &&\n          state.previewTemplateData.designable_sheet_group_id === groupId\n        ) {\n          return true;\n        }\n\n        return false;\n      });\n\n      if (!matchingSheet) return null;\n\n      return matchingSheet.preview;\n    });\n\n    // We want to handle when the image is blank and not create a templated preview image\n    // As this will just lead to the stock product in the preview template showing\n    // which will be confusing for the customer\n    if (images.some(image => !image)) return;\n\n    const previewImage = await offscreenRenderer.renderPreviewTemplateCanvas(\n      { fabric: state.previewTemplateData.fabric, width: 1200, height: 1200 },\n      images\n    );\n\n    commit(\"setTemplatedPreviewImage\", previewImage);\n  }\n};\n\nconst mutations = {\n  setPreviewTemplateData(state, previewTemplateData) {\n    state.previewTemplateData = previewTemplateData;\n  },\n  setTemplatedPreviewImage(state, templatedPreviewImage) {\n    state.templatedPreviewImage = templatedPreviewImage;\n  }\n};\n\nexport default {\n  namespaced: true,\n  state,\n  mutations,\n  actions\n};\n","import { createStore } from \"vuex\";\n\nimport directSend from \"./modules/directSend\";\nimport design from \"./modules/design\";\nimport flashMessages from \"./modules/flashMessages\";\nimport paths from \"./modules/paths\";\nimport photoLibrary from \"./modules/photoLibrary\";\nimport options from \"./modules/options\";\nimport dragDrop from \"./modules/dragDrop\";\nimport progressBar from \"./modules/photobook/progressBar\";\nimport preview from \"./modules/preview\";\nimport reminders from \"./modules/account/reminders\";\n\nexport default createStore({\n  modules: {\n    design,\n    dragDrop,\n    directSend,\n    flashMessages,\n    paths,\n    photoLibrary,\n    options,\n    progressBar,\n    preview,\n    reminders\n  },\n  state: {\n    loading: false,\n    responsiveMode: false,\n    loggedIn: null,\n    currency: null,\n    locale: null,\n    showItemsPanelWarnings: false,\n    countries: [],\n    formErrors: [],\n    defaultCountryIso: \"GB\",\n    isAdmin: false,\n    showTextEditingOverlay: false,\n    showCaptionEditingOverlay: false,\n    showMergeEditingOverlay: false,\n    valueBeingEdited: null,\n    sampleModalOpen: false,\n    objectOverlaysAreFlashing: false,\n    unsavedChangesModalVisible: false,\n    useSampleEditor: false,\n    recommendedProducts: [],\n    allowPapierAi: true,\n    imageErrorModalOpen: false,\n    loggedInFromWedding: false,\n    keyboardIconHighlighted: false\n  },\n  getters: {\n    formatPrice: state => price =>\n      Intl.NumberFormat(state.locale, {\n        style: \"currency\",\n        currency: state.currency,\n        minimumFractionDigits: 2\n      }).format(price),\n    canShowQrCodeCta: (state, getters) => {\n      return (\n        [\"Invitation\", \"Invite\", \"Info card\", \"RSVP card\"].includes(\n          state.design.activeDesignable.name\n        ) &&\n        getters[\"design/isMultipleFlow\"] &&\n        state.design.isWeddingItem &&\n        !state.design.activeStockItem &&\n        !state.design.activeEnvelopes &&\n        !state.design.activeDesignable.optionallyHidden &&\n        state.design.canvas?.editable &&\n        !state.design.canvas?.currentlyEditing &&\n        !state.design.addingQrCode &&\n        !state.design.canvas?.qrCodes().length\n      );\n    }\n  },\n  mutations: {\n    setLoading(state, loading) {\n      state.loading = loading;\n    },\n    setResponsiveMode(state, responsiveMode) {\n      state.responsiveMode = responsiveMode;\n    },\n    setLoggedIn(state, loggedIn) {\n      state.loggedIn = loggedIn;\n    },\n    setLoggedInFromWedding(state) {\n      state.loggedInFromWedding = true;\n    },\n    setCurrency(state, currency) {\n      state.currency = currency;\n    },\n    setLocale(state, locale) {\n      state.locale = locale;\n    },\n    setShowItemsPanelWarnings(state, flag) {\n      state.showItemsPanelWarnings = flag;\n    },\n    setCountries(state, countries) {\n      state.countries = countries;\n    },\n    setFormErrors(state, errors) {\n      state.formErrors = errors;\n    },\n    setDefaultCountryIso(state, defaultCountryIso) {\n      state.defaultCountryIso = defaultCountryIso;\n    },\n    setIsAdmin(state, flag) {\n      state.isAdmin = flag;\n    },\n    setShowTextEditingOverlay(state, flag) {\n      state.showTextEditingOverlay = flag;\n    },\n    setShowCaptionEditingOverlay(state, flag) {\n      state.showCaptionEditingOverlay = flag;\n    },\n    setShowMergeEditingOverlay(state, flag) {\n      state.showMergeEditingOverlay = flag;\n    },\n    setValueBeingEdited(state, value) {\n      state.valueBeingEdited = value;\n    },\n    setSampleModalOpen(state, flag) {\n      state.sampleModalOpen = flag;\n    },\n    setObjectOverlaysAreFlashing(state, flag) {\n      state.objectOverlaysAreFlashing = flag;\n    },\n    setUnsavedChangesModalVisible(state, flag) {\n      state.unsavedChangesModalVisible = flag;\n    },\n    setUseSampleEditor(state, flag) {\n      state.useSampleEditor = flag;\n    },\n    setRecommendedProducts(state, products) {\n      state.recommendedProducts = products;\n    },\n    setAllowPapierAi(state, flag) {\n      state.allowPapierAi = flag;\n    },\n    setImageErrorModalOpen(state, flag) {\n      state.imageErrorModalOpen = flag;\n    },\n    setKeyboardIconHighlighted(state, flag) {\n      state.keyboardIconHighlighted = flag;\n    }\n  }\n});\n","import { mapMutations, mapState } from \"vuex\";\n\nexport default {\n  computed: mapState({\n    currentlyDraggingFiles: state => state.dragDrop.currentlyDraggingFiles\n  }),\n  mounted() {\n    this.resetDragTimeout();\n    window.addEventListener(\"dragover\", this.dragOver.bind(this));\n    window.addEventListener(\"drop\", this.drop.bind(this));\n    window.addEventListener(\"dragend\", () => {\n      this.setCurrentlyDraggingFiles(false);\n    });\n  },\n  methods: {\n    ...mapMutations({\n      setCurrentlyDraggingFiles: \"dragDrop/setCurrentlyDraggingFiles\"\n    }),\n    dragOver(event) {\n      event.preventDefault();\n      this.resetDragTimeout();\n      if (!this.currentlyDraggingFiles) {\n        this.setCurrentlyDraggingFiles(true);\n      }\n    },\n    drop(e) {\n      e.preventDefault();\n    },\n    resetDragTimeout() {\n      const vm = this;\n      if (vm.dragTimeout) {\n        clearTimeout(vm.dragTimeout);\n      }\n      vm.dragTimeout = setTimeout(() => {\n        if (vm.currentlyDraggingFiles) {\n          vm.setCurrentlyDraggingFiles(false);\n        }\n        vm.resetDragTimeout();\n      }, 1000);\n    }\n  }\n};\n","<template>\n  <div class=\"grid gap-4\">\n    <div\n      v-for=\"i in quantityOptions\"\n      :key=\"i\"\n      class=\"cursor-pointer grid gap-3\"\n      @click=\"selectFirstInput(i)\">\n      <div\n        v-for=\"key in availableKeys\"\n        :key=\"`${translatedKey(key).toLowerCase()}-${i}`\">\n        <form @submit.prevent>\n          <label\n            :for=\"`mergeinput-${i}`\"\n            class=\"typeset-9 pointer-events-none flex items-baseline\">\n            <p class=\"typeset-9\">{{ translatedKey(key) }}</p>\n            <p\n              v-if=\"maxLength(key)\"\n              class=\"ml-auto typeset-8\">\n              {{ t(\"editor.merge.max-characters\", { count: maxLength(key) }) }}\n            </p>\n          </label>\n          <input\n            :id=\"`mergeinput-${translatedKey(key).toLowerCase()}-${i}`\"\n            :ref=\"`mergeinput-${translatedKey(key).toLowerCase()}`\"\n            :value=\"stringForKeyAtIndex(key, i)\"\n            :placeholder=\"inputPlaceholder(key)\"\n            :maxlength=\"maxLength(key)\"\n            autocomplete=\"off\"\n            type=\"text\"\n            class=\"form-control bordered\"\n            @click.stop=\"focusMergeInput(i, $event.target, key)\"\n            @focus=\"focusMergeInput(i, $event.target, key)\"\n            @input=\"refreshString(i, $event.target.value, key)\" />\n        </form>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nexport default {\n  name: \"MergeInputsList\",\n  emits: [\"show-warning\"],\n  data() {\n    return {\n      callBlur: true\n    };\n  },\n  computed: {\n    ...mapGetters({\n      availableKeys: \"design/merge/availableKeys\",\n      quantityOptions: \"design/merge/quantityOptions\",\n      stringForKeyAtIndex: \"design/merge/stringForKeyAtIndex\",\n      translationKeyForKey: \"design/merge/translationKeyForKey\",\n      maxLengthForString: \"design/merge/maxLengthForString\",\n      nonBlankMergeStrings: \"design/merge/nonBlankMergeStrings\"\n    }),\n    ...mapState({\n      canvas: state => state.design.canvas,\n      activeDesignable: state => state.design.activeDesignable,\n      currentMergeStringIndex: state =>\n        state.design.merge.currentMergeStringIndex,\n      responsiveMode: state => state.responsiveMode\n    }),\n    translatedKey() {\n      return key => this.t(this.translationKeyForKey(key));\n    },\n    inputPlaceholder() {\n      return key =>\n        this.t(\"editor.merge.desktop.placeholder\", {\n          key: this.translatedKey(key).toLowerCase()\n        });\n    },\n    maxLength() {\n      return key => {\n        if (this.maxLengthForString(key) > 0) {\n          return this.maxLengthForString(key);\n        }\n        return null;\n      };\n    },\n    nonBlankMergeStringValues() {\n      return this.nonBlankMergeStrings.flatMap(i => Object.values(i));\n    }\n  },\n  created() {\n    const [key] = this.availableKeys;\n    this.$store.commit(\"design/merge/setCurrentMergeKey\", key);\n    this.$store.dispatch(\"design/merge/setUpFirstMergeInput\");\n  },\n  mounted() {\n    this.$store.dispatch(\"design/merge/setUpBlankMergeObject\");\n  },\n  methods: {\n    focusMergeInput(index, target, key) {\n      this.callBlur = false;\n      this.$store.commit(\"design/merge/setCurrentMergeKey\", key);\n      this.refreshString(index, target.value, key, true);\n      // If the newly focused input is outside the scrolling parent,\n      // scroll it to the center.\n      if (\n        !this.responsiveMode &&\n        (target.getBoundingClientRect().bottom >\n          this.$el.getBoundingClientRect().bottom ||\n          target.getBoundingClientRect().top <\n            this.$el.getBoundingClientRect().top)\n      ) {\n        target.scrollIntoView({\n          behavior: \"smooth\",\n          block: \"center\"\n        });\n      }\n    },\n    refreshString(index, value, key, updateAll = false) {\n      this.$store.dispatch(\"design/merge/refreshString\", {\n        index,\n        value,\n        key,\n        updateAll\n      });\n      const result = this.nonBlankMergeStringValues.some(val => {\n        return this.canvas.unprintableRegex.exec(val);\n      });\n      if (result) {\n        this.$emit(\"show-warning\", true);\n      } else {\n        this.$emit(\"show-warning\", false);\n      }\n    },\n    selectFirstInput(index) {\n      const [key] = this.availableKeys;\n      this.$refs[`mergeinput-${this.translatedKey(key).toLowerCase()}`][\n        index\n      ].focus();\n    }\n  }\n};\n</script>\n","<template>\n  <div :class=\"containerStyles\">\n    <p\n      data-cy=\"progress-message\"\n      class=\"p-2 bg-paper typeset-7 text-center\">\n      {{ progressMessage }}\n    </p>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nexport default {\n  name: \"MergeProgressBar\",\n  computed: {\n    ...mapState({\n      activeDesignable: state => state.design.activeDesignable,\n      responsiveMode: state => state.responsiveMode\n    }),\n    ...mapGetters({\n      doneCount: \"design/merge/doneMergeInputsCount\",\n      blankCount: \"design/merge/blankMergeInputsCount\"\n    }),\n    progressMessage() {\n      let message = this.t(\"editor.merge.progress-bar.done\", {\n        count: this.doneCount,\n        types: this.activeDesignable.plural_name.toLowerCase()\n      });\n      if (this.blankCount > 0) {\n        message += this.t(\"editor.merge.progress-bar.blank\", {\n          count: this.blankCount\n        });\n      }\n      return message;\n    },\n    containerStyles() {\n      if (!this.responsiveMode) {\n        return \"sticky top-0\";\n      }\n      return null;\n    }\n  }\n};\n</script>\n","/* @license\nPapa Parse\nv5.3.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=m,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&U(e.read)&&U(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,m=!0,_=\",\",v=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(_=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);\"string\"==typeof t.newline&&(v=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(m=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);\"boolean\"==typeof t.escapeFormulae&&(o=t.escapeFormulae)}();var h=new RegExp(q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return f(null,e,i);if(\"object\"==typeof e[0])return f(r||u(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:u(e.data[0])),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),f(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e){if(\"object\"!=typeof e)return[];var t=[];for(var i in e)t.push(i);return t}function f(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&m){for(var a=0;a<e.length;a++)0<a&&(r+=_),r+=y(e[a],a);0<t.length&&(r+=v)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(r+=_);var g=n&&s?e[p]:p;r+=y(t[o][g],p)}o<t.length-1&&(!i||0<h&&!f)&&(r+=v)}}return r}function y(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);!0===o&&\"string\"==typeof e&&null!==e.match(/^[=+\\-@].*$/)&&(e=\"'\"+e);var i=e.toString().replace(h,a),r=\"boolean\"==typeof n&&n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(i,b.BAD_DELIMITERS)||-1<i.indexOf(_)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1);return r?s+i+s:i}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=w,b.ParserHandle=i,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0!==h.length){var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},b.parse(n.file,n.instanceConfig)}else U(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=E(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&U(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=r.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(U(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!U(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i)}try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)):r=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var i=r.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(_){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)(e[-+]?\\d+)?\\s*$/,u=/(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(U(_.step)){var p=_.step;_.step=function(e){if(c=e,m())g();else{if(g(),0===c.data.length)return;i+=e.data.length,_.preview&&i>_.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function v(e){return\"greedy\"===_.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),_.skipEmptyLines)for(var e=0;e<c.data.length;e++)v(c.data[e])&&c.data.splice(e--,1);return m()&&function(){if(!c)return;function e(e,t){U(_.transformHeader)&&(e=_.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;m()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!_.header&&!_.dynamicTyping&&!_.transform)return c;function e(e,t){var i,r=_.header?{}:[];for(i=0;i<e.length;i++){var n=i,s=e[i];_.header&&(n=i>=l.length?\"__parsed_extra\":l[i]),_.transform&&(s=_.transform(s,n)),s=y(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return _.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+i,f+t)),r}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);_.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function m(){return _.header&&0===l.length}function y(e,t){return i=e,_.dynamicTypingFunction&&void 0===_.dynamicTyping[i]&&(_.dynamicTyping[i]=_.dynamicTypingFunction(i)),!0===(_.dynamicTyping[i]||_.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<r)return!0}return!1}(t)?parseFloat(t):u.test(t)?new Date(t):\"\"===t?null:t):t;var i}function k(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),c.errors.push(n)}this.parse=function(e,t,i){var r=_.quoteChar||'\"';if(_.newline||(_.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(q(t)+\"([^]*?)\"+q(t),\"gm\"),r=(e=e.replace(i,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return\"\\n\";for(var a=0,o=0;o<r.length;o++)\"\\n\"===r[o][0]&&a++;return a>=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,_.delimiter)U(_.delimiter)&&(_.delimiter=_.delimiter(e),c.meta.delimiter=_.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u<n.length;u++){var f=n[u],d=0,l=0,c=0;o=void 0;for(var p=new w({comments:r,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(i&&v(p.data[g]))c++;else{var m=p.data[g].length;l+=m,void 0!==o?0<m&&(d+=Math.abs(m-o),o=m):o=m}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===h||h<l)&&1.99<l&&(a=d,s=f,h=l)}return{successful:!!(_.delimiter=s),bestDelimiter:s}}(e,_.newline,_.skipEmptyLines,_.comments,_.delimitersToGuess);n.successful?_.delimiter=n.bestDelimiter:(h=!0,_.delimiter=b.DefaultDelimiter),c.meta.delimiter=_.delimiter}var s=E(_);return _.preview&&_.header&&s.preview++,a=e,o=new w(s),c=o.parse(a,t,i),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=U(_.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,U(_.complete)&&_.complete(c),a=\"\"}}function q(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function w(e){var O,D=(e=e||{}).delimiter,I=e.newline,T=e.comments,A=e.step,L=e.preview,F=e.fastMode,z=O=void 0===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(z=e.escapeChar),(\"string\"!=typeof D||-1<b.BAD_DELIMITERS.indexOf(D))&&(D=\",\"),T===D)throw new Error(\"Comment character same as delimiter\");!0===T?T=\"#\":(\"string\"!=typeof T||-1<b.BAD_DELIMITERS.indexOf(T))&&(T=!1),\"\\n\"!==I&&\"\\r\"!==I&&\"\\r\\n\"!==I&&(I=\"\\n\");var M=0,j=!1;this.parse=function(a,t,i){if(\"string\"!=typeof a)throw new Error(\"Input must be a string\");var r=a.length,e=D.length,n=I.length,s=T.length,o=U(A),h=[],u=[],f=[],d=M=0;if(!a)return R();if(F||!1!==F&&-1===a.indexOf(O)){for(var l=a.split(I),c=0;c<l.length;c++){if(f=l[c],M+=f.length,c!==l.length-1)M+=I.length;else if(i)return R();if(!T||f.substring(0,s)!==T){if(o){if(h=[],b(f.split(D)),S(),j)return R()}else b(f.split(D));if(L&&L<=c)return h=h.slice(0,L),R(!0)}}return R()}for(var p=a.indexOf(D,M),g=a.indexOf(I,M),m=new RegExp(q(z)+q(O),\"g\"),_=a.indexOf(O,M);;)if(a[M]!==O)if(T&&0===f.length&&a.substring(M,M+s)===T){if(-1===g)return R();M=g+n,g=a.indexOf(I,M),p=a.indexOf(D,M)}else{if(-1!==p&&(p<g||-1===g)){if(!(p<_)){f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}var v=x(p,_,g);if(v&&void 0!==v.nextDelim){p=v.nextDelim,_=v.quoteSearch,f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}}if(-1===g)break;if(f.push(a.substring(M,g)),C(g+n),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0)}else for(_=M,M++;;){if(-1===(_=a.indexOf(O,_+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:M}),E();if(_===r-1)return E(a.substring(M,_).replace(m,O));if(O!==z||a[_+1]!==z){if(O===z||0===_||a[_-1]!==z){-1!==p&&p<_+1&&(p=a.indexOf(D,_+1)),-1!==g&&g<_+1&&(g=a.indexOf(I,_+1));var y=w(-1===g?p:Math.min(p,g));if(a[_+1+y]===D){f.push(a.substring(M,_).replace(m,O)),a[M=_+1+y+e]!==O&&(_=a.indexOf(O,M)),p=a.indexOf(D,M),g=a.indexOf(I,M);break}var k=w(g);if(a.substring(_+1+k,_+1+k+n)===I){if(f.push(a.substring(M,_).replace(m,O)),C(_+1+k+n),p=a.indexOf(D,M),_=a.indexOf(O,M),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:M}),_++}}else _++}return E();function b(e){h.push(e),d=M}function w(e){var t=0;if(-1!==e){var i=a.substring(_+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=a.substring(M)),f.push(e),M=r,b(f),o&&S()),R()}function C(e){M=e,b(f),f=[],g=a.indexOf(I,M)}function R(e){return{data:h,errors:u,meta:{delimiter:D,linebreak:I,aborted:j,truncated:!!e,cursor:d+(t||0)}}}function S(){A(R()),h=[],u=[]}function x(e,t,i){var r={nextDelim:void 0,quoteSearch:void 0},n=a.indexOf(O,t+1);if(t<e&&e<n&&(n<i||-1===i)){var s=a.indexOf(D,n);if(-1===s)return r;n<s&&(n=a.indexOf(O,n+1)),r=x(s,n,i)}else r={nextDelim:e,quoteSearch:t};return r}},this.abort=function(){j=!0},this.getCharIndex=function(){return M}}function m(e){var t=e.data,i=a[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,_(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:v,resume:v};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&_(t.workerId,t.results)}function _(e,t){var i=a[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete a[e]}function v(){throw new Error(\"Not implemented.\")}function E(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=E(e[i]);return t}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var i=b.parse(t.input,t.config);i&&f.postMessage({workerId:b.WORKER_ID,results:i,finished:!0})}}),(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(u.prototype)).constructor=g,b});","<template>\n  <teleport to=\"#end-of-body\">\n    <modal\n      open\n      size=\"medium\"\n      @closed=\"$emit('closed')\">\n      <template #header>\n        <h3 class=\"typeset-3\">\n          {{ t(\"editor.merge.csv-modal.title\") }}\n        </h3>\n      </template>\n      <template #body>\n        <p class=\"mb-4\">\n          {{ t(\"editor.merge.csv-modal.explanation\") }}\n        </p>\n      </template>\n      <template #footer>\n        <a\n          v-if=\"isInternetExplorer\"\n          class=\"btn btn-link mr-3 flex-1\"\n          @click.prevent=\"internetExplorerDownloadFile\">\n          {{ t(\"editor.merge.csv-modal.download\") }}\n        </a>\n        <a\n          v-else\n          :href=\"csvFile\"\n          class=\"btn btn-link mr-3 flex-1\"\n          download=\"papier_inputs.csv\">\n          {{ t(\"editor.merge.csv-modal.download\") }}\n        </a>\n        <a\n          href=\"#\"\n          class=\"btn btn-primary flex-1\"\n          data-cy=\"upload-csv-merge-flow\"\n          @click.prevent=\"openFileInput\">\n          {{ t(\"editor.merge.csv-modal.upload\") }}\n        </a>\n        <input\n          ref=\"fileupload\"\n          type=\"file\"\n          class=\"hidden\"\n          accept=\".csv\"\n          @change=\"handleFile($event.target.files)\" />\n      </template>\n    </modal>\n  </teleport>\n</template>\n\n<script>\nimport { isEqual } from \"lodash-es\";\nimport { mapGetters } from \"vuex\";\nimport * as Papa from \"papaparse\";\n\nimport Modal from \"../../shared/Modal.vue\";\n\nexport default {\n  name: \"MergeCsvModal\",\n  components: {\n    Modal\n  },\n  props: {\n    designableNamePlural: {\n      type: String,\n      required: true\n    }\n  },\n  emits: [\"closed\"],\n  computed: {\n    ...mapGetters({\n      columns: \"design/merge/availableKeys\",\n      maxLengthForString: \"design/merge/maxLengthForString\",\n      maxNumberOfStrings: \"design/pricing/maximumQuantityForActiveDesignable\",\n      productId: \"design/productId\"\n    }),\n    csvFile() {\n      const csvContent = `data:text/csv;charset=utf-8,${this.columns.join(\n        \",\"\n      )}`;\n      return window.encodeURI(csvContent);\n    },\n    isInternetExplorer() {\n      return !!window.navigator.msSaveOrOpenBlob;\n    },\n    columnsWithMaxLengths() {\n      return this.columns.filter(column => {\n        return this.maxLengthForString(column) > 0;\n      });\n    }\n  },\n  methods: {\n    internetExplorerDownloadFile() {\n      const blob = new Blob([`${this.columns.join(\",\")}`], {\n        type: \"text/csv\"\n      });\n      window.navigator.msSaveOrOpenBlob(blob, \"papier_inputs.csv\");\n    },\n    openFileInput() {\n      this.$refs.fileupload.click();\n    },\n    handleFile(files) {\n      analytics.track(\"Uploaded Spreadsheet\", {\n        product_id: `PRODUCT-${this.productId}`,\n        location: \"Editor\"\n      });\n      const vm = this;\n      if (!files.length) return;\n      const [file] = files;\n      Papa.parse(file, {\n        complete({ data: rows }) {\n          vm.addNewStrings(rows);\n        }\n      });\n    },\n    addNewStrings(rows) {\n      const vm = this;\n      const [keys] = rows.splice(0, 1);\n      if (vm.columnsMatch(keys)) {\n        const strings = rows.map(row => {\n          const stringObject = {};\n          keys.forEach((key, index) => {\n            stringObject[key] = row[index];\n          });\n          return stringObject;\n        });\n        vm.handleStrings(strings);\n      } else {\n        vm.$emit(\"closed\");\n        const list = vm.columns.join(\", \");\n        window.alert(\n          vm.t(\"editor.merge.csv-modal.warnings.column-labels\", {\n            list\n          })\n        );\n      }\n    },\n    columnsMatch(keys) {\n      return isEqual(keys.sort(), this.columns.sort());\n    },\n    hasOverlyLongStrings(strings) {\n      return strings.some(string => this.stringIsTooLong(string));\n    },\n    stringIsTooLong(string) {\n      const vm = this;\n      return Object.keys(string).some(key => {\n        const maxLength = vm.maxLengthForString(key);\n        return maxLength > 0 && maxLength < string[key].length;\n      });\n    },\n    alertMaxLengths() {\n      const lengths = this.columnsWithMaxLengths\n        .map(column => {\n          return this.t(\n            \"editor.merge.csv-modal.warnings.max-lengths.string-message\",\n            { column, count: this.maxLengthForString(column) }\n          );\n        })\n        .join(\"\\n\");\n      window.alert(\n        this.t(\"editor.merge.csv-modal.warnings.max-lengths.alert\", { lengths })\n      );\n    },\n    handleStrings(strings) {\n      if (strings.length > this.maxNumberOfStrings) {\n        window.alert(\n          this.t(\"editor.merge.csv-modal.warnings.max-strings\", {\n            count: this.maxNumberOfStrings\n          })\n        );\n      } else if (this.hasOverlyLongStrings(strings)) {\n        this.alertMaxLengths();\n      } else if (\n        window.confirm(this.t(\"editor.merge.csv-modal.warnings.overwrite\"))\n      ) {\n        this.$store.dispatch(\n          \"design/merge/setActiveDesignableMergeStrings\",\n          strings\n        );\n      }\n      this.$emit(\"closed\");\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    data-cy=\"merge-controls\"\n    class=\"pb-8 flex flex-col gap-4\">\n    <div\n      v-if=\"showsStyle\"\n      class=\"bg-paper-1 shadow-1 grid gap-4 py-4\">\n      <div\n        v-if=\"!enabledStyles || anyEnabledStyles\"\n        class=\"px-4\">\n        <p class=\"typeset-4 mb-3\">Styles</p>\n        <p class=\"typeset-8\">\n          {{\n            t(\"editor.merge.desktop.styles-explanation\", {\n              types: activeDesignable.plural_name.toLowerCase()\n            })\n          }}\n        </p>\n      </div>\n      <font-family-input\n        v-if=\"!enabledStyles || enabledStyles.fontFamily\"\n        :font-family=\"currentFontFamily\"\n        :name=\"t('editor.input-labels.font')\"\n        data-cy=\"merge-controls-font-family\"\n        class=\"px-4\"\n        @input=\"setFontFamily\" />\n      <div class=\"px-4\">\n        <colour-input\n          v-if=\"!enabledStyles || enabledStyles.textColour\"\n          :value=\"currentStyle.fill\"\n          :name=\"t('editor.input-labels.colour')\"\n          data-cy=\"merge-controls-colour\"\n          @input=\"setColour\" />\n      </div>\n      <bold-italic-input\n        v-if=\"!enabledStyles || enabledStyles.fontStyle\"\n        :value=\"currentStyle.fontFamily\"\n        :font-family=\"currentFontFamily\"\n        :name=\"t('editor.input-labels.style')\"\n        class=\"px-4\"\n        data-cy=\"merge-control-font-style\"\n        @input=\"setFontFamily\" />\n    </div>\n    <div class=\"bg-paper-1 shadow-1 p-4\">\n      <p class=\"typeset-4 mb-3\">Custom text</p>\n      <p class=\"mb-4 typeset-8\">\n        {{\n          t(\"editor.merge.desktop.text-explanation\", {\n            type: activeDesignable.name.toLowerCase()\n          })\n        }}\n      </p>\n      <a\n        class=\"mb-4 btn btn-block btn-secondary btn-small\"\n        data-cy=\"upload-spreadsheet-from-merge-control-panel\"\n        @click.prevent=\"csvModalOpen = true\">\n        {{ t(\"editor.merge.desktop.csv-button\") }}\n      </a>\n      <merge-progress-bar />\n      <merge-inputs-list class=\"py-4\" />\n    </div>\n    <merge-csv-modal\n      v-if=\"csvModalOpen\"\n      :designable-name-plural=\"activeDesignable.plural_name.toLowerCase()\"\n      @closed=\"csvModalOpen = false\" />\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nimport BoldItalicInput from \"../inputs/BoldItalicInput.vue\";\nimport ColourInput from \"../inputs/ColourInput.vue\";\nimport FontFamilyInput from \"../inputs/FontFamilyInput.vue\";\nimport MergeInputsList from \"../MergeInputsList.vue\";\nimport MergeProgressBar from \"../MergeProgressBar.vue\";\nimport MergeCsvModal from \"./MergeCsvModal.vue\";\n\nexport default {\n  name: \"MergeControls\",\n  components: {\n    BoldItalicInput,\n    ColourInput,\n    FontFamilyInput,\n    MergeInputsList,\n    MergeProgressBar,\n    MergeCsvModal\n  },\n  data() {\n    return {\n      csvModalOpen: false\n    };\n  },\n  computed: {\n    ...mapGetters({\n      currentStyle: \"design/merge/currentStyle\",\n      currentFontFamily: \"design/merge/currentFontFamily\",\n      showsStyle: \"design/merge/showsStyle\",\n      productId: \"design/productId\"\n    }),\n    ...mapState({\n      activeDesignable: state => state.design.activeDesignable,\n      enabledStyles: state => state.design.canvas?.enabledStyles\n    }),\n    anyEnabledStyles() {\n      return (\n        this.enabledStyles && Object.values(this.enabledStyles).some(Boolean)\n      );\n    }\n  },\n  mounted() {\n    this.$store.dispatch(\"design/merge/setUpOriginalSizes\");\n  },\n  methods: {\n    setFontFamily(fontFamily) {\n      const style = { fontFamily };\n      this.$store.dispatch(\"design/merge/setMergeStyle\", style);\n      if (fontFamily.includes(\"Bold\") || fontFamily.includes(\"Italic\")) {\n        this.handleAnalyticsEvents(\"Style\");\n      } else {\n        this.handleAnalyticsEvents(\"Font\");\n      }\n    },\n    setColour(colour) {\n      const style = { fill: colour };\n      this.$store.dispatch(\"design/merge/setMergeStyle\", style);\n      this.handleAnalyticsEvents(\"Colour\");\n    },\n    handleAnalyticsEvents(type) {\n      analytics.track(\"Edited Text\", {\n        product_id: `PRODUCT-${this.productId}`,\n        type\n      });\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"flex flex-col gap-4\">\n    <image-editing-controls\n      v-if=\"selectedImage && canvas.filestackImage\"\n      class=\"bg-paper-1 shadow-1 p-4\" />\n\n    <div class=\"bg-paper-1 shadow-1\">\n      <photo-library @input=\"setImage($event)\" />\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport ImageEditingControls from \"../../shared/desktop/ImageEditingControls.vue\";\nimport PhotoLibrary from \"../../shared/desktop/PhotoLibrary.vue\";\n\nexport default {\n  name: \"ImageControls\",\n  components: {\n    ImageEditingControls,\n    PhotoLibrary\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      selectedImage: state => state.design.canvas?.selectedImage,\n      isAdmin: state => state.isAdmin\n    })\n  },\n  methods: {\n    setImage(photo) {\n      this.canvas.setImageUrl({\n        url: photo.url,\n        filestackImage: photo\n      });\n      this.$store.commit(\"design/saveActiveSheet\");\n    }\n  }\n};\n</script>\n\n<style scoped>\n/*! purgecss start ignore */\n:deep(.photo-library) {\n  padding: 16px;\n}\n/*! purgecss end ignore */\n</style>\n","<template>\n  <div\n    class=\"photo-album-photo-inner aspect-ratio-1x1 cursor-pointer relative bg-paper-3 p-3\"\n    @mouseover=\"showPlus = true\"\n    @mouseout=\"showPlus = false\"\n    @click=\"$emit('add')\">\n    <img\n      :src=\"sticker.image.thumb\"\n      class=\"block h-full w-full object-contain pointer-events-none\" />\n    <fade-transition>\n      <svg-icon\n        v-if=\"showPlus\"\n        name=\"plus-with-border\"\n        style=\"fill: #faf7f0\"\n        height=\"16px\"\n        width=\"16px\"\n        class=\"absolute top-3 right-3\" />\n    </fade-transition>\n    <fade-transition>\n      <div\n        v-if=\"count > 0\"\n        class=\"absolute bottom-0 right-0 w-5 h-5 flex items-center justify-center text-center bg-paper-5 text-black line-height-1\">\n        {{ count }}\n      </div>\n    </fade-transition>\n  </div>\n</template>\n\n<script>\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"Sticker\",\n  components: {\n    FadeTransition,\n    SvgIcon\n  },\n  props: {\n    sticker: {\n      type: Object,\n      required: true\n    },\n    count: {\n      type: Number,\n      required: true\n    }\n  },\n  emits: [\"add\"],\n  data() {\n    return {\n      showPlus: false\n    };\n  }\n};\n</script>\n","<template>\n  <div\n    v-if=\"stickers\"\n    class=\"flex flex-col\">\n    <div class=\"pb-8 px-3 pt-3\">\n      <div class=\"bg-paper-1 flex-col items-center p-3 pr-4 cursor-pointer\">\n        <div\n          class=\"flex items-center mb-4\"\n          @click.prevent=\"$emit('toggle-expand')\">\n          <div class=\"bg-spearmint typeset-4 px-4 py-3 mr-3\">\n            {{ t(\"editor.stickers.new\") }}\n          </div>\n          <p class=\"typeset-7\">{{ t(\"editor.stickers.add\") }}</p>\n          <div class=\"ml-auto flex items-center justify-center\">\n            <svg-icon :name=\"expanded ? 'minus' : 'plus'\" />\n          </div>\n        </div>\n        <button\n          class=\"btn-block btn-secondary btn flex\"\n          :disabled=\"!hasStickers ? 'disabled' : null\"\n          @click=\"removeStickers\">\n          <svg-icon\n            name=\"bin\"\n            class=\"mr-3\" />\n          {{ t(\"editor.stickers.remove\") }}\n        </button>\n      </div>\n      <div v-if=\"expanded\">\n        <div class=\"grid grid-cols-2 gap-3 bg-paper-1 p-3\">\n          <sticker\n            v-for=\"sticker in allStickers\"\n            :key=\"sticker.id\"\n            :sticker=\"sticker\"\n            :count=\"count(sticker.name)\"\n            @add=\"addSticker(sticker)\" />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport { Sticker as StickerObject } from \"@/components/brut/src/objects/sticker/sticker.ts\";\nimport defaults from \"@/app/javascript/utils/admin/design/defaultCanvasObjects\";\n\nimport Sticker from \"./Sticker.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"StickerControls\",\n  components: {\n    Sticker,\n    SvgIcon\n  },\n  props: {\n    stickerSets: {\n      type: Array,\n      required: true\n    },\n    expanded: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"toggle-expand\"],\n  data() {\n    return {\n      showBtn: true\n    };\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      activeDesignable: state => state.design.activeDesignable\n    }),\n    allStickers() {\n      return this.stickerSets.flatMap(stickerSet => stickerSet.stickers);\n    },\n    stickers() {\n      return this.canvas?.stickerObjects();\n    },\n    count() {\n      return name => {\n        return this.stickers.filter(sticker => sticker.name === name).length;\n      };\n    },\n    hasStickers() {\n      return this.canvas.objects.some(obj => obj.type === \"sticker\");\n    }\n  },\n  watch: {\n    // eslint-disable-next-line\n    \"canvas.selectedObject\": function(object) {\n      if (!object) return;\n\n      if (object.type === \"sticker\" && !this.expanded) {\n        this.$emit(\"toggle-expand\");\n      } else if (object.type !== \"sticker\" && this.expanded) {\n        this.$emit(\"toggle-expand\");\n      }\n    }\n  },\n  methods: {\n    removeStickers() {\n      this.canvas.stickerObjects().forEach(obj => {\n        obj.remove();\n      });\n      this.canvas.renderAll();\n    },\n    insert(objectJson) {\n      this.canvas.add(objectJson).then(() => {\n        this.canvas.refreshObjects();\n        this.canvas.renderAll();\n        this.bringOverlayToFront();\n      });\n    },\n    newSticker() {\n      return new StickerObject(this.canvas, defaults.logoFrame());\n    },\n    async addSticker({ image, name }) {\n      const stickerObject = this.newSticker();\n      stickerObject.name = name;\n      await stickerObject.setImage(image.full, null);\n      this.insert(stickerObject.toJSON());\n      analytics.track(\"Added Digital Sticker\");\n    },\n    bringOverlayToFront() {\n      this.canvas.getObjects().forEach(obj => {\n        if (obj.name === \"overlay\") {\n          this.canvas.bringToFront(obj);\n        }\n      });\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    v-if=\"logoFrame\"\n    class=\"p-4 text-center bg-paper-1 shadow-1 relative\">\n    <div class=\"text-right\">\n      <button\n        class=\"appearance-none w-6 h-6 cursor-pointer absolute top-3 right-3 flex bg-transparent transition-background hover:bg-paper-2\"\n        @click=\"closeControls\">\n        <svg-icon\n          height=\"10px\"\n          width=\"10px\"\n          name=\"cross\"\n          class=\"m-auto\" />\n      </button>\n    </div>\n    <div class=\"mb-4 bg-pink p-4 br-circle inline-flex\">\n      <svg-icon name=\"upload\" />\n    </div>\n    <div class=\"mb-3\">\n      {{\n        t(\"editor.logo-controls.title\", { type: isB2BFlow ? \"Logo\" : \"Image\" })\n      }}\n    </div>\n    <div class=\"typeset-8 mb-5\">\n      {{ t(\"editor.logo-controls.description\") }}\n    </div>\n    <button\n      class=\"btn btn-primary mb-3\"\n      @click=\"pickFromComputer\">\n      {{ t(\"editor.logo-controls.button\") }}\n    </button>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport FileUpload from \"../../../utils/fileUpload\";\n\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"FixedImageControls\",\n  components: {\n    SvgIcon\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      isB2BFlow: state => state.design.isB2BFlow,\n      logoFrame: state => state.design.canvas?.selectedObject\n    })\n  },\n  methods: {\n    closeControls() {\n      this.canvas.deactivateAllWithDispatch();\n    },\n    pickFromComputer() {\n      const vm = this;\n      vm.canvas.fireEvent(\"loading\");\n\n      new FileUpload().call(\"local_file_system\", false, {\n        onSingleUploadDone(file) {\n          vm.logoFrame.setImage(file.url, file).then(() => {\n            vm.canvas.fireEvent(\"loading-finished\");\n            vm.$store.commit(\"design/saveActiveSheet\");\n          });\n        },\n        onCancel() {\n          vm.canvas.fireEvent(\"loading-finished\");\n        }\n      });\n    }\n  }\n};\n</script>\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\n\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\n\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\n\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/*\noptions for isURL method\n\nrequire_protocol - if set as true isURL will return false if protocol is not present in the URL\nrequire_valid_protocol - isURL will check if the URL's protocol is present in the protocols option\nprotocols - valid protocols can be modified with this option\nrequire_host - if set as false isURL will not check if host is present in the URL\nrequire_port - if set as true isURL will check if port is present in the URL\nallow_protocol_relative_urls - if set as true protocol relative URLs will be allowed\nvalidate_length - if set as false isURL will skip string length validation (IE maximum is 2083)\n\n*/\nvar default_url_options = {\n  protocols: ['http', 'https', 'ftp'],\n  require_tld: true,\n  require_protocol: false,\n  require_host: true,\n  require_port: false,\n  require_valid_protocol: true,\n  allow_underscores: false,\n  allow_trailing_dot: false,\n  allow_protocol_relative_urls: false,\n  allow_fragments: true,\n  allow_query_components: true,\n  validate_length: true\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n  return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n  for (var i = 0; i < matches.length; i++) {\n    var match = matches[i];\n\n    if (host === match || isRegExp(match) && match.test(host)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction isURL(url, options) {\n  (0, _assertString.default)(url);\n\n  if (!url || /[\\s<>]/.test(url)) {\n    return false;\n  }\n\n  if (url.indexOf('mailto:') === 0) {\n    return false;\n  }\n\n  options = (0, _merge.default)(options, default_url_options);\n\n  if (options.validate_length && url.length >= 2083) {\n    return false;\n  }\n\n  if (!options.allow_fragments && url.includes('#')) {\n    return false;\n  }\n\n  if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) {\n    return false;\n  }\n\n  var protocol, auth, host, hostname, port, port_str, split, ipv6;\n  split = url.split('#');\n  url = split.shift();\n  split = url.split('?');\n  url = split.shift();\n  split = url.split('://');\n\n  if (split.length > 1) {\n    protocol = split.shift().toLowerCase();\n\n    if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n      return false;\n    }\n  } else if (options.require_protocol) {\n    return false;\n  } else if (url.substr(0, 2) === '//') {\n    if (!options.allow_protocol_relative_urls) {\n      return false;\n    }\n\n    split[0] = url.substr(2);\n  }\n\n  url = split.join('://');\n\n  if (url === '') {\n    return false;\n  }\n\n  split = url.split('/');\n  url = split.shift();\n\n  if (url === '' && !options.require_host) {\n    return true;\n  }\n\n  split = url.split('@');\n\n  if (split.length > 1) {\n    if (options.disallow_auth) {\n      return false;\n    }\n\n    if (split[0] === '') {\n      return false;\n    }\n\n    auth = split.shift();\n\n    if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n      return false;\n    }\n\n    var _auth$split = auth.split(':'),\n        _auth$split2 = _slicedToArray(_auth$split, 2),\n        user = _auth$split2[0],\n        password = _auth$split2[1];\n\n    if (user === '' && password === '') {\n      return false;\n    }\n  }\n\n  hostname = split.join('@');\n  port_str = null;\n  ipv6 = null;\n  var ipv6_match = hostname.match(wrapped_ipv6);\n\n  if (ipv6_match) {\n    host = '';\n    ipv6 = ipv6_match[1];\n    port_str = ipv6_match[2] || null;\n  } else {\n    split = hostname.split(':');\n    host = split.shift();\n\n    if (split.length) {\n      port_str = split.join(':');\n    }\n  }\n\n  if (port_str !== null && port_str.length > 0) {\n    port = parseInt(port_str, 10);\n\n    if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n      return false;\n    }\n  } else if (options.require_port) {\n    return false;\n  }\n\n  if (options.host_whitelist) {\n    return checkHost(host, options.host_whitelist);\n  }\n\n  if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n    return false;\n  }\n\n  host = host || ipv6;\n\n  if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n    return false;\n  }\n\n  return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","<template>\n  <div class=\"relative p-4\">\n    <button\n      class=\"appearance-none w-6 h-6 cursor-pointer absolute top-3 right-3 flex bg-transparent transition-background hover:bg-paper-2\"\n      data-cy=\"close-qr-code\"\n      @click=\"closeControls\">\n      <svg-icon\n        height=\"10px\"\n        width=\"10px\"\n        name=\"cross\"\n        class=\"m-auto\" />\n    </button>\n    <text-input\n      v-model=\"url\"\n      input-id=\"qrcode\"\n      label-class=\"typeset-9\"\n      bordered\n      class=\"mb-4\"\n      :errors=\"errors.url\"\n      :status=\"status\"\n      :placeholder=\"t('editor.qrcode.url.placeholder')\"\n      :label=\"t('editor.qrcode.url.label')\" />\n    <div class=\"flex flex-col gap-4 items-start\">\n      <button\n        class=\"btn btn-secondary\"\n        data-cy=\"generate-qr-code\"\n        :disabled=\"generateButtonShouldBeDisabled\"\n        @click=\"generateQrCode\">\n        {{ qrCodeButtonText }}\n      </button>\n\n      <button\n        v-if=\"qrCode\"\n        class=\"btn btn-small btn-delete\"\n        data-cy=\"delete-qr-code\"\n        @click.prevent=\"remove\">\n        {{ t(\"editor.qrcode.delete\") }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script>\nimport isUrl from \"validator/lib/isURL\";\n\nimport { mapState } from \"vuex\";\n\nimport TextInput from \"../../shared/TextInput.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"QrCodeControls\",\n  components: {\n    TextInput,\n    SvgIcon\n  },\n  data() {\n    return {\n      url: null,\n      checkingUrl: false,\n      success: false,\n      status: null,\n      errors: {\n        url: []\n      },\n      qrCodeProperties: {\n        foregroundColour: \"#000000ff\",\n        boundingBox: {\n          left: 70,\n          top: 70,\n          width: 100,\n          height: 100\n        }\n      }\n    };\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      qrCode: state => state.design.canvas?.selectedObject,\n      addingQrCode: state => state.design.addingQrCode\n    }),\n    generateButtonShouldBeDisabled() {\n      if (this.qrCode) {\n        return !this.url || this.qrCode.url === this.urlWithProtocol;\n      }\n      return !this.url;\n    },\n    qrCodeButtonText() {\n      if (this.qrCode) {\n        return this.t(\"editor.qrcode.update\");\n      }\n      return this.t(\"editor.qrcode.generate\");\n    },\n    urlWithProtocol() {\n      if (!this.url) return null;\n\n      return this.url.startsWith(\"http\") ? this.url : `https://${this.url}`;\n    }\n  },\n  mounted() {\n    if (this.qrCode) {\n      this.url = this.qrCode.url;\n    }\n  },\n  methods: {\n    reloadQrCode() {\n      this.canvas.selectQrCode();\n\n      this.qrCode.load().then(() => {\n        this.canvas.renderAll();\n      });\n    },\n    closeControls() {\n      return this.addingQrCode\n        ? this.$store.commit(\"design/setAddingQrCode\", false)\n        : this.canvas.deactivateAllWithDispatch();\n    },\n    remove() {\n      this.qrCode.remove();\n      this.canvas.deactivateAllWithDispatch();\n      this.canvas.currentlyEditing = null;\n    },\n    setQrCodeError() {\n      this.status = \"error\";\n      setTimeout(() => {\n        this.status = null;\n      }, 1000);\n      this.errors.url = [this.t(\"editor.qrcode.url.error\")];\n    },\n    setQrCodeSuccess() {\n      this.status = \"success\";\n      setTimeout(() => {\n        this.status = null;\n      }, 1000);\n      this.errors.url = [];\n    },\n    extractQrCodeProperties() {\n      const [qrCode] = this.canvas.qrCodes();\n\n      if (qrCode) {\n        this.qrCodeProperties.foregroundColour = qrCode.foregroundColour;\n        this.qrCodeProperties.boundingBox = qrCode.boundingBox.toJSON();\n      }\n    },\n    removeQrCode() {\n      this.canvas.qrCodes().forEach(code => {\n        code.remove();\n      });\n    },\n    addQrCode() {\n      this.$store.dispatch(\"design/addQrCode\", {\n        ...this.qrCodeProperties,\n        url: this.urlWithProtocol\n      });\n      this.$store.commit(\"design/setAddingQrCode\", false);\n    },\n    generateQrCode() {\n      if (!isUrl(this.urlWithProtocol)) {\n        this.setQrCodeError();\n        return;\n      }\n\n      this.setQrCodeSuccess();\n      this.extractQrCodeProperties();\n      this.removeQrCode();\n      this.addQrCode();\n      this.reloadQrCode();\n\n      analytics.track(\"Added QR Code to Invitation\");\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"bg-lavender p-4 mx-3 sm:mx-0 flex justify-start\">\n    <svg-icon\n      name=\"sparkle-ink\"\n      class=\"mr-3\" />\n    <p>\n      {{ t(\"editor.papier-ai.banner-cta-prompt\") }}\n      <a\n        class=\"underline cursor-pointer ml-2\"\n        @click=\"startAiFlow\">\n        {{ t(\"editor.papier-ai.banner-cta-confirm\") }}\n      </a>\n    </p>\n  </div>\n</template>\n\n<script>\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\n\nexport default {\n  name: \"AiCta\",\n  components: {\n    SvgIcon\n  },\n  methods: {\n    startAiFlow() {\n      window.dispatchEvent(new CustomEvent(\"openDrawers\"));\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"p-4 flex flex-col overflow-hidden\">\n    <p class=\"typeset-6 mb-4\">{{ t(\"editor.add-buttons.layers\") }}</p>\n    <draggable\n      v-model=\"reversedObjects\"\n      class=\"layer-list overflow-auto\"\n      v-bind=\"draggableOptions\"\n      :item-key=\"item => reversedObjects.indexOf(item)\"\n      @update=\"dragUpdate\"\n      @start=\"updateLayerDragging(true)\"\n      @end=\"updateLayerDragging(false)\">\n      <template #item=\"{ element: object }\">\n        <div\n          v-show=\"shouldShowLayer(object)\"\n          :class=\"layerClasses(object)\"\n          class=\"bg-white p-3 typeset-7 cursor-pointer flex items-center gap-1 justify-between bg-paper-2 mb-3\"\n          @mouseleave=\"unhighlightObject(object)\"\n          @click=\"selectObject(object, $event)\">\n          <div class=\"flex items-center p-1\">\n            <svg-icon\n              class=\"mr-4\"\n              width=\"10px\"\n              height=\"10px\"\n              name=\"handle-dots\" />\n            {{ name(object) }}\n          </div>\n          <a\n            href=\"#\"\n            class=\"underline\"\n            :class=\"{ 'ml-auto': object.type === 'sticker' }\"\n            @click.stop=\"removeObject(object)\">\n            {{ t(\"editor.add-buttons.delete\") }}\n          </a>\n        </div>\n      </template>\n    </draggable>\n  </div>\n</template>\n\n<script>\nimport draggable from \"vuedraggable/src/vuedraggable\";\n\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\nimport { mapState } from \"vuex\";\n\nexport default {\n  name: \"LayerList\",\n  components: {\n    draggable,\n    SvgIcon\n  },\n  props: {\n    canvas: {\n      type: Object,\n      required: true\n    }\n  },\n  data() {\n    return {\n      draggableOptions: {\n        animation: 300,\n        ghostClass: \"opacity-0\",\n        preventOnFilter: false\n      }\n    };\n  },\n  computed: {\n    reversedObjects: {\n      get() {\n        return this.canvas.objects.slice().reverse();\n      },\n      set(objects) {\n        this.canvas.objects = objects.slice().reverse();\n      }\n    },\n    ...mapState({\n      isWeddingItem: state => state.design.isWeddingItem\n    }),\n    shouldShowLayer() {\n      return object => {\n        return ![\"image\", \"imageframe\", \"foilimage\"].includes(object.type);\n      };\n    },\n    name() {\n      return object => {\n        switch (object.type) {\n          case \"papierbox\":\n            if (object.name && object.name !== \"text\") {\n              return object.name;\n            }\n            return \"Textbox\";\n          case \"imageframe\":\n            if (object.name && object.name !== \"imageframe\") {\n              return object.name;\n            }\n            return \"Image\";\n          case \"logoframe\":\n            if (object.name && object.name !== \"logoframe\") {\n              return object.name;\n            }\n            if (this.isWeddingItem) {\n              return \"Image\";\n            }\n            return \"Logo\";\n          case \"qrcode\":\n            if (object.name && object.name !== \"qrcode\") {\n              return object.name;\n            }\n            return \"QR code\";\n          case \"sticker\":\n            return `Sticker: ${object.name}`;\n          default:\n            return \"Unknown\";\n        }\n      };\n    },\n    layerClasses() {\n      return object => {\n        return object.selected\n          ? \"border border-apricot\"\n          : \"border border-paper-1 hover:bg-paper-2\";\n      };\n    }\n  },\n  mounted() {\n    window.addEventListener(\"keydown\", this.backSpaceEvent);\n  },\n  methods: {\n    backSpaceEvent(event) {\n      if (event.keyCode === 8) {\n        this.canvas.objects.forEach(object => {\n          if (object.selected && !object.editing) {\n            object.remove();\n            this.canvas.refreshObjects();\n            this.canvas.deactivateAllWithDispatch();\n          }\n        });\n      }\n    },\n    selectObject(object, $event) {\n      if (!$event.shiftKey) {\n        this.canvas.deactivateAll();\n      }\n      this.canvas.setActiveObject(object);\n    },\n    updateLayerDragging(dragging) {\n      this.$store.commit(\"design/setLayerDragging\", dragging);\n    },\n    removeObject(object) {\n      analytics.track(`Editor -  Delete ${this.name(object)}`);\n      object.remove();\n      this.canvas.refreshObjects();\n    },\n    unhighlightObject(object) {\n      object.setHighlight(false);\n    },\n    dragUpdate(e) {\n      const { newIndex } = e;\n      const object = this.reversedObjects[newIndex];\n      const correctedIndex = this.canvas.objects.length - newIndex - 1;\n      this.canvas.moveObjectTo(object, correctedIndex);\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    class=\"bg-paper-1 shadow-1 layer-list-container overflow-hidden flex flex-col\">\n    <p class=\"typeset-6 ml-4 mt-4 mb-3\">\n      {{ t(\"editor.add-buttons.add-element\") }}\n    </p>\n    <button\n      v-for=\"option in filteredOptions\"\n      :key=\"option.text\"\n      class=\"bg-paper-1 cursor-pointer p-0\"\n      @click.prevent=\"option.action\">\n      <div\n        class=\"flex justify-between w-full px-4 py-2 md:py-3 items-center option-button\">\n        {{ option.text }}\n        <div\n          class=\"bg-pink h-6 w-6 br-circle flex justify-center wedding-editor-plus-icon items-center plus-icon\"\n          :data-cy=\"option.cy\">\n          <svg-icon\n            name=\"plus\"\n            width=\"8px\"\n            height=\"8px\" />\n        </div>\n      </div>\n    </button>\n    <layer-list :canvas=\"canvas\" />\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport defaults from \"@/app/javascript/utils/admin/design/defaultCanvasObjects\";\nimport { LogoFrame } from \"@/components/brut/src/objects/logoFrame/logoFrame.ts\";\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\nimport { TextBox } from \"@/components/brut/src/objects/textBox/textBox.ts\";\nimport LayerList from \"./LayerList.vue\";\n\nexport default {\n  name: \"FlexibleEditorPanel\",\n  components: {\n    SvgIcon,\n    LayerList\n  },\n  data() {\n    return {\n      editorOptions: [\n        {\n          text: this.t(\"editor.qrcode.tip.label\"),\n          action: this.addQrCode,\n          cy: \"add-qr-code\"\n        },\n        {\n          text: this.t(\"editor.add-buttons.text\"),\n          action: this.addText,\n          cy: \"add-text\"\n        },\n        {\n          text: this.t(\"editor.add-buttons.image\"),\n          action: this.addImage,\n          cy: \"add-image\"\n        }\n      ],\n      optionHover: null\n    };\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas\n    }),\n    newObjectIndex() {\n      return this.canvas.objects.length - this.overlayCount;\n    },\n    overlayCount() {\n      return this.canvas.objects.filter(object => object.name === \"overlay\")\n        .length;\n    },\n    qrCodeAdded() {\n      return this.canvas.objects.some(obj => obj.type === \"qrcode\");\n    },\n    filteredOptions() {\n      if (this.qrCodeAdded) {\n        return this.editorOptions.slice(1);\n      }\n\n      return this.editorOptions;\n    }\n  },\n  methods: {\n    addImage() {\n      analytics.track(\"Editor - Add Image\");\n      const logoFrame = new LogoFrame(this.canvas, defaults.logoFrame());\n      logoFrame.init();\n      logoFrame.name = \"logoframe\";\n      this.insert(logoFrame);\n      logoFrame.click();\n    },\n    addQrCode() {\n      analytics.track(\"Editor - Add QR Code\");\n      this.canvas.deactivateAllWithDispatch();\n      this.$store.commit(\"design/setAddingQrCode\", true);\n    },\n    addText() {\n      analytics.track(\"Editor - Add Text Box\");\n      const text = new TextBox(this.canvas, defaults.textBox());\n      text.init();\n      text.name = \"text\";\n      this.insert(text);\n      this.canvas.setActiveObject(text);\n      text.enterTextEdit();\n      text.selection.selectAll();\n      text.insertString(this.t(\"editor.add-buttons.text-placeholder\"));\n    },\n    insert(object) {\n      this.canvas.deactivateAllWithDispatch();\n\n      this.canvas.insertAt(object, this.canvas.objects.length).then(() => {\n        this.canvas.refreshObjects();\n        this.canvas.renderAll();\n      });\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.option-button:hover {\n  .wedding-editor-plus-icon {\n    background-color: var(--pink-1);\n  }\n}\n</style>\n","<template>\n  <fade-transition>\n    <div\n      v-if=\"showTip\"\n      :class=\"tip.class\"\n      class=\"p-4 relative\">\n      <h3 class=\"mb-4 typeset-6\">{{ t(tip.title) }}</h3>\n      <p class=\"typeset-7 mb-4\">{{ t(tip.description) }}</p>\n      <component\n        :is=\"ctaElement\"\n        v-bind=\"ctaElementProps\"\n        data-cy=\"leave-blank\"\n        class=\"pt-3\"\n        :class=\"tip.buttonClass\"\n        v-on=\"ctaElementEvents\">\n        {{ t(tip.cta) }}\n      </component>\n      <button\n        v-if=\"tip.dismissable\"\n        :class=\"tip.dismissClass\"\n        class=\"appearance-none w-6 h-6 cursor-pointer absolute top-3 right-3 flex bg-transparent transition-background\"\n        @click=\"showTip = false\">\n        <svg-icon\n          height=\"10px\"\n          width=\"10px\"\n          name=\"cross\"\n          class=\"m-auto\" />\n      </button>\n    </div>\n  </fade-transition>\n</template>\n\n<script>\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport SvgIcon from \"../SvgIcon.vue\";\n\nexport default {\n  name: \"Tip\",\n  components: {\n    FadeTransition,\n    SvgIcon\n  },\n  props: {\n    tip: {\n      type: Object,\n      default: () => {}\n    }\n  },\n  data() {\n    return {\n      showTip: true\n    };\n  },\n  computed: {\n    ctaElement() {\n      if (this.tip.href) {\n        return \"a\";\n      }\n      return \"button\";\n    },\n    ctaElementProps() {\n      if (this.tip.href) {\n        return {\n          href: this.tip.href,\n          target: \"_blank\"\n        };\n      }\n      return null;\n    },\n    ctaElementEvents() {\n      if (this.tip.href) return null;\n      return {\n        click: this.clicked\n      };\n    }\n  },\n  methods: {\n    clicked() {\n      if (this.tip.hideOnClick) {\n        this.showTip = false;\n      }\n      this.$store.dispatch(this.tip.actionPath);\n      this.handleAnalyticsEvents();\n    },\n    handleAnalyticsEvents() {\n      if (this.tip.analyticsEvent) {\n        analytics.track(this.tip.analyticsEvent, this.tip.analyticsProperties);\n      }\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"flex flex-col gap-4 mb-4\">\n    <tip\n      v-for=\"(tip, i) in tips\"\n      :key=\"i\"\n      :tip=\"tip\" />\n  </div>\n</template>\n\n<script>\nimport Tip from \"./Tip.vue\";\n\nexport default {\n  name: \"TipsArea\",\n  components: {\n    Tip\n  },\n  props: {\n    tips: {\n      type: Array,\n      default: () => []\n    }\n  }\n};\n</script>\n","<template>\n  <fade-transition>\n    <sticker-controls\n      v-if=\"stickerSets.length\"\n      :sticker-sets=\"stickerSets\"\n      :expanded=\"stickersExpanded\"\n      class=\"editor-drawer drawer-right bg-paper-2\"\n      @toggle-expand=\"stickersExpanded = !stickersExpanded\" />\n  </fade-transition>\n  <fade-transition>\n    <tips-area\n      v-if=\"showTipsArea\"\n      key=\"tips\"\n      :tips=\"tips\" />\n  </fade-transition>\n  <div class=\"grid relative\">\n    <fade-transition\n      cross-fade\n      class=\"w-full\">\n      <fixed-image-controls v-if=\"editingLogoFrame\" />\n      <image-controls v-else-if=\"showImageControls\" />\n      <qr-code-controls\n        v-else-if=\"showQrCodeControls\"\n        class=\"bg-paper-1 shadow-1\" />\n      <merge-controls v-else-if=\"showMergeControls && editingText\" />\n      <caption-controls v-else-if=\"showCaptionControls\" />\n      <div\n        v-else-if=\"showTextControls\"\n        class=\"flex flex-col gap-4\">\n        <ai-cta v-if=\"allowPapierAi\" />\n        <text-controls\n          class=\"bg-paper-1 shadow-1 select-none flex-1 p-4 relative\" />\n      </div>\n      <flexible-editor-panel v-else-if=\"enableFlexibleWeddingEditorPanel\" />\n    </fade-transition>\n  </div>\n</template>\n\n<script>\nimport { some } from \"lodash-es\";\nimport { mapState, mapGetters } from \"vuex\";\n\nimport CaptionControls from \"../../shared/CaptionControls.vue\";\nimport MergeControls from \"./MergeControls.vue\";\nimport ImageControls from \"./ImageControls.vue\";\nimport StickerControls from \"./StickerControls.vue\";\nimport FixedImageControls from \"./FixedImageControls.vue\";\nimport QrCodeControls from \"./QrCodeControls.vue\";\nimport TextControls from \"./TextControls.vue\";\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport AiCta from \"./AiCta.vue\";\nimport FlexibleEditorPanel from \"./FlexibleEditorPanel.vue\";\nimport TipsArea from \"../../shared/tips/TipsArea.vue\";\n\nexport default {\n  name: \"CanvasControlsPanel\",\n  components: {\n    CaptionControls,\n    MergeControls,\n    ImageControls,\n    StickerControls,\n    TextControls,\n    FadeTransition,\n    FixedImageControls,\n    QrCodeControls,\n    AiCta,\n    FlexibleEditorPanel,\n    TipsArea\n  },\n  data() {\n    return {\n      stickersExpanded: true\n    };\n  },\n  computed: {\n    ...mapState({\n      activeSheet: state => state.design.activeSheet,\n      canvas: state => state.design.canvas,\n      enabledStyles: state => state.design.canvas?.enabledStyles,\n      editingImage: state => state.design.canvas?.editingImage,\n      editingEmptyImage: state => state.design.canvas?.editingEmptyImage,\n      editingText: state => state.design.canvas?.editingText,\n      editingLogoFrame: state => state.design.canvas?.editingLogoFrame,\n      editingQrCode: state => state.design.canvas?.editingQrCode,\n      addingQrCode: state => state.design.addingQrCode,\n      flow: state => state.design.flow,\n      isWeddingItem: state => state.design.isWeddingItem,\n      photos: state => state.photoLibrary.photos,\n      stickerSets: state => state.options.stickerSets,\n      allowPapierAi: state => state.allowPapierAi\n    }),\n    ...mapGetters({\n      showFlexibleEditorPanel: \"design/showFlexibleEditorPanel\",\n      showDesignableOverlay: \"design/showDesignableOverlay\",\n      tips: \"design/tips/currentTips\"\n    }),\n    nonStickerControlsShowing() {\n      return (\n        this.showImageControls ||\n        this.showTextControls ||\n        this.editingLogoFrame ||\n        this.showMergeControls ||\n        this.showCaptionControls\n      );\n    },\n    enableFlexibleWeddingEditorPanel() {\n      return (\n        this.canvas?.objects?.length &&\n        this.showFlexibleEditorPanel &&\n        !this.showDesignableOverlay\n      );\n    },\n    showQrCodeControls() {\n      return this.addingQrCode || this.editingQrCode;\n    },\n    showCaptionControls() {\n      return this.flow !== \"merge_flow\" && this.lockedModeTextBoxSelected;\n    },\n    showMergeControls() {\n      return this.flow === \"merge_flow\" && this.lockedModeTextBoxSelected;\n    },\n    lockedModeTextBoxSelected() {\n      return this.canvas?.selectedTextbox?.lockedMode;\n    },\n    showTextControls() {\n      return this.editingText && this.stylesAvailable;\n    },\n    stylesAvailable() {\n      if (this.enabledStyles) {\n        return some(Object.values(this.enabledStyles));\n      }\n      return true;\n    },\n    canvasHasImageFrames() {\n      return !!this.canvas?.nonLogoImageObjects().length;\n    },\n    hasImagesSet() {\n      return this.canvas?.imageObjects().some(obj => !obj.stockImage);\n    },\n    showImageControls() {\n      if (this.showTextControls) {\n        return false;\n      }\n      if (this.isWeddingItem) {\n        return this.editingImage || this.editingEmptyImage;\n      }\n      return (\n        this.canvasHasImageFrames || this.editingImage || this.editingEmptyImage\n      );\n    },\n    showTipsArea() {\n      return this.tips.length > 0;\n    }\n  },\n  watch: {\n    nonStickerControlsShowing(newValue) {\n      if (newValue) {\n        this.stickersExpanded = false;\n      }\n    },\n    activeSheet() {\n      this.$store.commit(\"design/setAddingQrCode\", false);\n    }\n  }\n};\n</script>\n","<template>\n  <modal\n    :open=\"open\"\n    @closed=\"$emit('closed')\">\n    <template #header>\n      <div class=\"flex justify-center items-center mt-3\">\n        <svg-icon\n          name=\"leftarrow\"\n          class=\"mr-4\" />\n        <a\n          href=\"#\"\n          class=\"underline\"\n          @click.prevent=\"showCardModal\">\n          Back\n        </a>\n      </div>\n    </template>\n    <template #body>\n      <div>\n        <h3 class=\"typeset-3 md:typeset-2 text-center mb-4 md:mb-6\">\n          {{ t(\"editor.reminders.title\") }}\n        </h3>\n        <reminder-form\n          :reminder=\"reminder\"\n          class=\"mb-6\" />\n        <a\n          id=\"add-reminder\"\n          href=\"#\"\n          class=\"btn btn-primary btn-large btn-block mb-4\"\n          @click.prevent=\"saveReminder\">\n          {{ t(\"editor.reminders.form.ctas.add\") }}\n        </a>\n        <a\n          id=\"skip-reminder\"\n          href=\"#\"\n          class=\"btn btn-secondary btn-large btn-block mb-4\"\n          data-cy=\"skip-and-proceed-to-basket\"\n          @click.prevent=\"skipReminder\">\n          {{ t(\"editor.reminders.form.ctas.skip\") }}\n        </a>\n        <p class=\"typeset-8 text-ink-4 text-center\">\n          {{ t(\"editor.reminders.form.explanation\") }}\n        </p>\n      </div>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\nimport ReminderForm from \"@/app/javascript/components/account/calendar/ReminderForm.vue\";\nimport Modal from \"../shared/Modal.vue\";\n\nexport default {\n  name: \"ReminderModal\",\n  components: {\n    Modal,\n    SvgIcon,\n    ReminderForm\n  },\n  props: {\n    open: {\n      type: Boolean,\n      required: true,\n      default: false\n    },\n    designId: {\n      required: true,\n      validator: prop => typeof prop === \"number\" || prop === null\n    }\n  },\n  emits: [\"closed\"],\n  data() {\n    return {\n      reminder: {\n        name: \"\",\n        date: \"\",\n        reminder_type: \"\"\n      }\n    };\n  },\n  computed: {\n    ...mapState({\n      sendToThemData: state => state.directSend.sendToThemData\n    })\n  },\n  watch: {\n    open(newValue) {\n      if (newValue) {\n        this.$store.commit(\"directSend/setHasSeenReminderModal\", true);\n      }\n    }\n  },\n  methods: {\n    saveReminder() {\n      this.$store.dispatch(\"reminders/create\", this.reminder).then(() => {\n        analytics.track(\"User Added Event Reminder\", { location: \"Editor\" });\n        this.addToCart();\n      });\n    },\n    skipReminder() {\n      this.addToCart();\n    },\n    showCardModal() {\n      this.$emit(\"closed\");\n      this.$store.commit(\"directSend/setCardModalShowing\", true);\n    },\n    addToCart() {\n      this.$store.commit(\"directSend/setReminderModalShowing\", false);\n      if (this.sendToThemData) {\n        this.$store.dispatch(\"directSend/sendToThem\", {\n          addressId: this.sendToThemData.addressId,\n          deliveryDate: this.sendToThemData.deliveryDate,\n          designId: this.designId\n        });\n      } else {\n        this.$store.dispatch(\"directSend/sendToMe\", this.designId);\n      }\n    }\n  }\n};\n</script>\n","<template>\n  <button\n    class=\"btn btn-tertiary btn-sm btn-icon\"\n    :disabled=\"undoAvailable ? null : 'disabled'\"\n    @click=\"undo\">\n    <svg-icon\n      name=\"undo\"\n      class=\"m-auto\" />\n  </button>\n  <button\n    class=\"btn btn-tertiary btn-sm btn-icon\"\n    :disabled=\"redoAvailable ? null : 'disabled'\"\n    @click=\"redo\">\n    <svg-icon\n      name=\"redo\"\n      class=\"m-auto\" />\n  </button>\n  <button\n    class=\"btn btn-tertiary btn-sm px-3\"\n    :disabled=\"undoAvailable ? null : 'disabled'\"\n    @click=\"reset\">\n    <strong>{{ t(\"editor.add-buttons.reset\") }}</strong>\n  </button>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\n\nexport default {\n  name: \"UndoRedoButtons\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    simpleEditor: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas\n    }),\n    undoAvailable() {\n      return this.canvas?.history?.undoAvailable;\n    },\n    redoAvailable() {\n      return this.canvas?.history?.redoAvailable;\n    }\n  },\n  methods: {\n    redo() {\n      if (!this.redoAvailable) {\n        return;\n      }\n\n      analytics.track(\"Editor - Clicked Redo\");\n      this.canvas.redo();\n    },\n    undo() {\n      if (!this.undoAvailable) {\n        return;\n      }\n\n      analytics.track(\"Editor - Clicked Undo\");\n      this.canvas.undo();\n    },\n    reset() {\n      if (!this.undoAvailable) {\n        return;\n      }\n\n      analytics.track(\"Editor - Clicked Reset\");\n      this.canvas.startAgain();\n      this.$store.commit(\"setShowItemsPanelWarnings\", false);\n      this.canvas.reset();\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    class=\"relative bg-paper-1 shadow-1 h-8 px-4 z-3 flex items-center justify-end gap-3\">\n    <div class=\"mr-auto flex h-full items-center\">\n      <div>\n        <h1 class=\"typeset-3 mb-1 hover:text-ink-4\">\n          <a :href=\"productPath\">{{ productName }}</a>\n        </h1>\n        <span\n          v-if=\"!useSampleEditor\"\n          class=\"typeset-7\">\n          {{ formatPrice(totalPrice) }}\n          <span\n            v-if=\"shouldShowStrikethrough\"\n            class=\"bg-sunflower typeset-8 strikethrough p-2 mr-2\">\n            {{ formatPrice(totalBasePrice) }}\n          </span>\n        </span>\n      </div>\n      <div>\n        <div\n          v-if=\"!hideUndoRedoButtons\"\n          class=\"border-l px-5 border-r border-ink-1 flex gap-5 ml-5\">\n          <undo-redo-buttons />\n        </div>\n      </div>\n    </div>\n    <a\n      class=\"absolute logo\"\n      data-cy=\"papier-logo\"\n      :href=\"homePath\">\n      <img :src=\"marqueSvg\" />\n    </a>\n\n    <btn\n      v-if=\"isInCart\"\n      :promise=\"addDesignToCart\"\n      data-cy=\"update-item\"\n      type=\"primary\">\n      {{ t(\"editor.ctas.update-item\") }}\n    </btn>\n\n    <template v-else-if=\"!useSampleEditor\">\n      <a\n        v-if=\"isWeddingItem && !isBundle && !isDynamicBundle\"\n        v-tippy=\"tippyOptions('share')\"\n        class=\"btn btn-secondary btn-icon\"\n        @click=\"copyShareLink\">\n        <svg-icon :name=\"state === 'success' ? 'tick' : 'share'\" />\n      </a>\n      <btn\n        v-if=\"!isBundle && isWeddingItem\"\n        v-tippy=\"tippyOptions('save')\"\n        :promise=\"saveDesignAsPromise\"\n        data-cy=\"save-design\"\n        type=\"secondary\"\n        class=\"js-save-design btn-icon\">\n        <svg-icon name=\"save\" />\n      </btn>\n      <btn\n        v-if=\"!isBundle && !isWeddingItem && !isDynamicBundle\"\n        :promise=\"saveDesignAsPromise\"\n        data-cy=\"save-design\"\n        type=\"secondary\"\n        class=\"js-save-design\">\n        {{ t(\"editor.ctas.save\") }}\n      </btn>\n      <btn\n        v-if=\"showOrderSample && !isInCartAsSample\"\n        ref=\"finishEditingButton\"\n        data-cy=\"order-a-sample\"\n        type=\"secondary\"\n        @click=\"showSampleModal\">\n        {{ t(\"editor.ctas.order-sample\") }}\n      </btn>\n\n      <btn\n        v-if=\"showReadyToSendBtn\"\n        ref=\"finishEditingButton\"\n        :promise=\"readyToSend()\"\n        data-cy=\"ready-to-send\"\n        type=\"primary\">\n        {{ t(\"editor.ctas.ready-to-send\") }}\n      </btn>\n\n      <btn\n        v-else-if=\"showOrderSample && isInCartAsSample\"\n        ref=\"finishEditingButton\"\n        :promise=\"updateSample()\"\n        type=\"primary\">\n        {{ t(\"editor.ctas.update-sample\") }}\n      </btn>\n\n      <btn\n        v-else\n        ref=\"finishEditingButton\"\n        data-cy=\"add-to-basket\"\n        type=\"primary\"\n        :promise=\"addDesignToCart\">\n        {{ t(\"editor.ctas.add-to-cart\") }}\n      </btn>\n    </template>\n    <template v-else>\n      <btn\n        data-cy=\"add-customised-sample-to-basket\"\n        :promise=\"addPersonalisedSampleToCart()\">\n        {{ t(\"quick-sample-modal.personalised.add-to-cart-editor\") }}\n      </btn>\n    </template>\n    <teleport to=\"#end-of-body\">\n      <card-modal\n        :design-id=\"designId\"\n        :open=\"cardModalShowing\"\n        @closed=\"hideCardModal\" />\n      <send-to-them-modal\n        :design-id=\"designId\"\n        :open=\"sendToThemModalShowing\"\n        @closed=\"hideSendToThemModal\" />\n      <reminder-modal\n        :design-id=\"designId\"\n        :open=\"reminderModalShowing\"\n        @closed=\"hideReminderModal\" />\n    </teleport>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters, mapActions } from \"vuex\";\n\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\n// eslint-disable-next-line import/no-unresolved\nimport marqueSvg from \"@/app/assets/images/logo-marque.svg?url\";\n\nimport Btn from \"../../shared/Btn.vue\";\nimport CardModal from \"../../shared/CardModal.vue\";\nimport ReminderModal from \"../ReminderModal.vue\";\nimport SendToThemModal from \"../../shared/SendToThemModal.vue\";\nimport UndoRedoButtons from \"../UndoRedoButtons.vue\";\n\nexport default {\n  name: \"DesktopEditorCtas\",\n  components: {\n    Btn,\n    CardModal,\n    ReminderModal,\n    SendToThemModal,\n    UndoRedoButtons,\n    SvgIcon\n  },\n  props: {\n    canClearAndReset: {\n      type: Boolean,\n      default: false\n    },\n    isAPostcardSavedDesign: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      sampleModalOpen: false,\n      marqueSvg,\n      initiallyHideUndoRedoButtons: true,\n      state: null\n    };\n  },\n  computed: {\n    ...mapState({\n      designId: state => state.design.designId,\n      isInCart: state => state.design.isInCart,\n      isInCartAsSample: state => state.design.isInCartAsSample,\n      previewPath: state => state.design.previewPath,\n      product: state => state.design.product,\n      productName: state => state.design.product.name,\n      itemsPanelVisibility: state => state.design.itemsPanelVisibility,\n      activeEnvelopes: state => state.design.activeEnvelopes,\n      activeStockItem: state => state.design.activeStockItem,\n      flow: state => state.design.flow,\n      cardModalShowing: state => state.directSend.cardModalShowing,\n      sendToThemModalShowing: state => state.directSend.sendToThemModalShowing,\n      reminderModalShowing: state => state.directSend.reminderModalShowing,\n      homePath: state => state.paths.homePath,\n      productPath: state => state.design.product.listingPath,\n      useSampleEditor: state => state.useSampleEditor,\n      isWeddingItem: state => state.design.isWeddingItem,\n      canvas: state => state.design.canvas\n    }),\n    ...mapGetters({\n      canShowClearTextTip: \"design/tips/canShowClearTextTip\",\n      totalPrice: \"design/pricing/totalPrice\",\n      totalBasePrice: \"design/pricing/totalBasePrice\",\n      formatPrice: \"formatPrice\",\n      showOrderSample: \"design/showOrderSample\",\n      usesHugeLayout: \"design/usesHugeLayout\"\n    }),\n    isBundle() {\n      return this.product && this.product.type === \"Bundle\";\n    },\n    isDynamicBundle() {\n      return this.product && this.product.type === \"DynamicBundle\";\n    },\n    showClearText() {\n      return this.canShowClearTextTip && this.canClearAndReset;\n    },\n    showReadyToSendBtn() {\n      return this.flow === \"card_flow\" || this.flow === \"postcard_flow\";\n    },\n    shouldShowStrikethrough() {\n      return this.totalBasePrice !== this.totalPrice;\n    },\n    hideUndoRedoButtons() {\n      return (\n        this.initiallyHideUndoRedoButtons ||\n        this.canvas?.history?.hideUndoRedoButtons\n      );\n    }\n  },\n  watch: {\n    // To prevent a delay in evaluating this property which was causing the\n    // undo/redo buttons to flicker\n    \"canvas.history.hideUndoRedoButtons\": {\n      handler(newValue) {\n        if (newValue !== undefined) {\n          this.initiallyHideUndoRedoButtons = false;\n        }\n      }\n    }\n  },\n  methods: {\n    ...mapActions({\n      addToCart: \"design/addToCart\"\n    }),\n    addPersonalisedSampleToCart() {\n      return async () => {\n        try {\n          analytics.track(\"Add Personalised Sample To Cart\", {\n            location: \"Editor\"\n          });\n          await this.$store.dispatch(\"design/addSample\");\n        } catch (error) {\n          console.log(error);\n        }\n      };\n    },\n    saveDesign() {\n      this.$store.dispatch(\"design/saveDesign\").then(() => {\n        // Saved!\n      });\n    },\n    saveDesignAsPromise() {\n      return this.$store.dispatch(\"design/saveDesign\").then(() => {\n        // Saved!\n      });\n    },\n    saveDesignAndGetLink() {\n      if (typeof ClipboardItem && navigator.clipboard.write) {\n        const text = new ClipboardItem({\n          \"text/plain\": this.$store.dispatch(\"design/saveDesign\").then(() => {\n            return new Blob([this.previewPath], { type: \"text/plain\" });\n          })\n        });\n        navigator.clipboard.write([text]);\n      } else {\n        this.$store.dispatch(\"design/saveDesign\", true).then(() => {\n          navigator.clipboard.writeText(this.previewPath);\n        });\n      }\n    },\n    addDesignToCart() {\n      return this.addToCart({\n        force: false\n      });\n    },\n    readyToSend() {\n      return () =>\n        this.$store.dispatch(\"design/readyToSend\").then(() => {\n          // Ready to send\n        });\n    },\n    updateSample() {\n      return () =>\n        this.$store.dispatch(\"design/addSample\").then(() => {\n          // Sample added\n        });\n    },\n    startAgain() {\n      this.$store.dispatch(\"design/startAgain\");\n    },\n    clearText() {\n      this.$store.dispatch(\"design/clearText\");\n    },\n    showSampleModal() {\n      this.$store.commit(\"design/saveActiveSheet\");\n      this.$store.commit(\"setSampleModalOpen\", true);\n    },\n    hideCardModal() {\n      this.$store.commit(\"directSend/setCardModalShowing\", false);\n    },\n    hideSendToThemModal() {\n      this.$store.commit(\"directSend/setSendToThemModalShowing\", false);\n      this.$store.commit(\"setLoading\", false);\n    },\n    hideReminderModal() {\n      this.$store.commit(\"directSend/setReminderModalShowing\", false);\n      this.$store.commit(\"directSend/setSendToThemData\", null);\n      this.$store.commit(\"directSend/setHasSeenReminderModal\", false);\n      this.$store.commit(\"setLoading\", false);\n    },\n    copyShareLink() {\n      this.saveDesignAndGetLink();\n      analytics.track(\"Copied Preview Link (Wedding)\", {\n        product_id: `PRODUCT-${this.product.analytics_id}`\n      });\n      this.state = \"success\";\n    },\n    tippyOptions(button) {\n      return {\n        theme: \"paper-4\",\n        content:\n          button === \"share\" ? \"Share a preview link\" : \"Save this design\",\n        arrow: true,\n        animation: \"shift-away\",\n        size: \"small\"\n      };\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.logo {\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n}\n</style>\n","<template>\n  <div :class=\"{ 'z-1': responsiveMode }\">\n    <div\n      v-if=\"isInCart\"\n      class=\"p-4\">\n      <btn\n        :promise=\"addToCart()\"\n        class=\"btn-large btn-block\"\n        type=\"primary\">\n        {{ t(\"editor.ctas.update-item\") }}\n      </btn>\n    </div>\n    <div\n      v-else\n      class=\"p-4\"\n      :style=\"ctasExtraPadding\">\n      <teleport to=\"#end-of-body\">\n        <card-modal\n          :design-id=\"designId\"\n          :open=\"cardModalShowing\"\n          @closed=\"hideCardModal\" />\n      </teleport>\n\n      <div class=\"flex items-center mb-3\">\n        <a\n          v-if=\"showClearText\"\n          :class=\"{ 'mr-2': showStartAgainMobile }\"\n          href=\"#\"\n          class=\"btn btn-large btn-tertiary btn-block flex-1\"\n          @click.prevent=\"clearText\">\n          {{ t(\"editor.clear-text.mobile.cta\") }}\n        </a>\n        <btn\n          v-else-if=\"!isBundle && !isWeddingItem && !isDynamicBundle\"\n          :promise=\"saveDesign()\"\n          :class=\"{ 'mr-2': showStartAgainMobile }\"\n          class=\"btn-large btn-block flex-1 js-save-design\"\n          type=\"secondary\">\n          {{ t(\"editor.ctas.save\") }}\n        </btn>\n        <a\n          v-if=\"showStartAgainMobile\"\n          href=\"#\"\n          class=\"btn btn-large btn-tertiary btn-block flex-1 ml-2\"\n          @click.prevent=\"startAgain\">\n          {{ t(\"editor.designable-start-again\") }}\n        </a>\n      </div>\n\n      <btn\n        v-if=\"showReadyToSendBtn\"\n        :promise=\"readyToSend()\"\n        class=\"btn-large btn-block\"\n        type=\"primary\">\n        {{ t(\"editor.ctas.ready-to-send\") }}\n      </btn>\n      <btn\n        :promise=\"addToCart()\"\n        class=\"btn-large btn-block\"\n        type=\"primary\">\n        <span v-if=\"responsiveMode\">{{ formatPrice(totalPrice) }} -</span>\n        {{ t(\"editor.ctas.add-to-cart\") }}\n      </btn>\n      <btn\n        v-if=\"showOrderSample && !isInCartAsSample\"\n        class=\"btn-block mt-3\"\n        type=\"link\"\n        @click=\"showSampleModal\">\n        {{ t(\"editor.ctas.order-sample\") }}\n      </btn>\n      <btn\n        v-if=\"showOrderSample && isInCartAsSample\"\n        :promise=\"updateSample()\"\n        class=\"btn-block mt-3\"\n        type=\"primary\">\n        {{ t(\"editor.ctas.update-sample\") }}\n      </btn>\n    </div>\n    <teleport to=\"#end-of-body\">\n      <send-to-them-modal\n        :design-id=\"designId\"\n        :open=\"sendToThemModalShowing\"\n        @closed=\"hideSendToThemModal\" />\n    </teleport>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nimport Btn from \"../shared/Btn.vue\";\nimport CardModal from \"../shared/CardModal.vue\";\nimport SendToThemModal from \"../shared/SendToThemModal.vue\";\n\nexport default {\n  name: \"EditorCtas\",\n  components: {\n    Btn,\n    CardModal,\n    SendToThemModal\n  },\n  props: {\n    canClearAndReset: {\n      type: Boolean,\n      default: false\n    },\n    isAPostcardSavedDesign: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    ...mapState({\n      designId: state => state.design.designId,\n      editable: state => state.design.canvas?.editable,\n      isInCart: state => state.design.isInCart,\n      isInCartAsSample: state => state.design.isInCartAsSample,\n      responsiveMode: state => state.responsiveMode,\n      product: state => state.design.product,\n      activeEnvelopes: state => state.design.activeEnvelopes,\n      activeStockItem: state => state.design.activeStockItem,\n      flow: state => state.design.flow,\n      cardModalShowing: state => state.directSend.cardModalShowing,\n      sendToThemModalShowing: state => state.directSend.sendToThemModalShowing\n    }),\n    ...mapGetters({\n      canShowClearTextTip: \"design/tips/canShowClearTextTip\",\n      totalPrice: \"design/pricing/totalPrice\",\n      formatPrice: \"formatPrice\",\n      showOrderSample: \"design/showOrderSample\",\n      usesHugeLayout: \"design/usesHugeLayout\"\n    }),\n    isBundle() {\n      return this.product && this.product.type === \"Bundle\";\n    },\n    isDynamicBundle() {\n      return this.product && this.product.type === \"DynamicBundle\";\n    },\n    showStartAgainMobile() {\n      return (\n        this.editable &&\n        this.canClearAndReset &&\n        this.responsiveMode &&\n        !this.activeEnvelopes &&\n        !this.activeStockItem &&\n        this.flow !== \"merge_flow\" &&\n        !this.isAPostcardSavedDesign &&\n        this.flow !== \"framed_flow\"\n      );\n    },\n    showClearText() {\n      return this.canShowClearTextTip && this.canClearAndReset;\n    },\n    showReadyToSendBtn() {\n      return this.flow === \"card_flow\" || this.flow === \"postcard_flow\";\n    },\n    ctasExtraPadding() {\n      if (this.usesHugeLayout) {\n        return {\n          paddingBottom: \"72px\"\n        };\n      }\n      return null;\n    }\n  },\n  methods: {\n    saveDesign() {\n      return () =>\n        this.$store.dispatch(\"design/saveDesign\").then(() => {\n          // Saved!\n        });\n    },\n    addToCart() {\n      return () =>\n        this.$store.dispatch(\"design/addToCart\").then(() => {\n          // Add to cart\n        });\n    },\n    readyToSend() {\n      return () =>\n        this.$store.dispatch(\"design/readyToSend\").then(() => {\n          // Ready to send\n        });\n    },\n    startAgain() {\n      this.$store.dispatch(\"design/startAgain\");\n    },\n    clearText() {\n      this.$store.dispatch(\"design/clearText\");\n    },\n    showSampleModal() {\n      this.$store.commit(\"design/saveActiveSheet\");\n      this.$store.commit(\"setSampleModalOpen\", true);\n    },\n    hideCardModal() {\n      this.$store.commit(\"directSend/setCardModalShowing\", false);\n    },\n    hideSendToThemModal() {\n      this.$store.commit(\"directSend/setSendToThemModalShowing\", false);\n      this.$store.commit(\"setLoading\", false, { root: true });\n    }\n  }\n};\n</script>\n","function slugify(str) {\n  str = str.replace(/^\\s+|\\s+$/g, \"\"); // trim leading/trailing white space\n  str = str.toLowerCase(); // convert string to lowercase\n  str = str\n    .replace(/[^a-z0-9 -]/g, \"\") // remove any non-alphanumeric characters\n    .replace(/\\s+/g, \"-\") // replace spaces with hyphens\n    .replace(/-+/g, \"-\"); // remove consecutive hyphens\n  return str;\n}\n\nexport default slugify;\n","<template>\n  <div\n    class=\"flex flex-col p-3 md:p-4 mt-3 md:mt-4 bg-paper-2 border-t border-b border-paper-3\">\n    <p class=\"typeset-6\">\n      {{ t(\"double-thick-upgrade.editor.paper-stock\") }}\n    </p>\n\n    <radio-input\n      label=\"Standard stock\"\n      label-class=\"mt-2 typeset-7 cursor-pointer gap-x-3\"\n      :value=\"false\"\n      :current-value=\"designable.thick\"\n      input-id=\"premium-standard-card-stock\"\n      @input=\"handleThickChange(false)\" />\n\n    <radio-input\n      :label=\"`Premium card stock <strong class='whitespace-no-wrap'>(+${currencySymbol}${priceDifference(\n        designable\n      )}/each)</strong>`\"\n      label-class=\"mt-2 typeset-7 cursor-pointer mb-4 gap-x-3\"\n      :value=\"true\"\n      :current-value=\"designable.thick\"\n      input-id=\"premium-standard-card-stock\"\n      @input=\"handleThickChange(true)\" />\n\n    <a\n      href=\"#\"\n      class=\"underline\"\n      @click.prevent=\"openExplainerDrawer\">\n      {{ t(\"double-thick-upgrade.editor.cta\") }}\n    </a>\n    <double-thickness-explainer-drawer\n      :designable-type-id=\"designable.designable_type_id\" />\n  </div>\n</template>\n\n<script>\nimport DoubleThicknessExplainerDrawer from \"@/app/javascript/components/listings/DoubleThicknessExplainerDrawer.vue\";\nimport RadioInput from \"@/app/javascript/components/shared/RadioInput.vue\";\nimport { mapGetters, mapState } from \"vuex\";\n\nexport default {\n  name: \"DoubleThicknessSelector\",\n  components: {\n    DoubleThicknessExplainerDrawer,\n    RadioInput\n  },\n  props: {\n    designable: {\n      type: Object,\n      required: true\n    }\n  },\n  computed: {\n    ...mapState({\n      currencySymbol: state => state.design.pricing.currencySymbol\n    }),\n    ...mapGetters({\n      priceDifference: \"design/pricing/priceDifference\"\n    })\n  },\n  methods: {\n    handleThickChange(thickness) {\n      this.$store.commit(\"design/setThicknessForDesignable\", {\n        designable: this.designable,\n        thickness\n      });\n    },\n    openExplainerDrawer() {\n      window.dispatchEvent(\n        new CustomEvent(\"openDoubleThicknessExplainerDrawer\", {\n          detail: {\n            qty: this.designable.qty\n          }\n        })\n      );\n    }\n  }\n};\n</script>\n","<template>\n  <li\n    :class=\"{\n      'border-l-2 border-ink':\n        active && multipleItems && visibleSheets.length === 1\n    }\"\n    class=\"relative bg-white shadow-1\"\n    data-cy=\"items-panel-designable\">\n    <a\n      href=\"#\"\n      class=\"typeset-7 flex items-center px-3 pt-4 md:px-4 md:pt-4 mb-4\"\n      @click.prevent=\"$emit('selected')\">\n      <div class=\"bg-paper self-start p-2 flex-no-shrink add-on-thumbnail\">\n        <div class=\"aspect-ratio-1x1\">\n          <img\n            :src=\"designable.preview_image\"\n            :alt=\"designable.name\"\n            class=\"block h-full w-full object-contain\" />\n        </div>\n      </div>\n      <div class=\"pl-3 flex-1 flex items-center justify-between\">\n        <div>\n          <p\n            :title=\"designable.name\"\n            :data-cy=\"slugify(designable.name)\"\n            :class=\"titleClass\">\n            {{ designable.name }}\n          </p>\n          <p\n            v-if=\"designable.optionallyHidden\"\n            class=\"typeset-8 text-ink-4\">\n            {{ designableExcludedText }}\n          </p>\n          <p\n            v-else-if=\"designable.customised\"\n            class=\"typeset-8 text-ink\">\n            <svg-icon name=\"tick\" />\n            {{ t(\"editor.designable.customised\") }}\n          </p>\n          <p\n            v-else-if=\"showDesignableUndeditedWarning\"\n            class=\"typeset-8 text-red\">\n            {{ t(\"editor.designable.uncustomised\") }}\n          </p>\n        </div>\n        <div\n          v-if=\"designable.optionallyHidden\"\n          class=\"bg-pink hover:bg-pink-1 h-6 w-6 br-circle flex justify-center items-center\"\n          :data-cy=\"slugify(`add-${designable.name}`)\"\n          @click.stop.prevent=\"setDesignableHidden(false)\">\n          <svg-icon\n            name=\"plus\"\n            height=\"9\"\n            width=\"9\" />\n        </div>\n      </div>\n\n      <div\n        v-if=\"showDesignableUndeditedWarning && visibleSheets.length === 1\"\n        class=\"sheet-unedited-warning text-red absolute top-3 right-3 pointer-events-none\">\n        <svg-icon\n          name=\"warning\"\n          height=\"16\"\n          width=\"16\" />\n      </div>\n    </a>\n    <ul\n      v-if=\"shouldShowSheetList\"\n      class=\"list-unstyled px-3 md:px-4 mb-4\"\n      :class=\"{\n        'limited-height-sheet-list': activeSheet.versions.length > 0\n      }\">\n      <li\n        v-for=\"(sheet, index) in visibleSheets\"\n        :key=\"sheet.id\"\n        data-cs-capture>\n        <a\n          :class=\"[\n            isActiveSheet(sheet)\n              ? 'md:bg-paper-4 border-l-2 border-ink'\n              : 'hover:bg-paper-2',\n            { 'mb-px': index !== visibleSheets.length }\n          ]\"\n          href=\"#\"\n          class=\"flex items-center justify-between gap-3 typeset-9 p-3\"\n          :data-cy=\"slugify(`designable-sheet-${sheet.name}`)\"\n          @click.prevent=\"selectSheet(sheet)\">\n          {{ sheet.name }}\n          <fade-transition>\n            <svg-icon\n              v-if=\"showSheetUndeditedWarning(sheet)\"\n              class=\"text-red pointer-events-none\"\n              name=\"warning\"\n              height=\"16\"\n              width=\"16\" />\n          </fade-transition>\n        </a>\n      </li>\n    </ul>\n    <double-thickness-selector\n      v-if=\"\n        isMainDesignable &&\n        designable.supportsThickness &&\n        !useSampleEditor &&\n        !isInCartAsSample\n      \"\n      :designable=\"designable\" />\n    <div\n      v-if=\"showMultipleFlowPickers\"\n      class=\"px-3 pb-3 md:px-4 pb-4 mt-3 md:mt-4\">\n      <div\n        class=\"flex justify-between items-center\"\n        data-cy=\"price-line\">\n        <div class=\"flex items-baseline\">\n          <span class=\"typeset-7\">Qty</span>\n          <select\n            v-model=\"designable.qty\"\n            :data-cy=\"slugify(`qty-picker-${designable.name}`)\"\n            class=\"form-control form-control-small inline-flex bg-paper-2 ml-2\"\n            name=\"qty\">\n            <option\n              v-for=\"option in currentVisiblePricingValues(designable)\"\n              :key=\"option.qty\"\n              :value=\"option.qty\">\n              {{ option.qty }}\n            </option>\n          </select>\n          <a\n            v-if=\"abilityToHideEnabled\"\n            href=\"#\"\n            class=\"h-5 w-5 ml-px flex-no-shrink self-start flex items-center justify-center hover:bg-paper-2\"\n            :data-cy=\"slugify(`delete-${designable.name}`)\"\n            @click.stop.prevent=\"confirmHideDesignable\">\n            <svg-icon\n              name=\"cross\"\n              height=\"9\"\n              width=\"9\" />\n          </a>\n        </div>\n        <div :data-cy=\"slugify(`price-for-${designable.name}`)\">\n          {{ formatPrice(price(designable)) }}\n          <span\n            v-if=\"shouldShowStrikethrough\"\n            class=\"typeset-8 bg-sunflower strikethrough p-2 mr-2\">\n            {{ formatPrice(basePrice(designable)) }}\n          </span>\n        </div>\n      </div>\n    </div>\n\n    <slide-transition :duration=\"300\">\n      <div\n        v-if=\"responsiveMode && !designable.optionallyHidden\"\n        class=\"p-3\">\n        <a\n          href=\"#\"\n          class=\"btn btn-link btn-block\"\n          data-cy=\"items-panel-designable-customise\"\n          @click.prevent=\"mobileClickCustomise(designable)\">\n          {{ t(\"editor.mobile.customise\") }}\n        </a>\n      </div>\n    </slide-transition>\n  </li>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport slugify from \"@/app/javascript/utils/slugify\";\n\nimport DoubleThicknessSelector from \"@/app/javascript/components/editor/items_panel/DoubleThicknessSelector.vue\";\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport SlideTransition from \"../../transitions/SlideTransition.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"ItemsPanelDesignable\",\n  components: {\n    FadeTransition,\n    SlideTransition,\n    SvgIcon,\n    DoubleThicknessSelector\n  },\n  props: {\n    designable: {\n      required: true,\n      type: Object\n    },\n    active: {\n      default: false,\n      type: Boolean\n    },\n    multipleItems: {\n      type: Boolean,\n      default: false\n    },\n    index: {\n      type: Number,\n      required: true\n    },\n    isMainDesignable: {\n      type: Boolean,\n      default: false\n    },\n    isAddedDesignable: {\n      type: Boolean,\n      default: false\n    },\n    addedDesignableCount: {\n      type: Number,\n      default: 0\n    }\n  },\n  emits: [\"selected\"],\n  computed: {\n    ...mapState({\n      activeSheet: state => state.design.activeSheet,\n      isB2BFlow: state => state.design.isB2BFlow,\n      responsiveMode: state => state.responsiveMode,\n      useSampleEditor: state => state.useSampleEditor,\n      flow: state => state.design.flow,\n      showItemsPanelWarnings: state => state.showItemsPanelWarnings,\n      isInCartAsSample: state => state.design.isInCartAsSample,\n      isWeddingItem: state => state.design.isWeddingItem\n    }),\n    ...mapGetters({\n      formatPrice: \"formatPrice\",\n      abilityToHideEnabled: \"design/abilityToHideEnabled\",\n      price: \"design/pricing/designablePrice\",\n      basePrice: \"design/pricing/designableBasePrice\",\n      currentVisiblePricingValues:\n        \"design/pricing/currentDesignableVisiblePricingValues\"\n    }),\n    visibleSheets() {\n      return this.designable.designable_sheets.filter(sheet => !sheet.hidden);\n    },\n    titleClass() {\n      return this.isAddedDesignable ? \"typeset-6\" : \"typeset-7\";\n    },\n    showMultipleFlowPickers() {\n      return (\n        this.isB2BFlow ||\n        ((this.flow === \"multiple_flow\" || this.flow === \"merge_flow\") &&\n          !this.designable.optionallyHidden &&\n          !this.useSampleEditor &&\n          !this.isInCartAsSample)\n      );\n    },\n    shouldShowStrikethrough() {\n      return this.price(this.designable) !== this.basePrice(this.designable);\n    },\n    showAddHide() {\n      return this.flow === \"multiple_flow\" && this.designable.optional;\n    },\n    showDesignableUndeditedWarning() {\n      return (\n        !this.designable.customised &&\n        this.showItemsPanelWarnings &&\n        !this.designable.optionallyHidden\n      );\n    },\n    showSheetUndeditedWarning() {\n      return sheet => !sheet.edited && this.showDesignableUndeditedWarning;\n    },\n    shouldShowSheetList() {\n      return (\n        !this.responsiveMode &&\n        !this.designable.optionallyHidden &&\n        this.visibleSheets.length > 1\n      );\n    },\n    designableExcludedText() {\n      if (this.addedDesignableCount) {\n        return this.t(\"editor.designable.excluded-info-card\", {\n          num: this.addedDesignableCount\n        });\n      }\n\n      return this.t(\"editor.designable.excluded\");\n    }\n  },\n  methods: {\n    slugify,\n    selectSheet(sheet) {\n      this.$store.dispatch(\"design/setActiveDesignable\", {\n        designable: this.designable,\n        sheet\n      });\n    },\n    confirmHideDesignable() {\n      if (window.confirm(this.t(\"editor.designable-delete-prompt\"))) {\n        this.setDesignableHidden(true);\n      }\n    },\n    setDesignableHidden(hidden) {\n      this.$store.dispatch(\"design/setDesignableHidden\", {\n        hidden,\n        designable: this.designable\n      });\n    },\n    mobileClickCustomise(designable) {\n      this.$store.dispatch(\"design/setActiveDesignable\", { designable });\n      this.$store.commit(\"design/setItemsPanelVisibility\", false);\n    },\n    isActiveSheet(sheet) {\n      return this.active && this.activeSheet === sheet;\n    }\n  }\n};\n</script>\n\n<style scoped lang=\"scss\">\n.limited-height-sheet-list {\n  max-height: 190px;\n  overflow-y: scroll;\n}\n\n.add-on-thumbnail {\n  width: 74px;\n\n  @media (min-width: $screen-md-min) {\n    width: 64px;\n  }\n}\n</style>\n","<template>\n  <li\n    class=\"bg-white shadow-1 mb-4\"\n    :class=\"[{ 'border-l-2 border-ink': activeStockItem && multipleItems }]\">\n    <a\n      href=\"#\"\n      class=\"flex p-3 items-center\"\n      @click.prevent=\"$emit('selected')\">\n      <div class=\"bg-paper self-start p-2 flex-no-shrink w-7\">\n        <div class=\"aspect-ratio-1x1\">\n          <img\n            :src=\"item.preview_image\"\n            :alt=\"item.name\"\n            class=\"block h-full w-full object-contain\" />\n        </div>\n      </div>\n      <div\n        class=\"pl-3\"\n        style=\"min-width: 0\">\n        <span class=\"block ellipsis\">{{ item.name }}</span>\n        <span class=\"block typeset-8 text-ink-4 ellipsis\">\n          {{ t(\"editor.designable.uncustomisable\") }}\n        </span>\n      </div>\n    </a>\n    <div\n      v-if=\"responsiveMode\"\n      class=\"p-3\">\n      <a\n        href=\"#\"\n        class=\"btn btn-link btn-block\"\n        @click.prevent=\"mobileClickView\">\n        {{ t(\"editor.mobile.view\") }}\n      </a>\n    </div>\n  </li>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nexport default {\n  name: \"ItemsPanelStockItem\",\n  props: {\n    item: {\n      required: true,\n      type: Object\n    },\n    multipleItems: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"selected\"],\n  computed: {\n    ...mapState({\n      activeStockItem: state => state.design.activeStockItem,\n      responsiveMode: state => state.responsiveMode\n    })\n  },\n  methods: {\n    mobileClickView() {\n      this.$emit(\"selected\");\n      this.$store.commit(\"design/setItemsPanelVisibility\", false);\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"mb-4 relative\">\n    <div class=\"p-4\">\n      <p class=\"typeset-4\">Layout</p>\n    </div>\n    <div class=\"grid grid-cols-3 px-4 pb-4\">\n      <div\n        v-for=\"version in activeSheet.versions\"\n        :key=\"version.id\">\n        <a\n          href=\"#\"\n          class=\"border cursor-pointer p-2 block\"\n          :class=\"\n            isCurrentVariation(version) ? 'border-ink' : 'border-transparent'\n          \"\n          @click.prevent=\"selectVersion(version)\">\n          <img\n            class=\"img-responsive\"\n            :class=\"{ 'shadow-1': !isCurrentVariation(version) }\"\n            :src=\"version.versionPreview\"\n            :width=\"version.width\"\n            :height=\"version.height\" />\n        </a>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport swapper from \"../../../utils/swapTemplate\";\n\nexport default {\n  name: \"ItemsPanelSheetVersions\",\n  computed: {\n    ...mapState({\n      activeSheet: state => state.design.activeSheet,\n      canvas: state => state.design.canvas,\n      productId: state => state.design.product.id\n    }),\n    isCurrentVariation() {\n      return version => version.id === this.activeSheet.id;\n    }\n  },\n  methods: {\n    selectVersion(version) {\n      if (this.isCurrentVariation(version)) return;\n\n      if (this.canvas.hasEditedTextboxes()) {\n        this.$dialog\n          .confirm({\n            title: this.t(\"editor.variations.warning.title\"),\n            message: this.t(\"editor.variations.warning.message\"),\n            ok: this.t(\"editor.variations.warning.ok\"),\n            cancel: this.t(\"editor.variations.warning.cancel\")\n          })\n          .then(() => {\n            this.swapVersion(version);\n          })\n          .catch(() => {});\n      } else {\n        this.swapVersion(version);\n      }\n    },\n    swapVersion(version) {\n      swapper.swapTemplate(this.canvas, version, {\n        recenter: true,\n        selectImage: true\n      });\n      this.$store.commit(\"design/saveActiveSheet\");\n      this.activeSheet.id = version.id;\n      this.$store.commit(\"design/setCanvasForSheet\", {\n        sheet: this.activeSheet,\n        canvas: this.canvas\n      });\n      analytics.track(\"Changed Page Layout\", {\n        product_id: `PRODUCT-${this.productId}`\n      });\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    class=\"items-panel-container bg-paper-2 md:bg-transparent flex flex-col\"\n    data-cy=\"items-panel\">\n    <div\n      v-if=\"responsiveMode\"\n      class=\"p-4 flex justify-between flex-wrap\">\n      <h1 class=\"typeset-3\">{{ productName }}</h1>\n      <span class=\"typeset-7 self-center flex flex-col\">\n        {{ formatPrice(totalPrice) }}\n        <span\n          v-if=\"shouldShowStrikethrough\"\n          class=\"bg-sunflower typeset-8 strikethrough mr-2\">\n          {{ formatPrice(totalBasePrice) }}\n        </span>\n      </span>\n      <a\n        v-if=\"showStartAgainDesktop\"\n        href=\"#\"\n        class=\"underline z-1\"\n        @click.prevent=\"startAgain\">\n        {{ t(\"editor.designable-start-again\") }}\n      </a>\n    </div>\n    <div\n      :class=\"{\n        'p-4 md:p-0': responsiveMode\n      }\"\n      class=\"items-panel-inner overflow-auto md:overflow-visible flex-1\">\n      <template v-if=\"showItemsPanelItems\">\n        <ul class=\"list-unstyled grid gap-4\">\n          <items-panel-designable\n            v-for=\"(designable, index) in designablesToShow\"\n            :key=\"`${designable.id}-${index}`\"\n            :index=\"index\"\n            :is-main-designable=\"index === 0\"\n            is-added-designable\n            :designable=\"designable\"\n            :multiple-items=\"multipleItems\"\n            :active=\"isActiveDesignable(designable)\"\n            @selected=\"selectDesignable(designable)\" />\n\n          <items-panel-stock-item\n            v-for=\"item in bundleStockItems\"\n            :key=\"item.id\"\n            :item=\"item\"\n            :multiple-items=\"multipleItems\"\n            @selected=\"selectStockItem(item)\" />\n        </ul>\n        <p\n          v-if=\"optionallyHiddenDesignables.length\"\n          class=\"mb-3 mt-6 typeset-6\">\n          {{ t(\"editor.designable.add-ons-title\") }}\n        </p>\n        <ul class=\"list-unstyled grid gap-4\">\n          <items-panel-designable\n            v-for=\"(designable, index) in optionallyHiddenDesignables\"\n            :key=\"`${designable.id}-${index}`\"\n            :index=\"index\"\n            :designable=\"designable\"\n            :multiple-items=\"multipleItems\"\n            :added-designable-count=\"\n              designableCounts[designable.designable_type_id]\n            \"\n            :active=\"isActiveDesignable(designable)\"\n            @selected=\"selectDesignable(designable)\" />\n        </ul>\n      </template>\n      <items-panel-sheet-versions\n        v-if=\"activeSheet && activeSheet.versions.length\"\n        class=\"bg-white shadow-1\" />\n    </div>\n    <editor-ctas\n      v-if=\"responsiveMode\"\n      class=\"mt-auto\" />\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nimport EditorCtas from \"./EditorCtas.vue\";\nimport ItemsPanelDesignable from \"./items_panel/ItemsPanelDesignable.vue\";\nimport ItemsPanelStockItem from \"./items_panel/ItemsPanelStockItem.vue\";\nimport ItemsPanelSheetVersions from \"./items_panel/ItemsPanelSheetVersions.vue\";\n\nexport default {\n  name: \"ItemsPanel\",\n  components: {\n    EditorCtas,\n    ItemsPanelDesignable,\n    ItemsPanelStockItem,\n    ItemsPanelSheetVersions\n  },\n  computed: {\n    ...mapState({\n      activeStockItem: state => state.design.activeStockItem,\n      activeDesignable: state => state.design.activeDesignable,\n      activeSheet: state => state.design.activeSheet,\n      canvas: state => state.design.canvas,\n      flow: state => state.design.flow,\n      responsiveMode: state => state.responsiveMode,\n      designables: state => state.design.designables,\n      bundleStockItems: state => state.design.bundleStockItems,\n      productName: state => state.design.product.name,\n      isInCartAsSample: state => state.design.isInCartAsSample\n    }),\n    numberOfVisibleSheets() {\n      return this.designables.reduce(\n        (count, designable) => count + designable.designable_sheets.length,\n        0\n      );\n    },\n    ...mapGetters({\n      totalPrice: \"design/pricing/totalPrice\",\n      totalBasePrice: \"design/pricing/totalBasePrice\",\n      usesHugeLayout: \"design/usesHugeLayout\",\n      formatPrice: \"formatPrice\",\n      shouldShowInjectableGiftcard: \"design/shouldShowInjectableGiftcard\",\n      designableCounts: \"design/designableCounts\"\n    }),\n    shouldShowStrikethrough() {\n      return this.totalBasePrice !== this.totalPrice;\n    },\n    showStartAgainDesktop() {\n      return (\n        !this.responsiveMode &&\n        !this.activeDesignable.optionallyHidden &&\n        this.canvas?.editable &&\n        !this.activeStockItem &&\n        !this.isAPostcardSavedDesign &&\n        this.flow !== \"merge_flow\"\n      );\n    },\n    multipleItems() {\n      return (\n        [...this.designables, ...this.bundleStockItems].length > 1 &&\n        !this.isInCartAsSample\n      );\n    },\n    designablesToShow() {\n      if (this.isInCartAsSample) {\n        return [this.designables[0]];\n      }\n      return this.addedDesignables;\n    },\n    addedDesignables() {\n      return this.designables.filter(\n        designable => !designable.optionallyHidden\n      );\n    },\n    optionallyHiddenDesignables() {\n      return this.designables.filter(designable => designable.optionallyHidden);\n    },\n    showItemsPanelItems() {\n      return this.numberOfVisibleSheets > 1 || this.flow === \"merge_flow\";\n    }\n  },\n  methods: {\n    isActiveDesignable(designable) {\n      return this.activeDesignable === designable && !this.activeStockItem;\n    },\n    selectStockItem(item) {\n      this.$store.dispatch(\"design/setActiveStockItem\", item);\n    },\n    selectDesignable(designable) {\n      this.$store.dispatch(\"design/setActiveDesignable\", { designable });\n    }\n  }\n};\n</script>\n","<template>\n  <div class=\"flex flex-col bg-paper-1 shadow-1\">\n    <div class=\"items-panel-inner flex-1 p-4\">\n      <ul class=\"list-unstyled\">\n        <li\n          v-for=\"attribute in attributes\"\n          :key=\"attribute.name\"\n          class=\"mb-4\">\n          <p class=\"typeset-4 mb-3\">{{ attribute.name }}</p>\n          <div class=\"grid grid-cols-4 gap-2\">\n            <div\n              v-for=\"option in visibleOptionsForAttribute(\n                attribute,\n                currentVariation\n              )\"\n              :key=\"option.product.id\"\n              @click=\"selectOption(option)\">\n              <div\n                :class=\"\n                  isCurrentVariation(option)\n                    ? 'border-ink cursor-default'\n                    : 'border-transparent cursor-pointer'\n                \"\n                class=\"border aspect-ratio-1x1\">\n                <img\n                  :src=\"option.product.thumbnail\"\n                  class=\"block h-full w-full object-contain\" />\n              </div>\n            </div>\n          </div>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nexport default {\n  name: \"VariationsPanel\",\n  computed: {\n    ...mapState({\n      attributes: state => state.design.variations.variationAttributes,\n      currentVariation: state => state.design.product\n    }),\n    ...mapGetters({\n      visibleOptionsForAttribute: \"design/variations/visibleOptionsForAttribute\"\n    }),\n    isCurrentVariation() {\n      return option => option.product.id === this.currentVariation.id;\n    }\n  },\n  methods: {\n    selectOption(option) {\n      if (!this.isCurrentVariation(option)) {\n        this.$store.dispatch(\"design/variations/selectOption\", option);\n      }\n    }\n  }\n};\n</script>\n","<template>\n  <variations-panel v-if=\"showVariationsPanel\" />\n  <items-panel v-else-if=\"!usesHugeLayout\" />\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nimport ItemsPanel from \"../ItemsPanel.vue\";\nimport VariationsPanel from \"./VariationsPanel.vue\";\n\nexport default {\n  name: \"ItemsAndVariationPanel\",\n  components: {\n    ItemsPanel,\n    VariationsPanel\n  },\n  computed: {\n    showVariationsPanel() {\n      return this.showVariations;\n    },\n    ...mapState({\n      flow: state => state.design.flow\n    }),\n    ...mapGetters({\n      showVariations: \"design/variations/showVariationsPanel\",\n      usesHugeLayout: \"design/usesHugeLayout\",\n      showFlexibleEditorPanel: \"design/showFlexibleEditorPanel\"\n    })\n  }\n};\n</script>\n","<template>\n  <div class=\"flex flex-col overflow-hidden w-screen h-dvh\">\n    <desktop-editor-ctas />\n\n    <div class=\"flex-1 flex justify-between overflow-auto\">\n      <div\n        :class=\"{ 'is-overflowing': itemsPanelOverflowing }\"\n        class=\"editor-sidebar w-80 relative z-2\">\n        <div\n          ref=\"itemsPanel\"\n          class=\"editor-sidebar-content p-4 overflow-auto h-full\">\n          <items-and-variation-panel />\n        </div>\n      </div>\n      <div\n        :class=\"usesHugeLayout ? 'left-0' : 'left-80'\"\n        class=\"editor-content md:absolute top-0 right-80 bottom-0 overflow-auto\">\n        <slot></slot>\n      </div>\n\n      <div\n        :class=\"{ 'is-overflowing': controlsPanelOverflowing }\"\n        class=\"editor-sidebar controls w-80 relative z-2\">\n        <div\n          ref=\"controlsPanel\"\n          class=\"editor-sidebar-content p-4 overflow-auto h-full\">\n          <canvas-controls-panel />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script setup>\nimport { computed, ref } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useMutationObserver, useResizeObserver } from \"@vueuse/core\";\n\nimport CanvasControlsPanel from \"./desktop/CanvasControlsPanel.vue\";\nimport DesktopEditorCtas from \"./desktop/DesktopEditorCtas.vue\";\nimport ItemsAndVariationPanel from \"./desktop/ItemsAndVariationPanel.vue\";\n\nconst store = useStore();\n\nconst usesHugeLayout = computed(() => store.getters[\"design/usesHugeLayout\"]);\n\nconst itemsPanel = ref(null);\nconst controlsPanel = ref(null);\n\nconst itemsPanelOverflowing = ref(false);\nconst controlsPanelOverflowing = ref(false);\n\nconst updateOverflowState = () => {\n  itemsPanelOverflowing.value =\n    itemsPanel.value.scrollHeight > itemsPanel.value.clientHeight;\n  controlsPanelOverflowing.value =\n    controlsPanel.value.scrollHeight > controlsPanel.value.clientHeight;\n};\n\nuseResizeObserver(itemsPanel, () => {\n  updateOverflowState();\n});\n\nuseResizeObserver(controlsPanel, () => {\n  updateOverflowState();\n});\n\nuseMutationObserver(\n  itemsPanel,\n  () => {\n    updateOverflowState();\n  },\n  { childList: true, subtree: true }\n);\n\nuseMutationObserver(\n  controlsPanel,\n  () => {\n    updateOverflowState();\n  },\n  { childList: true, subtree: true }\n);\n</script>\n","<template>\n  <drawer\n    full-height\n    :is-open=\"primaryDrawerOpen\"\n    @close-drawer=\"$emit('closePrimaryDrawer')\">\n    <template #header>\n      <h4 class=\"typeset-3\">\n        {{ t(\"editor.papier-ai.disclaimer-drawer.papier-ai\") }}\n      </h4>\n    </template>\n    <template #content>\n      <p class=\"mb-5\">\n        {{ t(\"editor.papier-ai.disclaimer-drawer.disclaimer-one\") }}\n      </p>\n      <p class=\"mb-5\">\n        {{ t(\"editor.papier-ai.disclaimer-drawer.disclaimer-two\") }}\n      </p>\n      <p class=\"mb-5\">\n        {{ t(\"editor.papier-ai.disclaimer-drawer.disclaimer-three\") }}\n      </p>\n      <p class=\"mb-6\">\n        <strong>\n          {{ t(\"editor.papier-ai.disclaimer-drawer.disclaimer-four\") }}\n        </strong>\n      </p>\n      <div class=\"flex flex-col\">\n        <a\n          class=\"btn btn-primary btn-large mb-3\"\n          @click=\"openSecondaryDrawer\">\n          {{ t(\"editor.papier-ai.disclaimer-drawer.cta\") }}\n        </a>\n      </div>\n    </template>\n  </drawer>\n</template>\n\n<script>\nimport Drawer from \"@/app/javascript/components/shared/Drawer.vue\";\n\nexport default {\n  name: \"PapierAiPrimaryDrawer\",\n  components: {\n    Drawer\n  },\n  props: {\n    primaryDrawerOpen: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"openSecondaryDrawer\", \"closePrimaryDrawer\"],\n  methods: {\n    openSecondaryDrawer() {\n      analytics.track(\"Greeting Card AI - Get Started\");\n      this.$emit(\"openSecondaryDrawer\");\n    }\n  }\n};\n</script>\n","import api from \"./index\";\n\nexport default {\n  async requestResponse(query) {\n    return api.post(\"/open-ai\", query);\n  }\n};\n","<template>\n  <drawer\n    :is-open=\"secondaryDrawerOpen\"\n    :show-backdrop=\"false\"\n    full-height\n    @close-drawer=\"$emit('closeDrawers')\">\n    <template #header>\n      <div\n        class=\"pb-6 flex cursor-pointer justify-start items-center\"\n        @click=\"$emit('closeSecondaryDrawer')\">\n        <svg-icon\n          class=\"mr-3 items-center\"\n          name=\"leftarrow-small-thin\"\n          height=\"12px\"\n          width=\"12px\" />\n        <p class=\"underline cursor-pointer self-center\">\n          {{ t(\"editor.papier-ai.secondary-drawer.back\") }}\n        </p>\n      </div>\n      <div v-if=\"!generatedResponse\">\n        <h4 class=\"typeset-3 mb-4\">\n          {{ t(\"editor.papier-ai.secondary-drawer.heading\") }}\n        </h4>\n        <p>{{ t(\"editor.papier-ai.secondary-drawer.subheading\") }}</p>\n      </div>\n      <div v-else>\n        <h4 class=\"typeset-3 mb-4\">\n          {{ t(\"editor.papier-ai.secondary-drawer.heading-generated\") }}\n        </h4>\n        <p>{{ t(\"editor.papier-ai.secondary-drawer.subheading-generated\") }}</p>\n      </div>\n    </template>\n    <template #content>\n      <text-area-input\n        v-if=\"!generatedResponse\"\n        v-model=\"prompt\"\n        class=\"mb-6 border-l border-paper-4 border-r border-t\"\n        rows=\"15\"\n        @keydown.stop.exact />\n      <text-area-input\n        v-if=\"generatedResponse\"\n        v-model=\"generatedResponse\"\n        rows=\"15\"\n        class=\"border-l border-r border-t border-paper-4 overflow-y-auto whitespace-pre-wra mb-6\"\n        @keydown.stop.exact>\n        {{ generatedResponse }}\n      </text-area-input>\n      <div\n        v-if=\"!generatedResponse\"\n        class=\"relative\">\n        <a\n          class=\"btn btn-primary btn-large mb-3 absolute pin py-5\"\n          @click=\"generateAiMessage\">\n          {{ t(\"editor.papier-ai.secondary-drawer.generate-cta\") }}\n        </a>\n      </div>\n      <fade-transition>\n        <div\n          v-if=\"generatedResponse\"\n          class=\"relative\">\n          <div class=\"flex flex-col absolute pin\">\n            <a\n              class=\"btn btn-primary btn-large mb-3 py-5\"\n              @click=\"replaceCanvasText\">\n              {{ t(\"editor.papier-ai.secondary-drawer.confirm-cta\") }}\n            </a>\n            <a\n              class=\"btn btn-secondary mb-3 py-5\"\n              @click=\"clearResponse\">\n              {{ t(\"editor.papier-ai.secondary-drawer.redo-cta\") }}\n            </a>\n          </div>\n        </div>\n      </fade-transition>\n      <div\n        v-if=\"isLoading\"\n        class=\"fixed pin\">\n        <fade-transition>\n          <overlay\n            is-drawer-overlay\n            absolutely-positioned />\n        </fade-transition>\n      </div>\n    </template>\n  </drawer>\n</template>\n\n<script>\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\nimport Drawer from \"@/app/javascript/components/shared/Drawer.vue\";\nimport TextAreaInput from \"@/app/javascript/components/shared/TextareaInput.vue\";\nimport Overlay from \"@/app/javascript/components/shared/Overlay.vue\";\nimport FadeTransition from \"@/app/javascript/components/transitions/FadeTransition.vue\";\nimport api from \"@/app/javascript/api/open_ai\";\nimport { mapState } from \"vuex\";\n\nexport default {\n  name: \"PapierAiSecondaryDrawer\",\n  components: {\n    SvgIcon,\n    Drawer,\n    TextAreaInput,\n    Overlay,\n    FadeTransition\n  },\n  props: {\n    secondaryDrawerOpen: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"closeDrawers\", \"closeSecondaryDrawer\"],\n  data() {\n    return {\n      prompt: \"\",\n      generatedResponse: \"\",\n      isLoading: false\n    };\n  },\n  computed: {\n    ...mapState({\n      responsiveMode: state => state.responsiveMode,\n      canvas: state => state.design.canvas\n    })\n  },\n  mounted() {\n    window.addEventListener(\"openSecondaryDrawer\", () => {\n      this.generatedResponse = \"\";\n      this.prompt = \"\";\n    });\n  },\n  textIsOverflowing() {\n    return this.canvas?.errors.includes(\"overflowing\");\n  },\n  methods: {\n    async generateAiMessage() {\n      analytics.track(\"Greeting Card AI - Generate Message\");\n      this.isLoading = true;\n      const response = await api.requestResponse({\n        prompt: this.prompt\n      });\n      this.generatedResponse = response.data.message;\n      this.isLoading = false;\n      if (this.responsiveMode) {\n        window.dispatchEvent(\n          new CustomEvent(\"emitGeneratedResponse\", {\n            detail: this.generatedResponse\n          })\n        );\n        if (this.textIsOverflowing) {\n          this.canvas.resizeTextToFit();\n        }\n        this.$emit(\"closeDrawers\");\n      }\n    },\n    clearResponse() {\n      analytics.track(\"Greeting Card AI - Try New Message\");\n      this.generatedResponse = \"\";\n      this.prompt = \"\";\n    },\n    replaceCanvasText() {\n      analytics.track(\"Greeting Card AI - Use This Message\");\n      this.canvas.clearText();\n      this.canvas.replaceText(\n        this.generatedResponse,\n        // when a user enters the flow from the front object we need to manually select the textbox\n        this.canvas.textObjects()[0]\n      );\n      if (this.textIsOverflowing) {\n        this.canvas.resizeTextToFit();\n      }\n      this.$emit(\"closeDrawers\");\n    }\n  }\n};\n</script>\n","<template>\n  <papier-ai-primary-drawer\n    :primary-drawer-open=\"primaryDrawerOpen\"\n    @open-secondary-drawer=\"openSecondaryDrawer\"\n    @close-primary-drawer=\"closeDrawers\" />\n\n  <papier-ai-secondary-drawer\n    :secondary-drawer-open=\"secondaryDrawerOpen\"\n    @close-drawers=\"closeDrawers\"\n    @close-secondary-drawer=\"closeSecondaryDrawer\" />\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\nimport PapierAiPrimaryDrawer from \"@/app/javascript/components/editor/desktop/PapierAiPrimaryDrawer.vue\";\nimport PapierAiSecondaryDrawer from \"@/app/javascript/components/editor/desktop/PapierAiSecondaryDrawer.vue\";\n\nexport default {\n  name: \"PapierAi\",\n  components: {\n    PapierAiPrimaryDrawer,\n    PapierAiSecondaryDrawer\n  },\n  data() {\n    return {\n      starterModalOpen: false,\n      primaryDrawerOpen: false,\n      secondaryDrawerOpen: false,\n      smallScreen: false\n    };\n  },\n  computed: {\n    ...mapState({\n      responsiveMode: state => state.responsiveMode,\n      canvas: state => state.design.canvas,\n      activeSheet: state => state.design.activeSheet\n    }),\n    ...mapGetters({\n      canShowNext: \"design/navigation/canShowNext\"\n    })\n  },\n  mounted() {\n    const xsQuery = window.matchMedia(\"(max-width: 479px)\");\n    xsQuery.addListener(this.xsScreenSize);\n    this.xsScreenSize(xsQuery);\n    window.addEventListener(\"openSecondaryDrawer\", () => {\n      this.secondaryDrawerOpen = true;\n    });\n    window.addEventListener(\"openDrawers\", () => {\n      this.primaryDrawerOpen = true;\n    });\n  },\n  methods: {\n    openSecondaryDrawer() {\n      this.secondaryDrawerOpen = true;\n    },\n    closeSecondaryDrawer() {\n      this.secondaryDrawerOpen = false;\n    },\n    setUpMobilePapierAi() {\n      this.canvas.textObjects()[0].selected = true;\n      this.canvas.textObjects()[0].selection.selectAll();\n      this.$store.commit(\"setShowTextEditingOverlay\", true);\n    },\n    next() {\n      if (this.canShowNext) {\n        this.$store.dispatch(\"design/navigation/next\");\n      }\n    },\n    closeDrawers() {\n      this.starterModalOpen = false;\n      this.primaryDrawerOpen = false;\n      this.secondaryDrawerOpen = false;\n    },\n    xsScreenSize(mediaQuery) {\n      if (mediaQuery.matches) {\n        this.smallScreen = true;\n      } else {\n        this.smallScreen = false;\n      }\n    }\n  }\n};\n</script>\n","export default {\n  bindShortcuts(canvas) {\n    document.addEventListener(\"keyup\", e => {\n      // Backspace to remove objects\n      if (e.keyCode === 8) {\n        if (\n          canvas.selectedGroup.objects.length &&\n          canvas.selectedGroup.objects.every(\n            object => object.type === \"sticker\"\n          )\n        ) {\n          canvas.deleteSelectedObjects();\n          canvas.deactivateAllWithDispatch();\n          canvas.renderAll();\n          analytics.track(\"Removed Digital Sticker\");\n        }\n      }\n    });\n  }\n};\n","<template>\n  <div class=\"unedited-overlay-container\">\n    <div class=\"unedited-overlay\">\n      <div\n        v-for=\"(object, index) in objects\"\n        :key=\"index\"\n        :style=\"getStyleForObjectArea(object)\"\n        class=\"unedited-section border border-red\">\n        <svg-icon\n          :style=\"getStyleForIcon(object)\"\n          name=\"warning\"\n          height=\"15\"\n          width=\"17\"\n          class=\"absolute overlay-warning-icon text-red\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport SvgIcon from \"../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"UneditedOverlay\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    objects: {\n      type: Array,\n      default: () => []\n    },\n    ratio: {\n      type: Number,\n      default: 1\n    },\n    horizontalAdjustment: {\n      type: Number,\n      default: 0\n    },\n    verticalAdjustment: {\n      type: Number,\n      default: 0\n    }\n  },\n  methods: {\n    getStyleForIcon(object) {\n      return {\n        transform: `rotate(${object.angle * -1}deg)`\n      };\n    },\n    getStyleForObjectArea(object) {\n      return {\n        top: `${\n          this.adjustedDimension(object.top) + this.verticalAdjustment\n        }px`,\n        left: `${\n          this.adjustedDimension(object.left) + this.horizontalAdjustment\n        }px`,\n        width: `${this.adjustedDimension(object.width)}px`,\n        height: `${this.adjustedDimension(object.height)}px`,\n        transform: `rotate(${object.angle}deg)`,\n        transformOrigin: \"0 0\"\n      };\n    },\n    adjustedDimension(measurement) {\n      return parseInt(measurement * this.ratio, 10) + 1;\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    id=\"mobile-giftcard-overlay\"\n    class=\"mobile-overlay fixed z-3 top-0 right-0 bottom-0 left-0 h-full overflow-auto bg-paper-2 p-5\">\n    <p class=\"typeset-6 mb-3\">\n      {{ t(\"editor.mobile-editor.gift-credit.mobile-modal.label\") }}\n      <span class=\"text-red\">*</span>\n    </p>\n    <select\n      class=\"form-control mb-5\"\n      :value=\"injectedGiftcardAmount\"\n      @change=\"setGiftcardAmount\">\n      <option\n        v-for=\"amount in giftcardAmounts\"\n        :key=\"amount\"\n        :value=\"amount\">\n        {{ formattedAmount(amount) }}\n      </option>\n    </select>\n    <a\n      href=\"#\"\n      class=\"btn btn-primary btn-block btn-large mb-4\"\n      @click.prevent=\"$emit('close')\">\n      {{ t(\"editor.mobile-editor.gift-credit.mobile-modal.cta\") }}\n    </a>\n    <a\n      href=\"#\"\n      class=\"btn btn-delete btn-block btn-large ab-remove-credit\"\n      @click.prevent=\"removeGiftcard\">\n      {{ t(\"editor.mobile-editor.gift-credit.mobile-modal.delete\") }}\n    </a>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nexport default {\n  name: \"MobileGiftcardOverlay\",\n  emits: [\"close\"],\n  data() {\n    return {\n      giftcardAmounts: [\n        10, 15, 20, 25, 30, 35, 40, 50, 75, 100, 150, 200, 250, 300, 500\n      ],\n      defaultAmount: 20\n    };\n  },\n  computed: {\n    ...mapState({\n      injectedGiftcardAmount: state => state.design.injectedGiftcardAmount\n    }),\n    formattedAmount() {\n      return amount => `£${amount}`;\n    }\n  },\n  methods: {\n    setGiftcardAmount(event) {\n      const amount = parseInt(event.target.value, 10);\n      this.$store.dispatch(\"design/setInjectedGiftcardAmount\", amount);\n    },\n    async removeGiftcard() {\n      await this.$store.dispatch(\"design/removeGiftcard\");\n      this.$emit(\"close\");\n    }\n  }\n};\n</script>\n","<template>\n  <modal\n    :open=\"open && !!stickerlessImg\"\n    prevent-background-close\n    requires-interaction>\n    <template #header>\n      <h3 class=\"typeset-3\">{{ t(\"editor.stickers.mobile.modal.title\") }}</h3>\n    </template>\n    <template #body>\n      <div>\n        <div\n          class=\"bg-paper hover:bg-paper-4 p-3 flex items-center pr-5 mb-4\"\n          @click=\"$emit('close')\">\n          <img\n            style=\"width: 40px\"\n            :src=\"activeDesignable.preview_image\"\n            class=\"mr-4\" />\n          <p class=\"typeset-6\">{{ t(\"editor.stickers.mobile.modal.keep\") }}</p>\n          <svg-icon\n            name=\"rightarrow\"\n            class=\"ml-auto\" />\n        </div>\n        <div\n          class=\"bg-paper bg-paper hover:bg-paper-4 p-3 flex items-center pr-5\"\n          @click=\"removeStickers\">\n          <img\n            style=\"width: 40px\"\n            :src=\"stickerlessImg\"\n            class=\"mr-4\" />\n          <p class=\"typeset-6\">\n            {{ t(\"editor.stickers.mobile.modal.discard\") }}\n          </p>\n          <svg-icon\n            name=\"rightarrow\"\n            class=\"ml-auto\" />\n        </div>\n      </div>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nimport Modal from \"@/app/javascript/components/shared/Modal.vue\";\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\n\nexport default {\n  name: \"MobileStickersModal\",\n  components: {\n    Modal,\n    SvgIcon\n  },\n  props: {\n    open: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"close\"],\n  data() {\n    return {\n      stickerlessImg: null\n    };\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      designId: state => state.design.designId,\n      activeDesignable: state => state.design.activeDesignable\n    })\n  },\n  watch: {\n    // eslint-disable-next-line\n    \"canvas\": function(canvas) {\n      this.snapStickerlessImage(canvas);\n    }\n  },\n  methods: {\n    removeStickers() {\n      Object.entries(this.activeDesignable.canvases).forEach(\n        ([sheetId, canvas]) => {\n          canvas.hideStickers();\n          const sheetForUpdate = this.activeDesignable.designable_sheets.find(\n            sheet => sheet.id === parseInt(sheetId, 10)\n          );\n          sheetForUpdate.fabric = canvas.jsonRepresentation();\n          sheetForUpdate.svg = canvas.svgRepresentation();\n          sheetForUpdate.skodix_svg = canvas.skodixSvgRepresentation();\n        }\n      );\n      this.$emit(\"close\");\n    },\n    snapStickerlessImage(canvas) {\n      if (!this.designId && !this.stickerlessImg && this.hasStickers(canvas)) {\n        canvas.hideStickers();\n        canvas.renderAll();\n        this.stickerlessImg = canvas.getCanvasSnapshot();\n        canvas.showStickers();\n        canvas.renderAll();\n      }\n    },\n    hasStickers(canvas) {\n      return canvas.objects.some(obj => obj.type === \"sticker\");\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    :class=\"[{ loading }, { 'framed-print': flow === 'framed_flow' }]\"\n    class=\"designable-sheet relative moveable-sheet\"\n    :style=\"transformationStyles\">\n    <fade-transition>\n      <overlay\n        v-show=\"loading && !imageUploadModalOpen\"\n        absolutely-positioned\n        :spinner-position=\"editingImage && responsiveMode ? 'top' : null\" />\n    </fade-transition>\n    <div\n      ref=\"container\"\n      :style=\"dynamicHeight\"\n      :class=\"{ 'pointer-events-none': loading }\">\n      <canvas\n        ref=\"canvas\"\n        :height=\"sheet.height\"\n        :width=\"sheet.width\"\n        @sheet-edited=\"canvasEdit\"\n        @loading=\"loading = true\"\n        @loading-finished=\"canvasFinishedLoading\"\n        @giftcard-click=\"showGiftcardModal\"\n        @hidden-textarea-focus=\"setKeyboardIconHighlighted(true)\"\n        @hidden-textarea-blur=\"setKeyboardIconHighlighted(false)\"></canvas>\n      <img\n        v-if=\"sheet.backing_image\"\n        :src=\"sheet.backing_image\"\n        :style=\"backingImageStyle\"\n        class=\"sheet-backing-image\"\n        alt=\"\" />\n\n      <fade-transition>\n        <image-drop-pane\n          v-if=\"renderGlobalDropPane\"\n          v-show=\"showGlobalDropPane\"\n          key=\"globalDropPane\"\n          global />\n      </fade-transition>\n\n      <fade-transition>\n        <div\n          v-if=\"shouldShowIndividualDropPanes\"\n          class=\"image-drop-panes\">\n          <image-drop-pane\n            v-for=\"(image, index) in nonLogoImageObjects\"\n            :key=\"index\"\n            :ratio=\"sheetSizeRatio\"\n            :horizontal-adjustment\n            :vertical-adjustment\n            :object=\"image\" />\n        </div>\n      </fade-transition>\n\n      <fade-transition>\n        <mobile-stickers-modal\n          :open=\"designableAppeared && showMobileStickersMessage\"\n          @close=\"hideMobileStickersMessage\" />\n      </fade-transition>\n\n      <flash-transition @after-enter=\"stopFlashingOverlays\">\n        <div v-if=\"objectOverlaysAreFlashing\">\n          <flashing-hint\n            v-for=\"(object, index) in objectsForOverlays\"\n            :key=\"index\"\n            :ratio=\"sheetSizeRatio\"\n            flashing\n            :is-merge-flow\n            :horizontal-adjustment\n            :vertical-adjustment\n            :object />\n        </div>\n      </flash-transition>\n\n      <fade-transition>\n        <div v-if=\"!objectOverlaysAreFlashing\">\n          <flashing-hint\n            v-for=\"(object, index) in objectsForOverlays\"\n            v-show=\"shouldShowOverlayForObject(object)\"\n            :key=\"index\"\n            :ratio=\"sheetSizeRatio\"\n            :horizontal-adjustment\n            :vertical-adjustment\n            :object\n            :flashing=\"false\"\n            :is-merge-flow\n            :responsive-mode\n            :is-top-most-editable-object=\"isTopMostEditableObject(object)\"\n            :is-active-sheet\n            :overflowing=\"object.overflowing\"\n            :selected-handle-corner=\"selectedHandleCorner\" />\n        </div>\n      </fade-transition>\n\n      <fade-transition>\n        <unedited-overlay\n          v-if=\"showUneditedOverlay\"\n          :ratio=\"sheetSizeRatio\"\n          :horizontal-adjustment\n          :vertical-adjustment\n          :objects=\"uneditedObjects()\" />\n      </fade-transition>\n\n      <fade-transition>\n        <mobile-giftcard-overlay\n          v-if=\"giftcardModalShowing\"\n          @close=\"giftcardModalShowing = false\" />\n      </fade-transition>\n\n      <imageframe-tippy-overlay\n        v-if=\"showTippyOverlay\"\n        :ratio=\"sheetSizeRatio\"\n        :active-sheet=\"activeSheet\"\n        :horizontal-adjustment\n        :vertical-adjustment\n        :sheet-id=\"sheet.id\" />\n\n      <text-selection-tooltip-overlay\n        v-if=\"showTextEditingControls && !newMobileEditor\"\n        :ratio=\"sheetSizeRatio\"\n        :active-sheet=\"activeSheet\"\n        :horizontal-adjustment=\"horizontalAdjustment + 8\"\n        :vertical-adjustment\n        :sheet-id=\"sheet.id\" />\n    </div>\n\n    <teleport to=\"#end-of-body\">\n      <fade-transition>\n        <mobile-text-editing-overlay\n          v-if=\"showImmediateTextOverlay\"\n          update-on-done />\n      </fade-transition>\n    </teleport>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport Hammer from \"hammerjs\";\nimport { Brut } from \"@/components/brut/src/index.ts\";\nimport keyboardShortcuts from \"../../utils/editor/keyboardShortcuts\";\n\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport FlashTransition from \"../transitions/FlashTransition.vue\";\nimport FlashingHint from \"../shared/FlashingHint.vue\";\nimport ImageDropPane from \"../shared/ImageDropPane.vue\";\nimport Overlay from \"../shared/Overlay.vue\";\nimport UneditedOverlay from \"./UneditedOverlay.vue\";\nimport ImageframeTippyOverlay from \"../shared/mobile/ImageframeTippyOverlay.vue\";\nimport TextSelectionTooltipOverlay from \"../shared/mobile/TextSelectionTooltipOverlay.vue\";\n\nimport MobileGiftcardOverlay from \"./mobile/MobileGiftcardOverlay.vue\";\nimport MobileStickersModal from \"./mobile/MobileStickersModal.vue\";\nimport MobileTextEditingOverlay from \"./mobile/MobileTextEditingOverlay.vue\";\n\nexport default {\n  name: \"DesignableSheet\",\n  components: {\n    FadeTransition,\n    FlashTransition,\n    FlashingHint,\n    ImageDropPane,\n    Overlay,\n    UneditedOverlay,\n    ImageframeTippyOverlay,\n    TextSelectionTooltipOverlay,\n    MobileGiftcardOverlay,\n    MobileStickersModal,\n    MobileTextEditingOverlay\n  },\n  inject: [\"simpleMobileTextEditor\", \"newMobileEditor\"],\n  props: {\n    sheet: {\n      type: Object,\n      required: true\n    }\n  },\n  data() {\n    return {\n      canvas: null,\n      loading: true,\n      objectsForOverlays: [],\n      textboxesAndGiftcardForHints: [],\n      nonLogoImageObjects: [],\n      canShowImageTippyOverlay: false,\n      canShowTextEditingControls: false,\n      sheetSizeRatio: 1,\n      horizontalAdjustment: 0,\n      verticalAdjustment: 0,\n      giftcardModalShowing: false,\n      canvasTransformations: {\n        top: 0,\n        left: 0,\n        zoom: 1\n      }\n    };\n  },\n  computed: {\n    ...mapGetters({\n      isMergeFlow: \"design/isMergeFlow\",\n      showDesignableOverlay: \"design/showDesignableOverlay\",\n      hasBeenFlashed: \"hasBeenFlashed\",\n      showFlexibleEditorPanel: \"design/showFlexibleEditorPanel\"\n    }),\n    ...mapState({\n      layerDragging: state => state.design.layerDragging,\n      designables: state => state.design.designables,\n      originalDesignables: state => state.design.originalDesignables,\n      designId: state => state.design.designId,\n      activeDesignable: state => state.design.activeDesignable,\n      editingImage: state => state.design.canvas?.editingImage,\n      selectedObject: state => state.design.canvas?.selectedObject,\n      editingEmptyImage: state => state.design.canvas?.editingEmptyImage,\n      hoveringImage: state => state.design.canvas?.hoveringImage,\n      selectedHandleCorner: state =>\n        state.design.canvas?.selectedHandle?.corner,\n      itemsPanelVisibility: state => state.design.itemsPanelVisibility,\n      responsiveMode: state => state.responsiveMode,\n      showUnedited: state => state.design.showUnedited,\n      activeSheet: state => state.design.activeSheet,\n      currentlyDraggingFiles: state => state.dragDrop.currentlyDraggingFiles,\n      hoveringIndividualDropPane: state =>\n        state.dragDrop.hoveringIndividualDropPane,\n      photoBeingDragged: state => state.dragDrop.photoBeingDragged,\n      flow: state => state.design.flow,\n      designableAppeared: state => state.design.designableAppeared,\n      photos: state => state.photoLibrary.photos,\n      objectOverlaysAreFlashing: state => state.objectOverlaysAreFlashing,\n      showMobileStickersMessage: state =>\n        state.design.showMobileStickersMessage,\n      imageUploadModalOpen: state => state.design.images.imageUploadModalOpen,\n      textBoxSelectionCoordinates: state =>\n        state.design.canvas?.textBoxSelectionCoordinates\n    }),\n    showImmediateTextOverlay() {\n      return (\n        this.showTextEditingControls &&\n        this.textBoxSelectionCoordinates &&\n        this.simpleMobileTextEditor\n      );\n    },\n    showTippyOverlay() {\n      return (\n        this.responsiveMode &&\n        this.canShowImageTippyOverlay &&\n        this.designableAppeared\n      );\n    },\n    showTextEditingControls() {\n      return (\n        this.responsiveMode &&\n        this.canShowTextEditingControls &&\n        this.designableAppeared\n      );\n    },\n    originalSheet() {\n      if (this.sheet.versions.length) {\n        return this.sheet.versions.find(\n          originalSheet => originalSheet.id === this.sheet.id\n        );\n      }\n      const originalDesignable = this.originalDesignables.find(\n        designable => designable.id === this.activeDesignable.id\n      );\n      return originalDesignable.designable_sheets.find(\n        originalSheet => originalSheet.id === this.sheet.id\n      );\n    },\n    showUneditedOverlay() {\n      return this.showUnedited && this.sheet === this.activeSheet;\n    },\n    pointerEvents() {\n      if (this.loading) {\n        return \"none\";\n      }\n      return \"all\";\n    },\n    paddingBottom() {\n      if (this.responsiveMode) return null;\n\n      return `${(this.sheet.height / this.sheet.width) * 100}%`;\n    },\n    backingImageStyle() {\n      return {\n        maxWidth: `${\n          this.sheet.width * this.sheet.backing_image_width_ratio\n        }px`,\n        maxHeight: `${\n          this.sheet.height * this.sheet.backing_image_height_ratio\n        }px`,\n        width: this.backingImageWidth,\n        height: this.backingImageHeight\n      };\n    },\n    backingImageWidth() {\n      if (this.hasHorizontalSpace) {\n        return \"auto\";\n      }\n      return `${this.sheet.backing_image_width_ratio * 100}%`;\n    },\n    backingImageHeight() {\n      if (this.hasHorizontalSpace) {\n        return `${this.sheet.backing_image_height_ratio * 100}%`;\n      }\n      return \"auto\";\n    },\n    hasHorizontalSpace() {\n      return this.horizontalAdjustment > 0;\n    },\n    isActiveSheet() {\n      return this.sheet === this.activeSheet;\n    },\n    renderGlobalDropPane() {\n      return (\n        !this.responsiveMode &&\n        this.currentlyDraggingFiles &&\n        !this.layerDragging\n      );\n    },\n    showGlobalDropPane() {\n      return !this.photoBeingDragged && !this.hoveringIndividualDropPane;\n    },\n    shouldShowIndividualDropPanes() {\n      return (\n        !!this.photoBeingDragged ||\n        (!this.responsiveMode && this.currentlyDraggingFiles)\n      );\n    },\n    textEdited() {\n      return this.textboxesAndGiftcardForHints.some(obj => obj.edited);\n    },\n    hasTextObjects() {\n      return !!this.canvas?.textObjects().length;\n    },\n    hasGiftcardObject() {\n      return !!this.canvas?.giftcardObject();\n    },\n    hasTextOrGiftcardObjects() {\n      return this.hasTextObjects || this.hasGiftcardObject;\n    },\n    showTextAndGiftcardHints() {\n      return (\n        this.isActiveSheet &&\n        this.responsiveMode &&\n        !this.textEdited &&\n        this.designables.length === 1 &&\n        this.hasTextOrGiftcardObjects\n      );\n    },\n    dynamicHeight() {\n      if (!this.responsiveMode) {\n        return {};\n      }\n\n      if (this.newMobileEditor) {\n        return {\n          height: \"calc(100dvh - 230px)\"\n        };\n      }\n      return {\n        height: \"calc(100dvh - 210px)\"\n      };\n    },\n    hasMovingObjects() {\n      return this.objectsForOverlays.some(object => object.mover.moving);\n    },\n    hasInteractingObjects() {\n      return this.objectsForOverlays.some(object => object.interacting);\n    },\n    shouldShowOverlayForObject() {\n      return object => {\n        return (\n          (!this.hasMovingObjects && !this.hasInteractingObjects) ||\n          (this.hasMovingObjects && this.objectIsMoving(object)) ||\n          (this.hasInteractingObjects && this.objectIsInteracting(object))\n        );\n      };\n    },\n    transformationStyles() {\n      if (!this.responsiveMode || !this.newMobileEditor) {\n        return null;\n      }\n\n      const topTransformation = Math.max(\n        0,\n        this.canvasTransformations.top - 150\n      );\n\n      return {\n        transform: `translateY(${-topTransformation}px) scale(${this.canvasTransformations.zoom})`,\n        transformOrigin: this.canvasTransformations.transformOrigin\n      };\n    },\n    isTopMostEditableObject() {\n      return object => {\n        return object === this.canvas.topMostEditableObject;\n      };\n    }\n  },\n  watch: {\n    selectedObject(value) {\n      if (!this.responsiveMode || !this.newMobileEditor) return;\n\n      if (value && value.type === \"papierbox\") {\n        this.setCanvasTransformations(value.boundingBox, this.sheetSizeRatio);\n      } else {\n        this.clearCanvasTransformations();\n      }\n    },\n    editingEmptyImage(value) {\n      if (\n        (value && this.responsiveMode) ||\n        (value && !this.responsiveMode && !this.photos.length)\n      ) {\n        this.$store.commit(\"design/images/setImageUploadModalOpen\", true);\n      }\n    },\n    editingImage(value) {\n      if (value) {\n        this.hammer.get(\"pan\").set({ enable: true });\n      } else {\n        this.hammer.get(\"pan\").set({ enable: false });\n      }\n    },\n    hoveringImage(hovering, wasHovering) {\n      if (wasHovering && !hovering) {\n        this.canShowImageTippyOverlay = true;\n      }\n    },\n    designableAppeared(value) {\n      if (value) {\n        this.getObjectsForOverlays();\n        this.setSheetSizeRatio();\n        this.setAxisAdjustments();\n        this.startFlashingHints();\n      }\n    },\n    isActiveSheet(value) {\n      if (value) {\n        this.setSheetSizeRatio();\n        this.setAxisAdjustments();\n        if (!this.showDesignableOverlay) {\n          this.startFlashingHints();\n        }\n      }\n    },\n    itemsPanelVisibility(isVisible, wasVisible) {\n      if (wasVisible && !isVisible) {\n        this.getObjectsForOverlays();\n        this.setSheetSizeRatio();\n        this.setAxisAdjustments();\n        this.startFlashingHints();\n      }\n    },\n    showDesignableOverlay(isVisible, wasVisible) {\n      if (wasVisible && !isVisible) {\n        this.getObjectsForOverlays();\n        this.setSheetSizeRatio();\n        this.setAxisAdjustments();\n        this.startFlashingHints();\n      }\n    },\n    activeSheet(value) {\n      if (value) {\n        setTimeout(() => {\n          this.setSheetSizeRatio();\n          this.setAxisAdjustments();\n        }, 50);\n      }\n    },\n    \"activeSheet.id\": function () {\n      this.getNonLogoImageObjects();\n      if (!this.showDesignableOverlay) {\n        this.getObjectsForOverlays();\n        this.startFlashingHints();\n      }\n    }\n  },\n  mounted() {\n    const vm = this;\n    vm.canvas = new Brut(vm.$refs.canvas, {\n      mergeFlow: this.isMergeFlow,\n      isCardFront: this.sheet.is_card_front,\n      roundedCorners: this.sheet.rounded_corners,\n      isFlexibleEditor: this.showFlexibleEditorPanel && !this.responsiveMode,\n      newMobileEditor: this.newMobileEditor\n    });\n    vm.canvas.init();\n    vm.canvas.setPixelRatio(vm.activeDesignable.ratio);\n    keyboardShortcuts.bindShortcuts(vm.canvas);\n\n    const assignDefaultVersion =\n      // if we are not on a saved design,\n      // and there are versions available,\n      // but none are selected yet, select the first one\n      vm.sheet.versions.length > 0 &&\n      !vm.designId &&\n      !vm.sheet.versions.some(version => version.id === vm.sheet.id);\n\n    if (assignDefaultVersion) {\n      const defaultVersion =\n        vm.sheet.versions.find(sheet => sheet.group_default) ||\n        vm.sheet.versions[0];\n      vm.sheet.fabric = defaultVersion.fabric;\n      vm.sheet.id = defaultVersion.id;\n    }\n\n    vm.canvas.load(vm.sheet.fabric, vm.originalSheet.fabric, () => {\n      if (\n        vm.activeDesignable.merge_strings &&\n        vm.activeDesignable.merge_strings.length\n      ) {\n        vm.canvas.resetPredefinedStrings(vm.activeDesignable.merge_strings[0]);\n      }\n      if (!this.responsiveMode) {\n        this.getObjectsForOverlays();\n      }\n      vm.textboxesAndGiftcardForHints = [\n        ...vm.canvas.textObjects(),\n        vm.canvas.giftcardObject()\n      ].filter(Boolean);\n      vm.$store.commit(\"design/setCanvasForSheet\", {\n        sheet: vm.sheet,\n        canvas: vm.canvas\n      });\n      vm.$store.dispatch(\"design/setInitialDesignableQty\");\n\n      if (vm.sheet.giftcard_amount) {\n        const giftcardObject = vm.canvas.addGiftcard(vm.sheet.giftcard_amount);\n        vm.$store.commit(\n          \"design/setInjectedGiftcardAmount\",\n          vm.sheet.giftcard_amount\n        );\n        if (giftcardObject) {\n          vm.$store.commit(\"design/setGiftcardObject\", giftcardObject);\n        }\n        vm.canvas.loadFonts(() => {\n          vm.canvas.renderAll();\n        });\n      }\n\n      vm.getNonLogoImageObjects();\n      vm.setEditedStateForSheet();\n      vm.canShowImageTippyOverlay = true;\n      vm.canShowTextEditingControls = true;\n    });\n    this.hammer = new Hammer(this.$refs.canvas.parentNode);\n    this.hammer\n      .get(\"pan\")\n      .set({ direction: Hammer.DIRECTION_ALL, enable: false });\n\n    this.setSheetSizeRatio();\n    this.setAxisAdjustments();\n    if (!this.responsiveMode) {\n      this.startFlashingHints();\n    }\n\n    window.addEventListener(\"resize\", this.setSheetSizeRatio);\n  },\n  beforeUnmount() {\n    this.stopFlashingOverlays();\n    this.canvas.dispose();\n    window.removeEventListener(\"resize\", this.setSheetSizeRatio);\n  },\n  methods: {\n    clearCanvasTransformations() {\n      this.canvasTransformations = {\n        ...this.canvasTransformations,\n        top: 0,\n        zoom: 1\n      };\n    },\n    setCanvasTransformations({ topMostRotatedPoint, center, width }, ratio) {\n      if (!ratio) {\n        return;\n      }\n\n      const centerObjectFromCenterSheetRatio =\n        center.left / (this.sheet.width / 2);\n\n      const centerX = center.left * ratio * centerObjectFromCenterSheetRatio;\n      const centerY = center.top * ratio;\n\n      let zoom = (this.sheet.width / width) * 0.7;\n\n      zoom = Math.min(zoom, 1.5);\n\n      if (zoom < 1.1) {\n        zoom = 1;\n      }\n\n      this.canvasTransformations = {\n        top: topMostRotatedPoint * this.sheetSizeRatio,\n        zoom,\n        transformOrigin: `${centerX}px ${centerY}px`\n      };\n    },\n    upperCaseOrLowerCaseText(text, name) {\n      const charactersToCheck = text.slice(0, 2);\n\n      switch (charactersToCheck) {\n        case charactersToCheck.toLowerCase():\n          return name.toLowerCase();\n        case charactersToCheck.toUpperCase():\n          return name.toUpperCase();\n        default:\n          return this.capitalizeName(name);\n      }\n    },\n    capitalizeName(name) {\n      return name\n        .split(\" \")\n        .map(namePart => {\n          return (\n            namePart.charAt(0).toUpperCase() + namePart.slice(1).toLowerCase()\n          );\n        })\n        .join(\" \");\n    },\n    canvasEdit() {\n      this.getObjectsForOverlays();\n      this.setEditedStateForSheet();\n    },\n    setEditedStateForSheet() {\n      this.$store.dispatch(\"design/setSheetEdited\", {\n        sheet: this.sheet,\n        edited: this.canvas.uneditedEditableObjects().length === 0\n      });\n\n      if (this.flow !== \"card_flow\") {\n        this.$store.dispatch(\n          \"design/setHasUnsavedChanges\",\n          this.canvas.editedEditableObjects().length > 0\n        );\n      }\n    },\n    uneditedObjects() {\n      if (!this.canvas) return [];\n      return this.canvas.uneditedEditableObjects();\n    },\n    setSheetSizeRatio() {\n      this.sheetSizeRatio = this.$refs.canvas.clientWidth / this.sheet.width;\n    },\n    setAxisAdjustments() {\n      this.horizontalAdjustment =\n        (this.$refs.container.clientWidth - this.$refs.canvas.clientWidth) / 2;\n      this.verticalAdjustment =\n        (this.$refs.canvas.parentElement.parentElement.clientHeight -\n          this.$refs.canvas.clientHeight) /\n        2;\n    },\n    canvasFinishedLoading() {\n      this.loading = false;\n      this.setSheetSizeRatio();\n      this.setAxisAdjustments();\n    },\n    startFlashingHints() {\n      if (this.activeDesignable.optionallyHidden) return;\n\n      this.$store.commit(\"setObjectOverlaysAreFlashing\", true);\n    },\n    stopFlashingOverlays() {\n      if (this.isActiveSheet) {\n        this.$store.commit(\"setObjectOverlaysAreFlashing\", false);\n      }\n    },\n    showGiftcardModal() {\n      this.giftcardModalShowing = !!this.responsiveMode; // we only show this on mobile\n    },\n    hideMobileStickersMessage() {\n      this.$store.commit(\"design/setShowMobileStickersMessage\", false);\n    },\n    getObjectsForOverlays() {\n      this.objectsForOverlays = this.canvas.editableObjects();\n    },\n    getNonLogoImageObjects() {\n      this.nonLogoImageObjects = this.canvas.nonLogoImageObjects();\n    },\n    objectIsMoving(object) {\n      return object.mover.moving;\n    },\n    objectIsInteracting(object) {\n      return object.interacting;\n    },\n    setKeyboardIconHighlighted(value) {\n      // Adding a short delay to prevent a race condition where blurring the textarea\n      // would cause the icon to be unhighlighted before the click event is registered\n      // which triggers focus on the textarea again.\n      setTimeout(() => {\n        this.$store.commit(\"setKeyboardIconHighlighted\", value);\n      }, 10);\n    }\n  }\n};\n</script>\n\n<style>\n.sheet-backing-image {\n  position: absolute;\n  z-index: 1;\n  left: 50%;\n  top: 50%;\n  pointer-events: none;\n  transform: translate(-50%, -50%);\n}\n\n.force-no-height {\n  height: 0 !important;\n}\n\n.moveable-sheet {\n  transition:\n    transform 0.35s ease 0.25s,\n    transform-origin 0.2s ease;\n  transform-origin: top left;\n}\n</style>\n","<template>\n  <div class=\"designable-container relative\">\n    <div\n      ref=\"productCanvas\"\n      class=\"scene\"\n      :class=\"{ 'flex-1': responsiveMode }\">\n      <div\n        v-if=\"flippable\"\n        class=\"designable-sheet-container sm:flex-1\"\n        :class=\"{ flipped: flipped }\">\n        <div\n          v-for=\"sheet in visibleSheets\"\n          :key=\"`sheet-${sheet.original_id}-${activeDesignableIndex}`\"\n          class=\"card-face\">\n          <designable-sheet\n            :class=\"{ 'designable-sheet-responsive': responsiveMode }\"\n            data-cy=\"inside-sheet\"\n            :sheet=\"sheet\" />\n        </div>\n      </div>\n      <transition-group\n        v-else\n        name=\"fade\"\n        tag=\"div\"\n        class=\"designable-sheet-container sm:flex-1\"\n        data-cy=\"image-frame\">\n        <designable-sheet\n          v-for=\"sheet in visibleSheets\"\n          v-show=\"shouldShowSheet(sheet)\"\n          :key=\"`sheet-${sheet.original_id}-${activeDesignableIndex}`\"\n          :class=\"{ 'designable-sheet-responsive': responsiveMode }\"\n          data-cy=\"inside-sheet\"\n          :data-fix-after-enter=\"shouldShowSheet(sheet)\"\n          :sheet=\"sheet\" />\n      </transition-group>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nimport DesignableSheet from \"./DesignableSheet.vue\";\n\nexport default {\n  name: \"Designable\",\n  components: {\n    DesignableSheet\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      designable: state => state.design.activeDesignable,\n      activeSheet: state => state.design.activeSheet,\n      responsiveMode: state => state.responsiveMode,\n      productName: state => state.design.product.name\n    }),\n    ...mapGetters({\n      visibleSheets: \"design/visibleSheets\",\n      productId: \"design/productId\",\n      activeDesignableIndex: \"design/activeDesignableIndex\"\n    }),\n    shouldShowSheet() {\n      return sheet => this.activeSheet && sheet.id === this.activeSheet.id;\n    },\n    flippable() {\n      return this.visibleSheets.length === 2 && this.designable.isFlat;\n    },\n    flipped() {\n      return this.activeSheet.id === this.visibleSheets[1].id;\n    }\n  },\n  watch: {\n    activeSheet(newSheet) {\n      analytics.track(\"Viewed Sheet\", {\n        id: this.productId,\n        sku: this.productId,\n        name: this.productName,\n        sheetId: newSheet.id,\n        sheetName: newSheet.name,\n        designableId: this.designable.id,\n        designableName: this.designable.name\n      });\n    }\n  },\n  created() {\n    analytics.track(\"Viewed Sheet\", {\n      id: this.productId,\n      sku: this.productId,\n      name: this.productName,\n      sheetId: this.activeSheet.id,\n      sheetName: this.activeSheet.name,\n      designableId: this.designable.id,\n      designableName: this.designable.name\n    });\n  }\n};\n</script>\n\n<style scoped>\n.scene {\n  perspective: 1000px; /* Needed for 3D effect */\n}\n\n.designable-sheet-container {\n  width: 100%;\n  height: 100%;\n  position: relative;\n  transition: transform 0.55s;\n  transform-style: preserve-3d;\n}\n\n.card-face {\n  backface-visibility: hidden;\n}\n\n.card-face:last-child {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  transform: rotateY(180deg);\n}\n\n.designable-sheet-container.flipped {\n  transform: rotateY(180deg);\n}\n\n.fade-enter-active {\n  transition: opacity 0.3s;\n  z-index: 2;\n  position: relative;\n}\n\n.fade-leave-active {\n  transition: opacity 0.3s;\n  z-index: 2;\n  position: absolute;\n  top: 0;\n}\n\n.designable-sheet-responsive.fade-leave-active {\n  left: 0.5rem;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n  opacity: 0;\n}\n</style>\n","<template>\n  <div class=\"hint-view text-center mt-4\">\n    <p\n      class=\"hint mb-0\"\n      data-cy=\"hint-display\">\n      <span\n        v-if=\"responsiveMode && hint?.mobileText\"\n        class=\"mr-3\">\n        {{\n          t(hint?.mobileText, {\n            characters: canvas?.unprintableCharacters\n          })\n        }}\n      </span>\n\n      <span\n        v-else-if=\"hint?.text\"\n        class=\"mr-3\">\n        {{ t(hint.text, { characters: canvas?.unprintableCharacters }) }}\n      </span>\n\n      <btn\n        v-if=\"hint?.button\"\n        type=\"secondary\"\n        style=\"display: inline-flex\"\n        class=\"btn-small mr-3\"\n        data-cy=\"resize-to-fit\"\n        @click=\"hint?.buttonAction\">\n        {{ hint?.button }}\n      </btn>\n    </p>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\nimport Btn from \"../shared/Btn.vue\";\n\nexport default {\n  name: \"HintView\",\n  components: {\n    Btn\n  },\n  data() {\n    return {\n      hints: {\n        editableText: {\n          text: \"editor.hints.new.editable\",\n          mobileText: \"editor.hints.new.editableMobile\",\n          class: \"notice\"\n        },\n        editablePhoto: {\n          text: \"editor.hints.new.editablePhoto\",\n          mobileText: \"editor.hints.new.editablePhotoMobile\",\n          class: \"notice\"\n        },\n        editablePhotoAndText: {\n          text: \"editor.hints.new.editablePhotoAndText\",\n          mobileText: \"editor.hints.new.editablePhotoAndTextMobile\",\n          class: \"notice\"\n        },\n        uneditable: {\n          text: \"editor.hints.new.uneditable\",\n          class: \"notice\"\n        },\n        overflowing: {\n          text: \"editor.hints.new.overflowing\",\n          class: \"error\",\n          button: this.t(\"editor.hints.new.overflowing-button\"),\n          buttonAction: () => {\n            this.$store.dispatch(\"design/resizeTextToFit\");\n          }\n        },\n        overflowingFoiled: {\n          text: \"editor.hints.new.overflowing-foiled\",\n          class: \"error\"\n        },\n        tooSmall: {\n          text: \"editor.hints.new.toosmall\",\n          class: \"error\"\n        },\n        unprintable: {\n          text: \"editor.hints.new.unprintable\",\n          class: \"error\"\n        },\n        sticker: {\n          text: \"editor.hints.new.sticker\",\n          class: \"notice\"\n        },\n        giftcard: {\n          text: \"editor.hints.new.giftcard\",\n          class: \"notice\"\n        },\n        variableMergeFlow: {\n          text: \"editor.hints.new.variableMergeFlow\",\n          class: \"notice\"\n        },\n        fixedMergeFlow: {\n          text: \"editor.hints.new.fixedMergeFlow\",\n          class: \"notice\"\n        }\n      }\n    };\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      responsiveMode: state => state.responsiveMode\n    }),\n    ...mapGetters({\n      isMergeFlow: \"design/isMergeFlow\",\n      activeType: \"design/navigation/activeType\"\n    }),\n    editingSticker() {\n      return this.canvas?.selectedObject?.type === \"sticker\";\n    },\n    canvasHasFoiledText() {\n      return this.canvas.textObjects().some(obj => obj.foiled);\n    },\n    isMasterText() {\n      return this.canvas?.selectedObject.lockedMode;\n    },\n    editingVariableMergeFlowTextbox() {\n      return (\n        this.isMergeFlow &&\n        this.canvas?.selectedObject?.type === \"papierbox\" &&\n        this.isMasterText\n      );\n    },\n    editingFixedMergeFlowTextbox() {\n      return (\n        this.isMergeFlow &&\n        this.canvas?.selectedObject?.type === \"papierbox\" &&\n        !this.isMasterText\n      );\n    },\n    hintKey() {\n      if (!this.canvas?.element) return null;\n\n      if (this.activeType !== \"sheet\") {\n        return \"uneditable\";\n      }\n      if (this.canvas.errors.includes(\"overflowing\")) {\n        if (this.canvasHasFoiledText) {\n          return \"overflowingFoiled\";\n        }\n        return \"overflowing\";\n      }\n      if (this.canvas.errors.includes(\"toosmall\")) {\n        return \"tooSmall\";\n      }\n      if (this.canvas.unprintableCharacters) {\n        return \"unprintable\";\n      }\n      if (this.editingSticker) {\n        return \"sticker\";\n      }\n      if (this.editingFixedMergeFlowTextbox) {\n        return \"fixedMergeFlow\";\n      }\n      if (this.editingVariableMergeFlowTextbox) {\n        return \"variableMergeFlow\";\n      }\n      if (this.canvas.editable) {\n        if (\n          this.canvas.imageObjects().length &&\n          this.canvas.textObjects().length\n        ) {\n          return \"editablePhotoAndText\";\n        }\n        if (this.canvas.imageObjects().length) {\n          return \"editablePhoto\";\n        }\n        if (this.canvas.textObjects().length) {\n          return \"editableText\";\n        }\n        return false;\n      }\n      if (this.canvas.giftcardObject()) {\n        return \"giftcard\";\n      }\n      return \"uneditable\";\n    },\n    hint() {\n      return this.hints[this.hintKey];\n    }\n  }\n};\n</script>\n\n<style scoped>\n.hint-view {\n  min-height: 18px;\n}\n</style>\n","<template>\n  <div>\n    <div\n      v-if=\"showQrCodeMessage\"\n      :style=\"{ bottom: qrCodeMessageBottom }\"\n      class=\"bg-paper p-4 flex items-start fixed\">\n      <svg-icon\n        class=\"mr-3 flex-no-shrink\"\n        height=\"20px\"\n        width=\"20px\"\n        name=\"info-cutout\" />\n      <p class=\"typset-8\">{{ t(\"editor.qrcode.mobile-message\") }}</p>\n      <a\n        href=\"#\"\n        @click.prevent=\"hideQrCodeMessage\">\n        <svg-icon\n          name=\"cross\"\n          class=\"ml-auto\" />\n      </a>\n    </div>\n    <div\n      v-if=\"showCtaStickersMessage\"\n      :style=\"{ bottom: stickersMessageBottom }\"\n      class=\"bg-paper p-4 flex items-start fixed\">\n      <svg-icon\n        class=\"mr-3\"\n        height=\"20px\"\n        width=\"20px\"\n        name=\"info-cutout\" />\n      <p class=\"typset-8 mt-2\">\n        {{ t(\"editor.stickers.mobile.desktop-message\") }}\n      </p>\n      <a\n        href=\"#\"\n        @click.prevent=\"dismissedStickerMessage = true\">\n        <svg-icon\n          name=\"cross\"\n          class=\"ml-auto\" />\n      </a>\n    </div>\n    <transition\n      name=\"cta\"\n      appear\n      @after-appear=\"appearedCallback\">\n      <div\n        ref=\"mobile-cta\"\n        class=\"mobile-cta relative z-1 bg-paper-2\"\n        :class=\"simplifiedMobileEditor ? 'p-4' : 'p-3'\">\n        <div v-if=\"isInCart && !showFinishedEditingBtn\">\n          <btn\n            :promise=\"addDesignToCart\"\n            class=\"btn-large btn-block\"\n            type=\"primary\">\n            {{ t(\"editor.ctas.update-item\") }}\n          </btn>\n        </div>\n        <div v-else-if=\"useSampleEditor\">\n          <btn\n            :promise=\"addSample()\"\n            class=\"btn-large btn-block\"\n            type=\"primary\">\n            {{ t(\"quick-sample-modal.personalised.add-to-cart-editor\") }}\n          </btn>\n        </div>\n        <div v-else>\n          <div v-if=\"showFinishedEditingBtn\">\n            <btn\n              v-if=\"showFinishedEditingBtn && !isDynamicBundle\"\n              href=\"#\"\n              :promise=\"saveDesign()\"\n              class=\"btn btn-secondary btn-large btn-block mb-3\">\n              {{ t(\"editor.ctas.save\") }}\n            </btn>\n            <a\n              v-if=\"showFinishedEditingBtn\"\n              href=\"#\"\n              class=\"btn btn-primary btn-large btn-block\"\n              @click.prevent=\"mobileFinishedEditing\">\n              {{ t(\"editor.mobile.finished\") }}\n            </a>\n          </div>\n          <div\n            v-else-if=\"showReadyToSendBtn\"\n            v-tippy=\"readyToSendTippy\">\n            <btn\n              :promise=\"readyToSend()\"\n              class=\"btn-large btn-block\"\n              :disabled=\"shouldDisableSendButton\"\n              type=\"primary\">\n              {{ t(\"editor.ctas.ready-to-send\") }}\n            </btn>\n          </div>\n          <btn\n            v-else-if=\"sampleEnabled && isInCartAsSample\"\n            :promise=\"updateSample()\"\n            class=\"btn-large btn-block\"\n            type=\"primary\">\n            {{ t(\"editor.ctas.update-sample\") }}\n          </btn>\n          <btn\n            v-else\n            class=\"btn-large btn-block\"\n            type=\"primary\"\n            :promise=\"addDesignToCart\">\n            {{ formatPrice(totalPrice) }} - {{ t(\"editor.ctas.add-to-cart\") }}\n          </btn>\n          <btn\n            :promise=\"saveDesign()\"\n            class=\"btn-large btn-block js-save-design mt-3\"\n            type=\"secondary\">\n            {{ t(\"editor.simplified-mobile-editor.save\") }}\n          </btn>\n        </div>\n        <teleport to=\"#end-of-body\">\n          <card-modal\n            :design-id=\"designId\"\n            :open=\"cardModalShowing\"\n            @closed=\"hideCardModal\" />\n          <send-to-them-modal\n            :design-id=\"designId\"\n            :open=\"sendToThemModalShowing\"\n            @closed=\"hideSendToThemModal\" />\n          <reminder-modal\n            :design-id=\"designId\"\n            :open=\"reminderModalShowing\"\n            @closed=\"hideReminderModal\" />\n        </teleport>\n      </div>\n    </transition>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters, mapActions } from \"vuex\";\nimport Btn from \"../../shared/Btn.vue\";\nimport CardModal from \"../../shared/CardModal.vue\";\nimport ReminderModal from \"../ReminderModal.vue\";\nimport SendToThemModal from \"../../shared/SendToThemModal.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nexport default {\n  name: \"MobileEditorCta\",\n  components: {\n    Btn,\n    CardModal,\n    ReminderModal,\n    SendToThemModal,\n    SvgIcon\n  },\n  inject: [\"simplifiedMobileEditor\"],\n  emits: [\"entered\"],\n  data() {\n    return {\n      ctaHeight: null,\n      dismissedQrCodeMessage: false,\n      dismissedStickerMessage: false\n    };\n  },\n  computed: {\n    ...mapGetters({\n      formatPrice: \"formatPrice\",\n      showDesignableOverlay: \"design/showDesignableOverlay\",\n      totalPrice: \"design/pricing/totalPrice\",\n      visibleSheets: \"design/visibleSheets\",\n      isDynamicBundle: \"design/isDynamicBundle\"\n    }),\n    ...mapState({\n      activeEnvelopes: state => state.design.activeEnvelopes,\n      activeStockItem: state => state.design.activeStockItem,\n      canvas: state => state.design.canvas,\n      cardModalShowing: state => state.directSend.cardModalShowing,\n      designables: state => state.design.designables,\n      designId: state => state.design.designId,\n      flow: state => state.design.flow,\n      isInCart: state => state.design.isInCart,\n      isInCartAsSample: state => state.design.isInCartAsSample,\n      itemsPanelVisibility: state => state.design.itemsPanelVisibility,\n      previewPath: state => state.design.previewPath,\n      product: state => state.design.product,\n      sampleEnabled: state => state.design.product.sample.enabled,\n      reminderModalShowing: state => state.directSend.reminderModalShowing,\n      sendToThemModalShowing: state => state.directSend.sendToThemModalShowing,\n      hasSeenLeaveBlankModal: state => state.design.hasSeenLeaveBlankModal,\n      editingQrCode: state => state.design.canvas?.editingQrCode,\n      showMobileStickersMessage: state =>\n        state.design.showMobileStickersMessage,\n      useSampleEditor: state => state.useSampleEditor\n    }),\n    showFinishedEditingBtn() {\n      return (\n        this.flow === \"merge_flow\" ||\n        (this.designables.length > 1 && !this.itemsPanelVisibility)\n      );\n    },\n    showReadyToSendBtn() {\n      return this.flow === \"card_flow\" || this.flow === \"postcard_flow\";\n    },\n    isBundle() {\n      return this.product && this.product.type === \"Bundle\";\n    },\n    shouldDisableSendButton() {\n      return (\n        this.flow === \"card_flow\" &&\n        !this.designId &&\n        !this.hasSeenLeaveBlankModal\n      );\n    },\n    readyToSendTippy() {\n      return {\n        content: this.t(\"editor.mobile-tooltip.ready-to-send\"),\n        theme: \"dark\",\n        placement: \"top\",\n        arrow: true,\n        animation: \"shift-away\",\n        trigger: this.tippyTrigger\n      };\n    },\n    tippyTrigger() {\n      return this.shouldDisableSendButton ? \"click\" : \"manual\";\n    },\n    showQrCodeMessage() {\n      return (\n        this.canvas?.qrCodes().length &&\n        (this.editingQrCode || !this.dismissedQrCodeMessage)\n      );\n    },\n    qrCodeMessageBottom() {\n      if (!this.ctaHeight) return 0;\n      return `${this.ctaHeight}px`;\n    },\n    stickerObjects() {\n      if (!this.canvas || !this.canvas) return [];\n\n      return this.canvas.objects.filter(object => object.type === \"sticker\");\n    },\n    showCtaStickersMessage() {\n      return (\n        this.stickersShowing &&\n        !this.showMobileStickersMessage &&\n        !this.dismissedStickerMessage\n      );\n    },\n    stickersShowing() {\n      return this.stickerObjects.some(obj => !obj.hidden);\n    },\n    stickersMessageBottom() {\n      if (!this.ctaHeight) return 0;\n      return `${this.ctaHeight}px`;\n    }\n  },\n  methods: {\n    ...mapActions({\n      addToCart: \"design/addToCart\"\n    }),\n    addDesignToCart() {\n      return this.addToCart({\n        force: false\n      });\n    },\n    saveDesign() {\n      return () => this.$store.dispatch(\"design/saveDesign\");\n    },\n    readyToSend() {\n      return () =>\n        this.$store.dispatch(\"design/readyToSend\").then(() => {\n          // Ready to send\n        });\n    },\n    updateSample() {\n      return () =>\n        this.$store.dispatch(\"design/addSample\").then(() => {\n          // Sample added\n        });\n    },\n    addSample() {\n      return () => {\n        return new Promise(resolve => {\n          analytics.track(\"Add Personalised Sample To Cart\", {\n            location: \"Editor\"\n          });\n          this.$store.dispatch(\"design/addSample\").then(resolve);\n        });\n      };\n    },\n    hideCardModal() {\n      this.$store.commit(\"directSend/setCardModalShowing\", false);\n    },\n    hideSendToThemModal() {\n      this.$store.commit(\"directSend/setSendToThemModalShowing\", false);\n      this.$store.commit(\"setLoading\", false, { root: true });\n    },\n    mobileFinishedEditing() {\n      this.$store.commit(\"design/setItemsPanelVisibility\", true);\n    },\n    hideReminderModal() {\n      this.$store.commit(\"directSend/setReminderModalShowing\", false);\n      this.$store.commit(\"directSend/setSendToThemData\", null);\n      this.$store.commit(\"directSend/setHasSeenReminderModal\", false);\n      this.$store.commit(\"setLoading\", false);\n    },\n    appearedCallback() {\n      this.$emit(\"entered\");\n      this.ctaHeight = this.$refs[\"mobile-cta\"].offsetHeight;\n    },\n    hideQrCodeMessage() {\n      this.dismissedQrCodeMessage = true;\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.cta-enter-from {\n  transform: translateY(calc(100% + 8px));\n}\n\n.cta-enter-to {\n  transform: translateY(0);\n}\n\n.cta-enter-active {\n  transition: transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n</style>\n","<template>\n  <div>\n    <div\n      class=\"mobile-editor-navigation h-8 bg-white shadow-1 br-2 relative flex-no-shrink flex items-center p-4\">\n      <transition\n        name=\"left\"\n        appear\n        @after-appear=\"prevEntered\">\n        <button\n          ref=\"mobilePrevButton\"\n          :disabled=\"!canShowPrevious ? 'disabled' : null\"\n          class=\"btn btn-tertiary btn-icon flex-no-shrink mr-auto\"\n          :class=\"{ 'z-2': showDesignableOverlay }\"\n          data-cy=\"mobile-prev-sheet\"\n          @click.prevent=\"$emit('previous')\">\n          <svg-icon name=\"leftarrow\" />\n        </button>\n      </transition>\n\n      <fade-transition\n        appear\n        mode=\"out-in\"\n        @after-appear=\"$emit('name-entered')\">\n        <div\n          v-if=\"undoRedoAvailable\"\n          class=\"flex gap-4 items-center\">\n          <undo-redo-buttons />\n        </div>\n        <p\n          v-else\n          class=\"self-center sheet-name text-center px-2 typeset-8 w-full\"\n          data-cy=\"mobile-sheet-name\">\n          <strong>{{ currentViewName }}</strong>\n          <span v-if=\"!isStockOrEnvelope\">: {{ customisationMessage }}</span>\n        </p>\n      </fade-transition>\n\n      <transition\n        name=\"right\"\n        appear\n        @after-appear=\"nextEntered\">\n        <button\n          ref=\"mobileNextButton\"\n          :disabled=\"!canShowNext ? 'disabled' : null\"\n          class=\"btn btn-tertiary btn-icon flex-no-shrink ml-auto\"\n          :class=\"{ 'z-2': showDesignableOverlay }\"\n          data-cy=\"mobile-next-sheet\"\n          @click.prevent=\"$emit('next')\">\n          <svg-icon name=\"rightarrow\" />\n        </button>\n      </transition>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\nimport UndoRedoButtons from \"../UndoRedoButtons.vue\";\n\nexport default {\n  name: \"MobileEditorNavigation\",\n  components: {\n    FadeTransition,\n    SvgIcon,\n    UndoRedoButtons\n  },\n  props: {\n    isAPostcardSavedDesign: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"next\", \"previous\", \"prev-entered\", \"next-entered\", \"name-entered\"],\n  computed: {\n    ...mapGetters({\n      canShowNext: \"design/navigation/canShowNext\",\n      canShowPrevious: \"design/navigation/canShowPrevious\",\n      showDesignableOverlay: \"design/showDesignableOverlay\",\n      visibleSheets: \"design/visibleSheets\",\n      undoRedoAvailable: \"design/undoRedoAvailable\"\n    }),\n    ...mapState({\n      activeSheet: state => state.design.activeSheet,\n      activeEnvelopes: state => state.design.activeEnvelopes,\n      activeStockItem: state => state.design.activeStockItem,\n      canvas: state => state.design.canvas\n    }),\n    currentViewName() {\n      if (this.activeStockItem) {\n        return this.activeStockItem.name;\n      }\n      if (this.activeEnvelopes) {\n        return \"Envelopes\";\n      }\n      return `${this.activeSheet.name}`;\n    },\n    isStockOrEnvelope() {\n      return this.activeStockItem || this.activeEnvelopes;\n    },\n    hasEditableObjects() {\n      return this.canvas?.editableObjects().length;\n    },\n    customisationMessage() {\n      return this.hasEditableObjects\n        ? this.t(\"editor.mobile-editor.customise\")\n        : this.t(\"editor.mobile-editor.no-customise\");\n    },\n    dotShouldBeFilled() {\n      return sheet => {\n        return (\n          this.visibleSheets.indexOf(sheet) <=\n          this.visibleSheets.indexOf(this.activeSheet)\n        );\n      };\n    }\n  },\n  methods: {\n    prevEntered() {\n      setTimeout(() => {\n        this.$emit(\"prev-entered\");\n      }, 50);\n    },\n    nextEntered() {\n      this.$emit(\"next-entered\");\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.sheet-name {\n  // 100% - 2(back button width + options button width + margin)\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.left-enter-from {\n  opacity: 0;\n  transform: translateX(-8px);\n}\n\n.left-enter-to {\n  opacity: 1;\n  transform: translateX(0);\n}\n\n.left-enter-active {\n  transition: all 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.right-enter-from {\n  opacity: 0;\n  transform: translateX(8px);\n}\n\n.right-enter-to {\n  opacity: 1;\n  transform: translateX(0);\n}\n\n.right-enter-active {\n  transition: all 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.step-dots-container {\n  // 100% - 2(back button width + options button width + margin)\n  width: calc(100% - 208px);\n}\n\n.step-dots {\n  display: inline-flex;\n  position: relative;\n\n  &:after {\n    content: \"\";\n    height: 1px;\n    position: absolute;\n    top: 50%;\n    right: 0;\n    left: 0;\n    background-color: var(--ink-2);\n    z-index: 1;\n  }\n}\n\n.step-dot {\n  position: relative;\n  z-index: 2;\n  height: 13px;\n  width: 13px;\n  margin-left: 12px;\n  border-radius: 50%;\n  background-color: var(--ink-2);\n  border: 2px solid var(--paper-2);\n\n  &:first-child {\n    margin-left: 0;\n  }\n\n  &.filled {\n    background-color: var(--ink);\n  }\n}\n</style>\n","<template>\n  <div>\n    <div\n      class=\"mobile-editor-navigation bg-paper-2 relative z-2 flex-no-shrink flex items-center p-4\">\n      <div\n        v-if=\"undoRedoAvailable\"\n        class=\"flex gap-5 items-center\"\n        :class=\"newMobileEditor ? 'ml-auto' : 'w-full justify-center'\">\n        <undo-redo-buttons simple-editor />\n      </div>\n      <fade-transition\n        v-else\n        appear\n        @after-appear=\"textEntered\">\n        <p\n          style=\"width: 200px; left: 50%; transform: translateX(-50%)\"\n          class=\"typeset-7 absolute text-center px-4 text-ink-4\">\n          {{ t(\"editor.simplified-mobile-editor.customise\") }}\n        </p>\n      </fade-transition>\n      <transition\n        name=\"left\"\n        appear\n        @after-appear=\"backEntered\">\n        <a\n          :href=\"listingPath\"\n          class=\"btn btn-tertiary btn-large px-4\"\n          :class=\"{ 'absolute top-4': undoRedoAvailable }\"\n          @click.prevent=\"goBack\">\n          {{ t(\"editor.simplified-mobile-editor.back\") }}\n        </a>\n      </transition>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport UndoRedoButtons from \"../UndoRedoButtons.vue\";\n\nexport default {\n  name: \"SimplifiedMobileEditorNavigation\",\n  components: {\n    FadeTransition,\n    UndoRedoButtons\n  },\n  inject: [\"newMobileEditor\"],\n  emits: [\"back-entered\", \"text-entered\"],\n  computed: {\n    ...mapState({\n      listingPath: state => state.design.product.listingPath,\n      hasUnsavedChanges: state => state.design.hasUnsavedChanges\n    }),\n    ...mapGetters({\n      undoRedoAvailable: \"design/undoRedoAvailable\"\n    })\n  },\n  methods: {\n    backEntered() {\n      setTimeout(() => {\n        this.$emit(\"back-entered\");\n      }, 50);\n    },\n    textEntered() {\n      this.$emit(\"text-entered\");\n    },\n    goBack() {\n      if (this.hasUnsavedChanges) {\n        this.$store.commit(\"setUnsavedChangesModalVisible\", true);\n      } else {\n        window.location = this.listingPath;\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.left-enter-from {\n  opacity: 0;\n  transform: translateX(-8px);\n}\n\n.left-enter-to {\n  opacity: 1;\n  transform: translateX(0);\n}\n\n.left-enter-active {\n  transition: all 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n</style>\n","<template>\n  <div>\n    <div\n      class=\"mobile-editor-navigation h-8 bg-white shadow-1 br-2 relative flex-no-shrink flex items-center justify-between gap-5 p-4\">\n      <transition\n        name=\"left\"\n        appear\n        @after-appear=\"backEntered\">\n        <a\n          :href=\"listingPath\"\n          class=\"btn btn-tertiary px-4\"\n          @click.prevent=\"goBack\">\n          {{ t(\"editor.simplified-mobile-editor.back\") }}\n        </a>\n      </transition>\n      <undo-redo-buttons\n        v-if=\"undoRedoAvailable\"\n        simple-editor />\n      <fade-transition\n        v-else\n        appear\n        mode=\"out-in\"\n        @after-appear=\"textEntered\">\n        <p\n          style=\"width: 200px; left: 50%; transform: translateX(-50%)\"\n          class=\"absolute text-center text-balance text-ink-4\">\n          {{ t(\"editor.simplified-mobile-editor.customise\") }}\n        </p>\n      </fade-transition>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport UndoRedoButtons from \"../UndoRedoButtons.vue\";\n\nexport default {\n  name: \"NewMobileEditorNavigation\",\n  components: {\n    FadeTransition,\n    UndoRedoButtons\n  },\n  emits: [\"back-entered\", \"text-entered\"],\n  computed: {\n    ...mapState({\n      listingPath: state => state.design.product.listingPath,\n      hasUnsavedChanges: state => state.design.hasUnsavedChanges\n    }),\n    ...mapGetters({\n      undoRedoAvailable: \"design/undoRedoAvailable\"\n    })\n  },\n  methods: {\n    backEntered() {\n      setTimeout(() => {\n        this.$emit(\"back-entered\");\n      }, 50);\n    },\n    textEntered() {\n      this.$emit(\"text-entered\");\n    },\n    goBack() {\n      if (this.hasUnsavedChanges) {\n        this.$store.commit(\"setUnsavedChangesModalVisible\", true);\n      } else {\n        window.location = this.listingPath;\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.left-enter-from {\n  opacity: 0;\n  transform: translateX(-8px);\n}\n\n.left-enter-to {\n  opacity: 1;\n  transform: translateX(0);\n}\n\n.left-enter-active {\n  transition: all 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n</style>\n","<template>\n  <fade-transition>\n    <div\n      v-if=\"showOverlay\"\n      class=\"optional-overlay flex z-1\">\n      <div\n        :class=\"{ 'optional-overlay-modal-responsive': responsiveMode }\"\n        class=\"optional-overlay-modal self-center text-center bg-paper-1 border border-paper p-5 br-1\">\n        <h2 class=\"typeset-4 mb-3\">{{ modalData.title }}</h2>\n        <p class=\"typeset-7 mb-3\">{{ modalData.subtitle }}</p>\n        <a\n          class=\"btn btn-primary btn-block\"\n          @click.prevent=\"modalData.action\">\n          {{ t(\"editor.add-designable.cta\") }}\n        </a>\n      </div>\n    </div>\n  </fade-transition>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\n\nexport default {\n  name: \"OptionalOverlay\",\n  components: {\n    FadeTransition\n  },\n  data() {\n    return {\n      overrideShow: false\n    };\n  },\n  computed: {\n    ...mapState({\n      envelopesHidden: state => state.design.envelopes.envelopesHidden,\n      activeStockItem: state => state.design.activeStockItem,\n      activeDesignable: state => state.design.activeDesignable,\n      activeEnvelopes: state => state.design.activeEnvelopes,\n      responsiveMode: state => state.responsiveMode\n    }),\n    ...mapGetters({\n      showDesignableOverlay: \"design/showDesignableOverlay\",\n      formatPrice: \"formatPrice\"\n    }),\n    showOverlay() {\n      return !this.overrideShow && this.showDesignableOverlay;\n    },\n    unitPrice() {\n      return this.formatPrice(\n        Math.min(\n          ...this.activeDesignable.pricing_values.normal.map(\n            value => value.price\n          )\n        )\n      );\n    },\n    modalData() {\n      if (this.activeEnvelopes) {\n        return {\n          title: this.t(\"editor.envelopes.title\"),\n          subtitle: this.t(\"editor.envelopes.add-message\"),\n          action: this.addEnvelopes\n        };\n      }\n      return {\n        title: this.activeDesignable.name,\n        subtitle: this.t(\"editor.add-designable.description\", {\n          price: this.unitPrice\n        }),\n        action: this.addDesignable\n      };\n    }\n  },\n  watch: {\n    activeDesignable() {\n      this.flashOverride();\n    },\n    activeStockItem() {\n      if (!this.activeStockItem) {\n        this.flashOverride();\n      }\n    },\n    activeEnvelopes(newValue) {\n      if (!newValue || (newValue && this.envelopesHidden)) {\n        this.flashOverride();\n      }\n    }\n  },\n  methods: {\n    addEnvelopes() {\n      this.$store.commit(\"design/envelopes/setEnvelopesHidden\", false);\n    },\n    addDesignable() {\n      this.$store.dispatch(\"design/setDesignableHidden\", {\n        hidden: false,\n        designable: this.activeDesignable\n      });\n    },\n    flashOverride() {\n      this.overrideShow = true;\n      // eslint-disable-next-line no-return-assign\n      setTimeout(() => (this.overrideShow = false), 500);\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    class=\"stock-item-customise-image-container aspect-ratio-1x1 px-4 sm:p-0\">\n    <img\n      :src=\"stockItem.image\"\n      class=\"img-responsive\"\n      alt=\"\"\n      width=\"500\" />\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nexport default {\n  name: \"StockItem\",\n  computed: {\n    ...mapState({\n      stockItem: state => state.design.activeStockItem\n    })\n  }\n};\n</script>\n","export default \"__VITE_ASSET__BYzjjw3m__\"","export default \"__VITE_ASSET__BVJs05o9__\"","<template>\n  <modal\n    :open=\"modalOpen\"\n    prevent-background-close\n    requires-interaction\n    size=\"small\">\n    <template #header>\n      <h3 class=\"typeset-3\">{{ t(\"editor.mobile-editor.inside-options\") }}</h3>\n    </template>\n    <template #body>\n      <div class=\"mb-6\">\n        <div class=\"flex mb-4\">\n          <div class=\"w-2/5 flex-no-shrink\">\n            <div class=\"aspect-ratio-1x1\">\n              <img\n                class=\"block h-full w-full object-contain\"\n                :src=\"blankImage\"\n                alt=\"Blank card\" />\n            </div>\n          </div>\n          <div class=\"ml-4\">\n            <div class=\"typeset-4 mb-3\">{{ t(\"editor.leave-blank\") }}</div>\n            <p class=\"typeset-7\">\n              {{ t(\"editor.mobile-editor.leave-blank-explainer\") }}\n            </p>\n          </div>\n        </div>\n        <a\n          href=\"#\"\n          :class=\"{ 'ab-add-credit': !!giftcardAmount }\"\n          class=\"btn btn-block btn-primary\"\n          @click.prevent=\"leaveBlank\">\n          {{ t(\"editor.leave-blank\") }}\n        </a>\n      </div>\n      <div :class=\"{ 'mb-6': shouldShowInjectableGiftcard }\">\n        <div class=\"flex mb-4\">\n          <div class=\"w-2/5 flex-no-shrink\">\n            <div class=\"aspect-ratio-1x1\">\n              <img\n                class=\"block h-full w-full object-contain\"\n                :src=\"messageImage\"\n                alt=\"Card with message\" />\n            </div>\n          </div>\n          <div class=\"ml-4\">\n            <div class=\"typeset-4 mb-3\">\n              {{ t(\"editor.mobile-editor.add-a-message\") }}\n            </div>\n            <p class=\"typeset-7\">\n              {{ t(\"editor.mobile-editor.add-a-message-explainer\") }}\n            </p>\n          </div>\n        </div>\n        <a\n          href=\"#\"\n          :class=\"{ 'ab-add-credit': !!giftcardAmount }\"\n          class=\"btn btn-block btn-primary\"\n          @click.prevent=\"addMessage\">\n          {{ t(\"editor.mobile-editor.add-a-message\") }}\n        </a>\n      </div>\n      <checkbox-input\n        v-if=\"shouldShowInjectableGiftcard\"\n        v-model:checked=\"giftcardCheckbox\"\n        class=\"mb-4\"\n        flex-alignment-class=\"items-start\"\n        :label=\"t('editor.mobile-editor.gift-credit.explainer')\"\n        input-id=\"giftcard-checkbox\" />\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\nimport Modal from \"@/app/javascript/components/shared/Modal.vue\";\nimport blankImage from \"@/app/assets/images/blank.png\";\nimport messageImage from \"@/app/assets/images/message.png\";\nimport CheckboxInput from \"@/app/javascript/components/shared/CheckboxInput.vue\";\n\nexport default {\n  name: \"MobileLeaveBlankModal\",\n  components: {\n    Modal,\n    CheckboxInput\n  },\n  data() {\n    return {\n      modalOpen: false,\n      blankImage,\n      messageImage,\n      giftcardAmount: null\n    };\n  },\n  computed: {\n    ...mapGetters({\n      shouldShowInjectableGiftcard: \"design/shouldShowInjectableGiftcard\"\n    }),\n    ...mapState({\n      activeSheet: state => state.design.activeSheet,\n      hasSeenLeaveBlankModal: state => state.design.hasSeenLeaveBlankModal,\n      canvas: state => state.design.canvas\n    }),\n    canClearText() {\n      return this.activeSheet && this.activeSheet.can_clear_text;\n    },\n    giftcardCheckbox: {\n      get() {\n        return !!this.giftcardAmount;\n      },\n      set(value) {\n        this.giftcardAmount = value ? 20 : null;\n      }\n    }\n  },\n  watch: {\n    canClearText(flag) {\n      if (flag && !this.hasSeenLeaveBlankModal) {\n        this.modalOpen = true;\n        this.canvas.setMobileCardMessage();\n      }\n    },\n    hasSeenLeaveBlankModal(flag) {\n      if (!flag && this.canClearText) {\n        this.modalOpen = true;\n      }\n    }\n  },\n  methods: {\n    async setupClose() {\n      if (this.giftcardAmount) {\n        await this.addGiftcard();\n        this.closeModal();\n      } else {\n        this.closeModal();\n      }\n    },\n    addGiftcard() {\n      this.$store.dispatch(\n        \"design/setInjectedGiftcardAmount\",\n        this.giftcardAmount\n      );\n    },\n    closeModal() {\n      this.$store.commit(\"design/setHasSeenLeaveBlankModal\", true);\n      this.modalOpen = false;\n    },\n    leaveBlank() {\n      this.canvas.textObjects().forEach(obj => obj.remove());\n      this.$store.dispatch(\"design/setSheetEdited\", {\n        sheet: this.activeSheet,\n        edited: this.canvas.uneditedEditableObjects().length === 0\n      });\n      this.setupClose();\n    },\n    addMessage() {\n      this.setupClose();\n    }\n  }\n};\n</script>\n","<template>\n  <div\n    id=\"text-editing-controls\"\n    ref=\"controls\"\n    class=\"text-editing-controls h-8 bg-white shadow-1 overflow-clip br-2\"\n    data-cy=\"mobile-text-controls\"\n    :class=\"{ 'text-is-caption': !shouldShowStylingTools }\">\n    <fade-transition\n      mode=\"out-in\"\n      :duration=\"fadeDuration\">\n      <div\n        v-if=\"!valueBeingEdited\"\n        class=\"py-3 h-full flex\">\n        <div\n          class=\"flex-1 flex px-3\"\n          :class=\"\n            shouldShowStylingTools\n              ? 'justify-between'\n              : 'justify-center items-center'\n          \">\n          <div\n            class=\"flex items-center justify-center gap-3\"\n            :class=\"{\n              'bg-paper': keyboardIconHighlighted,\n              'w-7': shouldShowStylingTools\n            }\"\n            @click=\"editText\">\n            <svg-icon\n              name=\"keyboard\"\n              width=\"24\"\n              height=\"24\" />\n            <template v-if=\"!shouldShowStylingTools\">Edit text</template>\n          </div>\n          <template v-if=\"shouldShowStylingTools\">\n            <div\n              v-if=\"!enabledStyles || enabledStyles.textColour\"\n              class=\"flex items-center justify-center w-7\"\n              data-cy=\"mobile-text-controls-colour\"\n              @click=\"$store.commit('setValueBeingEdited', 'color')\">\n              <div\n                class=\"h-6 w-6 border border-ink-2 br-circle\"\n                :style=\"{ backgroundColor: selection?.fill || 'black' }\"></div>\n            </div>\n            <div\n              v-if=\"shouldShowTextAlignment\"\n              class=\"flex items-center justify-center w-7\"\n              data-cy=\"mobile-text-controls-alignment\"\n              @click=\"$store.commit('setValueBeingEdited', 'alignment')\">\n              <svg-icon\n                name=\"align-center\"\n                width=\"12\"\n                height=\"9\" />\n            </div>\n            <div\n              v-if=\"!enabledStyles || enabledStyles.fontFamily\"\n              class=\"flex items-center justify-center w-7\"\n              data-cy=\"mobile-text-controls-font-family\"\n              @click=\"$store.commit('setValueBeingEdited', 'fontFamily')\">\n              {{ t(\"editor.mobile-tooltip.font\") }}\n            </div>\n            <div\n              v-if=\"shouldShowFontSize\"\n              class=\"flex items-center justify-center w-7\"\n              data-cy=\"mobile-text-controls-font-size\"\n              @click=\"$store.commit('setValueBeingEdited', 'fontSize')\">\n              <svg-icon\n                name=\"font-size\"\n                width=\"23\"\n                height=\"13\" />\n            </div>\n          </template>\n        </div>\n      </div>\n      <div\n        v-else-if=\"valueBeingEdited !== 'text'\"\n        class=\"py-3 h-full flex\">\n        <div\n          class=\"flex items-center justify-center w-7 border-r border-ink-2\"\n          @click=\"$store.commit('setValueBeingEdited', null)\">\n          <svg-icon name=\"leftarrow\" />\n        </div>\n        <div class=\"-my-3 flex-1 overflow-hidden\">\n          <component\n            :is=\"textTooltipComponent\"\n            v-bind=\"textTooltipComponentProps\"\n            @input=\"textTooltipComponentEvents($event)\"\n            @set-warning=\"styleWarning = $event\" />\n        </div>\n      </div>\n    </fade-transition>\n  </div>\n</template>\n\n<script setup>\nimport { computed, ref, watch } from \"vue\";\nimport { useStore } from \"vuex\";\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport MobileTooltipTextColor from \"../../shared/mobile/MobileTooltipTextColor.vue\";\nimport MobileTooltipTextAlignment from \"../../shared/mobile/MobileTooltipTextAlignment.vue\";\nimport MobileTooltipFontFamily from \"../../shared/mobile/MobileTooltipFontFamily.vue\";\nimport MobileTooltipFontSize from \"../../shared/mobile/MobileTooltipFontSize.vue\";\nimport SvgIcon from \"../../shared/SvgIcon.vue\";\n\nconst store = useStore();\nconst canvas = computed(() => store.state.design.canvas);\nconst isMergeFlow = computed(() => store.getters[\"design/isMergeFlow\"]);\nconst editingText = computed(() => store.state.design.canvas?.editingText);\nconst editingFoiledText = computed(\n  () => store.state.design.canvas?.editingFoiledText\n);\nconst selection = computed(() => canvas.value?.selection);\nconst valueBeingEdited = computed(() => store.state.valueBeingEdited);\nconst enabledStyles = computed(() => store.state.design.canvas?.enabledStyles);\nconst showsStyle = computed(() => store.getters[\"merge/showsStyle\"]);\nconst currentMergeStyle = computed(() => store.getters[\"merge/currentStyle\"]);\nconst currentMergeFontFamily = computed(\n  () => store.getters[\"merge/currentFontFamily\"]\n);\nconst fonts = computed(() => store.state.options.fonts);\nconst keyboardIconHighlighted = computed(\n  () => store.state.keyboardIconHighlighted\n);\nconst fadeDuration = ref(200);\n\nconst textIsCaption = computed(() => {\n  return !isMergeFlow.value && canvas.value?.selectedTextbox?.lockedMode;\n});\nconst textIsMergeField = computed(() => {\n  return (\n    editingText.value &&\n    isMergeFlow.value &&\n    canvas.value?.selectedTextbox?.lockedMode\n  );\n});\nconst shouldShowTextAlignment = computed(() => {\n  return (\n    (!enabledStyles.value || enabledStyles.value.textAlignment) &&\n    !textIsMergeField.value\n  );\n});\nconst shouldShowFontSize = computed(() => {\n  return (\n    !enabledStyles.value ||\n    enabledStyles.value.letterSpacing ||\n    enabledStyles.value.lineHeight ||\n    enabledStyles.value.fontStyle\n  );\n});\nconst stylesAvailable = computed(() => {\n  if (editingFoiledText.value) {\n    return false;\n  }\n  if (enabledStyles.value) {\n    return Object.values(enabledStyles.value).some(Boolean);\n  }\n  return true;\n});\nconst shouldShowStylingTools = computed(() => {\n  if (!stylesAvailable.value) return false;\n  return (\n    (!textIsCaption.value && !textIsMergeField.value) ||\n    (textIsMergeField.value && showsStyle.value)\n  );\n});\nconst textTooltipComponent = computed(() => {\n  switch (valueBeingEdited.value) {\n    case \"color\":\n      return MobileTooltipTextColor;\n    case \"alignment\":\n      return MobileTooltipTextAlignment;\n    case \"fontFamily\":\n      return MobileTooltipFontFamily;\n    case \"fontSize\":\n      return MobileTooltipFontSize;\n    default:\n      return null;\n  }\n});\n\nconst commitSelection = sel => {\n  if (textIsMergeField.value) {\n    store.dispatch(\"design/merge/setMergeStyle\", sel);\n  } else {\n    store.state.design.canvas.setSelection(sel, false);\n  }\n};\n\nconst productId = computed(() => store.state.design.productId);\n\nconst formattedAnalyticsId = () => {\n  if (typeof productId.value === \"string\") {\n    return productId;\n  }\n  return `PRODUCT-${productId.value}`;\n};\n\nconst handleAnalyticsEvents = type => {\n  analytics.track(\"Edited Text\", {\n    product_id: formattedAnalyticsId,\n    type\n  });\n};\n\nconst setColour = colour => {\n  const sel = { fill: colour };\n  commitSelection(sel);\n  handleAnalyticsEvents(\"Colour\");\n};\nconst setFontFamily = fontFamily => {\n  const sel = { fontFamily };\n  commitSelection(sel);\n  handleAnalyticsEvents(\"Font\");\n};\n\nconst currentFontFamily = computed(() => {\n  return fonts.value.filter(\n    font =>\n      Object.keys(font.weights).filter(\n        weight => font.weights[weight].name === selection.value.fontFamily\n      ).length > 0\n  )[0];\n});\n\nconst textTooltipComponentEvents = value => {\n  switch (valueBeingEdited.value) {\n    case \"color\":\n      return setColour(value);\n    case \"alignment\":\n      return {};\n    case \"fontFamily\":\n      return {\n        value: setFontFamily(value)\n      };\n    case \"fontSize\":\n      return {};\n    default:\n      return null;\n  }\n};\n\nconst textTooltipComponentProps = computed(() => {\n  switch (valueBeingEdited.value) {\n    case \"color\":\n      if (textIsMergeField.value) {\n        return { value: currentMergeStyle.value.fill };\n      }\n      return { value: selection.value.fill };\n    case \"alignment\":\n      return {\n        value: selection.value\n      };\n    case \"fontFamily\":\n      if (textIsMergeField.value) {\n        return {\n          value: currentMergeStyle.value.fontFamily,\n          fontFamily: currentMergeFontFamily.value\n        };\n      }\n      return {\n        value: selection.value.fontFamily,\n        fontFamily: currentFontFamily.value\n      };\n    case \"fontSize\":\n      if (textIsMergeField.value) {\n        return {\n          value: currentMergeStyle,\n          fontFamily: currentMergeFontFamily.value\n        };\n      }\n      return {\n        value: selection,\n        fontFamily: currentFontFamily.value\n      };\n    default:\n      return null;\n  }\n});\n\nconst selectedTextbox = computed(\n  () => store.state.design.canvas.selectedTextbox\n);\n\nconst selectedObject = computed(\n  () => store.state.design.canvas?.selectedObject\n);\n\nwatch(\n  () => selectedObject.value,\n  object => {\n    if (object) {\n      fadeDuration.value = 0;\n      store.commit(\"setValueBeingEdited\", null);\n      fadeDuration.value = 200;\n    }\n  }\n);\n\nconst toggleKeyboard = () => {\n  if (keyboardIconHighlighted.value) {\n    selectedTextbox.value.hiddenTextArea.blur();\n  } else {\n    selectedTextbox.value.hiddenTextArea.focus();\n  }\n};\n\nconst editText = () => {\n  if (textIsCaption.value) {\n    store.commit(\"setShowCaptionEditingOverlay\", true);\n  } else if (textIsMergeField.value) {\n    store.commit(\"setShowMergeEditingOverlay\", true);\n  } else {\n    toggleKeyboard();\n  }\n};\n</script>\n\n<style scoped>\n.text-editing-controls {\n  touch-action: manipulation;\n}\n</style>\n","<template>\n  <div\n    :class=\"{ 'overflow-x-hidden': responsiveMode }\"\n    class=\"editor-panel relative\">\n    <optional-overlay />\n    <hint-view v-if=\"!responsiveMode\" />\n\n    <div\n      :class=\"{ 'md:pt-4': !responsiveMode }\"\n      class=\"relative flex items-center justify-center md:mb-4 md:px-4\">\n      <div\n        class=\"self-start flex flex-col justify-between my-auto w-full h-dvh md:h-auto\"\n        :class=\"{ 'sm:justifty-start': !responsiveMode }\">\n        <template v-if=\"newMobileEditor\">\n          <div\n            v-if=\"responsiveMode\"\n            class=\"flipping-area p-4 z-3\">\n            <div\n              class=\"card-container h-8\"\n              :class=\"{ flipped: canvas?.editingText }\">\n              <div class=\"card-front\">\n                <new-mobile-editor-navigation\n                  v-if=\"simplifiedMobileEditor\"\n                  @back-entered=\"backEntered = true\"\n                  @text-entered=\"textEntered = true\" />\n                <mobile-editor-navigation\n                  v-else-if=\"responsiveMode\"\n                  :is-a-postcard-saved-design=\"isAPostcardSavedDesign\"\n                  @previous=\"previous\"\n                  @next=\"next\"\n                  @prev-entered=\"prevEntered = true\"\n                  @name-entered=\"nameEntered = true\"\n                  @next-entered=\"nextEntered = true\" />\n              </div>\n              <div class=\"card-back\">\n                <mobile-editor-controls />\n              </div>\n            </div>\n          </div>\n        </template>\n        <template v-else>\n          <simplified-mobile-editor-navigation\n            v-if=\"responsiveMode && simplifiedMobileEditor\"\n            @back-entered=\"backEntered = true\"\n            @text-entered=\"textEntered = true\" />\n          <mobile-editor-navigation\n            v-else-if=\"responsiveMode\"\n            :is-a-postcard-saved-design=\"isAPostcardSavedDesign\"\n            @previous=\"previous\"\n            @next=\"next\"\n            @prev-entered=\"prevEntered = true\"\n            @name-entered=\"nameEntered = true\"\n            @next-entered=\"nextEntered = true\" />\n        </template>\n\n        <fade-transition>\n          <mobile-overset-text-warning\n            v-if=\"showMobileOverflowError\"\n            :hide-button=\"canvasHasFoiledText\" />\n        </fade-transition>\n\n        <div class=\"relative\">\n          <fade-transition\n            cross-fade\n            @after-enter=\"$store.commit('design/setDesignableAppeared', true)\">\n            <designable\n              v-if=\"activeType === 'sheet'\"\n              v-show=\"controlsHaveEntered\"\n              :key=\"`designable-${version}`\" />\n            <stock-item\n              v-if=\"activeType === 'stockItem'\"\n              v-show=\"controlsHaveEntered\"\n              :key=\"`stockItem-${version}`\" />\n          </fade-transition>\n        </div>\n\n        <mobile-editor-cta\n          v-if=\"responsiveMode\"\n          @entered=\"ctaEntered = true\" />\n      </div>\n    </div>\n\n    <teleport to=\"#end-of-body\">\n      <image-upload-modal :product-id=\"productId\" />\n      <quick-sample-modal\n        editor\n        :open=\"sampleModalOpen\"\n        @closed=\"hideSampleModal\" />\n    </teleport>\n    <mobile-leave-blank-modal v-if=\"showLeaveBlankModal\" />\n    <papier-ai v-if=\"allowPapierAi\" />\n  </div>\n</template>\n\n<script>\nimport { mapState, mapGetters } from \"vuex\";\n\nimport QuickSampleModal from \"@/app/javascript/components/shared/QuickSampleModal.vue\";\nimport PapierAi from \"@/app/javascript/components/editor/desktop/PapierAi.vue\";\nimport Designable from \"./Designable.vue\";\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport HintView from \"./HintView.vue\";\nimport ImageUploadModal from \"../shared/ImageUploadModal.vue\";\nimport MobileEditorCta from \"./mobile/MobileEditorCta.vue\";\nimport MobileEditorNavigation from \"./mobile/MobileEditorNavigation.vue\";\nimport SimplifiedMobileEditorNavigation from \"./mobile/SimplifiedMobileEditorNavigation.vue\";\nimport NewMobileEditorNavigation from \"./mobile/NewMobileEditorNavigation.vue\";\nimport MobileOversetTextWarning from \"../shared/mobile/MobileOversetTextWarning.vue\";\nimport OptionalOverlay from \"./OptionalOverlay.vue\";\nimport StockItem from \"./StockItem.vue\";\nimport MobileLeaveBlankModal from \"./mobile/MobileLeaveBlankModal.vue\";\nimport MobileEditorControls from \"./mobile/MobileEditorControls.vue\";\n\nexport default {\n  name: \"EditorPanel\",\n  components: {\n    Designable,\n    FadeTransition,\n    HintView,\n    ImageUploadModal,\n    MobileEditorCta,\n    MobileEditorNavigation,\n    SimplifiedMobileEditorNavigation,\n    NewMobileEditorNavigation,\n    MobileOversetTextWarning,\n    OptionalOverlay,\n    QuickSampleModal,\n    StockItem,\n    MobileLeaveBlankModal,\n    PapierAi,\n    MobileEditorControls\n  },\n  inject: [\"simplifiedMobileEditor\", \"newMobileEditor\"],\n  data() {\n    return {\n      showVariationCtas: true,\n      prevEntered: false,\n      nameEntered: false,\n      nextEntered: false,\n      ctaEntered: false,\n      backEntered: false,\n      textEntered: false,\n      version: 1\n    };\n  },\n  computed: {\n    ...mapState({\n      responsiveMode: state => state.responsiveMode,\n      allowPapierAi: state => state.allowPapierAi,\n      designables: state => state.design.designables,\n      flow: state => state.design.flow,\n      itemsPanelVisibility: state => state.design.itemsPanelVisibility,\n      activeStockItem: state => state.design.activeStockItem,\n      activeDesignable: state => state.design.activeDesignable,\n      activeSheet: state => state.design.activeSheet,\n      canvas: state => state.design.canvas,\n      designId: state => state.design.designId,\n      sampleModalOpen: state => state.sampleModalOpen,\n      editingEmptyImage: state => state.design.canvas?.editingEmptyImage\n    }),\n    ...mapGetters({\n      activeType: \"design/navigation/activeType\",\n      canShowNext: \"design/navigation/canShowNext\",\n      canShowPrevious: \"design/navigation/canShowPrevious\",\n      showVariationsPanel: \"design/variations/showVariationsPanel\",\n      visibleSheets: \"design/visibleSheets\",\n      productId: \"design/productId\"\n    }),\n    showStartAgainDesktop() {\n      return (\n        !this.responsiveMode &&\n        !this.activeDesignable.optionallyHidden &&\n        this.canvas?.editable &&\n        !this.activeStockItem &&\n        !this.isAPostcardSavedDesign &&\n        this.flow !== \"merge_flow\"\n      );\n    },\n    isAPostcardSavedDesign() {\n      return this.flow === \"postcard_flow\" && this.designId;\n    },\n    controlsHaveEntered() {\n      if (this.responsiveMode) {\n        if (this.simplifiedMobileEditor) {\n          return this.backEntered && this.textEntered;\n        }\n        return (\n          this.prevEntered &&\n          this.nameEntered &&\n          this.nextEntered &&\n          this.ctaEntered\n        );\n      }\n      return true;\n    },\n    canvasHasFoiledText() {\n      return this.canvas.textObjects().some(obj => obj.foiled);\n    },\n    showMobileOverflowError() {\n      return this.textIsOverflowing && this.responsiveMode;\n    },\n    textIsOverflowing() {\n      return this.canvas?.errors.includes(\"overflowing\");\n    },\n    showLeaveBlankModal() {\n      return this.responsiveMode && this.flow === \"card_flow\" && !this.designId;\n    }\n  },\n  mounted() {\n    if (this.responsiveMode) {\n      document.documentElement.classList.add(\"new-ui\");\n    }\n\n    window.addEventListener(\"orientationchange\", () => {\n      this.$store.commit(\"design/saveActiveSheet\");\n      this.$store.commit(\"design/setDesignableAppeared\", false);\n      this.version += 1;\n    });\n  },\n  methods: {\n    previous() {\n      if (this.canShowPrevious) {\n        this.$store.dispatch(\"design/navigation/previous\");\n      }\n    },\n    next() {\n      if (this.canShowNext) {\n        this.$store.dispatch(\"design/navigation/next\");\n      }\n    },\n    startAgain() {\n      this.$store.dispatch(\"design/startAgain\");\n    },\n    toggleMobileCtas() {\n      this.showVariationCtas = !this.showVariationCtas;\n    },\n    hideSampleModal() {\n      this.$store.commit(\"setSampleModalOpen\", false);\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.calc-width {\n  max-width: calc(100% - 190px);\n}\n\n.flipping-area {\n  perspective: 1000px;\n}\n\n.card-container {\n  position: relative;\n  width: 100%;\n  transform-style: preserve-3d;\n  transition: transform 0.3s ease-in-out;\n}\n\n.card-container.flipped {\n  transform: rotateX(180deg);\n}\n\n.card-front,\n.card-back {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  backface-visibility: hidden;\n}\n\n.card-back {\n  transform: rotateX(180deg);\n}\n</style>\n","<template>\n  <div\n    id=\"mobile-merge-editing-overlay\"\n    class=\"mobile-overlay mobile-merge-editing-overlay bg-paper-2\"\n    data-cy=\"mobile-merge-editing-overlay\">\n    <div class=\"pt-4 px-4 pb-3\">\n      <div class=\"flex items-center justify-between mb-3\">\n        <div class=\"typeset-8 pr-2\">\n          {{\n            t(\"editor.mobile-tooltip.merge-overlay.title\", {\n              designable_name: activeDesignable.name.toLowerCase()\n            })\n          }}\n        </div>\n        <div\n          class=\"done-btn btn btn-primary\"\n          data-cy=\"mobile-merge-editing-overlay-done\"\n          @click=\"done\">\n          {{ t(\"editor.mobile-tooltip.merge-overlay.done\") }}\n        </div>\n      </div>\n      <merge-progress-bar class=\"mb-0\" />\n    </div>\n    <merge-inputs-list\n      class=\"mobile-merge-inputs-container p-4\"\n      @show-warning=\"showWarning = $event\" />\n    <fade-transition>\n      <mobile-unprintable-character-warning v-if=\"showWarning\" />\n    </fade-transition>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport FadeTransition from \"../../transitions/FadeTransition.vue\";\nimport MergeProgressBar from \"../MergeProgressBar.vue\";\nimport MergeInputsList from \"../MergeInputsList.vue\";\nimport MobileUnprintableCharacterWarning from \"./MobileUnprintableCharacterWarning.vue\";\n\nexport default {\n  name: \"MobileMergeEditingOverlay\",\n  components: {\n    FadeTransition,\n    MergeProgressBar,\n    MergeInputsList,\n    MobileUnprintableCharacterWarning\n  },\n  data() {\n    return {\n      showWarning: false\n    };\n  },\n  computed: {\n    ...mapState({\n      activeDesignable: state => state.design.activeDesignable,\n      canvas: state => state.design.canvas\n    })\n  },\n  mounted() {\n    document.documentElement.classList.add(\"overflow-hidden\", \"fixed\");\n    document.body.classList.add(\"overflow-hidden\", \"fixed\");\n  },\n  beforeUnmount() {\n    document.documentElement.classList.remove(\"overflow-hidden\", \"fixed\");\n    document.body.classList.remove(\"overflow-hidden\", \"fixed\");\n\n    this.canvas.clearSelection();\n  },\n  methods: {\n    done() {\n      this.$store.commit(\"setValueBeingEdited\", null);\n      this.$store.commit(\"setShowMergeEditingOverlay\", false);\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.mobile-merge-editing-overlay {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 100;\n  height: 100%;\n  overflow: auto;\n}\n\n.done-btn {\n  height: 48px;\n}\n\n.mobile-merge-inputs-container {\n  height: auto;\n}\n</style>\n","<template>\n  <div\n    class=\"editor-content new-ui flex justify-between flex-col\"\n    :class=\"{\n      'behind-modal': showTextEditingOverlay || showCaptionEditingOverlay\n    }\">\n    <items-panel\n      v-if=\"showItemsPanel\"\n      class=\"editor-drawer open flex\" />\n\n    <slot></slot>\n\n    <teleport to=\"#end-of-body\">\n      <fade-transition>\n        <mobile-text-editing-overlay v-if=\"showTextEditingOverlay\" />\n      </fade-transition>\n    </teleport>\n\n    <teleport to=\"#end-of-body\">\n      <fade-transition>\n        <mobile-caption-editing-overlay v-if=\"showCaptionEditingOverlay\" />\n      </fade-transition>\n    </teleport>\n\n    <teleport to=\"#end-of-body\">\n      <fade-transition>\n        <mobile-merge-editing-overlay v-if=\"showMergeEditingOverlay\" />\n      </fade-transition>\n    </teleport>\n  </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport ItemsPanel from \"./ItemsPanel.vue\";\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport MobileTextEditingOverlay from \"./mobile/MobileTextEditingOverlay.vue\";\nimport MobileCaptionEditingOverlay from \"../shared/mobile/MobileCaptionEditingOverlay.vue\";\nimport MobileMergeEditingOverlay from \"./mobile/MobileMergeEditingOverlay.vue\";\n\nexport default {\n  name: \"MobileEditor\",\n  components: {\n    ItemsPanel,\n    FadeTransition,\n    MobileTextEditingOverlay,\n    MobileCaptionEditingOverlay,\n    MobileMergeEditingOverlay\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      flow: state => state.design.flow,\n      editingEmptyImage: state => state.design.canvas?.editingEmptyImage,\n      editingImage: state => state.design.canvas?.editingImage,\n      editingText: state => state.design.canvas?.editingText,\n      designables: state => state.design.designables,\n      itemsPanelVisibility: state => state.design.itemsPanelVisibility,\n      showTextEditingOverlay: state => state.showTextEditingOverlay,\n      showCaptionEditingOverlay: state => state.showCaptionEditingOverlay,\n      showMergeEditingOverlay: state => state.showMergeEditingOverlay\n    }),\n    showItemsPanel() {\n      return (\n        this.itemsPanelVisibility &&\n        (this.isMergeFlow || this.designables.length > 1)\n      );\n    },\n    isMergeFlow() {\n      return this.flow === \"merge_flow\";\n    }\n  }\n};\n</script>\n","<template>\n  <modal\n    :open=\"customiseAlertModalShowing\"\n    size=\"small\"\n    @closed=\"setCustomiseAlertModalShowing(false)\">\n    <template #header>\n      <h2\n        data-cy=\"uncustomised-alert-heading\"\n        class=\"typeset-3\">\n        {{ t(\"editor.uncustomised-modal.heading\") }}\n      </h2>\n    </template>\n    <template #body>\n      <p class=\"typeset-7 mb-4\">\n        {{ t(\"editor.uncustomised-modal.subheading\") }}\n      </p>\n      <button\n        v-if=\"showAddToCartAnyway\"\n        class=\"btn btn-secondary btn-block mb-3\"\n        :data-cy=\"`${addOrUpdateCta.replaceAll(' ', '-').toLowerCase()}`\"\n        @click=\"forceAddToBasket\">\n        {{ addOrUpdateCta }}\n      </button>\n      <button\n        class=\"btn btn-primary btn-block\"\n        data-cy=\"show-me-unedited-area\"\n        @click=\"setCustomiseAlertModalShowing(false)\">\n        {{ t(\"editor.uncustomised-modal.cta\") }}\n      </button>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapState, mapActions, mapGetters } from \"vuex\";\n\nimport Modal from \"../shared/Modal.vue\";\n\nexport default {\n  name: \"CustomiseAlertModal\",\n  components: {\n    Modal\n  },\n  computed: {\n    ...mapState({\n      customiseAlertModalShowing: state =>\n        state.design.customiseAlertModalShowing,\n      flow: state => state.design.flow,\n      isInCart: state => state.design.isInCart\n    }),\n    ...mapGetters({\n      productId: \"design/productId\"\n    }),\n    showAddToCartAnyway() {\n      return this.flow !== \"card_flow\" && this.flow !== \"postcard_flow\";\n    },\n    addOrUpdateCta() {\n      if (this.isInCart) {\n        return this.t(\"editor.uncustomised-modal.update-anyway\");\n      }\n      return this.t(\"editor.uncustomised-modal.add-anyway\");\n    },\n    editorWarningType() {\n      if (this.showAddToCartAnyway) {\n        return \"Skippable\";\n      }\n      return \"Unskippable\";\n    },\n    formattedAnalyticsId() {\n      if (typeof this.productId === \"string\") {\n        return this.productId;\n      }\n      return `PRODUCT-${this.productId}`;\n    }\n  },\n  watch: {\n    customiseAlertModalShowing(newVal) {\n      if (newVal === true) {\n        analytics.track(\"Viewed Editor Warning\", {\n          product_id: this.formattedAnalyticsId,\n          type: this.editorWarningType\n        });\n      }\n    }\n  },\n  methods: {\n    ...mapActions({\n      setCustomiseAlertModalShowing: \"design/setCustomiseAlertModalShowing\",\n      addToCart: \"design/addToCart\"\n    }),\n    forceAddToBasket() {\n      analytics.track(\"Clicked Add To Basket Anyway\", {\n        product_id: this.formattedAnalyticsId\n      });\n      this.addToCart({\n        force: true\n      });\n    }\n  }\n};\n</script>\n","<template>\n  <modal\n    :open=\"unsavedChangesModalVisible\"\n    size=\"small\"\n    @closed=\"setUnsavedChangesModalVisible(false)\">\n    <template #header>\n      <h2 class=\"typeset-3\">{{ t(\"editor.unsaved-changes-modal.heading\") }}</h2>\n    </template>\n    <template #body>\n      <p class=\"typeset-7 mb-4\">\n        {{ t(\"editor.unsaved-changes-modal.subheading\") }}\n      </p>\n      <btn\n        :promise=\"saveAndExit()\"\n        class=\"block mb-3\"\n        type=\"primary\">\n        {{ t(\"editor.unsaved-changes-modal.save-and-exit\") }}\n      </btn>\n      <button\n        class=\"btn btn-secondary btn-block\"\n        @click=\"exitWithoutSaving\">\n        {{ t(\"editor.unsaved-changes-modal.exit-without-saving\") }}\n      </button>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport Btn from \"../shared/Btn.vue\";\nimport Modal from \"../shared/Modal.vue\";\n\nexport default {\n  name: \"UnsavedChangesModal\",\n  components: {\n    Btn,\n    Modal\n  },\n  computed: {\n    ...mapState({\n      unsavedChangesModalVisible: state => state.unsavedChangesModalVisible,\n      listingPath: state => state.design.product.listingPath,\n      loggedIn: state => state.loggedIn\n    })\n  },\n  methods: {\n    saveAndExit() {\n      return () =>\n        this.$store.dispatch(\"design/saveDesign\").then(() => {\n          if (this.loggedIn) {\n            window.location = `${this.listingPath}?saved=true`;\n          }\n        });\n    },\n    setUnsavedChangesModalVisible(value) {\n      this.$store.commit(\"setUnsavedChangesModalVisible\", value);\n    },\n    exitWithoutSaving() {\n      this.setUnsavedChangesModalVisible(false);\n      window.location = this.listingPath;\n    }\n  }\n};\n</script>\n","<template>\n  <modal\n    :open=\"mergeAlertModalShowing\"\n    size=\"small\">\n    <template #header>\n      <h2 class=\"typeset-3\">{{ t(\"editor.merge.alert.title\") }}</h2>\n    </template>\n    <template #body>\n      <p class=\"typeset-7 mb-4\">\n        {{\n          t(\"editor.merge.alert.explanation\", { count: blankMergeInputsCount })\n        }}\n      </p>\n      <button\n        class=\"btn btn-secondary btn-block mb-3\"\n        @click=\"addToCart({ force: true })\">\n        {{ t(\"editor.merge.alert.proceed\") }}\n      </button>\n      <button\n        class=\"btn btn-primary btn-block\"\n        @click=\"setMergeAlertModalShowing(false)\">\n        {{ t(\"editor.merge.alert.review\") }}\n      </button>\n    </template>\n  </modal>\n</template>\n\n<script>\nimport { mapGetters, mapActions, mapMutations, mapState } from \"vuex\";\n\nimport Modal from \"../shared/Modal.vue\";\n\nexport default {\n  name: \"MergeAlertModal\",\n  components: {\n    Modal\n  },\n  computed: {\n    ...mapState({\n      mergeAlertModalShowing: state => state.design.merge.mergeAlertModalShowing\n    }),\n    ...mapGetters({\n      blankMergeInputsCount: \"design/merge/blankMergeInputsCount\"\n    })\n  },\n  methods: {\n    ...mapActions({\n      addToCart: \"design/addToCart\"\n    }),\n    ...mapMutations({\n      setMergeAlertModalShowing: \"design/merge/setMergeAlertModalShowing\"\n    })\n  }\n};\n</script>\n","<template>\n  <div\n    data-cs-capture\n    :class=\"responsiveMode ? 'responsive-mode' : 'flex-1 flex flex-col'\">\n    <flash-messages />\n\n    <merge-alert-modal />\n\n    <customise-alert-modal />\n\n    <unsaved-changes-modal />\n\n    <image-errored-modal />\n\n    <direct-photo-upload />\n\n    <fade-transition>\n      <overlay v-show=\"loading && !imageUploadModalOpen\" />\n    </fade-transition>\n\n    <component :is=\"editorComponent\">\n      <editor-panel\n        :class=\"editorPanelClass\"\n        class=\"flex-1 editor-center sm:flex sm:flex-col\" />\n    </component>\n\n    <div\n      v-show=\"!showTextEditingOverlay && !showCaptionEditingOverlay\"\n      class=\"off-screen-container\">\n      <canvas\n        ref=\"preloadCanvas\"\n        width=\"500\"\n        height=\"500\"></canvas>\n    </div>\n\n    <import-photos />\n  </div>\n</template>\n\n<script>\nimport { mapGetters, mapState } from \"vuex\";\n\nimport dragListeners from \"../mixins/dragListeners\";\n\nimport DesktopEditor from \"../components/editor/DesktopEditor.vue\";\nimport EditorPanel from \"../components/editor/EditorPanel.vue\";\nimport FadeTransition from \"../components/transitions/FadeTransition.vue\";\nimport MobileEditor from \"../components/editor/MobileEditor.vue\";\nimport CustomiseAlertModal from \"../components/editor/CustomiseAlertModal.vue\";\nimport UnsavedChangesModal from \"../components/editor/UnsavedChangesModal.vue\";\nimport ImageErroredModal from \"../components/shared/ImageErroredModal.vue\";\nimport FlashMessages from \"../components/shared/FlashMessages.vue\";\nimport MergeAlertModal from \"../components/editor/MergeAlertModal.vue\";\nimport Overlay from \"../components/shared/Overlay.vue\";\nimport DirectPhotoUpload from \"../components/shared/DirectPhotoUpload.vue\";\nimport ImportPhotos from \"../components/shared/ImportPhotos.vue\";\n\nexport default {\n  name: \"Editor\",\n  components: {\n    ImportPhotos,\n    DirectPhotoUpload,\n    DesktopEditor,\n    EditorPanel,\n    FadeTransition,\n    MobileEditor,\n    CustomiseAlertModal,\n    UnsavedChangesModal,\n    ImageErroredModal,\n    FlashMessages,\n    MergeAlertModal,\n    Overlay\n  },\n  mixins: [dragListeners],\n  data() {\n    return {\n      dragTimeout: null\n    };\n  },\n  computed: {\n    ...mapState({\n      canvas: state => state.design.canvas,\n      loading: state => state.loading,\n      responsiveMode: state => state.responsiveMode,\n      showTextEditingOverlay: state => state.showTextEditingOverlay,\n      showCaptionEditingOverlay: state => state.showCaptionEditingOverlay,\n      designableAppeared: state => state.design.designableAppeared,\n      imageUploadModalOpen: state => state.design.images.imageUploadModalOpen,\n      imageErrorModalOpen: state => state.imageErrorModalOpen,\n      productName: state => state.design.product.name\n    }),\n    ...mapGetters({\n      isDynamicBundle: \"design/isDynamicBundle\",\n      productId: \"design/productId\"\n    }),\n    editorComponent() {\n      return this.responsiveMode ? \"MobileEditor\" : \"DesktopEditor\";\n    },\n    editorPanelClass() {\n      return this.responsiveMode ? \"sm:flex-col\" : \"justify-start\";\n    }\n  },\n  mounted() {\n    const vm = this;\n    vm.$store.dispatch(\"design/preloadCanvases\", this.$refs.preloadCanvas);\n    document.addEventListener(\"keydown\", e => {\n      if (e.metaKey && (e.key === \"z\" || e.key === \"Z\")) {\n        if (e.shiftKey) {\n          e.preventDefault();\n          vm.canvas.redo();\n        } else {\n          e.preventDefault();\n          vm.canvas.undo();\n        }\n      }\n    });\n    document.addEventListener(\"mousedown\", this.clearSelection);\n    if (window.localStorage.getItem(\"addingSample\")) {\n      window.localStorage.removeItem(\"addingSample\");\n      this.$store.dispatch(\"design/addSample\");\n    } else if (window.localStorage.getItem(\"addingCard\")) {\n      this.$store.dispatch(\"design/setHasUnsavedChanges\", false);\n      this.$store.dispatch(\"design/readyToSend\");\n      window.localStorage.removeItem(\"addingCard\");\n    }\n  },\n  created() {\n    if (!this.isDynamicBundle) {\n      analytics.track(\"Customised Product\", {\n        id: this.productId,\n        sku: this.productId,\n        name: this.productName\n      });\n    }\n  },\n  methods: {\n    clearSelection(e) {\n      if (\n        e.target.tagName !== \"CANVAS\" &&\n        !e.target.closest(\"#text-editing-controls\") &&\n        !e.target.closest(\".imageframe-tippy-overlay-container\") &&\n        !e.target.closest(\".fsp-picker\") &&\n        !e.target.closest(\"#mobile-text-editing-overlay\") &&\n        !e.target.closest(\".mobile-overlay\") &&\n        !e.target.closest(\".object-hint\") &&\n        !e.target.closest(\".editor-sidebar-content\") &&\n        !e.target.closest(\".modal\")\n      ) {\n        this.canvas.clearSelection();\n      }\n    }\n  }\n};\n</script>\n","import \"../modules/segmentS2S\";\nimport \"../modules/tikTokS2S\";\nimport \"../modules/miniCart\";\nimport \"../modules/ujs\";\nimport \"../importers/loginModalImporter\";\n\nimport { createApp } from \"vue\";\n\nimport VueTippy from \"vue-tippy\";\nimport I18n from \"../plugins/i18n\";\nimport Dialog from \"../plugins/dialog\";\nimport store from \"../store/editor\";\nimport Editor from \"../pages/Editor.vue\";\nimport responsiveMode from \"../utils/responsiveMode\";\n\nif (responsiveMode()) {\n  window.responsiveMode = true;\n} else {\n  window.responsiveMode = false;\n}\n\nif (window.Cypress) {\n  window.responsiveMode = window.Cypress.env(\"mobile\");\n}\n\nwindow.imageErrorShown = false;\n\ndocument.addEventListener(\n  \"error\",\n  event => {\n    if (\n      event.target.tagName === \"IMG\" &&\n      event.target.src.includes(\"filestackcontent\")\n    ) {\n      if (!window.imageErrorShown) {\n        analytics.track(\"Filestack Photo Error\", {\n          location: \"main_editor\"\n        });\n        window.imageErrorShown = true;\n        window.alert(\n          \"We have been receiving reports of image upload issues with our photo upload service. We are sorry for the inconvenience. Please try again later.\"\n        );\n      }\n    }\n  },\n  true\n);\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const node = document.getElementById(\"editor-app\");\n  const props = JSON.parse(node.dataset.props);\n  const translations = JSON.parse(node.dataset.translations);\n  const storeData = JSON.parse(node.dataset.store);\n  let anyImagesErrored = false;\n  const app = createApp(Editor, props);\n\n  app.use(store);\n  app.use(I18n, translations);\n  app.use(VueTippy);\n  app.use(Dialog);\n\n  window.addEventListener(\"imageErrored\", () => {\n    if (anyImagesErrored) return;\n\n    anyImagesErrored = true;\n    store.commit(\"setImageErrorModalOpen\", true);\n  });\n\n  app.provide(\"newMobileEditor\", props.newMobileEditor);\n  app.provide(\"simplifiedMobileEditor\", props.simplifiedMobileEditor);\n  app.provide(\"simpleMobileTextEditor\", props.simpleMobileTextEditor);\n  app.provide(\n    \"unpersonalisedSampleEnabled\",\n    storeData.state.product.sample.unpersonalised_enabled\n  );\n  app.provide(\n    \"unpersonalisedLink\",\n    storeData.state.product.sample.unpersonalised_link\n  );\n  app.provide(\"listingSlug\", storeData.state.product.listingSlug);\n  app.provide(\"customiseSamplePath\", storeData.state.customiseSamplePath);\n\n  store.commit(\"setCountries\", storeData.state.countries);\n  store.commit(\"setDefaultCountryIso\", storeData.state.defaultCountryIso);\n  store.commit(\"setCurrency\", storeData.state.currency);\n  store.commit(\"setLocale\", storeData.state.locale);\n  store.commit(\"setResponsiveMode\", window.responsiveMode);\n  store.commit(\"setLoggedIn\", storeData.state.loggedIn);\n  store.commit(\"setUseSampleEditor\", storeData.state.useSampleEditor);\n  store.commit(\"design/setIsPlaceCard\", storeData.state.isPlaceCard);\n\n  store.commit(\"paths/setPaths\", storeData.state.paths);\n\n  store.commit(\"setIsAdmin\", storeData.state.isAdmin);\n\n  store.commit(\"design/setIsB2BFlow\", storeData.state.isB2BFlow);\n  store.commit(\"design/setInitialQty\", storeData.state.initialQty);\n  store.commit(\"design/setFlow\", storeData.state.flow);\n  store.commit(\"design/setProduct\", storeData.state.product);\n  store.commit(\"design/setDesignId\", storeData.state.savedDesignId);\n  store.commit(\"design/setPreviewPath\", storeData.state.previewPath);\n  store.commit(\"design/setIsInCartAsSample\", storeData.state.isInCartAsSample);\n  store.commit(\"design/setIsInCart\", storeData.state.isInCart);\n  store.commit(\"design/setDesignables\", storeData.state.designables);\n  store.commit(\n    \"design/setOriginalDesignables\",\n    JSON.parse(JSON.stringify(storeData.state.designables))\n  );\n  store.commit(\"design/setBundleStockItems\", storeData.state.bundleStockItems);\n  store.commit(\"design/pricing/setFixedPrice\", storeData.state.fixedPrice);\n  store.commit(\n    \"design/pricing/setCurrencySymbol\",\n    storeData.state.currencySymbol\n  );\n  store.commit(\n    \"directSend/setPostcardAddressId\",\n    storeData.state.postcardAddressId\n  );\n  store.commit(\n    \"design/setShowMobileStickersMessage\",\n    storeData.state.productHasStickers && window.responsiveMode\n  );\n\n  store.commit(\n    \"design/setGuestCheckoutEnabled\",\n    storeData.state.guestCheckoutEnabled\n  );\n  store.commit(\"options/setColours\", storeData.state.colours);\n  store.commit(\"options/setFonts\", storeData.state.fonts);\n  store.commit(\"options/setStickerSets\", storeData.state.stickerSets);\n\n  store.commit(\"reminders/setReminderTypes\", storeData.state.reminderTypes);\n\n  store.commit(\n    \"design/variations/setVariationAttributes\",\n    storeData.state.variation_attributes\n  );\n\n  store.commit(\"photoLibrary/setPhotos\", storeData.state.photoLibrary);\n  store.commit(\n    \"photoLibrary/setImportedPhotos\",\n    storeData.state.importedPhotos\n  );\n\n  // We do not want the customer to interact with the reminder modal if it is already in their cart\n  store.commit(\n    \"directSend/setHasSeenReminderModal\",\n    storeData.state.isInCart || false\n  );\n  store.commit(\"directSend/setRemindable\", storeData.state.remindable);\n  store.commit(\n    \"directSend/setIndirectSendAvailable\",\n    storeData.state.indirectSendAvailable\n  );\n\n  store.commit(\n    \"directSend/setContactAddresses\",\n    storeData.state.contactAddresses\n  );\n\n  store.commit(\n    \"design/tips/setDisableClearText\",\n    storeData.state.disableClearText\n  );\n\n  store.commit(\n    \"design/tips/setUnpersonalisedVariantPath\",\n    storeData.state.pathToUnpersonalisedVariant\n  );\n\n  store.commit(\n    \"design/tips/setUnpersonalisedVariantAnalyticsId\",\n    storeData.state.unpersonalisedVariantAnalyticsId\n  );\n\n  store.commit(\"design/setPhotos\", storeData.state.photos);\n  store.commit(\"design/setAlreadyInCart\", storeData.state.alreadyInCart);\n  store.commit(\n    \"design/setAllowInjectedCredit\",\n    storeData.state.allowInjectedCredit\n  );\n  store.commit(\"design/setIsWeddingItem\", storeData.state.isWeddingItem);\n  store.commit(\"setRecommendedProducts\", storeData.state.recommendedProducts);\n  store.commit(\"setAllowPapierAi\", storeData.state.allowPapierAi);\n  store.commit(\"design/setQuickAddIds\", storeData.state.quickAddIds);\n  store.commit(\"design/setBaseProductId\", storeData.state.baseProductId);\n  store.commit(\"design/setProductIds\", storeData.state.productIds);\n  store.commit(\n    \"preview/setPreviewTemplateData\",\n    storeData.state.previewTemplateData\n  );\n  store.commit(\"directSend/setQuickAddIds\", storeData.state.quickAddIds);\n\n  app.mount(node);\n});\n"],"names":["baseSome","collection","predicate","result","baseEach","value","index","some","guard","func","isArray","arraySome","baseIteratee","state","actions","commit","rootState","allSheets","designable","images","sheetId","matchingSheet","sheet","id","groupId","image","previewImage","offscreenRenderer","mutations","previewTemplateData","templatedPreviewImage","preview","store","createStore","design","dragDrop","directSend","flashMessages","paths","photoLibrary","options","progressBar","reminders","price","getters","_a","_b","_c","loading","responsiveMode","loggedIn","currency","locale","flag","countries","errors","defaultCountryIso","products","dragListeners","mapState","mapMutations","event","vm","_sfc_main","mapGetters","key","i","target","updateAll","val","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_6","_openBlock","_createElementBlock","_Fragment","_renderList","_ctx","$event","$options","_createElementVNode","_cache","_withModifiers","_toDisplayString","_hoisted_5","_createCommentVNode","message","_normalizeClass","e","t","module","this","s","f","n","o","a","h","b","U","r","m","l","p","g","c","_","v","q","u","y","d","w","E","k","O","D","I","T","A","L","F","z","M","j","R","S","x","C","Modal","csvContent","column","blob","files","file","Papa.parse","rows","keys","strings","row","stringObject","list","isEqual","string","maxLength","lengths","_createBlock","_Teleport","_createVNode","_component_modal","args","BoldItalicInput","ColourInput","FontFamilyInput","MergeInputsList","MergeProgressBar","MergeCsvModal","fontFamily","style","colour","type","_hoisted_7","_component_font_family_input","_component_colour_input","_component_bold_italic_input","$data","_component_merge_progress_bar","_component_merge_inputs_list","_component_merge_csv_modal","ImageEditingControls","PhotoLibrary","photo","_component_image_editing_controls","_component_photo_library","FadeTransition","SvgIcon","$props","_component_fade_transition","_withCtx","_component_svg_icon","Sticker","stickerSet","name","sticker","obj","object","objectJson","StickerObject","defaults","stickerObject","_hoisted_9","_createTextVNode","_hoisted_8","_component_sticker","FileUpload","exports","isURL","_assertString","_interopRequireDefault","_isFQDN","_isIP","_merge","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","len","arr2","_arr","_n","_d","_e","_i","_s","err","default_url_options","wrapped_ipv6","isRegExp","checkHost","host","matches","match","url","protocol","auth","hostname","port","port_str","split","ipv6","_auth$split","_auth$split2","user","password","ipv6_match","TextInput","qrCode","code","isUrl","_component_text_input","draggable","objects","dragging","newIndex","correctedIndex","_component_draggable","_mergeProps","item","_vShow","LayerList","logoFrame","LogoFrame","text","TextBox","option","_component_layer_list","_resolveDynamicComponent","_toHandlers","Tip","tip","_component_tip","CaptionControls","MergeControls","ImageControls","StickerControls","TextControls","FixedImageControls","QrCodeControls","AiCta","FlexibleEditorPanel","TipsArea","newValue","_component_sticker_controls","_component_tips_area","_component_fixed_image_controls","_component_image_controls","_component_qr_code_controls","_component_merge_controls","_component_caption_controls","_component_ai_cta","_component_text_controls","_component_flexible_editor_panel","ReminderForm","prop","_component_reminder_form","Btn","CardModal","ReminderModal","SendToThemModal","UndoRedoButtons","marqueSvg","mapActions","error","button","_component_undo_redo_buttons","_component_btn","_component_card_modal","_component_send_to_them_modal","_component_reminder_modal","_normalizeStyle","slugify","str","DoubleThicknessExplainerDrawer","RadioInput","thickness","_component_radio_input","_component_double_thickness_explainer_drawer","SlideTransition","DoubleThicknessSelector","hidden","_hoisted_11","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_10","_component_double_thickness_selector","_hoisted_12","_hoisted_13","_vModelSelect","_hoisted_19","_component_slide_transition","_hoisted_20","version","swapper","EditorCtas","ItemsPanelDesignable","ItemsPanelStockItem","ItemsPanelSheetVersions","count","_component_items_panel_designable","_component_items_panel_stock_item","_component_items_panel_sheet_versions","_component_editor_ctas","attribute","ItemsPanel","VariationsPanel","_component_variations_panel","_component_items_panel","useStore","usesHugeLayout","computed","itemsPanel","ref","controlsPanel","itemsPanelOverflowing","controlsPanelOverflowing","updateOverflowState","useResizeObserver","useMutationObserver","Drawer","_component_drawer","api","query","TextAreaInput","Overlay","response","_component_text_area_input","_component_overlay","PapierAiPrimaryDrawer","PapierAiSecondaryDrawer","xsQuery","mediaQuery","_component_papier_ai_primary_drawer","_component_papier_ai_secondary_drawer","keyboardShortcuts","canvas","measurement","amount","sheetForUpdate","FlashTransition","FlashingHint","ImageDropPane","UneditedOverlay","ImageframeTippyOverlay","TextSelectionTooltipOverlay","MobileGiftcardOverlay","MobileStickersModal","MobileTextEditingOverlay","originalSheet","hovering","wasHovering","isVisible","wasVisible","Brut","defaultVersion","giftcardObject","Hammer","topMostRotatedPoint","center","width","ratio","centerObjectFromCenterSheetRatio","centerX","centerY","zoom","charactersToCheck","namePart","_component_image_drop_pane","_component_mobile_stickers_modal","_component_flash_transition","_component_flashing_hint","_component_unedited_overlay","_component_mobile_giftcard_overlay","_component_imageframe_tippy_overlay","_component_text_selection_tooltip_overlay","_component_mobile_text_editing_overlay","DesignableSheet","newSheet","_component_designable_sheet","_TransitionGroup","_f","_g","resolve","_Transition","_withDirectives","blankImage","messageImage","CheckboxInput","_component_checkbox_input","isMergeFlow","editingText","editingFoiledText","selection","valueBeingEdited","enabledStyles","showsStyle","currentMergeStyle","currentMergeFontFamily","fonts","keyboardIconHighlighted","fadeDuration","textIsCaption","textIsMergeField","shouldShowTextAlignment","shouldShowFontSize","stylesAvailable","shouldShowStylingTools","textTooltipComponent","MobileTooltipTextColor","MobileTooltipTextAlignment","MobileTooltipFontFamily","MobileTooltipFontSize","commitSelection","sel","productId","formattedAnalyticsId","handleAnalyticsEvents","setColour","setFontFamily","currentFontFamily","font","weight","textTooltipComponentEvents","textTooltipComponentProps","selectedTextbox","selectedObject","watch","toggleKeyboard","editText","Designable","HintView","ImageUploadModal","MobileEditorCta","MobileEditorNavigation","SimplifiedMobileEditorNavigation","NewMobileEditorNavigation","MobileOversetTextWarning","OptionalOverlay","QuickSampleModal","StockItem","MobileLeaveBlankModal","PapierAi","MobileEditorControls","_component_optional_overlay","_component_hint_view","_component_new_mobile_editor_navigation","_component_mobile_editor_navigation","_component_mobile_editor_controls","_component_simplified_mobile_editor_navigation","_component_mobile_overset_text_warning","_component_designable","_component_stock_item","_component_mobile_editor_cta","_component_image_upload_modal","_component_quick_sample_modal","_component_mobile_leave_blank_modal","_component_papier_ai","MobileUnprintableCharacterWarning","_component_mobile_unprintable_character_warning","MobileCaptionEditingOverlay","MobileMergeEditingOverlay","_renderSlot","_component_mobile_caption_editing_overlay","_component_mobile_merge_editing_overlay","newVal","ImportPhotos","DirectPhotoUpload","DesktopEditor","EditorPanel","MobileEditor","CustomiseAlertModal","UnsavedChangesModal","ImageErroredModal","FlashMessages","MergeAlertModal","_component_flash_messages","_component_merge_alert_modal","_component_customise_alert_modal","_component_unsaved_changes_modal","_component_image_errored_modal","_component_direct_photo_upload","_component_editor_panel","_component_import_photos","node","props","translations","storeData","anyImagesErrored","app","createApp","Editor","I18n","VueTippy","Dialog"],"mappings":"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","x_google_ignoreList":[0,1,7,14]}