1customElements.get("pdp-promo-strip")||customElements.define("pdp-promo-strip",class extends HTMLElement{connectedCallback(){this.setUpCopy(),this.setUpCountdown()}disconnectedCallback(){this.timer&&clearInterval(this.timer)}setUpCopy(){const button=this.querySelector("[data-pdp-copy]");button&&button.addEventListener("click",async()=>{const code=button.dataset.pdpCopy;try{await navigator.clipboard.writeText(code)}catch{const range=document.createRange();range.selectNodeContents(button.querySelector(".pdp-promo__code-value"));const selection=window.getSelection();selection.removeAllRanges(),selection.addRange(range);return}button.classList.add("is-copied"),button.setAttribute("aria-live","polite"),clearTimeout(this.copiedTimer),this.copiedTimer=setTimeout(()=>button.classList.remove("is-copied"),2e3)})}setUpCountdown(){const countdown=this.querySelector("[data-pdp-countdown]");if(!countdown)return;const deadline=new Date(countdown.dataset.pdpCountdown.trim().replace(" ","T"));if(Number.isNaN(deadline.getTime()))return;const output=countdown.querySelector("[data-pdp-countdown-value]"),tick=()=>{const remaining=deadline.getTime()-Date.now();if(remaining<=0){countdown.hidden=!0,clearInterval(this.timer);return}const totalSeconds=Math.floor(remaining/1e3),hours=Math.floor(totalSeconds/3600),minutes=Math.floor(totalSeconds%3600/60),seconds=totalSeconds%60,pad=value=>String(value).padStart(2,"0");output.textContent=`${pad(hours)}:${pad(minutes)}:${pad(seconds)}`,countdown.hidden=!1};tick(),this.timer=setInterval(tick,1e3)}}),customElements.get("pdp-showroom-popover")||customElements.define("pdp-showroom-popover",class extends HTMLElement{connectedCallback(){this.trigger=this.querySelector("[data-pdp-showroom-trigger]"),this.popup=this.querySelector("[data-pdp-showroom-popup]"),!(!this.trigger||!this.popup)&&(this.onDocumentClick=this.handleDocumentClick.bind(this),this.onKeydown=this.handleKeydown.bind(this),this.trigger.addEventListener("click",event=>{event.preventDefault(),this.toggle(this.popup.hidden)}))}disconnectedCallback(){document.removeEventListener("click",this.onDocumentClick),document.removeEventListener("keydown",this.onKeydown)}toggle(open){if(this.popup.hidden=!open,this.trigger.setAttribute("aria-expanded",String(open)),open){document.addEventListener("click",this.onDocumentClick),document.addEventListener("keydown",this.onKeydown);const rect=this.popup.getBoundingClientRect(),overflow=rect.right-document.documentElement.clientWidth;this.popup.style.left=overflow>0?`${Math.max(-rect.left,-overflow-8)}px`:""}else document.removeEventListener("click",this.onDocumentClick),document.removeEventListener("keydown",this.onKeydown)}handleDocumentClick(event){this.contains(event.target)||this.toggle(!1)}handleKeydown(event){event.key==="Escape"&&(this.toggle(!1),this.trigger.focus())}});class PdpGallery{constructor(root){this.root=root,this.component=root.querySelector("swiper-component"),this.component&&(this.thumbs=Array.from(root.querySelectorAll("[data-pdp-gallery-thumb]")),this.prev=root.querySelector("[data-pdp-gallery-prev]"),this.next=root.querySelector("[data-pdp-gallery-next]"),this.whenReady().then(swiper=>this.bind(swiper)))}whenReady(){return new Promise(resolve=>{const check=()=>{if(this.component.swiper)return resolve(this.component.swiper);requestAnimationFrame(check)};check()})}bind(swiper){this.thumbs.forEach(thumb=>{thumb.addEventListener("click",()=>{swiper.slideTo(Number(thumb.dataset.pdpGalleryThumb))})}),this.prev&&this.prev.addEventListener("click",()=>swiper.slidePrev()),this.next&&this.next.addEventListener("click",()=>swiper.slideNext());const sync=()=>{const index=swiper.activeIndex;this.thumbs.forEach(thumb=>{thumb.classList.toggle("is-active",Number(thumb.dataset.pdpGalleryThumb)===index)}),this.prev&&this.prev.toggleAttribute("hidden",swiper.isBeginning),this.next&&this.next.toggleAttribute("hidden",swiper.isEnd)};swiper.on("slideChange",sync),sync()}}function resolveAnchors(scope=document){scope.querySelectorAll("[data-pdp-anchor-link]").forEach(link=>{const id=link.getAttribute("href");!id||!id.startsWith("#")||(link.hidden=!document.querySelector(id))}),scope.querySelectorAll("[data-pdp-anchor-soft]").forEach(link=>{const id=link.dataset.pdpHref||link.getAttribute("href");!id||!id.startsWith("#")||(document.querySelector(id)?(link.setAttribute("href",id),link.removeAttribute("aria-disabled")):(link.dataset.pdpHref=id,link.removeAttribute("href"),link.setAttribute("aria-disabled","true")))})}function setUpSelfCorrectingScroll(scope=document){scope.addEventListener("click",event=>{const link=event.target.closest("[data-pdp-anchor-soft]");if(!link)return;const id=link.getAttribute("href"),target=id&&id.startsWith("#")?document.querySelector(id):null;if(!target||target.hasAttribute("data-pdp-tab-anchor"))return;event.preventDefault();const behavior=Theme?.config?.motionReduced?"auto":"smooth",settle=()=>target.scrollIntoView({behavior,block:"start"});settle(),setTimeout(settle,700),setTimeout(settle,1600)})}function revealAnchorLinks(scope=document){resolveAnchors(scope);let tries=0;const retry=setInterval(()=>{resolveAnchors(scope),++tries>
1=10&&clearInterval(retry)},500);window.addEventListener("load",()=>resolveAnchors(scope),{once:!0})}let variantMediaSubscribed=!1;function setUpVariantMedia(){variantMediaSubscribed||typeof subscribe!="function"||(variantMediaSubscribed=!0,subscribe(PUB_SUB_EVENTS.variantChange,event=>{const mediaId=event?.data?.variant?.featured_media?.id;mediaId&&document.querySelectorAll("[data-pdp-gallery]").forEach(gallery=>{const swiper=gallery.querySelector("swiper-component")?.swiper;if(!swiper)return;const index=Array.from(swiper.slides).findIndex(slide=>Number(slide.dataset.mediaId)===Number(mediaId));index!==-1&&index!==swiper.activeIndex&&swiper.slideTo(index)})}))}let showroomSubscribed=!1;function setUpShowroom(){showroomSubscribed||typeof subscribe!="function"||(showroomSubscribed=!0,subscribe(PUB_SUB_EVENTS.variantChange,event=>{const variantId=event?.data?.variant?.id;variantId&&document.querySelectorAll(`[data-pdp-showroom][data-variant-ids*=",${variantId},"]`).forEach(showroom=>{showroom.querySelectorAll("[data-pdp-showroom-variant]").forEach(group=>{const hide=Number(group.dataset.pdpShowroomVariant)!==Number(variantId);hide&&group.querySelectorAll("pdp-showroom-popover").forEach(popover=>popover.toggle?.(!1)),group.hidden=hide})})}))}function setUpPopularity(scope=document){typeof subscribe=="function"&&subscribe(PUB_SUB_EVENTS.variantChange,event=>{const html=event?.data?.html;if(!html)return;const section=event.data.sectionId,root=section&&document.querySelector(`product-info[data-section="${section}"]`)||scope,source=html.querySelector("[data-pdp-popularity]");source&&root.querySelectorAll("[data-pdp-popularity]").forEach(destination=>{destination.innerHTML=source.innerHTML,destination.classList.toggle("hidden",source.classList.contains("hidden"))})})}let galleryBadgesSubscribed=!1;function setUpGalleryBadges(){galleryBadgesSubscribed||typeof subscribe!="function"||(galleryBadgesSubscribed=!0,subscribe(PUB_SUB_EVENTS.variantChange,event=>{const source=event?.data?.html?.querySelector("[data-pdp-gallery-badges]");source&&document.querySelectorAll(`[data-pdp-gallery-badges][data-product-id="${source.dataset.productId}"]`).forEach(destination=>{destination.innerHTML=source.innerHTML})}))}function setUpWishlistMover(scope=document){const slot=scope.querySelector("[data-pdp-wishlist-slot]"),info=scope.querySelector(".product__info-container");if(!slot||!info)return;const mobile=window.matchMedia("(max-width: 749px)");let home=null;const place=()=>{const button=info.querySelector(".st-wishlist-button")||slot.querySelector(".st-wishlist-button");if(button){if(mobile.matches)button.parentElement!==slot&&(home={parent:button.parentElement,next:button.nextSibling},slot.appendChild(button));else if(button.parentElement===slot&&home?.parent?.isConnected){const next=home.next&&home.next.parentElement===home.parent?home.next:null;home.parent.insertBefore(button,next)}}};place(),typeof mobile.addEventListener=="function"?mobile.addEventListener("change",place):mobile.addListener(place),new MutationObserver(place).observe(info,{childList:!0,subtree:!0})}const WISHLIST_ADDED_STATE=/added|active|selected|in-?(wish)?list|remove/i;function setUpSoldOutWishlist(scope=document){const proxy=scope.querySelector("[data-pdp-wishlist-proxy]");if(!proxy)return;const label=proxy.querySelector(".pdp-buy__wishlist-label"),findAppButton=()=>scope.querySelector(".product__info-container .st-wishlist-button, [data-pdp-wishlist-slot] .st-wishlist-button");let watched=null;const stateObserver=new MutationObserver(()=>sync()),sync=()=>{const button=findAppButton();if(proxy.hidden=!button,!button)return;button!==watched&&(stateObserver.disconnect(),stateObserver.observe(button,{attributes:!0,attributeFilter:["class","aria-pressed"]}),watched=button);const added=button.getAttribute("aria-pressed")==="true"||WISHLIST_ADDED_STATE.test(button.className);proxy.setAttribute("aria-pressed",String(added));const text=added?proxy.dataset.labelAdded:proxy.dataset.labelAdd;label&&label.textContent!==text&&(label.textContent=text)};proxy.addEventListener("click",()=>findAppButton()?.click()),sync();const root=scope.querySelector(".product")||scope;new MutationObserver(sync).observe(root,{childList:!0,subtree:!0})}function initParfiumPdp(){setUpSelfCorrectingScroll(),document.querySelectorAll("[data-pdp-gallery]").forEach(root=>new PdpGallery(root)),revealAnchorLinks(),setUpVariantMedia(),setUpShowroom(),setUpPopularity(),setUpGalleryBadges(),setUpWishlistMover(),setUpSoldOutWishlist()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initParfiumPdp):initParfiumPdp(),document.addEventListener("shopify:section:load",event=>{event.target.querySelectorAll("[data-pdp-gallery]").forEach(root=>new PdpGallery(root)),revealAnchorLinks(event.target),setUpPopularity(event.target),setUpWishlistMover(event.target),setUpSoldOutWishlist(event.target)}); 2//# sourceMappingURL=/cdn/shop/t/4/assets/pdp-parfium.js.map?v=27696532968949259341790774527
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.