{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/custom-product.js?psv=artwork-upload-20260814"],
  "sourcesContent": ["(() => {\n  const root = document.querySelector('[data-ps-product]');\n  if (!root) return;\n\n  const variantData = document.querySelector('[data-ps-variants]');\n  const variants = variantData ? JSON.parse(variantData.textContent) : [];\n  // Shopify's form tag preserves underscore attribute names verbatim. The\n  // section already owns this form class, so it is the stable binding point.\n  const form = root.querySelector('.ps-form');\n  const variantInput = root.querySelector('[data-ps-variant-input]');\n  const price = root.querySelector('[data-ps-price]');\n  const currentPrice = root.querySelector('.ps-price__current');\n  const comparePrice = root.querySelector('[data-ps-compare]');\n  const addButton = root.querySelector('[data-ps-add-button]');\n  const addLabel = root.querySelector('[data-ps-add-label]');\n  const status = root.querySelector('[data-ps-status]');\n  const mainImage = root.querySelector('[data-ps-main-image]');\n  const mainMedia = root.querySelector('.ps-main-media');\n  const artPreview = root.querySelector('[data-ps-art-preview]');\n  const details = root.querySelector('[data-ps-accordions]');\n  const desktopDetailsAnchor = root.querySelector('[data-ps-details-desktop-anchor]');\n  const mobileDetailsAnchor = root.querySelector('[data-ps-details-mobile-anchor]');\n  const productMobileBreakpoint = window.matchMedia('(max-width: 900px)');\n  let activeMediaId = root.querySelector('[data-ps-media].is-active')?.dataset.mediaId || root.querySelector('[data-ps-media]')?.dataset.mediaId || '';\n  // The source catalog keeps one clean artwork image as the final gallery item.\n  // Custom framing is intentionally previewed only on that image, so regular\n  // lifestyle/detail images never receive the visual treatment.\n  const customPreviewMediaId = [...root.querySelectorAll('[data-ps-media]')].at(-1)?.dataset.mediaId || '';\n  let mediaSwitchToken = 0;\n  let framingAddonPrice = 0;\n\n  const placeDetailsForViewport = () => {\n    if (!details || !desktopDetailsAnchor || !mobileDetailsAnchor) return;\n    const anchor = productMobileBreakpoint.matches ? mobileDetailsAnchor : desktopDetailsAnchor;\n    anchor.after(details);\n  };\n\n  placeDetailsForViewport();\n  productMobileBreakpoint.addEventListener('change', placeDetailsForViewport);\n\n  const fitArtPreview = () => {\n    if (!artPreview || !mainMedia || !mainImage?.naturalWidth || !mainImage?.naturalHeight) return;\n    const ratio = mainImage.naturalWidth / mainImage.naturalHeight;\n    artPreview.style.setProperty('--pdp-aspect', `${mainImage.naturalWidth} / ${mainImage.naturalHeight}`);\n    artPreview.dataset.psPreviewOrientation = ratio > 1.08 ? 'landscape' : ratio < .92 ? 'portrait' : 'square';\n    root.dispatchEvent(new CustomEvent('product:preview-orientation', { detail: { orientation: artPreview.dataset.psPreviewOrientation } }));\n  };\n\n  mainImage?.addEventListener('load', fitArtPreview);\n  window.addEventListener('resize', fitArtPreview, { passive: true });\n  fitArtPreview();\n\n  const money = (cents) => new Intl.NumberFormat(document.documentElement.lang || 'en', { style: 'currency', currency: window.Shopify?.currency?.active || 'USD' }).format(cents / 100);\n  const currentVariant = () => variants.find((item) => String(item.id) === String(variantInput?.value));\n  const renderPrice = (variant) => {\n    if (!variant || !currentPrice) return;\n    currentPrice.textContent = money(Number(variant.price || 0) + framingAddonPrice);\n    if (variant.compare_at_price > variant.price) {\n      comparePrice.textContent = money(Number(variant.compare_at_price || 0) + framingAddonPrice);\n      comparePrice.classList.remove('is-hidden');\n    } else {\n      comparePrice.classList.add('is-hidden');\n    }\n  };\n  root.addEventListener('product:framing-price-change', (event) => {\n    framingAddonPrice = Number(event.detail?.addonPrice || 0);\n    renderPrice(currentVariant());\n  });\n  const selectedValues = () => {\n    const activeVariant = variants.find((item) => String(item.id) === String(variantInput?.value));\n    const values = [...(activeVariant?.options || [])];\n    root.querySelectorAll('[data-ps-option-group]').forEach((group) => {\n      const position = Number(group.dataset.optionPosition) - 1;\n      const selected = group.querySelector('input:checked')?.value;\n      if (position >= 0 && selected) values[position] = selected;\n    });\n    return values;\n  };\n\n  const setMedia = (id) => {\n    if (root.hasAttribute('data-pf-photo-customizer') && root.dataset.pfPhotoReady === 'true') return;\n    const thumbnail = root.querySelector(`[data-media-id=\"${id}\"]`);\n    if (!thumbnail || !mainImage) return;\n    activeMediaId = id;\n    root.querySelectorAll('[data-ps-media]').forEach((item) => item.classList.remove('is-active'));\n    thumbnail.classList.add('is-active');\n    const switchToken = ++mediaSwitchToken;\n    const commitMedia = () => {\n      if (root.hasAttribute('data-pf-photo-customizer') && root.dataset.pfPhotoReady === 'true') return;\n      if (switchToken !== mediaSwitchToken) return;\n      if (thumbnail.dataset.mediaSrcset) {\n        mainImage.srcset = thumbnail.dataset.mediaSrcset;\n      } else {\n        mainImage.removeAttribute('srcset');\n      }\n      mainImage.src = thumbnail.dataset.mediaSrc;\n      mainImage.alt = thumbnail.dataset.mediaAlt || '';\n      mainImage.style.opacity = '1';\n      root.dispatchEvent(new CustomEvent('product:media-change', { detail: { mediaId: activeMediaId, isCustomPreview: activeMediaId === customPreviewMediaId } }));\n    };\n    const preload = new Image();\n    let committed = false;\n    const finishPreload = () => {\n      if (committed) return;\n      committed = true;\n      commitMedia();\n    };\n    preload.onload = finishPreload;\n    preload.onerror = finishPreload;\n    if (thumbnail.dataset.mediaSrcset) {\n      preload.srcset = thumbnail.dataset.mediaSrcset;\n      preload.sizes = mainImage.sizes || '(min-width: 901px) 58vw, 100vw';\n    }\n    preload.src = thumbnail.dataset.mediaSrc;\n    if (preload.complete) finishPreload();\n    thumbnail.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n  };\n\n  const changeMedia = (direction) => {\n    const media = [...root.querySelectorAll('[data-ps-media]')];\n    if (!media.length) return;\n    const activeIndex = Math.max(media.findIndex((item) => item.classList.contains('is-active')), 0);\n    const nextIndex = (activeIndex + direction + media.length) % media.length;\n    setMedia(media[nextIndex].dataset.mediaId);\n  };\n\n  const updateVariant = () => {\n    if (!variants.length || !variantInput) return;\n    const values = selectedValues();\n    const variant = variants.find((item) => item.options.every((value, index) => value === values[index]));\n    if (!variant) {\n      if (addButton) addButton.disabled = true;\n      if (addLabel) addLabel.textContent = addButton?.dataset.unavailableLabel || 'Unavailable';\n      if (status) status.textContent = 'This option combination is unavailable.';\n      return;\n    }\n    variantInput.value = variant.id;\n    renderPrice(variant);\n    if (addButton) addButton.disabled = !variant.available;\n    if (addLabel) addLabel.textContent = variant.available ? (addButton?.dataset.addLabel || 'Add to cart') : (addButton?.dataset.soldOutLabel || 'Sold out');\n    if (status) status.textContent = variant.available ? '' : 'This variant is sold out.';\n    if (variant.featured_media?.id) setMedia(variant.featured_media.id);\n    root.dispatchEvent(new CustomEvent('product:variant-change', { detail: { variant } }));\n  };\n\n  root.querySelectorAll('[data-ps-media]').forEach((thumbnail) => thumbnail.addEventListener('click', () => setMedia(thumbnail.dataset.mediaId)));\n  root.querySelectorAll('[data-ps-thumbnail-scroll]').forEach((control) => control.addEventListener('click', () => {\n    const rail = root.querySelector('[data-ps-thumbnail-rail]');\n    const item = rail?.querySelector('[data-ps-media]');\n    if (!rail || !item) return;\n    const direction = Number(control.dataset.psThumbnailScroll);\n    rail.scrollBy({ top: direction * (item.offsetHeight + 10), behavior: 'smooth' });\n  }));\n  root.querySelectorAll('[data-ps-media-direction]').forEach((control) => control.addEventListener('click', () => changeMedia(Number(control.dataset.psMediaDirection))));\n  let mediaSwipeStart = null;\n  mainMedia?.addEventListener('pointerdown', (event) => {\n    if (!window.matchMedia('(max-width: 900px)').matches || !event.isPrimary) return;\n    mediaSwipeStart = { id: event.pointerId, x: event.clientX, y: event.clientY };\n  }, { passive: true });\n  mainMedia?.addEventListener('pointerup', (event) => {\n    if (!mediaSwipeStart || mediaSwipeStart.id !== event.pointerId) return;\n    const deltaX = event.clientX - mediaSwipeStart.x;\n    const deltaY = event.clientY - mediaSwipeStart.y;\n    mediaSwipeStart = null;\n    if (Math.abs(deltaX) < 32 || Math.abs(deltaX) <= Math.abs(deltaY)) return;\n    changeMedia(deltaX < 0 ? 1 : -1);\n  }, { passive: true });\n  mainMedia?.addEventListener('pointercancel', () => { mediaSwipeStart = null; }, { passive: true });\n  root.querySelectorAll('[data-ps-accordion]').forEach((accordion) => {\n    const trigger = accordion.querySelector('[data-ps-accordion-trigger]');\n    const panel = accordion.querySelector('[data-ps-accordion-panel]');\n    if (!trigger || !panel) return;\n\n    trigger.addEventListener('click', () => {\n      const isOpen = accordion.classList.toggle('is-open');\n      trigger.setAttribute('aria-expanded', String(isOpen));\n      panel.setAttribute('aria-hidden', String(!isOpen));\n    });\n  });\n  root.querySelectorAll('[data-ps-option-group] input').forEach((input) => input.addEventListener('change', () => {\n    const label = input.closest('[data-ps-option-group]')?.querySelector('[data-ps-option-label]');\n    if (label) label.textContent = input.value;\n    updateVariant();\n  }));\n  root.querySelectorAll('[data-ps-choice-group]').forEach((group) => group.querySelectorAll('[data-ps-choice]').forEach((choice) => choice.addEventListener('click', () => {\n    group.querySelectorAll('[data-ps-choice]').forEach((item) => {\n      item.classList.remove('is-selected');\n      item.setAttribute('aria-pressed', 'false');\n      item.setAttribute('aria-selected', 'false');\n    });\n    choice.classList.add('is-selected');\n    choice.setAttribute('aria-pressed', 'true');\n    choice.setAttribute('aria-selected', 'true');\n    const choiceLabel = choice.dataset.psChoiceLabel || choice.dataset.psFrameName || choice.textContent.trim();\n    const output = group.closest('.ps-config-group')?.querySelector('[data-ps-choice-output]');\n    if (output) output.textContent = choiceLabel;\n  })));\n  root.addEventListener('product:show-custom-preview', () => {\n    if (customPreviewMediaId && activeMediaId !== customPreviewMediaId) setMedia(customPreviewMediaId);\n  });\n  root.dispatchEvent(new CustomEvent('product:media-change', { detail: { mediaId: activeMediaId, isCustomPreview: activeMediaId === customPreviewMediaId } }));\n  root.querySelectorAll('[data-ps-quantity-change]').forEach((button) => button.addEventListener('click', () => { const input = root.querySelector('[data-ps-quantity] input'); if (input) input.value = Math.max(1, Number(input.value || 1) + Number(button.dataset.psQuantityChange)); }));\n  const offerToggle = root.querySelector('[data-ps-offer-toggle]');\n  const offerDetails = root.querySelector('[data-ps-offer-details]');\n  let offerCloseTimer;\n  offerToggle?.addEventListener('click', () => {\n    const open = offerToggle.getAttribute('aria-expanded') !== 'true';\n    offerToggle.setAttribute('aria-expanded', String(open));\n    window.dataLayer?.push({\n      event: 'product_offer_toggle',\n      product_id: root.dataset.psProductId || null,\n      block_id: offerToggle.dataset.psOfferBlockId || null,\n      expanded: open,\n    });\n    if (!offerDetails) return;\n\n    window.clearTimeout(offerCloseTimer);\n    if (open) {\n      offerDetails.hidden = false;\n      window.requestAnimationFrame(() => offerDetails.classList.add('is-open'));\n      return;\n    }\n\n    offerDetails.classList.remove('is-open');\n    offerCloseTimer = window.setTimeout(() => { offerDetails.hidden = true; }, 220);\n  });\n  form?.addEventListener('submit', async (event) => {\n    if (root.hasAttribute('data-pf-photo-customizer')) return;\n    if (!addButton || addButton.disabled) return;\n    event.preventDefault();\n    addButton.disabled = true;\n    addLabel.textContent = 'Adding\u2026';\n    // Open immediately so the customer gets feedback before Shopify returns\n    // the refreshed cart payload.\n    window.CartDrawer?.openLoading();\n    try {\n      const quantity = Math.max(1, Number(root.querySelector('[data-ps-quantity] input')?.value || 1));\n      const cartPayload = root.productFraming\n        ? root.productFraming.getCartItems(variantInput.value, quantity)\n        : { items: [{ id: Number(variantInput.value), quantity }] };\n      if (!window.CustomProductCart) throw new Error('The cart service is unavailable. Please refresh and try again.');\n      const cartResult = await window.CustomProductCart.add({ form, cartPayload, artwork: root.productArtwork });\n      const cart = cartResult.cart;\n      if (cart) document.dispatchEvent(new CustomEvent('cart:updated', { detail: { cart } }));\n      window.dataLayer?.push({\n        event: 'framing_configuration_added',\n        product_variant_id: String(variantInput.value),\n        configuration_id: cartPayload.configurationId || null,\n        passepartout_variant_id: cartPayload.selected?.passepartout?.id || null,\n        frame_variant_id: cartPayload.selected?.frame?.id || null,\n        artwork_uploaded: cartResult.hasArtwork,\n        quantity,\n      });\n      if (cartResult.hasArtwork) {\n        const artworkMetadata = root.productArtwork?.getMetadata?.();\n        window.dataLayer?.push({\n          event: 'custom_artwork_added_to_cart',\n          product_variant_id: String(variantInput.value),\n          file_type: artworkMetadata?.type || null,\n          file_size_bytes: artworkMetadata?.size || null,\n          image_width: artworkMetadata?.width || null,\n          image_height: artworkMetadata?.height || null,\n        });\n      }\n      if (cart) {\n        window.CartDrawer?.open(cart);\n      } else {\n        window.CartDrawer?.openAdded(quantity);\n      }\n      addLabel.textContent = 'Added to cart';\n    } catch (error) {\n      console.error(`Custom product cart add failed. status=${error.status || 'unknown'} message=${error.message || 'Unknown cart error'}`);\n      window.CartDrawer?.openError();\n      status.textContent = error.message || 'Could not add this item to cart.';\n      addLabel.textContent = 'Try again';\n      window.dataLayer?.push({\n        event: 'custom_product_cart_add_failed',\n        product_variant_id: String(variantInput.value),\n        artwork_uploaded: Boolean(root.productArtwork?.getFile?.()),\n        http_status: error.status || null,\n      });\n    } finally {\n      addButton.disabled = false;\n      window.setTimeout(() => updateVariant(), 900);\n    }\n  });\n})();\n\n\n"],
  "mappings": "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",
  "names": []
}
