{
  "version": 3,
  "sources": ["/cdn/shop/t/16/assets/goat-product-tryon.js?goat_v=20260727_1"],
  "sourcesContent": ["(() => {\n  if (window.GOATTryOnShare) return;\n  const DB_NAME = 'goat-private-fit-profile';\n  const STORE = 'profile';\n  const productId = document.querySelector('[data-goat-fit-entry]')?.dataset.productId;\n  const productTitle = document.querySelector('[data-goat-fit-entry]')?.dataset.productTitle || 'GOAT jacket';\n\n  const dbAction = async (mode, action) => {\n    const db = await new Promise((resolve, reject) => {\n      const request = indexedDB.open(DB_NAME, 1);\n      request.onupgradeneeded = () => request.result.createObjectStore(STORE);\n      request.onsuccess = () => resolve(request.result);\n      request.onerror = () => reject(request.error);\n    });\n    return new Promise((resolve, reject) => {\n      const transaction = db.transaction(STORE, mode);\n      const request = action(transaction.objectStore(STORE));\n      request.onsuccess = () => resolve(request.result);\n      request.onerror = () => reject(request.error);\n      transaction.oncomplete = () => db.close();\n    });\n  };\n  const resultKey = id => `result:${id}`;\n  const getCached = id => id ? dbAction('readonly', store => store.get(resultKey(id))).catch(() => null) : Promise.resolve(null);\n  const saveCached = (id, blob) => id ? dbAction('readwrite', store => store.put({blob, productId:id, productTitle, savedAt:new Date().toISOString(), version:1}, resultKey(id))).catch(() => null) : Promise.resolve(null);\n  const imageBlob = async image => {\n    const source = image.currentSrc || image.src;\n    if (!source) throw new Error('Preview image is not ready');\n    const response = await fetch(source);\n    if (!response.ok) throw new Error('Preview image could not be prepared');\n    return response.blob();\n  };\n  const bitmapFromBlob = async blob => {\n    if ('createImageBitmap' in window) return createImageBitmap(blob);\n    return new Promise((resolve, reject) => {\n      const image = new Image();\n      const url = URL.createObjectURL(blob);\n      image.onload = () => { URL.revokeObjectURL(url); resolve(image); };\n      image.onerror = () => { URL.revokeObjectURL(url); reject(new Error('Image could not be prepared')); };\n      image.src = url;\n    });\n  };\n  const safeName = value => value.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/(^-|-$)/g,'').slice(0,60) || 'goat-jacket';\n  const inspectGeneratedFace = async image => {\n    if (!('FaceDetector' in window)) return {verified:false, pass:true};\n    try {\n      const faces = await new FaceDetector({fastMode:true, maxDetectedFaces:2}).detect(image);\n      if (faces.length !== 1) return {verified:true, pass:false};\n      const box = faces[0].boundingBox;\n      const width = image.naturalWidth || image.width;\n      const height = image.naturalHeight || image.height;\n      return {\n        verified:true,\n        pass:box.y / height >= .012 && box.width / width >= .05 && (box.y + box.height) / height <= .48\n      };\n    } catch (error) {\n      return {verified:false, pass:true};\n    }\n  };\n  const addResultCheck = async (result, image) => {\n    result.querySelector('[data-goat-result-check]')?.remove();\n    const check = await inspectGeneratedFace(image);\n    const notice = document.createElement('div');\n    notice.className = `goat-result-check${check.verified && !check.pass ? ' is-fail' : ''}`;\n    notice.dataset.goatResultCheck = '';\n    notice.innerHTML = check.verified && !check.pass\n      ? '<strong>Your complete face was not preserved.</strong><span>Do not use this preview to decide. Regenerate with a clear full-body photo that includes space above your head.</span><button type=\"button\">Change photo & regenerate</button>'\n      : '<strong>Before buying</strong><span>Confirm that your complete face is visible. This AI preview is approximate; rely on the product photos for colour, grain, hardware and fit.</span>';\n    const row = result.querySelector('.tryon-result__cta-row');\n    (row || result).insertAdjacentElement(row ? 'beforebegin' : 'beforeend', notice);\n    notice.querySelector('button')?.addEventListener('click', () => {\n      const change = [...result.querySelectorAll('button')].find(node => /change photo|try again|regenerate/i.test(node.textContent || ''));\n      change?.click();\n    });\n  };\n  const shareEditions = [\n    {id:'atelier', name:'Atelier postcard', background:'#e8ded1', ink:'#171513', accent:'#9a704b', line:'#bda98f', headline:'YOUR JACKET. YOUR STORY.'},\n    {id:'noir', name:'After-dark editorial', background:'#141311', ink:'#f6f0e7', accent:'#c39469', line:'#4f463d', headline:'OWN THE ROOM.'},\n    {id:'gallery', name:'Private gallery card', background:'#f4efe7', ink:'#171513', accent:'#d45700', line:'#c9bba9', headline:'THE FIT BEFORE THE FIRST WEAR.'},\n    {id:'signal', name:'GOAT signature card', background:'#d45700', ink:'#fff8ef', accent:'#1a1714', line:'#f3c7aa', headline:'BE THE GOAT, ALWAYS.'}\n  ];\n  const nextShareEdition = () => {\n    const previous = Number(window.sessionStorage.getItem('goat-share-edition') || -1);\n    const offset = 1 + Math.floor(Math.random() * (shareEditions.length - 1));\n    const index = (Math.max(previous, 0) + offset) % shareEditions.length;\n    window.sessionStorage.setItem('goat-share-edition', String(index));\n    return shareEditions[index];\n  };\n  const drawContained = (context, image, x, y, width, height, fill) => {\n    context.fillStyle = fill;\n    context.fillRect(x, y, width, height);\n    const sourceWidth = image.width || image.naturalWidth;\n    const sourceHeight = image.height || image.naturalHeight;\n    const scale = Math.min(width / sourceWidth, height / sourceHeight);\n    const renderedWidth = sourceWidth * scale;\n    const renderedHeight = sourceHeight * scale;\n    context.drawImage(image, x + (width - renderedWidth) / 2, y + (height - renderedHeight) / 2, renderedWidth, renderedHeight);\n  };\n  const drawFallbackLogo = (context, x, y, size, edition) => {\n    context.fillStyle = edition.accent;\n    context.beginPath();\n    context.arc(x + size / 2, y + size / 2, size / 2, 0, Math.PI * 2);\n    context.fill();\n    context.fillStyle = edition.id === 'signal' ? '#fff8ef' : '#fff';\n    context.textAlign = 'center';\n    context.font = `500 ${Math.round(size * .23)}px Georgia, serif`;\n    context.fillText('GOAT', x + size / 2, y + size * .58);\n    context.textAlign = 'left';\n  };\n  const downloadBranded = async (previewBlob, statusNode) => {\n    const edition = nextShareEdition();\n    statusNode.textContent = `Preparing ${edition.name}\u2026`;\n    const previewBitmap = await bitmapFromBlob(previewBlob);\n    const canvas = document.createElement('canvas');\n    canvas.width = 1080;\n    canvas.height = 1350;\n    const context = canvas.getContext('2d');\n    context.fillStyle = edition.background;\n    context.fillRect(0, 0, canvas.width, canvas.height);\n\n    const logoSource = document.querySelector('header img[alt=\"Be the GOAT always\"], .goat-wordmark img')?.currentSrc;\n    let logoBitmap = null;\n    if (logoSource) {\n      try { logoBitmap = await bitmapFromBlob(await (await fetch(logoSource)).blob()); } catch (error) { logoBitmap = null; }\n    }\n    const isGallery = edition.id === 'gallery';\n    const photo = isGallery ? {x:58,y:58,w:742,h:1162} : {x:58,y:58,w:964,h:1082};\n    drawContained(context, previewBitmap, photo.x, photo.y, photo.w, photo.h, edition.id === 'noir' ? '#26221e' : '#d6c8b8');\n    context.strokeStyle = edition.line;\n    context.lineWidth = 2;\n    context.strokeRect(photo.x - 1, photo.y - 1, photo.w + 2, photo.h + 2);\n\n    if (isGallery) {\n      context.save();\n      context.translate(940, 1110);\n      context.rotate(-Math.PI / 2);\n      context.fillStyle = edition.ink;\n      context.font = '500 56px Georgia, serif';\n      context.fillText(edition.headline, 0, 0);\n      context.restore();\n    } else {\n      context.fillStyle = edition.ink;\n      context.font = edition.id === 'noir' ? '500 58px Georgia, serif' : '500 52px Georgia, serif';\n      context.fillText(edition.headline, 58, 1218);\n    }\n\n    const logoSize = isGallery ? 86 : 82;\n    const logoX = isGallery ? 842 : 58;\n    const logoY = isGallery ? 72 : 1242;\n    if (logoBitmap) context.drawImage(logoBitmap, logoX, logoY, logoSize, logoSize);\n    else drawFallbackLogo(context, logoX, logoY, logoSize, edition);\n\n    const title = productTitle.toUpperCase().slice(0, 38);\n    context.fillStyle = edition.ink;\n    context.font = '500 24px Arial, sans-serif';\n    if (isGallery) {\n      context.fillText(title, 842, 1010);\n      context.fillStyle = edition.accent;\n      context.font = '500 20px Arial, sans-serif';\n      context.fillText('@goatofindia', 842, 1046);\n    } else {\n      context.textAlign = 'right';\n      context.fillText(title, 1022, 1268);\n      context.fillStyle = edition.accent;\n      context.font = '500 19px Arial, sans-serif';\n      context.fillText('@goatofindia', 1022, 1302);\n      context.textAlign = 'left';\n    }\n    context.fillStyle = edition.id === 'noir' || edition.id === 'signal' ? 'rgba(255,248,239,.72)' : 'rgba(23,21,19,.62)';\n    context.font = '400 14px Arial, sans-serif';\n    context.fillText('AI PREVIEW \u00B7 ACTUAL LEATHER COLOUR, GRAIN, TEXTURE, PROPORTION AND FIT MAY DIFFER.', 58, 1330);\n\n    const brandedBlob = await new Promise((resolve, reject) => canvas.toBlob(blob => blob ? resolve(blob) : reject(new Error('Download could not be created')), 'image/jpeg', .92));\n    const link = document.createElement('a');\n    link.href = URL.createObjectURL(brandedBlob);\n    link.download = `${safeName(productTitle)}-${edition.id}-goatofindia-instagram.jpg`;\n    document.body.appendChild(link);\n    link.click();\n    link.remove();\n    window.setTimeout(() => URL.revokeObjectURL(link.href), 1500);\n    statusNode.textContent = `${edition.name} downloaded \u00B7 1080 \u00D7 1350 Instagram format.`;\n  };\n  const selectedVariantId = () => {\n    const inputs = [...document.querySelectorAll('form[action*=\"/cart/add\"] [name=\"id\"]')];\n    const active = inputs.find(input => input.value && !input.disabled && input.closest('form')?.offsetParent !== null);\n    return (active || inputs.find(input => input.value && !input.disabled))?.value || '';\n  };\n  const decorateCommerce = result => {\n    const row = result.querySelector('.tryon-result__cta-row');\n    if (!row || row.querySelector('[data-goat-buy-now]')) return;\n    const button = document.createElement('button');\n    button.type = 'button';\n    button.className = 'tryon-button tryon-button--primary tryon-result__cta goat-tryon-buy-now';\n    button.dataset.goatBuyNow = '';\n    button.textContent = 'Buy now';\n    row.appendChild(button);\n    button.addEventListener('click', async () => {\n      const variantId = selectedVariantId();\n      if (!variantId) {\n        button.textContent = 'Choose a size first';\n        return;\n      }\n      button.disabled = true;\n      button.textContent = 'Opening checkout\u2026';\n      try {\n        const root = window.Shopify?.routes?.root || '/';\n        const response = await fetch(`${root}cart/add.js`, {\n          method: 'POST',\n          headers: {'Content-Type':'application/json','Accept':'application/json'},\n          body: JSON.stringify({items:[{id:Number(variantId),quantity:1}]})\n        });\n        if (!response.ok) throw new Error('Could not add this size');\n        window.dataLayer = window.dataLayer || [];\n        window.dataLayer.push({event:'fit_preview_buy_now', product_id:productId, variant_id:variantId});\n        window.location.assign(`${root}checkout`);\n      } catch (error) {\n        button.disabled = false;\n        button.textContent = 'Try Buy now again';\n      }\n    });\n  };\n  const decorateResult = async image => {\n    const source = image.currentSrc || image.src;\n    if (!source || image.dataset.goatShareSource === source) return;\n    const rect = image.getBoundingClientRect();\n    if (rect.width < 260 || rect.height < 320) return;\n    image.dataset.goatShareSource = source;\n    const result = image.closest('.tryon-result, .tryon-result-screen, [class*=\"tryon-result\"]');\n    const imageWrap = image.closest('.tryon-result__image-wrap') || image.parentElement;\n    if (!result || !imageWrap) return;\n    result.querySelectorAll('[data-goat-share-result]').forEach(node => node.remove());\n    decorateCommerce(result);\n    await addResultCheck(result, image);\n    const actions = document.createElement('div');\n    actions.className = 'goat-share-result';\n    actions.dataset.goatShareResult = '';\n    actions.innerHTML = '<button type=\"button\" aria-label=\"Download branded GOAT image\" title=\"Download branded GOAT image\"><span aria-hidden=\"true\">\u2193</span></button><small aria-live=\"polite\"></small>';\n    imageWrap.appendChild(actions);\n    let blob = null;\n    try { blob = await imageBlob(image); await saveCached(productId, blob); } catch (error) { blob = null; }\n    actions.querySelector('button').addEventListener('click', async () => {\n      const statusNode = actions.querySelector('small');\n      actions.classList.add('is-working');\n      try { await downloadBranded(blob || await imageBlob(image), statusNode); }\n      catch (error) { statusNode.textContent = 'This preview could not be exported automatically. Use the fitting-room download, then tag @goatofindia.'; }\n      window.setTimeout(() => actions.classList.remove('is-working'), 2600);\n    });\n  };\n  const findResults = () => {\n    document.querySelectorAll('.tryon-result').forEach(decorateCommerce);\n    document.querySelectorAll('.tryon-result img, .tryon-result-screen img, [class*=\"tryon-result\"] img').forEach(image => {\n      if (image.complete) decorateResult(image);\n      else image.addEventListener('load', () => decorateResult(image), {once:true});\n    });\n  };\n\n  window.GOATTryOnShare = { getCached, downloadBranded };\n  const placeTryOn = () => {\n    if (!document.body.classList.contains('goat-template-product')) return true;\n\n    const button = document.querySelector('button[id^=\"tryon-btn-\"]');\n    if (!button) return false;\n\n    const appSection = button.closest('.shopify-section');\n    if (!appSection) return false;\n    if (appSection.classList.contains('goat-tryon-engine')) return true;\n\n    appSection.querySelector('.goat-tryon-invite')?.remove();\n    appSection.classList.remove('goat-tryon-placement');\n    appSection.classList.add('goat-tryon-engine');\n    button.setAttribute('aria-label', 'GOAT private fitting room engine');\n\n    return true;\n  };\n\n  const initialise = () => {\n    const observer = new MutationObserver(() => {\n      placeTryOn();\n      findResults();\n    });\n    placeTryOn();\n    findResults();\n    observer.observe(document.body, { childList: true, subtree: true, attributes:true, attributeFilter:['src'] });\n  };\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialise, { once: true });\n  else initialise();\n})();\n"],
  "mappings": "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",
  "names": []
}
