{"version":3,"file":"design-Pp6Gwf-V.js","sources":["../../../node_modules/lodash-es/assignIn.js","../../../node_modules/lodash-es/_baseRange.js","../../../node_modules/lodash-es/_createRange.js","../../../node_modules/lodash-es/range.js","../../../app/javascript/api/savedBundle.js","../../../app/javascript/store/modules/design/merge.js","../../../app/javascript/store/modules/design/navigation.js","../../../app/javascript/store/modules/design/pricing.js","../../../app/javascript/store/modules/design/tips.js","../../../app/javascript/store/modules/design/variations.js","../../../app/javascript/api/savedDynamicBundle.js","../../../app/javascript/store/modules/design.js"],"sourcesContent":["import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n  copyObject(source, keysIn(source), object);\n});\n\nexport default assignIn;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n  var index = -1,\n      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n      result = Array(length);\n\n  while (length--) {\n    result[fromRight ? length : ++index] = start;\n    start += step;\n  }\n  return result;\n}\n\nexport default baseRange;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n  return function(start, end, step) {\n    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n      end = step = undefined;\n    }\n    // Ensure the sign of `-0` is preserved.\n    start = toFinite(start);\n    if (end === undefined) {\n      end = start;\n      start = 0;\n    } else {\n      end = toFinite(end);\n    }\n    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n    return baseRange(start, end, step, fromRight);\n  };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","import api from \"./index\";\n\nexport default {\n  async createOrUpdate(\n    id,\n    designables,\n    bundleId,\n    justSave,\n    templatedPreviewImage\n  ) {\n    try {\n      if (id) {\n        const response = await api.put(`/saved_bundles/${id}`, {\n          design: {\n            designables\n          },\n          just_save: justSave,\n          templated_preview_image: templatedPreviewImage\n        });\n        return response;\n      }\n      const response = await api.post(\"/saved_bundles\", {\n        design: {\n          designables\n        },\n        bundle_id: bundleId,\n        just_save: justSave,\n        templated_preview_image: templatedPreviewImage\n      });\n      return response;\n    } catch (error) {\n      return false;\n    }\n  }\n};\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\", \"getters\"] }] */\nimport { clone, extend, range } from \"lodash-es\";\n\nconst state = {\n  currentMergeStringIndex: 0,\n  mergeAlertModalShowing: false,\n  currentMergeKey: null,\n  originalSizes: {},\n  blankMergeObject: {}\n};\nconst getters = {\n  nonBlankMergeStrings: (state, getters, rootState) => {\n    if (rootState.design.flow !== \"merge_flow\") return [];\n    return rootState.design.activeDesignable.merge_strings.filter(\n      (stringSet, index) =>\n        index < rootState.design.activeDesignable.qty &&\n        Object.values(stringSet).join(\"\").length > 0\n    );\n  },\n  doneMergeInputsCount: (state, getters, rootState) => {\n    if (rootState.design.flow !== \"merge_flow\") return 0;\n    return Math.min(\n      rootState.design.activeDesignable.qty,\n      getters.nonBlankMergeStrings.length\n    );\n  },\n  blankMergeInputsCount: (state, getters, rootState) => {\n    if (rootState.design.flow !== \"merge_flow\") return 0;\n    return Math.max(\n      0,\n      rootState.design.activeDesignable.qty -\n        getters.nonBlankMergeStrings.length\n    );\n  },\n  textbox: (state, getters, rootState) =>\n    rootState.design.canvas.selectedTextbox,\n  currentPredefinedString: (state, getters) => {\n    const key = state.currentMergeKey || getters.availableKeys[0];\n    return getters.textbox.predefinedStrings.find(string => string.key === key);\n  },\n  currentStyle: (state, getters) => getters.currentPredefinedString.style,\n  currentFontFamily: (state, getters, rootState) =>\n    rootState.options.fonts.filter(\n      font =>\n        Object.keys(font.weights).filter(\n          weight =>\n            font.weights[weight].name === getters.currentStyle.fontFamily\n        ).length > 0\n    )[0],\n  showsStyle: (state, getters) =>\n    getters.textbox.predefinedStrings.length === 1,\n  availableKeys: (state, getters) =>\n    getters.textbox.predefinedStrings.map(string => string.key),\n  quantityOptions: (state, getters, rootState) =>\n    range(0, rootState.design.activeDesignable.qty),\n  stringForKeyAtIndex: (state, getters, rootState) => (key, index) => {\n    if (rootState.design.activeDesignable.merge_strings[index]) {\n      return rootState.design.activeDesignable.merge_strings[index][key];\n    }\n    return \"\";\n  },\n  currentMergeStringText: (state, getters) =>\n    getters.stringForKeyAtIndex(\n      state.currentMergeKey,\n      state.currentMergeStringIndex\n    ),\n  translationKeyForKey: () => key => {\n    const translationKey = key.replace(\" \", \"_\").toLowerCase();\n    return `predefined_strings.labels.${translationKey}`;\n  },\n  predefinedStringBoundToOriginalSizes: (state, getters) => {\n    const style = extend(\n      {},\n      getters.currentPredefinedString.style,\n      state.originalSizes[state.currentMergeKey]\n    );\n    const cloned = clone(getters.currentPredefinedString);\n    cloned.style = style;\n    return cloned;\n  },\n  maxLengthForString: (state, getters) => key =>\n    parseInt(\n      getters.textbox.predefinedStrings.find(string => string.key === key)\n        .maxLength,\n      10\n    ) || 0\n};\n\nconst actions = {\n  setUpFirstMergeInput({ rootState, getters, commit }) {\n    if (!rootState.design.activeDesignable.merge_strings[0]) {\n      const strings = {};\n      getters.textbox.predefinedStrings.forEach(string => {\n        strings[string.key] = string.text;\n      });\n      commit(\n        \"design/setActiveDesignableMergeStringsAtIndex\",\n        {\n          index: 0,\n          strings\n        },\n        { root: true }\n      );\n    }\n  },\n  fixMergeToCurrentIndex({ rootState, dispatch }) {\n    if (\n      rootState.design.activeDesignable.merge_strings &&\n      rootState.design.activeDesignable.merge_strings.length\n    ) {\n      dispatch(\"resetMerge\", state.currentMergeStringIndex);\n    }\n  },\n  setActiveDesignableMergeStrings({ commit, dispatch, rootState }, strings) {\n    let stringsToSet;\n\n    if (!rootState.design.initialQty) {\n      stringsToSet = strings;\n    } else if (\n      // If the user changes the qty from within the PDP the below will equal\n      // false so we want to revert to using the activeDesignable.qty\n      rootState.design.activeDesignable.qty === rootState.design.initialQty\n    ) {\n      stringsToSet = strings.splice(0, rootState.design.initialQty);\n    } else {\n      stringsToSet = strings.splice(0, rootState.design.activeDesignable.qty);\n    }\n\n    dispatch(\"adjustActiveDesignableQty\", stringsToSet.length);\n    commit(\"design/setActiveDesignableMergeStrings\", stringsToSet, {\n      root: true\n    });\n    dispatch(\"resetMerge\");\n  },\n  adjustActiveDesignableQty(\n    { rootState, commit, rootGetters },\n    newStringsCount\n  ) {\n    if (\n      newStringsCount > rootState.design.activeDesignable.qty &&\n      !rootState.design.isB2BFlow\n    ) {\n      const bestQty = Math.min(\n        ...rootGetters[\"design/pricing/availableQuantitiesForDesignable\"](\n          rootState.design.activeDesignable\n        ).filter(qty => qty >= newStringsCount)\n      );\n      commit(\"design/setActiveDesignableQty\", bestQty, { root: true });\n    }\n  },\n  resetMerge({ rootState, commit }, index = 0) {\n    commit(\"setCurrentMergeStringIndex\", index);\n    rootState.design.canvas.resetPredefinedStrings(\n      rootState.design.activeDesignable.merge_strings[index]\n    );\n  },\n  setUpOriginalSizes({ commit, getters }) {\n    const sizes = {};\n    getters.textbox.predefinedStrings.forEach(string => {\n      sizes[string.key] = {\n        fontSize: string.style.fontSize,\n        lineHeight: string.style.lineHeight\n      };\n    });\n    commit(\"setUpOriginalSizes\", sizes);\n  },\n  setUpBlankMergeObject({ commit, getters }) {\n    const object = {};\n    getters.availableKeys.forEach(key => {\n      object[key] = \"\";\n    });\n    commit(\"setUpBlankMergeObject\", object);\n  },\n  setMergeStyle({ rootState, getters }, style) {\n    const string = clone(getters.predefinedStringBoundToOriginalSizes);\n    string.text = getters.currentMergeStringText;\n    rootState.design.canvas.updatePredefinedString(string, style);\n  },\n  refreshString(\n    { rootState, state, dispatch, getters, commit },\n    { index, value, key, updateAll }\n  ) {\n    commit(\"setCurrentMergeStringIndex\", index);\n    const strings = clone(\n      rootState.design.activeDesignable.merge_strings[index] ||\n        state.blankMergeObject\n    );\n    strings[key] = value;\n    commit(\n      \"design/setActiveDesignableMergeStringsAtIndex\",\n      {\n        index,\n        strings\n      },\n      { root: true }\n    );\n    if (updateAll) {\n      dispatch(\"updateAllInputs\", strings);\n    } else {\n      const string = clone(getters.predefinedStringBoundToOriginalSizes);\n      string.text = value;\n      rootState.design.canvas.updatePredefinedString(string);\n    }\n  },\n  updateAllInputs({ state, getters, rootState, commit }, strings) {\n    const originalKey = clone(state.currentMergeKey);\n    getters.availableKeys.forEach(key => {\n      commit(\"setCurrentMergeKey\", key);\n      const string = clone(getters.predefinedStringBoundToOriginalSizes);\n      string.text = strings[key];\n      rootState.design.canvas.updatePredefinedString(string);\n    });\n    commit(\"setCurrentMergeKey\", originalKey);\n  }\n};\nconst mutations = {\n  setMergeAlertModalShowing(state, flag) {\n    state.mergeAlertModalShowing = flag;\n  },\n  setCurrentMergeStringIndex(state, index) {\n    state.currentMergeStringIndex = index;\n  },\n  setCurrentMergeKey(state, key) {\n    state.currentMergeKey = key;\n  },\n  setUpOriginalSizes(state, sizes) {\n    state.originalSizes = sizes;\n  },\n  setUpBlankMergeObject(state, object) {\n    state.blankMergeObject = object;\n  }\n};\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  actions,\n  mutations\n};\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\", \"getters\"] }] */\nimport { flatten } from \"lodash-es\";\n\nconst state = {};\nconst getters = {\n  navigationItems(state, getters, rootState) {\n    const sheets = flatten(\n      rootState.design.designables.map(designable =>\n        designable.designable_sheets\n          .filter(sheet => !sheet.hidden)\n          .map(sheet => ({\n            type: \"sheet\",\n            item: sheet,\n            designable\n          }))\n      )\n    );\n    const stockItems = rootState.design.bundleStockItems.map(stockItem => ({\n      type: \"stockItem\",\n      item: stockItem\n    }));\n    return flatten([sheets, stockItems]);\n  },\n  navigationIndex(state, getters, rootState) {\n    if (rootState.design.activeStockItem) {\n      return getters.navigationItems\n        .map(item => item.item)\n        .indexOf(rootState.design.activeStockItem);\n    }\n\n    return getters.navigationItems.findIndex(({ item }) => {\n      return (\n        item.id === rootState.design.activeSheet.id &&\n        item.repetition_key === rootState.design.activeSheet.repetition_key\n      );\n    });\n  },\n  canShowNext(state, getters) {\n    return getters.navigationIndex !== getters.navigationItems.length - 1;\n  },\n  canShowPrevious(state, getters) {\n    return getters.navigationIndex !== 0;\n  },\n  activeType(state, getters) {\n    return getters.navigationItems[getters.navigationIndex].type;\n  }\n};\nconst actions = {\n  next({ dispatch, getters }) {\n    const item = getters.navigationItems[getters.navigationIndex + 1];\n    dispatch(\"navigate\", item);\n  },\n  previous({ dispatch, getters }) {\n    const item = getters.navigationItems[getters.navigationIndex - 1];\n    dispatch(\"navigate\", item);\n  },\n  navigate({ dispatch }, { item, type, designable }) {\n    if (type === \"sheet\") {\n      dispatch(\"design/clearSelection\", null, { root: true });\n      dispatch(\n        \"design/setActiveDesignable\",\n        { designable, sheet: item },\n        { root: true }\n      );\n    } else if (type === \"stockItem\") {\n      dispatch(\"design/setActiveStockItem\", item, { root: true });\n    }\n  }\n};\nconst mutations = {};\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  actions,\n  mutations\n};\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\", \"getters\", \"rootState\"] }] */\n\nconst state = {\n  fixedPrice: null,\n  currencySymbol: null\n};\nconst getters = {\n  designablePrice: (state, getters) => designable =>\n    getters\n      .currentDesignablePricingValues(designable)\n      .filter(value => value.qty === designable.qty)[0].price * designable.qty,\n  designableBasePrice: (state, getters) => designable =>\n    getters\n      .currentDesignablePricingValues(designable)\n      .filter(value => value.qty === designable.qty)[0].base_price *\n    designable.qty,\n  maximumQuantityForActiveDesignable: (state, getters, rooState) =>\n    Math.max(\n      ...getters.availableQuantitiesForDesignable(\n        rooState.design.activeDesignable\n      )\n    ),\n  availableQuantitiesForDesignable: (state, getters) => designable =>\n    getters\n      .currentDesignableVisiblePricingValues(designable)\n      .map(value => value.qty),\n  currentDesignableVisiblePricingValues: (state, getters) => designable =>\n    // we want the qtys that are visible,\n    // but also we want to include any hidden qty if that is what\n    // the designable is already set to\n    getters\n      .currentDesignablePricingValues(designable)\n      .filter(value => value.visible || value.qty === designable.qty),\n  currentDesignablePricingValues: () => designable => {\n    const key = designable.thick ? \"thick\" : \"normal\";\n    return designable.pricing_values[key];\n  },\n  priceDifference: () => designable => {\n    const thickPricingValues = designable.pricing_values.thick;\n    const normalPricingValues = designable.pricing_values.normal;\n\n    const thickPrice = thickPricingValues.find(\n      item => item.qty === designable.qty\n    );\n    const standardPrice = normalPricingValues.find(\n      item => item.qty === designable.qty\n    );\n\n    return (thickPrice.price - standardPrice.price).toFixed(2);\n  },\n  totalDesignablesPrice: (state, getters, rootState, rootGetters) =>\n    rootGetters[\"design/includedDesignables\"]\n      .map(designable => getters.designablePrice(designable))\n      .reduce((a, b) => a + b, 0),\n  totalDesignablesBasePrice: (state, getters, rootState, rootGetters) =>\n    rootGetters[\"design/includedDesignables\"]\n      .map(designable => getters.designableBasePrice(designable))\n      .reduce((a, b) => a + b, 0),\n  totalPrice: (state, getters, rootState) => {\n    if (state.fixedPrice) {\n      return state.fixedPrice + (rootState.design.injectedGiftcardAmount || 0);\n    }\n    return (\n      getters.totalDesignablesPrice +\n      (rootState.design.injectedGiftcardAmount || 0)\n    );\n  },\n  totalBasePrice: (state, getters, rootState) => {\n    if (state.fixedPrice) {\n      return state.fixedPrice + (rootState.design.injectedGiftcardAmount || 0);\n    }\n    return (\n      getters.totalDesignablesBasePrice +\n      (rootState.design.injectedGiftcardAmount || 0)\n    );\n  }\n};\nconst actions = {};\nconst mutations = {\n  setFixedPrice(state, price) {\n    state.fixedPrice = price;\n  },\n  setCurrencySymbol(state, symbol) {\n    state.currencySymbol = symbol;\n  }\n};\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  actions,\n  mutations\n};\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\", \"getters\", \"rootState\"] }] */\nconst state = {\n  unpersonalisedVariantPath: null,\n  unpersonalisedVariantAnalyticsId: null,\n  disableClearText: false\n};\nconst getters = {\n  currentTips: (state, getters, rootState) => {\n    const tips = [];\n    if (getters.canShowClearTextTip) {\n      tips.push({\n        title: \"editor.tips.clear-text.heading\",\n        description: \"editor.tips.clear-text.description\",\n        cta: \"editor.tips.clear-text.cta\",\n        actionPath: \"design/clearText\",\n        class: \"bg-duck-egg\",\n        buttonClass: \"btn-link cursor-pointer\",\n        hideOnClick: true,\n        dismissable: true,\n        dismissClass: \"hover:bg-duck-egg-1\",\n        analyticsEvent: \"Clicked Leave Blank\",\n        analyticsProperties: {\n          product_id: rootState.design.product.prefixed_analytics_id\n        }\n      });\n    }\n\n    if (state.unpersonalisedVariantPath) {\n      tips.push({\n        title: \"editor.tips.get-unpersonalised.heading\",\n        description: \"editor.tips.get-unpersonalised.description\",\n        cta: \"editor.tips.get-unpersonalised.cta\",\n        actionPath: \"design/tips/goToUnpersonalisedVariant\",\n        class: \"bg-pink\",\n        buttonClass: \"btn-link cursor-pointer\",\n        hideOnClick: false\n      });\n    }\n\n    return tips;\n  },\n  canShowClearTextTip: (state, getters, rootState) => {\n    return (\n      !state.disableClearText &&\n      rootState.design.activeSheet &&\n      rootState.design.activeSheet.can_clear_text &&\n      !rootState.design.activeStockItem &&\n      !rootState.design.activeEnvelopes &&\n      !rootState.design.activeDesignable.optionallyHidden &&\n      rootState.design.canvas?.editable &&\n      !!rootState.design.canvas.textObjects().length &&\n      rootState.design.canvas.textObjects().some(textObject => {\n        return textObject.text !== \"\";\n      })\n    );\n  }\n};\nconst actions = {\n  goToUnpersonalisedVariant({ state }) {\n    analytics.track(\"Selected Unpersonalised Variant From Editor\", {\n      stockItemId: state.unpersonalisedVariantAnalyticsId\n    });\n    window.location.href = state.unpersonalisedVariantPath;\n  }\n};\nconst mutations = {\n  setUnpersonalisedVariantPath(state, url) {\n    state.unpersonalisedVariantPath = url;\n  },\n  setUnpersonalisedVariantAnalyticsId(state, id) {\n    state.unpersonalisedVariantAnalyticsId = id;\n  },\n  setDisableClearText(state, flag) {\n    state.disableClearText = flag;\n  }\n};\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  actions,\n  mutations\n};\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\", \"getters\", \"rootState\"] }] */\nimport { clone } from \"lodash-es\";\nimport swapper from \"../../../utils/swapTemplate\";\n\nconst state = {\n  variationAttributes: []\n};\nconst getters = {\n  showVariationsPanel: state => state.variationAttributes.length > 0,\n  visibleOptionsForAttribute: () => (attribute, currentVariation) =>\n    // go through each of the attribute's options\n    attribute.options.filter(option =>\n      // we need to check the for the other attributes of the option (i.e. not the attribute we are looking at)\n      // if the other attributes for the option are the same as the current variation in the editor\n      // then we include the option. We ignore the current attribute.\n      Object.keys(currentVariation.variationInfo).every(\n        key =>\n          parseInt(key, 10) === attribute.id ||\n          currentVariation.variationInfo[key] ===\n            option.product.variationInfo[key]\n      )\n    ),\n  getFabricFromDesignables: () => designables => {\n    const designable = designables.find(des => !des.optionallyHidden);\n    return designable.designable_sheets.find(sheet => !sheet.hidden);\n  },\n  getImageFrames: () => fabricObject =>\n    JSON.parse(fabricObject)\n      .objects.filter(obj => obj.type === \"imageframe\")\n      .map(obj =>\n        (({ top, left, width, height }) => ({ top, left, width, height }))(obj)\n      ),\n  shouldRecenterImage: (state, getters) => (oldFabric, newFabric) => {\n    const oldImageFrames = getters.getImageFrames(oldFabric);\n    const newImageFrames = getters.getImageFrames(newFabric);\n    return !(JSON.stringify(oldImageFrames) === JSON.stringify(newImageFrames));\n  }\n};\nconst actions = {\n  selectOption(\n    { getters, commit, rootState, dispatch },\n    { product, designables }\n  ) {\n    commit(\"design/setProduct\", clone(product), { root: true });\n    const recenter = getters.shouldRecenterImage(\n      rootState.design.canvas.jsonRepresentation(),\n      getters.getFabricFromDesignables(designables).fabric\n    );\n    const images = swapper.extractImages(rootState.design.canvas);\n    const captions = swapper.extractCaptions(rootState.design.canvas);\n    const callback = canvas => {\n      swapper.swapTemplate(\n        canvas,\n        getters.getFabricFromDesignables(designables),\n        {\n          recenter,\n          removeCaptions: false,\n          selectImage: !rootState.responsiveMode && recenter,\n          images,\n          captions\n        }\n      );\n      dispatch(\n        \"design/setSheetEdited\",\n        {\n          sheet: getters.getFabricFromDesignables(designables),\n          edited: canvas.uneditedEditableObjects().length === 0\n        },\n        { root: true }\n      );\n    };\n    commit(\"design/setVariationsSwapCallback\", callback, { root: true });\n    commit(\"design/setOriginalDesignables\", designables, { root: true });\n    commit(\"design/setDesignables\", designables, { root: true });\n    if (!rootState.design.designId) {\n      window.history.replaceState(\n        { product },\n        product.name,\n        product.customisePath\n      );\n    }\n  }\n};\nconst mutations = {\n  setVariationAttributes(state, variationAttributes) {\n    state.variationAttributes = variationAttributes;\n  }\n};\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  actions,\n  mutations\n};\n","import api from \"./index\";\n\nexport default {\n  async createOrUpdate(\n    id,\n    designables,\n    baseProductId,\n    productIds,\n    justSave,\n    templatedPreviewImage\n  ) {\n    try {\n      if (id) {\n        const response = await api.put(`/saved_dynamic_bundles/${id}`, {\n          design: {\n            designables\n          },\n          dynamic_bundle_id: baseProductId,\n          dynamic_bundle_product_ids: productIds,\n          just_save: justSave,\n          dynamic_bundle_templated_preview_image: templatedPreviewImage\n        });\n        return response;\n      }\n      const response = await api.post(\"/saved_dynamic_bundles\", {\n        design: {\n          designables\n        },\n        dynamic_bundle_id: baseProductId,\n        dynamic_bundle_product_ids: productIds,\n        just_save: justSave,\n        dynamic_bundle_templated_preview_image: templatedPreviewImage\n      });\n      return response;\n    } catch (error) {\n      return false;\n    }\n  }\n};\n","/* eslint no-shadow: [\"error\", { \"allow\": [\"state\", \"getters\"] }] */\nimport { Brut } from \"@/components/brut/src/index.ts\";\nimport savedDesign from \"../../api/savedDesign\";\nimport savedBundle from \"../../api/savedBundle\";\n\nimport images from \"./design/images\";\nimport merge from \"./design/merge\";\nimport navigation from \"./design/navigation\";\nimport pricing from \"./design/pricing\";\nimport tips from \"./design/tips\";\nimport variations from \"./design/variations\";\nimport savedDynamicBundle from \"../../api/savedDynamicBundle\";\n\nconst state = {\n  id: null,\n  isInCart: false,\n  isInCartAsSample: false,\n  designables: [],\n  originalDesignables: [],\n  activeDesignable: null,\n  activeStockItem: null,\n  activeSheet: null,\n  bundleStockItems: [],\n  designId: null,\n  product: {},\n  newText: \"\",\n  guestCheckoutEnabled: false,\n  itemsPanelVisibility: true,\n  customiseAlertModalShowing: false,\n  imageMenuOpen: false,\n  flow: null,\n  maxRepetitionsPerDesign: 3,\n  showUnedited: false,\n  hasSeenCustomiseAlertModal: false,\n  activeImageTab: \"photosTab\",\n  variationsSwapCallback: null,\n  isB2BFlow: false,\n  initialQty: null,\n  designableAppeared: false,\n  photos: null,\n  hasInteractedWithThicknessRadioButtons: false,\n  hasSeenLeaveBlankModal: false,\n  alreadyInCart: false,\n  allowInjectedCredit: false,\n  injectedGiftcardAmount: false,\n  giftcardObject: null,\n  addingQrCode: false,\n  showMobileStickersMessage: false,\n  isWeddingItem: false,\n  hasUnsavedChanges: false,\n  layerDragging: false,\n  isPlaceCard: false,\n  previewPath: null,\n  quickAddIds: [],\n  baseProductId: null,\n  productIds: null\n};\n\nconst getters = {\n  undoRedoAvailable: state =>\n    state.canvas?.history?.undoAvailable ||\n    state.canvas?.history?.redoAvailable,\n  showFlexibleEditorPanel: state =>\n    state.isWeddingItem && state.flow !== \"merge_flow\" && !state.isPlaceCard,\n  isSimpleFlow: state => state.flow === \"simple_flow\",\n  activeDesignableIndex: state =>\n    state.designables.indexOf(state.activeDesignable),\n  designableHasThickness: state => state.designables.some(des => des.thick),\n  showOrderSample: state =>\n    !state.designables[0].optionallyHidden && state.product.sample.enabled,\n  visibleSheets: state =>\n    state.activeDesignable\n      ? state.activeDesignable.designable_sheets.filter(sheet => !sheet.hidden)\n      : [],\n  isDynamicBundle: state => state.product.type === \"DynamicBundle\",\n  allVisibleSheets: state =>\n    state.designables\n      .flatMap(designable => designable.designable_sheets)\n      .filter(sheet => !sheet.hidden),\n  excludedDesignables: state =>\n    state.designables.filter(designable => designable.optionallyHidden),\n  includedDesignables: state =>\n    state.designables.filter(designable => !designable.optionallyHidden),\n  abilityToHideEnabled: (state, getters) =>\n    getters.includedDesignables.length > 1,\n  customisedAndIncludedDesignables: (state, getters) =>\n    getters.includedDesignables.filter(designable => designable.customised),\n  allDesignablesCustomised: (state, getters) =>\n    getters.customisedAndIncludedDesignables.length ===\n    getters.includedDesignables.length,\n  firstUncustomisedData: (state, getters) => {\n    const [designable] = getters.includedDesignables.filter(\n      des => !des.customised\n    );\n    return {\n      designable,\n      sheet: designable.designable_sheets.filter(\n        sheet => !sheet.hidden && !sheet.edited\n      )[0]\n    };\n  },\n  designableCounts(state) {\n    return state.designables.reduce((counts, designable) => {\n      if (!designable.optionallyHidden) {\n        const typeId = designable.designable_type_id;\n        counts[typeId] = (counts[typeId] || 0) + 1;\n      }\n      return counts;\n    }, {});\n  },\n  usesHugeLayout: state => state.activeSheet.width > 700,\n  productId: state => {\n    if (state.product.type === \"Product\") {\n      return state.product.id;\n    }\n    return `${state.product.type.toUpperCase()}-${state.product.id}`;\n  },\n  prefixedAnalyticsId(state) {\n    return state.product.prefixed_analytics_id;\n  },\n  designablesForSave: state =>\n    state.designables.map(\n      ({ canvases, baseDesignable, ...designable }) => designable\n    ),\n  saveParams: (state, getters) => ({\n    designables: getters.designablesForSave\n  }),\n  eventParams: (state, getters) => ({\n    analytics_id: getters.prefixedAnalyticsId,\n    name: state.product.name\n  }),\n  repetitionsOfDesignable: state => designable =>\n    state.designables.filter(des => des.id === designable.id).length,\n  excludedRepetitionsOfDesignable: (state, getters) => designable =>\n    getters.excludedDesignables.filter(des => des.id === designable.id).length,\n  includedRepetitionsOfDesignable: (state, getters) => designable =>\n    getters.includedDesignables.filter(des => des.id === designable.id).length,\n  highestRepetitionKey: state =>\n    Math.max(\n      0,\n      ...state.designables\n        .filter(des => !!des.repetition_key)\n        .map(des => des.repetition_key)\n    ),\n  showDesignableOverlay: state =>\n    state.activeDesignable.optionallyHidden && !state.activeStockItem,\n  isMergeFlow: state => state.flow === \"merge_flow\",\n  isMultipleFlow: state => state.flow === \"multiple_flow\",\n  allSheets: state =>\n    state.designables.map(designable => designable.designable_sheets).flat(),\n  allowAddToCart: (state, _getters, rootState) => {\n    if (state.alreadyInCart) return true;\n    if (rootState.loggedIn) return true;\n\n    return state.guestCheckoutEnabled;\n  },\n  shouldShowInjectableGiftcard: (state, getters) => {\n    // The second visible sheet is either the inside of the card\n    // or the inside left of the card depending on whether or not\n    // the giftcard is injected.\n    if (!state.allowInjectedCredit) return false;\n\n    return state.activeSheet.id === getters.visibleSheets[1].id;\n  }\n};\n\nconst actions = {\n  setSheetPreview({ getters, state }) {\n    getters.visibleSheets.forEach(sheet => {\n      if (!sheet.preview && state.activeDesignable.canvases[sheet.id]) {\n        sheet.preview =\n          state.activeDesignable.canvases[sheet.id].imageRepresentation();\n      }\n    });\n  },\n  preloadCanvases({ getters }, element) {\n    getters.allVisibleSheets.forEach(sheet => {\n      /* eslint-disable no-param-reassign */\n      element.width = sheet.width;\n      element.height = sheet.height;\n      const renderer = new Brut(element, {});\n      renderer.init();\n      renderer.loadOffscreen(sheet.fabric, () => {\n        sheet.preview = sheet.preview || renderer.imageRepresentation();\n        sheet.svg = sheet.svg || renderer.svgRepresentation();\n        sheet.skodix_svg =\n          sheet.skodix_svg || renderer.skodixSvgRepresentation();\n        renderer.dispose();\n      });\n    });\n  },\n  async setActiveSheet({ state, commit, dispatch }, data) {\n    if (\n      !state.activeSheet ||\n      state.activeSheet.id !== data.sheet.id ||\n      state.activeSheet.repetition_key !== data.sheet.repetition_key\n    ) {\n      await commit(\"saveActiveSheet\");\n      commit(\"setActiveSheet\", data.sheet);\n      if (\n        state.activeDesignable.merge_strings &&\n        state.activeDesignable.merge_strings.length\n      ) {\n        dispatch(\"merge/resetMerge\");\n      }\n      if (\n        state.hasSeenCustomiseAlertModal &&\n        !data.designable.optionallyHidden\n      ) {\n        dispatch(\"flashShowUnedited\");\n      }\n    }\n  },\n  setActiveDesignable({ commit, dispatch }, data) {\n    commit(\"setActiveDesignable\", data.designable);\n    commit(\"setActiveStockItem\", null);\n    if (data.sheet) {\n      dispatch(\"setActiveSheet\", data);\n    } else {\n      const [newActiveSheet] = data.designable.designable_sheets.filter(\n        sheet => !sheet.hidden\n      );\n      dispatch(\"setActiveSheet\", {\n        designable: data.designable,\n        sheet: newActiveSheet\n      });\n    }\n  },\n  async setActiveStockItem({ commit, state }, item) {\n    if (state.activeSheet) {\n      await commit(\"saveActiveSheet\");\n    }\n    commit(\"setActiveStockItem\", item);\n  },\n  startAgain({ state, dispatch, rootState }) {\n    if (\n      window.confirm(\n        \"Do you really want to start again? This will reset the text and/or images on this sheet to defaults\"\n      )\n    ) {\n      state.canvas.startAgain();\n      if (!state.designId) {\n        dispatch(\"setSheetEdited\", { sheet: state.activeSheet, edited: false });\n      }\n      if (state.flow === \"card_flow\" && rootState.responsiveMode) {\n        state.canvas.setMobileCardMessage();\n      }\n    }\n  },\n  async setSheetEdited({ commit, getters }, data) {\n    commit(\"setSheetEdited\", data);\n    commit(\n      \"setCustomised\",\n      getters.visibleSheets.filter(sheet => !sheet.edited).length === 0\n    );\n  },\n  setHasUnsavedChanges({ commit, rootState }, hasUnsavedChanges) {\n    if (hasUnsavedChanges && !rootState.responsiveMode) {\n      window.onbeforeunload = () => true;\n    } else {\n      window.onbeforeunload = null;\n    }\n    commit(\"setHasUnsavedChanges\", hasUnsavedChanges);\n  },\n  async readyToSend({ dispatch, commit, getters }, force = false) {\n    await commit(\"saveActiveSheet\");\n    if (force || getters.allDesignablesCustomised) {\n      analytics.track(\"Submitted Design\", getters.eventParams);\n      commit(\"setLoading\", true, { root: true });\n      if (this.state.loggedIn) {\n        await dispatch(\"addSavedDesignToCart\");\n      } else {\n        window.localStorage.setItem(\"addingCard\", true);\n        await dispatch(\"saveDesign\");\n      }\n    } else {\n      commit(\"setCustomiseAlertModalShowing\", true);\n      throw new Error(\"Not all customised yet\");\n    }\n  },\n  async addToCart({ dispatch, commit, getters }, { force = false } = {}) {\n    if (!force && !getters.allDesignablesCustomised) {\n      dispatch(\"setSheetPreview\");\n      commit(\"setCustomiseAlertModalShowing\", true);\n      throw new Error(\"Not all customised yet\");\n    }\n\n    dispatch(\"merge/resetMerge\");\n    await commit(\"saveActiveSheet\");\n\n    analytics.track(\"Submitted Design\", getters.eventParams);\n    commit(\"setCustomiseAlertModalShowing\", false);\n    commit(\"merge/setMergeAlertModalShowing\", false);\n    commit(\"setLoading\", true, { root: true });\n    if (state.product.type === \"Product\") {\n      if (force || getters[\"merge/blankMergeInputsCount\"] === 0) {\n        await dispatch(\"addSavedDesignToCart\");\n      } else {\n        dispatch(\"merge/fixMergeToCurrentIndex\");\n        commit(\"merge/setMergeAlertModalShowing\", true);\n        commit(\"setLoading\", false, { root: true });\n        throw new Error(\"Some inputs are still blank.\");\n      }\n    } else if (getters.isDynamicBundle) {\n      await dispatch(\"addSavedDynamicBundleToCart\");\n    } else {\n      await dispatch(\"addSavedBundleToCart\");\n    }\n  },\n  async addSavedDesignToCart({ dispatch, commit, getters, rootState }) {\n    dispatch(\"merge/fixMergeToCurrentIndex\");\n    await dispatch(\"preview/generateTemplatedPreviewImage\", null, {\n      root: true\n    });\n\n    const response = await savedDesign.createOrUpdate(\n      this.state.design.designId,\n      getters.saveParams,\n      this.state.design.product.id,\n      false,\n      rootState.directSend.postcardAddressId,\n      rootState.preview.templatedPreviewImage\n    );\n    if (response) {\n      if (getters.allowAddToCart) {\n        if (\n          state.hasInteractedWithThicknessRadioButtons &&\n          getters.designableHasThickness\n        ) {\n          analytics.track(\"Double Thickness Added From Editor\", {\n            product_id: `PRODUCT-${this.state.design.product.analytics_id}`\n          });\n        }\n        commit(\"setDesignId\", response.data.design_id);\n        dispatch(\"setHasUnsavedChanges\", false);\n        window.history.replaceState(\n          null,\n          null,\n          `${window.countryCode}/saved_designs/${response.data.design_id}`\n        );\n        if (\n          this.state.design.flow === \"card_flow\" &&\n          !this.state.design.isInCart\n        ) {\n          commit(\"setLoading\", false, { root: true });\n          if (rootState.directSend.indirectSendAvailable) {\n            commit(\"directSend/setCardModalShowing\", true, { root: true });\n          } else {\n            commit(\"directSend/setSendToThemModalShowing\", true, {\n              root: true\n            });\n          }\n        } else if (state.quickAddIds) {\n          const queryString = state.quickAddIds\n            .map(id => {\n              return `quick_add_ids[]=${id}`;\n            })\n            .join(\"&\");\n\n          window.location = `${window.countryCode}/saved_designs/${response.data.design_id}/review?${queryString}`;\n        } else {\n          window.location = `${window.countryCode}/saved_designs/${response.data.design_id}/review`;\n        }\n      } else {\n        dispatch(\"setHasUnsavedChanges\", false);\n        const showLoginModalEvent = new CustomEvent(\"showLoginModal\");\n        window.dispatchEvent(showLoginModalEvent);\n        analytics.track(\"Prompted Login\", getters.eventParams);\n        commit(\"setLoading\", false, { root: true });\n      }\n    } else {\n      // Handle error\n    }\n  },\n  async addSavedBundleToCart({ commit, getters, dispatch, rootState }) {\n    await dispatch(\"preview/generateTemplatedPreviewImage\", null, {\n      root: true\n    });\n    const response = await savedBundle.createOrUpdate(\n      this.state.design.designId,\n      this.state.design.designables,\n      this.state.design.product.id,\n      false,\n      rootState.preview.templatedPreviewImage\n    );\n    if (response) {\n      if (getters.allowAddToCart) {\n        commit(\"setDesignId\", response.data.design_id);\n        dispatch(\"setHasUnsavedChanges\", false);\n        window.history.replaceState(\n          null,\n          null,\n          `${window.countryCode}/saved_bundles/${response.data.design_id}`\n        );\n        window.location = `${window.countryCode}/saved_bundles/${response.data.design_id}/review`;\n      } else {\n        dispatch(\"setHasUnsavedChanges\", false);\n        const showLoginModalEvent = new Event(\"showLoginModal\");\n        window.dispatchEvent(showLoginModalEvent);\n        analytics.track(\"Prompted Login\", getters.eventParams);\n        commit(\"setLoading\", false, { root: true });\n      }\n    } else {\n      // Handle error\n    }\n  },\n  async addSavedDynamicBundleToCart({ commit, dispatch, rootState }) {\n    await dispatch(\"preview/generateTemplatedPreviewImage\", null, {\n      root: true\n    });\n    const response = await savedDynamicBundle.createOrUpdate(\n      this.state.design.designId,\n      this.state.design.designables,\n      this.state.design.baseProductId,\n      this.state.design.productIds,\n      false,\n      rootState.preview.templatedPreviewImage\n    );\n    if (response) {\n      commit(\"setDesignId\", response.data.design_id);\n      dispatch(\"setHasUnsavedChanges\", false);\n      window.history.replaceState(\n        null,\n        null,\n        `${window.countryCode}/saved_dynamic_bundles/${response.data.design_id}`\n      );\n      window.location = `${window.countryCode}/saved_dynamic_bundles/${response.data.design_id}/review`;\n    }\n  },\n  async showSampleModal({ commit }) {\n    await commit(\"saveActiveSheet\");\n    commit(\"setSampleModalOpen\", true, { root: true });\n  },\n  async addSample({ getters, commit, dispatch, rootState }) {\n    analytics.track(\"Added Sample\", getters.eventParams);\n    commit(\"setLoading\", true, { root: true });\n    await commit(\"saveActiveSheet\");\n    await dispatch(\"preview/generateTemplatedPreviewImage\", null, {\n      root: true\n    });\n    const response = await savedDesign.createOrUpdate(\n      this.state.design.designId,\n      getters.saveParams,\n      this.state.design.product.id,\n      true,\n      rootState.directSend.postcardAddressId,\n      rootState.preview.templatedPreviewImage\n    );\n\n    dispatch(\"setHasUnsavedChanges\", false);\n    if (getters.allowAddToCart) {\n      await savedDesign.addSample(response.data.design_id);\n      window.location = `${window.countryCode}/basket`;\n    } else {\n      window.localStorage.addingSample = true;\n      const showLoginModalEvent = new Event(\"showLoginModal\");\n      window.dispatchEvent(showLoginModalEvent);\n      analytics.track(\"Prompted Login\", getters.eventParams);\n      commit(\"setLoading\", false, { root: true });\n    }\n  },\n  async saveDesign({ dispatch, commit, getters }, share = false) {\n    dispatch(\"setSheetPreview\");\n\n    analytics.track(\"Saved Design\", getters.eventParams);\n    await commit(\"saveActiveSheet\");\n    commit(\"setLoading\", true, { root: true });\n    if (state.product.type === \"Product\") {\n      await dispatch(\"saveSavedDesign\", share);\n    } else {\n      await dispatch(\"saveSavedBundle\");\n    }\n  },\n  async saveSavedDesign(\n    { commit, getters, dispatch, rootState },\n    share = false\n  ) {\n    dispatch(\"merge/fixMergeToCurrentIndex\");\n    await dispatch(\"preview/generateTemplatedPreviewImage\", null, {\n      root: true\n    });\n    const response = await savedDesign.createOrUpdate(\n      this.state.design.designId,\n      getters.saveParams,\n      this.state.design.product.id,\n      true,\n      rootState.directSend.postcardAddressId,\n      rootState.preview.templatedPreviewImage\n    );\n    if (response) {\n      if (this.state.loggedIn) {\n        commit(\"setDesignId\", response.data.design_id);\n        commit(\"setPreviewPath\", response.data.preview_path);\n\n        dispatch(\"setHasUnsavedChanges\", false);\n        window.history.replaceState(\n          null,\n          null,\n          `${window.countryCode}/saved_designs/${response.data.design_id}`\n        );\n        dispatch(\n          \"flashMessages/showFlashMessage\",\n          {\n            message: share\n              ? \"editor.flash.preview-link-copied\"\n              : \"editor.flash.design-saved\",\n            type: \"success\",\n            hideable: false,\n            messageProps: share\n              ? null\n              : {\n                  link: `${window.countryCode}/account/saved_designs`,\n                  linkTitle: \"editor.flash.view-saved-designs\"\n                }\n          },\n          { root: true }\n        );\n        commit(\"setLoading\", false, { root: true });\n      } else {\n        dispatch(\"setHasUnsavedChanges\", false);\n        const showLoginModalEvent = new Event(\"showLoginModal\");\n        window.dispatchEvent(showLoginModalEvent);\n        analytics.track(\"Prompted Login\", getters.eventParams);\n        commit(\"setLoading\", false, { root: true });\n      }\n    } else {\n      // Handle error\n    }\n  },\n  async saveSavedBundle({ dispatch, commit, getters, rootState }) {\n    await dispatch(\"preview/generateTemplatedPreviewImage\", null, {\n      root: true\n    });\n    const response = await savedBundle.createOrUpdate(\n      this.state.design.designId,\n      this.state.design.designables,\n      this.state.design.product.id,\n      true,\n      rootState.preview.templatedPreviewImage\n    );\n    if (response) {\n      if (this.state.loggedIn) {\n        commit(\"setDesignId\", response.data.design_id);\n        dispatch(\"setHasUnsavedChanges\", false);\n        window.history.replaceState(\n          null,\n          null,\n          `${window.countryCode}/saved_bundles/${response.data.design_id}`\n        );\n        commit(\"setLoading\", false, { root: true });\n      } else {\n        dispatch(\"setHasUnsavedChanges\", false);\n        const showLoginModalEvent = new Event(\"showLoginModal\");\n        window.dispatchEvent(showLoginModalEvent);\n        analytics.track(\"Prompted Login\", getters.eventParams);\n        commit(\"setLoading\", false, { root: true });\n      }\n    } else {\n      // Handle error\n    }\n  },\n  setCustomiseAlertModalShowing({ commit, getters, dispatch }, flag) {\n    commit(\"setCustomiseAlertModalShowing\", flag);\n    analytics.track(\"Clicked Show Me Unedited Areas\", {\n      product_id: getters.prefixedAnalyticsId\n    });\n    if (!flag) {\n      dispatch(\"setActiveDesignable\", getters.firstUncustomisedData);\n      dispatch(\"flashShowUnedited\");\n      commit(\"setShowItemsPanelWarnings\", true, { root: true });\n      commit(\"setActiveStockItem\", null);\n      commit(\"setItemsPanelVisibility\", false);\n    }\n  },\n  flashShowUnedited({ commit }) {\n    setTimeout(() => {\n      commit(\"setShowUnedited\", true);\n      setTimeout(() => commit(\"setShowUnedited\", false), 1500);\n    }, 500);\n  },\n  resizeTextToFit() {\n    state.canvas.resizeTextToFit();\n  },\n  setDesignableHidden(\n    { state, commit, getters, dispatch },\n    { designable, hidden }\n  ) {\n    commit(\"setDesignableHidden\", { designable, hidden });\n    if (!hidden) {\n      // i.e, we are adding a designable\n      dispatch(\"setActiveDesignable\", { designable });\n      commit(\"setObjectOverlaysAreFlashing\", \"true\", { root: true });\n    } else if (designable === state.activeDesignable) {\n      // i.e. we are hiding the active designable\n      dispatch(\"setActiveDesignable\", {\n        designable: getters.includedDesignables[0]\n      });\n    }\n    if (designable.repeatable) {\n      const action = hidden ? \"removeExtraCopy\" : \"addExtraCopy\";\n      dispatch(action, designable);\n    }\n  },\n  addExtraCopy({ state, commit, getters }, designable) {\n    // we only want to add another option to repeat\n    // the designable if we have less than the maximum already in the panel\n    if (\n      getters.repetitionsOfDesignable(designable) ===\n      state.maxRepetitionsPerDesign\n    )\n      return;\n\n    const newDesignable = JSON.parse(designable.baseDesignable);\n    newDesignable.baseDesignable = designable.baseDesignable;\n    newDesignable.repetition_key =\n      getters.highestRepetitionKey + 1 ||\n      getters.repetitionsOfDesignable(designable);\n    newDesignable.designable_sheets.forEach(sheet => {\n      sheet.repetition_key =\n        getters.highestRepetitionKey + 1 ||\n        getters.repetitionsOfDesignable(designable);\n    });\n    newDesignable.canvases = {};\n\n    commit(\"addExtraCopyOfDesignable\", newDesignable);\n  },\n  removeExtraCopy({ commit, getters }, designable) {\n    // We only ever want to show one extra copy of a repeatable\n    // designable, so if we have more than one, delete the last\n    // one\n    if (getters.excludedRepetitionsOfDesignable(designable) > 1) {\n      commit(\"removeDesignable\", designable);\n    }\n  },\n  clearSelection({ state }) {\n    state.canvas.clearSelection();\n  },\n  clearText({ state }) {\n    if (\n      window.confirm(\n        \"Are you sure you want to clear the text from this page? You should do this if you want to write this part by hand\"\n      )\n    ) {\n      state.canvas.clearText();\n    }\n  },\n  addQrCode({ state }, { url, foregroundColour, boundingBox }) {\n    state.canvas.addQrCode({ url, foregroundColour, boundingBox });\n  },\n  insertPostcardAddress({ state }, address) {\n    state.canvas.addPostcardAddress(address);\n  },\n  setInitialDesignableQty({ state, commit }) {\n    if (state.initialQty) {\n      commit(\"setActiveDesignableQty\", state.initialQty);\n    }\n  },\n  setInjectedGiftcardAmount({ state, commit, dispatch }, amount) {\n    const adding = amount && !state.injectedGiftcardAmount;\n    commit(\"setGiftcardProperties\", amount);\n    commit(\"setInjectedGiftcardAmount\", amount);\n    if (adding) {\n      dispatch(\"addDefaultGiftcardSheet\");\n    } else {\n      state.giftcardObject.setAmount(amount);\n    }\n  },\n  async addDefaultGiftcardSheet({ state, dispatch, getters }) {\n    // eslint-disable-next-line no-unused-vars\n    const [_front, insideLeft, inside] = getters.visibleSheets;\n\n    insideLeft.name += \" (Gift credit)\";\n    inside.name += \" (Your message)\";\n\n    const amendedFabric = JSON.parse(inside.fabric);\n    amendedFabric.objects = amendedFabric.objects.filter(\n      object => object.type === \"image\"\n    );\n\n    insideLeft.fabric = JSON.stringify(amendedFabric);\n\n    await dispatch(\"setActiveSheet\", {\n      designable: state.activeDesignable,\n      sheet: insideLeft\n    });\n  },\n  async removeGiftcard({ state, commit, dispatch, getters }) {\n    const [frontSheet, insideLeft, inside] = getters.visibleSheets;\n\n    insideLeft.name = insideLeft.name.replace(\" (Gift credit)\", \"\");\n    inside.name = inside.name.replace(\" (Your message)\", \"\");\n\n    state.giftcardObject.remove();\n\n    dispatch(\n      \"flashMessages/showFlashMessage\",\n      {\n        message: \"editor.mobile-editor.gift-credit.mobile-modal.delete-flash\",\n        type: \"success\"\n      },\n      { root: true }\n    );\n\n    await dispatch(\"setActiveSheet\", {\n      designable: state.activeDesignable,\n      sheet: frontSheet\n    });\n    commit(\"setInjectedGiftcardAmount\", null);\n    commit(\"setGiftcardProperties\", null);\n    commit(\"setGiftcardObject\", null);\n  }\n};\n\nconst mutations = {\n  setImageMenu(state, flag) {\n    state.imageMenuOpen = flag;\n  },\n  setDesignables(state, designables) {\n    state.designables = designables.map(designable => {\n      /* eslint-disable no-param-reassign */\n      designable.canvases = {};\n      return designable;\n    });\n    [state.activeDesignable] = state.designables.filter(\n      designable => !designable.optionallyHidden\n    );\n    [state.activeSheet] = state.activeDesignable.designable_sheets.filter(\n      sheet => !sheet.hidden\n    );\n    state.activeDesignable.qty = state.initialQty || state.activeDesignable.qty;\n    const showItemsPanel =\n      state.flow === \"merge_flow\" || state.designables.length > 1;\n    state.itemsPanelVisibility = showItemsPanel;\n  },\n  setOriginalDesignables(state, designables) {\n    state.originalDesignables = designables;\n  },\n  setDesignId(state, designId) {\n    state.designId = designId;\n  },\n  setPreviewPath(state, previewPath) {\n    state.previewPath = previewPath;\n  },\n  setIsInCart(state, isInCart) {\n    state.isInCart = isInCart;\n  },\n  setIsInCartAsSample(state, isInCartAsSample) {\n    state.isInCartAsSample = isInCartAsSample;\n  },\n  setActiveDesignable(state, designable) {\n    state.activeDesignable = designable;\n    state.activeStockItem = null;\n  },\n  setActiveDesignableQty(state, qty) {\n    state.activeDesignable.qty = qty;\n  },\n  setActiveStockItem(state, item) {\n    state.activeStockItem = item;\n  },\n  setActiveSheet(state, sheet) {\n    state.activeSheet = sheet;\n    state.activeStockItem = null;\n    if (state.activeDesignable.canvases[sheet.id]) {\n      state.canvas = state.activeDesignable.canvases[sheet.id];\n    }\n  },\n  async saveActiveSheet(state) {\n    if (\n      !state.activeStockItem &&\n      state.canvas.imageRepresentation &&\n      state.canvas.getObjects().length > 0\n    ) {\n      state.activeSheet.preview = state.canvas.imageRepresentation();\n      state.activeSheet.fabric = state.canvas.jsonRepresentation();\n      state.activeSheet.svg = state.canvas.svgRepresentation();\n      state.activeSheet.skodix_svg = state.canvas.skodixSvgRepresentation();\n      state.activeSheet.images = state.canvas.imageArrayRepresentation();\n\n      if (\n        state.activeDesignable.merge_strings &&\n        state.activeDesignable.merge_strings.length\n      ) {\n        state.activeSheet.merge_svgs = state.activeDesignable.merge_strings.map(\n          string => {\n            state.canvas.resetPredefinedStrings(string);\n            return state.canvas.svgRepresentation();\n          }\n        );\n\n        state.activeSheet.merge_skodix_svgs =\n          state.activeDesignable.merge_strings.map(string => {\n            state.canvas.resetPredefinedStrings(string);\n            return state.canvas.skodixSvgRepresentation();\n          });\n      }\n\n      if (state.flow === \"merge_flow\") {\n        state.activeSheet.svg = state.canvas.snapBlankPredefinedStringSvg();\n      }\n    }\n  },\n  setCanvasForSheet(state, data) {\n    state.activeDesignable.canvases[data.sheet.id] = data.canvas;\n    if (state.activeSheet === data.sheet) {\n      state.canvas = state.activeDesignable.canvases[data.sheet.id];\n      if (state.variationsSwapCallback) {\n        state.variationsSwapCallback(state.canvas);\n        state.variationsSwapCallback = null;\n      }\n    }\n  },\n  setCustomised(state, flag) {\n    state.activeDesignable.customised = flag;\n  },\n  setBundleStockItems(state, bundleStockItems) {\n    state.bundleStockItems = bundleStockItems;\n  },\n  setGuestCheckoutEnabled(state, guestCheckoutEnabled) {\n    state.guestCheckoutEnabled = guestCheckoutEnabled;\n  },\n  setProduct(state, product) {\n    state.product = product;\n  },\n  setSheetEdited(state, data) {\n    const sheetCopy = data.sheet;\n    sheetCopy.edited = data.edited;\n  },\n  setHasUnsavedChanges(state, flag) {\n    state.hasUnsavedChanges = flag;\n  },\n  setItemsPanelVisibility(state, itemsPanelVisibility) {\n    state.itemsPanelVisibility = itemsPanelVisibility;\n  },\n  setNewText(state, newText) {\n    state.newText = newText;\n  },\n  setCustomiseAlertModalShowing(state, flag) {\n    state.customiseAlertModalShowing = flag;\n    // if we are closing the modal (i.e. looking at unedited issues)\n    // queue force add to cart button to show\n    // after a short delay (after modal closes)\n    if (!flag) {\n      setTimeout(() => {\n        state.hasSeenCustomiseAlertModal = true;\n      }, 2000);\n    }\n  },\n  setDesignableHidden(state, { designable, hidden }) {\n    state.designables.filter(des => designable === des)[0].optionallyHidden =\n      hidden;\n  },\n  setFlow(state, flow) {\n    state.flow = flow;\n  },\n  setIsB2BFlow(state, flag) {\n    state.isB2BFlow = flag;\n  },\n  setInitialQty(state, qty) {\n    state.initialQty = qty;\n  },\n  addExtraCopyOfDesignable(state, designable) {\n    const index =\n      state.designables.map(des => des.id).lastIndexOf(designable.id) + 1;\n    state.designables.splice(index, 0, designable);\n  },\n  removeDesignable(state, designable) {\n    state.designables.splice(state.designables.indexOf(designable), 1);\n  },\n  setShowUnedited(state, flag) {\n    state.showUnedited = flag;\n  },\n  setActiveImageTab(state, tab) {\n    state.activeImageTab = tab;\n  },\n  setActiveDesignableMergeStrings(state, strings) {\n    state.activeDesignable.merge_strings = strings;\n  },\n  setActiveDesignableMergeStringsAtIndex(state, { index, strings }) {\n    state.activeDesignable.merge_strings[index] = strings;\n  },\n  setVariationsSwapCallback(state, callback) {\n    state.variationsSwapCallback = callback;\n  },\n  setDesignableAppeared(state, flag) {\n    state.designableAppeared = flag;\n  },\n  setPhotos(state, photos) {\n    state.photos = photos;\n  },\n  setHasSeenLeaveBlankModal(state, flag) {\n    state.hasSeenLeaveBlankModal = flag;\n  },\n  setAlreadyInCart(state, flag) {\n    state.alreadyInCart = flag;\n  },\n  setAllowInjectedCredit(state, flag) {\n    state.allowInjectedCredit = flag;\n  },\n  setGiftcardProperties(state, amount) {\n    state.activeDesignable.designable_sheets[2].giftcard_amount = amount;\n    state.activeDesignable.designable_sheets[2].hidden = !amount;\n  },\n  setInjectedGiftcardAmount(state, amount) {\n    state.injectedGiftcardAmount = amount;\n  },\n  setGiftcardObject(state, object) {\n    state.giftcardObject = object;\n  },\n  setAddingQrCode(state, flag) {\n    state.addingQrCode = flag;\n  },\n  setShowMobileStickersMessage(state, flag) {\n    state.showMobileStickersMessage = flag;\n  },\n  setIsWeddingItem(state, flag) {\n    state.isWeddingItem = flag;\n  },\n  setIsPlaceCard(state, flag) {\n    state.isPlaceCard = flag;\n  },\n  setLayerDragging(state, dragging) {\n    state.layerDragging = dragging;\n  },\n  setThicknessForDesignable(state, { designable, thickness }) {\n    const index = state.designables.map(des => des.id).indexOf(designable.id);\n    state.designables[index].thick = thickness;\n    state.hasInteractedWithThicknessRadioButtons = true;\n  },\n  setQuickAddIds(state, quickAddIds) {\n    state.quickAddIds = quickAddIds;\n  },\n  setBaseProductId(state, baseProductId) {\n    state.baseProductId = baseProductId;\n  },\n  setProductIds(state, productIds) {\n    state.productIds = productIds;\n  }\n};\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  actions,\n  mutations,\n  modules: {\n    images,\n    merge,\n    navigation,\n    pricing,\n    tips,\n    variations\n  }\n};\n"],"names":["assignIn","createAssigner","object","source","copyObject","keysIn","nativeCeil","nativeMax","baseRange","start","end","step","fromRight","index","length","result","createRange","isIterateeCall","toFinite","range","savedBundle","id","designables","bundleId","justSave","templatedPreviewImage","api","state","getters","rootState","stringSet","key","string","font","weight","style","extend","cloned","clone","actions","commit","strings","dispatch","stringsToSet","rootGetters","newStringsCount","bestQty","qty","sizes","value","updateAll","originalKey","mutations","flag","merge","sheets","flatten","designable","sheet","stockItems","stockItem","item","type","navigation","rooState","thickPricingValues","normalPricingValues","thickPrice","standardPrice","a","b","price","symbol","pricing","tips","_a","textObject","url","attribute","currentVariation","option","des","fabricObject","obj","top","left","width","height","oldFabric","newFabric","oldImageFrames","newImageFrames","product","recenter","images","swapper","captions","canvas","variationAttributes","variations","savedDynamicBundle","baseProductId","productIds","_b","_d","_c","counts","typeId","canvases","baseDesignable","_getters","element","renderer","Brut","data","newActiveSheet","hasUnsavedChanges","force","response","savedDesign","queryString","showLoginModalEvent","share","hidden","newDesignable","foregroundColour","boundingBox","address","amount","adding","_front","insideLeft","inside","amendedFabric","frontSheet","showItemsPanel","designId","previewPath","isInCart","isInCartAsSample","bundleStockItems","guestCheckoutEnabled","sheetCopy","itemsPanelVisibility","newText","flow","tab","callback","photos","dragging","thickness","quickAddIds","designStore"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}