{"version":3,"sources":["webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/modules/es.object.entries.js","webpack:///./resources/js/src/app/components/item/VariationSelect.vue","webpack:///resources/js/src/app/components/item/VariationSelect.vue","webpack:///./resources/js/src/app/components/item/VariationSelect.vue?19cf","webpack:///./resources/js/src/app/components/item/VariationSelect.vue?2512"],"names":["DESCRIPTORS","fails","uncurryThis","objectGetPrototypeOf","objectKeys","toIndexedObject","propertyIsEnumerable","f","push","IE_BUG","O","Object","create","createMethod","TO_ENTRIES","it","key","keys","IE_WORKAROUND","length","i","result","module","exports","entries","values","$","$values","target","stat","$entries","render","_vm","this","_c","_self","staticClass","attributes","possibleUnitCombinationIds","isContentVisible","_l","attribute","index","type","ref","refInFor","directives","name","rawName","value","isTextCut","expression","attrs","for","title","_v","_s","id","on","click","$event","selectOptionActive","selectedAttributes","attributeId","getSelectedAttributeValueName","$translate","attributeValueId","selected","selectAttribute","class","defaultPrice","rrpPrice","isAttributeSelectionValid","multiLanguage","ProductInstock","ProductOutOfStock","_e","_f","isNet","data","unitPriceNet","unitPrice","images","addPleaseSelectOption","active","imageUrl","invalid","src","alt","loading","decoding","change","selectUnit","unitCombinationId","domProps","parseInt","selectedUnit","isUnitSelectionValid","possibleUnits","_t","_withStripped","NotificationService","require","props","forceContent","Boolean","default","itemId","filteredVariationsCache","lastContentCount","mounted","document","addEventListener","closeDropdownOnClickOutside","$store","commit","concat","$props","currentSelection","currentVariationSelect","activeValueId","pos","findIndex","activeValue","splice","unshift","beforeDestroy","removeEventListener","computed","currentVariation","getters","state","items","variationSelect","hasEmptyOption","variations","some","variation","App","config","item","showPleaseSelect","filteredVariations","filterVariations","_step","_iterator","_createForOfIteratorHelper","s","n","done","unitName","err","e","transformPossibleUnits","map","hasSelection","isNullOrUndefined","tempAttributes","methods","event","$refs","dropdownContainer","contains","onSelectionChange","setTimeout","carousel","window","scrollTo","top","behavior","unitId","setVariation","variationId","unsetInvalidSelection","qualifiedVariations","getQualifiedVariations","closestVariations","getClosestVariations","closestVariation","invalidSelection","getInvalidSelectionByVariation","correctSelection","getTooltip","attributeValue","getInvalidOptionTooltip","invalidSelections","attributesToReset","_step2","names","_iterator2","newUnit","join","isDefined","filter","find","closestSalableVariation","numberOfSalableChanges","closestNonSalableVariation","numberOfNonSalableChanges","_step3","_iterator3","changes","isNull","_step4","_iterator4","isSalable","_this","_loop","selectedAttributeId","variationAttribute","attributeToReset","attr","_step5","messages","JSON","parse","stringify","_iterator5","warn","closeAfter","strict","ignoreUnit","_this2","uniqueValues","_toConsumableArray","Set","isEmptyOptionSelected","_ret","_loop2","v","filterSalableVariations","_this3","dispatch","then","dispatchEvent","CustomEvent","detail","documents","content","attributesContaner","textWidth","clientWidth","selectedAttributeValueId","selectedAttributeValue","attrValue","_this4","sort","unitA","unitB","splitUnitName","unitNameSplit","split","isNaN","replace","currencyPattern","separator_thousands","watch","component"],"mappings":"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","file":"chunks/ceres-10.min.js","sourcesContent":["'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys\n// of `null` prototype objects\nvar IE_BUG = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-create -- safe\n  var O = Object.create(null);\n  O[2] = 2;\n  return !propertyIsEnumerable(O, 2);\n});\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null;\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n","var render = function render() {\n  var _vm = this,\n    _c = _vm._self._c\n  return _c(\n    \"div\",\n    { staticClass: \"my-3\" },\n    [\n      _vm.attributes.length ||\n      (_vm.possibleUnitCombinationIds.length > 1 && _vm.isContentVisible)\n        ? [\n            _vm._l(_vm.attributes, function (attribute, index) {\n              return _c(\n                \"div\",\n                { key: index, staticClass: \"variation-select\" },\n                [\n                  attribute.type === \"dropdown\"\n                    ? _c(\n                        \"div\",\n                        {\n                          ref: \"dropdownContainer\",\n                          refInFor: true,\n                          staticClass: \"custom-dropdown\",\n                        },\n                        [\n                          _c(\n                            \"p\",\n                            {\n                              directives: [\n                                {\n                                  name: \"tooltip\",\n                                  rawName: \"v-tooltip\",\n                                  value: _vm.isTextCut(attribute.name),\n                                  expression: \"isTextCut(attribute.name)\",\n                                },\n                              ],\n                              attrs: {\n                                for: \"custom-select_\" + attribute.name,\n                                \"data-toggle\": \"tooltip\",\n                                \"data-placement\": \"top\",\n                                title: attribute.name,\n                                \"data-testing\":\n                                  \"variation-select-dropdown-label\",\n                              },\n                            },\n                            [\n                              _vm._v(\n                                \"\\n          \" +\n                                  _vm._s(attribute.name) +\n                                  \"\\n        \"\n                              ),\n                            ]\n                          ),\n                          _vm._v(\" \"),\n                          _c(\n                            \"div\",\n                            {\n                              staticClass: \"custom-select mt-2\",\n                              attrs: { id: \"custom-select_\" + attribute.name },\n                            },\n                            [\n                              _c(\n                                \"p\",\n                                {\n                                  staticClass: \"small\",\n                                  on: {\n                                    click: function ($event) {\n                                      _vm.selectOptionActive =\n                                        !_vm.selectOptionActive\n                                    },\n                                  },\n                                },\n                                [\n                                  _vm._v(\n                                    \"\\n            \" +\n                                      _vm._s(\n                                        _vm.selectedAttributes[\n                                          attribute.attributeId\n                                        ]\n                                          ? _vm.getSelectedAttributeValueName(\n                                              attribute\n                                            )\n                                          : _vm.$translate(\n                                              \"Ceres::Template.singleItemPleaseSelect\"\n                                            )\n                                      ) +\n                                      \"\\n          \"\n                                  ),\n                                ]\n                              ),\n                              _vm._v(\" \"),\n                              _vm.selectOptionActive\n                                ? _c(\n                                    \"div\",\n                                    {\n                                      staticClass:\n                                        \"custom-dropdown-list position-absolute w-100 bg-white\",\n                                    },\n                                    _vm._l(attribute.values, function (value) {\n                                      return _c(\n                                        \"div\",\n                                        {\n                                          key: value.attributeValueId,\n                                          attrs: {\n                                            value: value.attributeValueId,\n                                            selected:\n                                              value.attributeValueId ===\n                                              _vm.selectedAttributes[\n                                                attribute.attributeId\n                                              ],\n                                          },\n                                          on: {\n                                            click: function ($event) {\n                                              _vm.selectAttribute(\n                                                attribute.attributeId,\n                                                value.attributeValueId\n                                              )\n                                              _vm.selectOptionActive = false\n                                            },\n                                          },\n                                        },\n                                        [\n                                          value.attributeValueId !==\n                                          _vm.selectedAttributes[\n                                            attribute.attributeId\n                                          ]\n                                            ? [\n                                                _c(\n                                                  \"div\",\n                                                  {\n                                                    staticClass:\n                                                      \"p-2 custom-dropdown-item d-flex justify-content-between align-items-center\",\n                                                  },\n                                                  [\n                                                    _c(\n                                                      \"div\",\n                                                      {\n                                                        staticClass:\n                                                          \"d-flex justify-content-between w-100\",\n                                                        class: {\n                                                          \"flex-column\":\n                                                            value.defaultPrice &&\n                                                            value.rrpPrice,\n                                                          \"w-100\": !(\n                                                            value.defaultPrice &&\n                                                            value.rrpPrice\n                                                          ),\n                                                        },\n                                                      },\n                                                      [\n                                                        _c(\"span\", [\n                                                          _vm._v(\n                                                            \"\\n                      \" +\n                                                              _vm._s(\n                                                                value.name\n                                                              ) +\n                                                              \"\\n                    \"\n                                                          ),\n                                                        ]),\n                                                        _vm._v(\" \"),\n                                                        _c(\n                                                          \"span\",\n                                                          [\n                                                            _vm.isAttributeSelectionValid(\n                                                              attribute.attributeId,\n                                                              value.attributeValueId,\n                                                              true\n                                                            )\n                                                              ? [\n                                                                  _c(\n                                                                    \"span\",\n                                                                    {\n                                                                      staticClass:\n                                                                        \"text-sucess\",\n                                                                    },\n                                                                    [\n                                                                      _vm._v(\n                                                                        \"\\n                          \" +\n                                                                          _vm._s(\n                                                                            _vm\n                                                                              .multiLanguage\n                                                                              .ProductInstock\n                                                                          ) +\n                                                                          \"\\n                        \"\n                                                                      ),\n                                                                    ]\n                                                                  ),\n                                                                ]\n                                                              : [\n                                                                  _c(\n                                                                    \"span\",\n                                                                    {\n                                                                      staticClass:\n                                                                        \"text-muted\",\n                                                                    },\n                                                                    [\n                                                                      _vm._v(\n                                                                        \"\\n                          \" +\n                                                                          _vm._s(\n                                                                            _vm\n                                                                              .multiLanguage\n                                                                              .ProductOutOfStock\n                                                                          ) +\n                                                                          \"\\n                        \"\n                                                                      ),\n                                                                    ]\n                                                                  ),\n                                                                ],\n                                                          ],\n                                                          2\n                                                        ),\n                                                      ]\n                                                    ),\n                                                    _vm._v(\" \"),\n                                                    value.defaultPrice &&\n                                                    value.rrpPrice\n                                                      ? _c(\"p\", {\n                                                          staticClass:\n                                                            \"d-flex font-weight-medium\",\n                                                        })\n                                                      : _vm._e(),\n                                                    _c(\n                                                      \"p\",\n                                                      {\n                                                        staticClass:\n                                                          \"text-primary text-nowrap\",\n                                                      },\n                                                      [\n                                                        _vm._v(\n                                                          \"\\n                      \" +\n                                                            _vm._s(\n                                                              _vm._f(\n                                                                \"currency\"\n                                                              )(\n                                                                value.isNet\n                                                                  ? value\n                                                                      .defaultPrice\n                                                                      .data\n                                                                      .unitPriceNet\n                                                                  : value\n                                                                      .defaultPrice\n                                                                      .data\n                                                                      .unitPrice\n                                                              )\n                                                            ) +\n                                                            \"\\n                    \"\n                                                        ),\n                                                      ]\n                                                    ),\n                                                    _vm._v(\" \"),\n                                                    _c(\n                                                      \"del\",\n                                                      {\n                                                        staticClass:\n                                                          \"ml-2 text-nowrap\",\n                                                      },\n                                                      [\n                                                        _vm._v(\n                                                          \"\\n                      \" +\n                                                            _vm._s(\n                                                              _vm._f(\n                                                                \"currency\"\n                                                              )(\n                                                                value.isNet\n                                                                  ? value\n                                                                      .rrpPrice\n                                                                      .data\n                                                                      .unitPriceNet\n                                                                  : value\n                                                                      .rrpPrice\n                                                                      .data\n                                                                      .unitPrice\n                                                              )\n                                                            ) +\n                                                            \"\\n                    \"\n                                                        ),\n                                                      ]\n                                                    ),\n                                                    _vm._v(\" \"),\n                                                    _c(\"p\"),\n                                                  ]\n                                                ),\n                                              ]\n                                            : _vm._e(),\n                                        ],\n                                        2\n                                      )\n                                    }),\n                                    0\n                                  )\n                                : _vm._e(),\n                            ]\n                          ),\n                        ]\n                      )\n                    : attribute.type === \"box\" || attribute.type === \"image\"\n                    ? _c(\"div\", [\n                        _c(\n                          \"span\",\n                          {\n                            staticClass: \"text-muted\",\n                            attrs: { \"data-testing\": \"attribute-name\" },\n                          },\n                          [\n                            _vm._v(\n                              \"\\n          \" +\n                                _vm._s(attribute.name) +\n                                \":\\n        \"\n                            ),\n                          ]\n                        ),\n                        _vm._v(\" \"),\n                        _c(\n                          \"span\",\n                          {\n                            staticClass: \"font-weight-bold\",\n                            attrs: { \"data-testing\": \"attribute-value\" },\n                          },\n                          [\n                            _vm._v(\n                              \"\\n          \" +\n                                _vm._s(\n                                  _vm.getSelectedAttributeValueName(attribute)\n                                ) +\n                                \"\\n        \"\n                            ),\n                          ]\n                        ),\n                        _vm._v(\" \"),\n                        _c(\n                          \"div\",\n                          {\n                            staticClass: \"v-s-boxes pb-1 mt-2 mb-3 mx-0 images\",\n                            class: { images: attribute.type === \"image\" },\n                          },\n                          [\n                            _vm.addPleaseSelectOption\n                              ? _c(\n                                  \"div\",\n                                  {\n                                    staticClass:\n                                      \"v-s-box bg-white empty-option\",\n                                    class: {\n                                      active:\n                                        _vm.selectedAttributes[\n                                          attribute.attributeId\n                                        ] === -1,\n                                      \"d-none\": !_vm.isAttributeSelectionValid(\n                                        attribute.attributeId,\n                                        -1\n                                      ),\n                                    },\n                                    attrs: {\n                                      \"data-testing\": \"variation-select-box\",\n                                    },\n                                    on: {\n                                      click: function ($event) {\n                                        return _vm.selectAttribute(\n                                          attribute.attributeId,\n                                          -1\n                                        )\n                                      },\n                                    },\n                                  },\n                                  [\n                                    _c(\"span\", { staticClass: \"mx-3\" }, [\n                                      _vm._v(\n                                        \"\\n              \" +\n                                          _vm._s(\n                                            _vm.$translate(\n                                              \"Ceres::Template.singleItemPleaseSelect\"\n                                            )\n                                          ) +\n                                          \"\\n            \"\n                                      ),\n                                    ]),\n                                  ]\n                                )\n                              : _vm._e(),\n                            _vm._v(\" \"),\n                            _vm._l(attribute.values, function (value) {\n                              return [\n                                value.imageUrl\n                                  ? _c(\n                                      \"div\",\n                                      {\n                                        key: value.attributeValueId,\n                                        staticClass: \"v-s-box bg-white\",\n                                        class: {\n                                          active:\n                                            value.attributeValueId ===\n                                            _vm.selectedAttributes[\n                                              attribute.attributeId\n                                            ],\n                                          invalid:\n                                            !_vm.isAttributeSelectionValid(\n                                              attribute.attributeId,\n                                              value.attributeValueId,\n                                              true\n                                            ),\n                                        },\n                                        attrs: {\n                                          \"data-testing\":\n                                            \"variation-select-box\",\n                                        },\n                                        on: {\n                                          click: function ($event) {\n                                            return _vm.selectAttribute(\n                                              attribute.attributeId,\n                                              value.attributeValueId\n                                            )\n                                          },\n                                        },\n                                      },\n                                      [\n                                        attribute.type === \"box\"\n                                          ? _c(\n                                              \"span\",\n                                              { staticClass: \"mx-3\" },\n                                              [\n                                                _vm._v(\n                                                  \"\\n                \" +\n                                                    _vm._s(value.name) +\n                                                    \"\\n              \"\n                                                ),\n                                              ]\n                                            )\n                                          : _c(\"img\", {\n                                              staticClass: \"p-1\",\n                                              attrs: {\n                                                src: value.imageUrl,\n                                                alt: value.name,\n                                                title: value.name,\n                                                loading: \"lazy\",\n                                                decoding: \"async\",\n                                              },\n                                            }),\n                                      ]\n                                    )\n                                  : _vm._e(),\n                              ]\n                            }),\n                          ],\n                          2\n                        ),\n                      ])\n                    : _vm._e(),\n                ]\n              )\n            }),\n            _vm._v(\" \"),\n            _vm.possibleUnitCombinationIds.length > 1 && _vm.isContentVisible\n              ? _c(\"div\", { staticClass: \"variation-select\" }, [\n                  _c(\"div\", { staticClass: \"input-unit\" }, [\n                    _c(\n                      \"select\",\n                      {\n                        staticClass: \"custom-select\",\n                        attrs: {\n                          id: \"unit-combination-ids-select\",\n                          \"data-testing\": \"variation-select-unit\",\n                        },\n                        on: {\n                          change: function ($event) {\n                            return _vm.selectUnit($event.target.value)\n                          },\n                        },\n                      },\n                      _vm._l(\n                        _vm.possibleUnitCombinationIds,\n                        function (unitCombinationId) {\n                          return _c(\n                            \"option\",\n                            {\n                              key: unitCombinationId,\n                              domProps: {\n                                value: unitCombinationId,\n                                selected:\n                                  parseInt(unitCombinationId) ===\n                                  _vm.selectedUnit,\n                              },\n                            },\n                            [\n                              _vm.isUnitSelectionValid(unitCombinationId)\n                                ? [\n                                    _vm._v(\n                                      \"\\n              \" +\n                                        _vm._s(\n                                          _vm.possibleUnits[unitCombinationId]\n                                        ) +\n                                        \"\\n            \"\n                                    ),\n                                  ]\n                                : [\n                                    _vm._v(\n                                      \"\\n              \" +\n                                        _vm._s(\n                                          _vm.$translate(\n                                            \"Ceres::Template.singleItemInvalidAttribute\",\n                                            {\n                                              name: _vm.possibleUnits[\n                                                unitCombinationId\n                                              ],\n                                            }\n                                          )\n                                        ) +\n                                        \"\\n            \"\n                                    ),\n                                  ],\n                            ],\n                            2\n                          )\n                        }\n                      ),\n                      0\n                    ),\n                    _vm._v(\" \"),\n                    _c(\n                      \"label\",\n                      {\n                        attrs: {\n                          for: \"unit-combination-ids-select\",\n                          \"data-testing\": \"variation-select-unit-label\",\n                        },\n                      },\n                      [\n                        _vm._v(\n                          \"\\n          \" +\n                            _vm._s(\n                              _vm.$translate(\n                                \"Ceres::Template.singleItemContent\"\n                              )\n                            ) +\n                            \"\\n        \"\n                        ),\n                      ]\n                    ),\n                  ]),\n                ])\n              : _vm._e(),\n          ]\n        : [_vm._t(\"default\")],\n    ],\n    2\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"my-3\">\n    <template\n      v-if=\"\n        attributes.length ||\n        (possibleUnitCombinationIds.length > 1 && isContentVisible)\n      \"\n    >\n      <div\n        class=\"variation-select\"\n        v-for=\"(attribute, index) in attributes\"\n        :key=\"index\"\n      >\n        <!-- dropdown -->\n        <div\n          class=\"custom-dropdown\"\n          ref=\"dropdownContainer\"\n          v-if=\"attribute.type === 'dropdown'\"\n        >\n          <p\n            :for=\"'custom-select_' + attribute.name\"\n            v-tooltip=\"isTextCut(attribute.name)\"\n            data-toggle=\"tooltip\"\n            data-placement=\"top\"\n            :title=\"attribute.name\"\n            data-testing=\"variation-select-dropdown-label\"\n          >\n            {{ attribute.name }}\n          </p>\n          <div\n            :id=\"'custom-select_' + attribute.name\"\n            class=\"custom-select mt-2\"\n          >\n            <p @click=\"selectOptionActive = !selectOptionActive\" class=\"small\">\n              {{\n                selectedAttributes[attribute.attributeId]\n                  ? getSelectedAttributeValueName(attribute)\n                  : $translate(\"Ceres::Template.singleItemPleaseSelect\")\n              }}\n            </p>\n            <div\n              class=\"custom-dropdown-list position-absolute w-100 bg-white\"\n              v-if=\"selectOptionActive\"\n            >\n              <div\n                v-for=\"value in attribute.values\"\n                :key=\"value.attributeValueId\"\n                :value=\"value.attributeValueId\"\n                :selected=\"\n                  value.attributeValueId ===\n                  selectedAttributes[attribute.attributeId]\n                \"\n                @click=\"\n                  selectAttribute(\n                    attribute.attributeId,\n                    value.attributeValueId\n                  );\n                  selectOptionActive = false;\n                \"\n              >\n                <template\n                  v-if=\"\n                    value.attributeValueId !==\n                    selectedAttributes[attribute.attributeId]\n                  \"\n                >\n                  <div\n                    class=\"p-2 custom-dropdown-item d-flex justify-content-between align-items-center\"\n                  >\n                    <div\n                      class=\"d-flex justify-content-between w-100\"\n                      :class=\"{\n                        'flex-column': value.defaultPrice && value.rrpPrice,\n                        'w-100': !(value.defaultPrice && value.rrpPrice),\n                      }\"\n                    >\n                      <span>\n                        {{ value.name }}\n                      </span>\n                      <span>\n                        <template\n                          v-if=\"\n                            isAttributeSelectionValid(\n                              attribute.attributeId,\n                              value.attributeValueId,\n                              true\n                            )\n                          \"\n                        >\n                          <span class=\"text-sucess\">\n                            {{ multiLanguage.ProductInstock }}\n                          </span>\n                        </template>\n                        <template v-else>\n                          <span class=\"text-muted\">\n                            {{ multiLanguage.ProductOutOfStock }}\n                          </span>\n                        </template>\n                      </span>\n                    </div>\n                    <p\n                      v-if=\"value.defaultPrice && value.rrpPrice\"\n                      class=\"d-flex font-weight-medium\"\n                    >\n                      <p class=\"text-primary text-nowrap\">\n                        {{\n                          (value.isNet\n                            ? value.defaultPrice.data.unitPriceNet\n                            : value.defaultPrice.data.unitPrice) | currency\n                        }}\n                      </p>\n                      <del class=\"ml-2 text-nowrap\">\n                        {{\n                          (value.isNet\n                            ? value.rrpPrice.data.unitPriceNet\n                            : value.rrpPrice.data.unitPrice) | currency\n                        }}\n                      </del>\n                    </p>\n                  </div>\n                </template>\n              </div>\n            </div>\n          </div>\n        </div>\n        <!-- /dropdown -->\n\n        <!-- box and image -->\n        <div v-else-if=\"attribute.type === 'box' || attribute.type === 'image'\">\n          <span class=\"text-muted\" data-testing=\"attribute-name\">\n            {{ attribute.name }}:\n          </span>\n          <span class=\"font-weight-bold\" data-testing=\"attribute-value\">\n            {{ getSelectedAttributeValueName(attribute) }}\n          </span>\n          <div\n            class=\"v-s-boxes pb-1 mt-2 mb-3 mx-0 images\"\n            :class=\"{ images: attribute.type === 'image' }\"\n          >\n            <div\n              class=\"v-s-box bg-white empty-option\"\n              data-testing=\"variation-select-box\"\n              v-if=\"addPleaseSelectOption\"\n              @click=\"selectAttribute(attribute.attributeId, -1)\"\n              :class=\"{\n                active: selectedAttributes[attribute.attributeId] === -1,\n                'd-none': !isAttributeSelectionValid(attribute.attributeId, -1),\n              }\"\n            >\n              <span class=\"mx-3\">\n                {{ $translate(\"Ceres::Template.singleItemPleaseSelect\") }}\n              </span>\n            </div>\n\n            <template v-for=\"value in attribute.values\">\n              <div\n                class=\"v-s-box bg-white\"\n                data-testing=\"variation-select-box\"\n                v-if=\"value.imageUrl\"\n                @click=\"\n                  selectAttribute(attribute.attributeId, value.attributeValueId)\n                \"\n                :class=\"{\n                  active:\n                    value.attributeValueId ===\n                    selectedAttributes[attribute.attributeId],\n                  invalid: !isAttributeSelectionValid(\n                    attribute.attributeId,\n                    value.attributeValueId,\n                    true\n                  ),\n                }\"\n                :key=\"value.attributeValueId\"\n              >\n                <span v-if=\"attribute.type === 'box'\" class=\"mx-3\">\n                  {{ value.name }}\n                </span>\n                <img\n                  v-else\n                  class=\"p-1\"\n                  :src=\"value.imageUrl\"\n                  :alt=\"value.name\"\n                  :title=\"value.name\"\n                  loading=\"lazy\"\n                  decoding=\"async\"\n                />\n              </div>\n            </template>\n          </div>\n        </div>\n        <!-- /box and image -->\n      </div>\n\n      <!-- units -->\n      <div\n        class=\"variation-select\"\n        v-if=\"possibleUnitCombinationIds.length > 1 && isContentVisible\"\n      >\n        <div class=\"input-unit\">\n          <select\n            id=\"unit-combination-ids-select\"\n            class=\"custom-select\"\n            @change=\"selectUnit($event.target.value)\"\n            data-testing=\"variation-select-unit\"\n          >\n            <option\n              v-for=\"unitCombinationId in possibleUnitCombinationIds\"\n              :value=\"unitCombinationId\"\n              :selected=\"parseInt(unitCombinationId) === selectedUnit\"\n              :key=\"unitCombinationId\"\n            >\n              <template v-if=\"isUnitSelectionValid(unitCombinationId)\">\n                {{ possibleUnits[unitCombinationId] }}\n              </template>\n              <template v-else>\n                {{\n                  $translate(\"Ceres::Template.singleItemInvalidAttribute\", {\n                    name: possibleUnits[unitCombinationId],\n                  })\n                }}\n              </template>\n            </option>\n          </select>\n          <label\n            for=\"unit-combination-ids-select\"\n            data-testing=\"variation-select-unit-label\"\n          >\n            {{ $translate(\"Ceres::Template.singleItemContent\") }}\n          </label>\n        </div>\n      </div>\n      <!-- /units -->\n    </template>\n\n    <template v-else>\n      <slot></slot>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { textWidth } from \"../../helper/dom\";\nimport { isDefined, isNull, isNullOrUndefined } from \"../../helper/utils\";\n\nconst NotificationService = require(\"../../services/NotificationService\");\n\nexport default {\n  name: \"variation-select\",\n\n  props: {\n    forceContent: {\n      type: Boolean,\n      default: false,\n    },\n    itemId: {\n      default: null,\n    },\n    multiLanguage: Object,\n  },\n\n  data() {\n    return {\n      filteredVariationsCache: {},\n      lastContentCount: 0,\n      selectOptionActive: false,\n    };\n  },\n\n  mounted() {\n    document.addEventListener(\"click\", this.closeDropdownOnClickOutside);\n    // initially check for valid selection and disable add to basket button\n    this.$store.commit(\n      `${this.$props.itemId}/variationSelect/setIsVariationSelected`,\n      !!this.currentSelection\n    );\n\n    if (this.currentVariationSelect && this.attributes.length > 0) {\n      let currentID = this.currentVariationSelect.selectedAttributes[4];\n      let activeValueId = currentID;\n      let pos = this.attributes[0].values.findIndex(\n        (value) => value.attributeValueId == activeValueId\n      );\n      if (pos !== -1) {\n        const activeValue = this.attributes[0].values.splice(pos, 1)[0];\n        this.attributes[0].values.unshift(activeValue);\n      }\n    }\n  },\n  beforeDestroy() {\n    document.removeEventListener(\"click\", this.closeDropdownOnClickOutside);\n  },\n\n  computed: {\n    currentVariation() {\n      return this.$store.getters[`${this.$props.itemId}/currentItemVariation`];\n    },\n\n    currentVariationSelect() {\n      return (\n        this.$store.state.items[this.$props.itemId] &&\n        this.$store.state.items[this.$props.itemId].variationSelect\n      );\n    },\n\n    /**\n     * returns true if any variation has no attributes\n     */\n    hasEmptyOption() {\n      return this.variations.some((variation) => !variation.attributes.length);\n    },\n\n    addPleaseSelectOption() {\n      return App.config.item.showPleaseSelect;\n    },\n\n    /**\n     * returns the variation, based on the selected attributes / unit\n     * returns false if there are none or multiple results\n     */\n    currentSelection() {\n      const filteredVariations = this.filterVariations(null, null, true);\n\n      if (filteredVariations.length === 1) {\n        return filteredVariations[0];\n      }\n\n      return false;\n    },\n\n    /**\n     * returns all units, selectable by current selection\n     * prop 'forceContent' with value true will return all units, without filtering\n     */\n    possibleUnits() {\n      // use an object, to make the entries unique\n      const possibleUnits = {};\n      const variations = this.forceContent\n        ? this.variations\n        : this.filterVariations(null, null, null, true);\n\n      for (const variation of variations) {\n        possibleUnits[variation.unitCombinationId] = variation.unitName;\n      }\n\n      return possibleUnits;\n    },\n\n    possibleUnitCombinationIds() {\n      return this.transformPossibleUnits(this.possibleUnits).map(\n        (value) => value[0]\n      );\n    },\n\n    isContentVisible() {\n      return (\n        (!this.forceContent && !!this.currentSelection) || this.forceContent\n      );\n    },\n\n    hasSelection() {\n      return (\n        !isNullOrUndefined(this.selectedAttributes) &&\n        !Object.values(this.selectedAttributes).some((value) => value < 0)\n      );\n    },\n\n    attributes() {\n      return this.currentVariationSelect &&\n        this.currentVariationSelect.tempAttributes.length > 0\n        ? this.currentVariationSelect.tempAttributes\n        : this.currentVariationSelect.attributes;\n    },\n\n    selectedAttributes() {\n      return (\n        this.currentVariationSelect &&\n        this.currentVariationSelect.selectedAttributes\n      );\n    },\n\n    selectedUnit() {\n      return (\n        this.currentVariationSelect && this.currentVariationSelect.selectedUnit\n      );\n    },\n\n    variations() {\n      return (\n        this.currentVariationSelect && this.currentVariationSelect.variations\n      );\n    },\n  },\n\n  methods: {\n    closeDropdownOnClickOutside(event) {\n      if (\n        this.$refs.dropdownContainer &&\n        !this.$refs.dropdownContainer[0].contains(event.target)\n      ) {\n        this.selectOptionActive = false;\n      }\n    },\n    /**\n     * select an attribute and check, if the selection is valid; if not, unsetInvalidSelection will be executed\n     * @param {number} attributeId\n     * @param {[number, string, null]} attributeValueId\n     */\n    selectAttribute(attributeId, attributeValueId) {\n      attributeValueId = parseInt(attributeValueId) || null;\n\n      if (this.selectedAttributes[attributeId] !== attributeValueId) {\n        this.$store.commit(\n          `${this.$props.itemId}/variationSelect/selectItemAttribute`,\n          { attributeId, attributeValueId }\n        );\n        this.onSelectionChange(attributeId, attributeValueId, null);\n      }\n\n      setTimeout(() => {\n        $(\"#singleItemCarouselImages\").carousel(0);\n      }, 300);\n\n      if (typeof window !== \"undefined\") {\n        window.scrollTo({\n          top: 0,\n          behavior: \"smooth\",\n        });\n      }\n    },\n\n    /**\n     * select a unit and check, if the selection is valid; if not, unsetInvalidSelection will be executed\n     * @param {[number, string]} unitId\n     */\n    selectUnit(unitId) {\n      unitId = parseInt(unitId);\n      this.$store.commit(\n        `${this.$props.itemId}/variationSelect/selectItemUnit`,\n        unitId\n      );\n      this.onSelectionChange(null, null, unitId);\n    },\n\n    onSelectionChange(attributeId, attributeValueId, unitId) {\n      if (this.currentSelection) {\n        this.setVariation(this.currentSelection.variationId);\n      } else if (!this.hasSelection) {\n        // user switched back to \"please select\"\n        this.setVariation(0);\n      } else {\n        this.unsetInvalidSelection(attributeId, attributeValueId, unitId);\n      }\n\n      this.lastContentCount = this.possibleUnitCombinationIds.length;\n    },\n\n    /**\n     * changes the selected attributes / unit, to ensure a valid seelction\n     * @param {[number, null]} attributeId\n     * @param {[number, null]} attributeValueId\n     * @param {[number, null]} unitId\n     */\n    unsetInvalidSelection(attributeId, attributeValueId, unitId) {\n      const qualifiedVariations = this.getQualifiedVariations(\n        attributeId,\n        attributeValueId,\n        unitId\n      );\n      const closestVariations = this.getClosestVariations(qualifiedVariations);\n\n      // if the salable 'closestVariations' is undefined, take the not-salable one\n      const closestVariation = closestVariations[0] || closestVariations[1];\n\n      if (!closestVariation) {\n        return;\n      }\n\n      const invalidSelection =\n        this.getInvalidSelectionByVariation(closestVariation);\n\n      this.correctSelection(invalidSelection);\n    },\n\n    getTooltip(attribute, attributeValue) {\n      if (\n        !this.isAttributeSelectionValid(\n          attribute.attributeId,\n          attributeValue.attributeValueId,\n          true\n        )\n      ) {\n        return this.getInvalidOptionTooltip(\n          attribute.attributeId,\n          attributeValue.attributeValueId\n        );\n      } else if (attribute.type === \"image\") {\n        return this.$translate(\"Ceres::Template.singleItemAttributeTooltip\", {\n          attribute: attribute.name,\n          value: attributeValue.name,\n        });\n      }\n\n      return \"\";\n    },\n\n    /**\n     * returns a string for box tooltips, for not available options\n     * @param {number} attributeId\n     * @param {number} attributeValueId\n     */\n    getInvalidOptionTooltip(attributeId, attributeValueId) {\n      const qualifiedVariations = this.getQualifiedVariations(\n        attributeId,\n        attributeValueId\n      );\n      const closestVariations = this.getClosestVariations(qualifiedVariations);\n\n      if (!closestVariations || closestVariations.length <= 0) {\n        return \"\";\n      }\n\n      const invalidSelections = [\n        !!closestVariations[0]\n          ? this.getInvalidSelectionByVariation(closestVariations[0])\n          : null,\n        !!closestVariations[1]\n          ? this.getInvalidSelectionByVariation(closestVariations[1])\n          : null,\n      ];\n\n      if (\n        !!invalidSelections[0] &&\n        !!invalidSelections[1] &&\n        invalidSelections[0].attributesToReset.length >\n          invalidSelections[1].attributesToReset.length\n      ) {\n        // there is a non-salable variation with less changes\n        return this.$translate(\"Ceres::Template.singleItemNotSalable\");\n      }\n\n      const invalidSelection = invalidSelections[0] || invalidSelections[1];\n      const names = [];\n\n      for (const attribute of invalidSelection.attributesToReset) {\n        if (attribute.attributeId !== attributeId) {\n          names.push(\"<b>\" + attribute.name + \"</b>\");\n        }\n      }\n      if (invalidSelection.newUnit) {\n        names.push(\n          \"<b>\" + this.$translate(\"Ceres::Template.singleItemContent\") + \"</b>\"\n        );\n      }\n\n      if (!names.length) {\n        return null;\n      }\n\n      return this.$translate(\n        \"Ceres::Template.singleItemNotAvailableInSelection\",\n        { name: names.join(\", \") }\n      );\n    },\n\n    /**\n     * returns a list of variations, filtered by attribute or unit\n     * @param {[number, null]} attributeId\n     * @param {[number, null]} attributeValueId\n     * @param {[number, null]} unitId\n     */\n    getQualifiedVariations(attributeId, attributeValueId, unitId) {\n      if (isDefined(attributeValueId)) {\n        return this.variations.filter((variation) => {\n          return isDefined(\n            variation.attributes.find(\n              (attribute) =>\n                attribute.attributeId === attributeId &&\n                attribute.attributeValueId === attributeValueId\n            )\n          );\n        });\n      } else if (isDefined(unitId)) {\n        return this.variations.filter(\n          (variation) => variation.unitCombinationId === unitId\n        );\n      }\n\n      return this.variations.filter(\n        (variation) => !variation.attributes.length\n      );\n    },\n\n    /**\n     * return a salable and a non-salable variation with the minimum number of changes on attributes compared to the current selection.\n     * @param {array} qualifiedVariations\n     */\n    getClosestVariations(qualifiedVariations) {\n      let closestSalableVariation, numberOfSalableChanges;\n      let closestNonSalableVariation, numberOfNonSalableChanges;\n\n      for (const variation of qualifiedVariations) {\n        let changes = 0;\n\n        if (\n          variation.unitCombinationId !== this.selectedUnit &&\n          !isNull(this.selectedUnit)\n        ) {\n          // when the unit dropdown isn't visible, it should have a lower weight for reset investigations\n          const unitWeight =\n            this.possibleUnitCombinationIds.length > 1 && this.isContentVisible\n              ? 0.9\n              : 0.1;\n\n          changes += unitWeight;\n        }\n\n        for (const attribute of variation.attributes) {\n          if (\n            this.selectedAttributes[attribute.attributeId] !==\n            attribute.attributeValueId\n          ) {\n            changes++;\n          }\n        }\n\n        if (\n          variation.isSalable &&\n          (!numberOfSalableChanges || changes < numberOfSalableChanges)\n        ) {\n          closestSalableVariation = variation;\n          numberOfSalableChanges = changes;\n        } else if (\n          !variation.isSalable &&\n          (!numberOfNonSalableChanges || changes < numberOfNonSalableChanges)\n        ) {\n          closestNonSalableVariation = variation;\n          numberOfNonSalableChanges = changes;\n        }\n      }\n\n      return [closestSalableVariation, closestNonSalableVariation];\n    },\n\n    /**\n     * returns object with array 'attributesToReset' and newUnit. The attributesToReset contains all attributes, which are not matching with the given variation\n     * @param {object} variation\n     */\n    getInvalidSelectionByVariation(variation) {\n      const attributesToReset = [];\n      let newUnit = null;\n\n      for (let selectedAttributeId in this.selectedAttributes) {\n        selectedAttributeId = parseInt(selectedAttributeId);\n        const variationAttribute = variation.attributes.find(\n          (attribute) => attribute.attributeId === selectedAttributeId\n        );\n\n        if (!isNull(this.selectedAttributes[selectedAttributeId])) {\n          if (\n            (variationAttribute &&\n              variationAttribute.attributeValueId !==\n                this.selectedAttributes[selectedAttributeId]) ||\n            !variationAttribute\n          ) {\n            const attributeToReset = this.attributes.find(\n              (attr) => attr.attributeId === selectedAttributeId\n            );\n\n            attributesToReset.push(attributeToReset);\n          }\n        }\n      }\n\n      if (variation.unitCombinationId !== this.selectedUnit) {\n        newUnit = variation.unitCombinationId;\n      }\n\n      return { attributesToReset, newUnit };\n    },\n\n    /**\n     * resets all invalid attributes and change the unit, if required. Prints a message to the user if so.\n     * @param {object} invalidSelection\n     */\n    correctSelection(invalidSelection) {\n      const messages = [];\n      const attributes = JSON.parse(JSON.stringify(this.selectedAttributes));\n\n      for (const attributeToReset of invalidSelection.attributesToReset) {\n        messages.push(\n          this.$translate(\"Ceres::Template.singleItemNotAvailable\", {\n            name: attributeToReset.name,\n          })\n        );\n\n        attributes[attributeToReset.attributeId] =\n          !this.hasEmptyOption && App.config.item.showPleaseSelect ? -1 : null;\n      }\n\n      if (invalidSelection.newUnit) {\n        if (\n          this.lastContentCount > 1 &&\n          this.possibleUnitCombinationIds.length > 1 &&\n          !isNull(this.selectedUnit)\n        ) {\n          messages.push(\n            this.$translate(\"Ceres::Template.singleItemNotAvailable\", {\n              name: this.$translate(\"Ceres::Template.singleItemContent\"),\n            })\n          );\n        }\n\n        this.$store.commit(\n          `${this.$props.itemId}/variationSelect/selectItemUnit`,\n          invalidSelection.newUnit\n        );\n      }\n\n      this.$store.commit(\n        `${this.$props.itemId}/variationSelect/setItemSelectedAttributes`,\n        attributes\n      );\n\n      this.setVariation(\n        this.currentSelection ? this.currentSelection.variationId : 0\n      );\n\n      NotificationService.warn(messages.join(\"<br>\")).closeAfter(5000);\n    },\n\n    /**\n     * returns matching variations with current selection\n     * attributes and unitId could be filled, to check a specific selection\n     * @param {object} attributes\n     * @param {number} unitId\n     * @param {boolean} strict\n     */\n    filterVariations(attributes, unitId, strict, ignoreUnit) {\n      attributes = attributes || this.selectedAttributes;\n      unitId = unitId || this.selectedUnit;\n      strict = !!strict;\n      ignoreUnit = !!ignoreUnit;\n\n      const key =\n        JSON.stringify(attributes) +\n        \"_\" +\n        unitId +\n        \"_\" +\n        strict +\n        \"_\" +\n        ignoreUnit;\n\n      if (isDefined(this.filteredVariationsCache[key])) {\n        return this.filteredVariationsCache[key];\n      }\n\n      const uniqueValues = [...new Set(Object.values(attributes))];\n      const isEmptyOptionSelected =\n        uniqueValues.length === 1 && isNull(uniqueValues[0]);\n      const filteredVariations = this.variations.filter((variation) => {\n        // the selected unit is not matching\n        if (!ignoreUnit && variation.unitCombinationId !== unitId) {\n          return false;\n        }\n\n        // the variation has no attributes (only checked, if any attribute has a selected value); or the variation has attributes and empty option is selected\n        // requires more than 0 attributes\n        if (\n          ((!isEmptyOptionSelected && !variation.attributes.length) ||\n            (isEmptyOptionSelected && variation.attributes.length)) &&\n          this.attributes.length > 0\n        ) {\n          return false;\n        }\n\n        for (const attributeId in attributes) {\n          const variationAttribute = variation.attributes.find(\n            (variationAttribute) =>\n              variationAttribute.attributeId === parseInt(attributeId)\n          );\n\n          // an attribute is not matching with selection\n          if (\n            variationAttribute &&\n            variationAttribute.attributeValueId !== attributes[attributeId] &&\n            (strict ||\n              (!strict &&\n                !isNull(attributes[attributeId]) &&\n                attributes[attributeId] !== -1))\n          ) {\n            return false;\n          }\n        }\n\n        return true;\n      });\n\n      this.filteredVariationsCache[key] = filteredVariations;\n\n      return filteredVariations;\n    },\n\n    /**\n     * returns true, if the selection with a new attribute value would be valid\n     * @param {number} attributeId\n     * @param {[number, string, null]} attributeValueId\n     * @param {boolean} filterSalableVariations\n     */\n    isAttributeSelectionValid(\n      attributeId,\n      attributeValueId,\n      filterSalableVariations\n    ) {\n      attributeValueId = parseInt(attributeValueId) || null;\n      if (this.selectedAttributes[attributeId] === attributeValueId) {\n        return true;\n      }\n\n      const selectedAttributes = JSON.parse(\n        JSON.stringify(this.selectedAttributes)\n      );\n\n      selectedAttributes[attributeId] = parseInt(attributeValueId) || null;\n\n      const ignoreUnit = !(\n        Object.keys(this.possibleUnits).length > 1 && this.isContentVisible\n      );\n      let variations = this.filterVariations(\n        selectedAttributes,\n        null,\n        null,\n        ignoreUnit\n      );\n\n      if (filterSalableVariations) {\n        variations = variations.filter((variation) => variation.isSalable);\n      }\n\n      return variations.length > 0;\n    },\n\n    /**\n     * returns true, if the selection with a new unitId would be valid\n     * @param {[number, string]} unitId\n     */\n    isUnitSelectionValid(unitId) {\n      unitId = parseInt(unitId);\n      if (this.selectedUnit === unitId) {\n        return true;\n      }\n\n      return (\n        this.filterVariations(null, unitId).filter(\n          (variation) => variation.isSalable\n        ).length > 0\n      );\n    },\n\n    /**\n     * dispatch vuex action 'loadVariation' to archive a variation\n     * dispatches a custom event named 'onVariationChanged'\n     * @param {[string, number, null]} variationId\n     */\n    setVariation(variationId) {\n      if (!isDefined(variationId) && this.currentSelection) {\n        variationId = this.currentSelection.variationId;\n      }\n\n      if (isDefined(variationId)) {\n        this.$store\n          .dispatch(`${this.$props.itemId}/loadVariation`, variationId)\n          .then((variation) => {\n            document.dispatchEvent(\n              new CustomEvent(\"onVariationChanged\", {\n                detail: {\n                  attributes: variation.attributes,\n                  documents: variation.documents,\n                  itemId: this.$props.itemId,\n                },\n              })\n            );\n          });\n      }\n    },\n\n    isTextCut(content) {\n      if (this.$refs.attributesContaner) {\n        return (\n          textWidth(content, \"Custom-Font, Helvetica, Arial, sans-serif\") >\n          this.$refs.attributesContaner[0].clientWidth\n        );\n      }\n\n      return false;\n    },\n\n    getSelectedAttributeValueName(attribute) {\n      const selectedAttributeValueId =\n        this.selectedAttributes[attribute.attributeId];\n      const selectedAttributeValue = attribute.values.find(\n        (attrValue) => attrValue.attributeValueId === selectedAttributeValueId\n      );\n\n      if (selectedAttributeValue) {\n        return selectedAttributeValue.name;\n      } else if (\n        App.config.item.showPleaseSelect &&\n        selectedAttributeValueId === -1\n      ) {\n        return this.$translate(\"Ceres::Template.singleItemPleaseSelect\");\n      }\n      return this.$translate(\"Ceres::Template.singleItemNoSelection\");\n    },\n\n    transformPossibleUnits(possibleUnits) {\n      return Object.entries(possibleUnits).sort((unitA, unitB) => {\n        unitA = this.splitUnitName(unitA[1]);\n        unitB = this.splitUnitName(unitB[1]);\n        // order by unit\n        if (unitA[1] < unitB[1]) {\n          return -1;\n        }\n        if (unitA[1] > unitB[1]) {\n          return 1;\n        }\n        // order by content (count)\n        if (unitA[0] < unitB[0]) {\n          return -1;\n        }\n        if (unitA[0] > unitB[0]) {\n          return 1;\n        }\n        return 0;\n      });\n    },\n    splitUnitName(unitName) {\n      const unitNameSplit = unitName.split(\" \");\n\n      if (!isNaN(unitNameSplit[0])) {\n        unitNameSplit[0] = unitNameSplit[0].replace(\n          App.currencyPattern.separator_thousands,\n          \"\"\n        );\n        unitNameSplit[0] = parseInt(unitNameSplit[0]);\n      }\n\n      return unitNameSplit;\n    },\n  },\n\n  watch: {\n    currentSelection(value) {\n      this.$store.commit(\n        `${this.$props.itemId}/variationSelect/setIsVariationSelected`,\n        !!value\n      );\n    },\n    variations() {\n      // FIX unset variation cache after subsequent variations are loaded\n      this.filteredVariationsCache = {};\n    },\n  },\n};\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VariationSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VariationSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VariationSelect.vue?vue&type=template&id=7d8a2670\"\nimport script from \"./VariationSelect.vue?vue&type=script&lang=js\"\nexport * from \"./VariationSelect.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}