{"version":3,"file":"listings-Cg7JlftN.js","sources":["../../../app/javascript/modules/listings.js"],"sourcesContent":["import { on } from \"../utils/listeners\";\nimport api from \"../api/index\";\n\nconst listings = () => {\n  on(\"mouseover\", \".product .swatch\", el => {\n    if (el.classList.contains(\"active\")) return;\n\n    const productImageContainer = el\n      .closest(\".product\")\n      .querySelector(\".product-image\");\n    const image = {\n      url: el.dataset.imageUrl\n    };\n    const imageElement = new Image();\n    imageElement.src = image.url;\n    imageElement.dataset.index = el.dataset.index;\n    imageElement.setAttribute(\n      \"class\",\n      \"absolute pin img-responsive bg-paper hover-img opacity-0\"\n    );\n    productImageContainer.appendChild(imageElement);\n    imageElement.onload = () => {\n      imageElement.classList.remove(\"opacity-0\");\n    };\n  });\n\n  on(\"mouseout\", \".product .swatch\", (el, e) => {\n    if (el.classList.contains(\"active\")) return;\n\n    const indexToRemove = el.dataset.index;\n    const productImageContainer = el\n      .closest(\".product\")\n      .querySelector(\".product-image\");\n    const imageToRemove = productImageContainer.querySelector(\n      `[data-index=\"${indexToRemove}\"]`\n    );\n    if (!e.relatedTarget?.classList.contains(\"swatch\")) {\n      imageToRemove.classList.add(\"opacity-0\");\n    }\n    setTimeout(() => {\n      const allImagesMatchingIndex = productImageContainer.querySelectorAll(\n        `[data-index=\"${indexToRemove}\"]`\n      );\n      allImagesMatchingIndex.forEach(image => {\n        image.remove();\n      });\n    }, 400);\n  });\n\n  on(\"click\", \".product .swatch\", async (el, e) => {\n    // We replace the entire listing element on change\n\n    const listing = e.target.closest(\"div\").parentNode;\n    const parent = listing.parentNode;\n    const { slug } = el.dataset;\n    const result = await api.get(`/${slug}/listing_variant`);\n    const divWrapper = document.createElement(\"div\");\n\n    divWrapper.innerHTML = result.data;\n\n    const replacementListing = divWrapper.firstElementChild;\n    const listingImage = replacementListing.querySelector(\"img\");\n\n    listingImage.classList.add(\"opacity-0\");\n\n    listingImage.addEventListener(\"load\", () => {\n      listingImage.classList.remove(\"opacity-0\");\n    });\n\n    parent.replaceChild(replacementListing, listing);\n\n    window.resetFavourites();\n  });\n};\n\nexport default listings;\n"],"names":["listings","on","el","productImageContainer","image","imageElement","e","indexToRemove","imageToRemove","_a","listing","parent","slug","result","api","divWrapper","replacementListing","listingImage"],"mappings":"oFAGK,MAACA,EAAW,IAAM,CACrBC,EAAG,YAAa,mBAAoBC,GAAM,CACxC,GAAIA,EAAG,UAAU,SAAS,QAAQ,EAAG,OAErC,MAAMC,EAAwBD,EAC3B,QAAQ,UAAU,EAClB,cAAc,gBAAgB,EAC3BE,EAAQ,CACZ,IAAKF,EAAG,QAAQ,QACjB,EACKG,EAAe,IAAI,MACzBA,EAAa,IAAMD,EAAM,IACzBC,EAAa,QAAQ,MAAQH,EAAG,QAAQ,MACxCG,EAAa,aACX,QACA,0DACD,EACDF,EAAsB,YAAYE,CAAY,EAC9CA,EAAa,OAAS,IAAM,CAC1BA,EAAa,UAAU,OAAO,WAAW,CAC1C,CACL,CAAG,EAEDJ,EAAG,WAAY,mBAAoB,CAACC,EAAII,IAAM,OAC5C,GAAIJ,EAAG,UAAU,SAAS,QAAQ,EAAG,OAErC,MAAMK,EAAgBL,EAAG,QAAQ,MAC3BC,EAAwBD,EAC3B,QAAQ,UAAU,EAClB,cAAc,gBAAgB,EAC3BM,EAAgBL,EAAsB,cAC1C,gBAAgBI,CAAa,IAC9B,GACIE,EAAAH,EAAE,gBAAF,MAAAG,EAAiB,UAAU,SAAS,WACvCD,EAAc,UAAU,IAAI,WAAW,EAEzC,WAAW,IAAM,CACgBL,EAAsB,iBACnD,gBAAgBI,CAAa,IAC9B,EACsB,QAAQH,GAAS,CACtCA,EAAM,OAAQ,CACtB,CAAO,CACF,EAAE,GAAG,CACV,CAAG,EAEDH,EAAG,QAAS,mBAAoB,MAAOC,EAAII,IAAM,CAG/C,MAAMI,EAAUJ,EAAE,OAAO,QAAQ,KAAK,EAAE,WAClCK,EAASD,EAAQ,WACjB,CAAE,KAAAE,GAASV,EAAG,QACdW,EAAS,MAAMC,EAAI,IAAI,IAAIF,CAAI,kBAAkB,EACjDG,EAAa,SAAS,cAAc,KAAK,EAE/CA,EAAW,UAAYF,EAAO,KAE9B,MAAMG,EAAqBD,EAAW,kBAChCE,EAAeD,EAAmB,cAAc,KAAK,EAE3DC,EAAa,UAAU,IAAI,WAAW,EAEtCA,EAAa,iBAAiB,OAAQ,IAAM,CAC1CA,EAAa,UAAU,OAAO,WAAW,CAC/C,CAAK,EAEDN,EAAO,aAAaK,EAAoBN,CAAO,EAE/C,OAAO,gBAAiB,CAC5B,CAAG,CACH"}