{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/product-card-link.js?ddd=45482"],
  "sourcesContent": ["// Create a new custom element for product links with images for transitions to PDP\nclass ProductCardLink extends HTMLElement {\n  connectedCallback() {\n    this.addEventListener('click', this.#handleClick);\n  }\n\n  disconnectedCallback() {\n    this.removeEventListener('click', this.#handleClick);\n  }\n\n  get productTransitionEnabled() {\n    return this.getAttribute('data-product-transition') === 'true';\n  }\n\n  get featuredMediaUrl() {\n    return this.getAttribute('data-featured-media-url');\n  }\n\n  /**\n   * Handles the click event for the product link\n   * @param {Event} event\n   */\n  #handleClick = (event) => {\n    // If the event has been prevented, don't do anything, another component is handling the click\n    if (event.defaultPrevented) return;\n\n    // If the event was on an interactive element, don't do anything, this is not a navigation\n    if (event.target instanceof Element) {\n      const interactiveElement = event.target.closest('button, input, label, select, [tabindex=\"1\"]');\n      if (interactiveElement) return;\n    }\n\n    const gallery = this.querySelector('[data-view-transition-to-main-product]');\n    if (!this.productTransitionEnabled || !(gallery instanceof HTMLElement)) return;\n\n    // Check on the current active image, whether it's a product card image or a resource card image\n    const activeImage =\n      gallery.querySelector('slideshow-slide[aria-hidden=\"false\"] [transitionToProduct=\"true\"]') ||\n      gallery.querySelector('[transitionToProduct=\"true\"]:last-child');\n\n    if (activeImage instanceof HTMLImageElement) this.#setImageSrcset(activeImage);\n\n    gallery.setAttribute('data-view-transition-type', 'product-image-transition');\n    gallery.setAttribute('data-view-transition-triggered', 'true');\n  };\n\n  /**\n   * Sets the srcset for the image\n   * @param {HTMLImageElement} image\n   */\n  #setImageSrcset(image) {\n    if (!this.featuredMediaUrl) return;\n\n    const currentImageUrl = new URL(image.currentSrc);\n\n    // Deliberately not using origin, as it includes the protocol, which is usually skipped for featured media\n    const currentImageRawUrl = currentImageUrl.host + currentImageUrl.pathname;\n\n    if (!this.featuredMediaUrl.includes(currentImageRawUrl)) {\n      const imageFade = image.animate([{ opacity: 0.8 }, { opacity: 1 }], {\n        duration: 125,\n        easing: 'ease-in-out',\n      });\n\n      imageFade.onfinish = () => {\n        image.srcset = this.featuredMediaUrl ?? '';\n      };\n    }\n  }\n}\n\nif (!customElements.get('product-card-link')) {\n  customElements.define('product-card-link', ProductCardLink);\n}\n"],
  "mappings": "AACA,MAAM,wBAAwB,WAAY,CACxC,mBAAoB,CAClB,KAAK,iBAAiB,QAAS,KAAK,YAAY,CAClD,CAEA,sBAAuB,CACrB,KAAK,oBAAoB,QAAS,KAAK,YAAY,CACrD,CAEA,IAAI,0BAA2B,CAC7B,OAAO,KAAK,aAAa,yBAAyB,IAAM,MAC1D,CAEA,IAAI,kBAAmB,CACrB,OAAO,KAAK,aAAa,yBAAyB,CACpD,CAMA,aAAgB,OAAU,CAKxB,GAHI,MAAM,kBAGN,MAAM,kBAAkB,SACC,MAAM,OAAO,QAAQ,8CAA8C,EACtE,OAG1B,MAAM,QAAU,KAAK,cAAc,wCAAwC,EAC3E,GAAI,CAAC,KAAK,0BAA4B,EAAE,mBAAmB,aAAc,OAGzE,MAAM,YACJ,QAAQ,cAAc,mEAAmE,GACzF,QAAQ,cAAc,yCAAyC,EAE7D,uBAAuB,kBAAkB,KAAK,gBAAgB,WAAW,EAE7E,QAAQ,aAAa,4BAA6B,0BAA0B,EAC5E,QAAQ,aAAa,iCAAkC,MAAM,CAC/D,EAMA,gBAAgB,MAAO,CACrB,GAAI,CAAC,KAAK,iBAAkB,OAE5B,MAAM,gBAAkB,IAAI,IAAI,MAAM,UAAU,EAG1C,mBAAqB,gBAAgB,KAAO,gBAAgB,SAElE,GAAI,CAAC,KAAK,iBAAiB,SAAS,kBAAkB,EAAG,CACvD,MAAM,UAAY,MAAM,QAAQ,CAAC,CAAE,QAAS,EAAI,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAClE,SAAU,IACV,OAAQ,aACV,CAAC,EAED,UAAU,SAAW,IAAM,CACzB,MAAM,OAAS,KAAK,kBAAoB,EAC1C,CACF,CACF,CACF,CAEK,eAAe,IAAI,mBAAmB,GACzC,eAAe,OAAO,oBAAqB,eAAe",
  "names": []
}
