{"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]}