{
  "version": 3,
  "sources": ["/cdn/shop/t/11/assets/wahup-custom-shirt-popup-cart.js?cb=1781681816"],
  "sourcesContent": ["// Wahup custom shirt popup cart flow with Design Mode layers build 20260618034500\n(function () {\n  function ready(callback) {\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', callback, { once: true });\n    else callback();\n  }\n\n  function apiBase(root) {\n    var endpoint = root.getAttribute('data-endpoint') || 'https://a.wahup.com/api/custom-shirts/popup/';\n    return endpoint.replace(/\\/popup\\/?(?:\\?.*)?$/, '/');\n  }\n\n  function buildUrl(root) {\n    var endpoint = root.getAttribute('data-endpoint') || 'https://a.wahup.com/api/custom-shirts/popup/';\n    var url = new URL(endpoint, window.location.href);\n    url.searchParams.set('shop', root.getAttribute('data-shop') || '');\n    url.searchParams.set('path', root.getAttribute('data-path') || window.location.pathname);\n    url.searchParams.set('_ts', String(Date.now()));\n    return url.toString();\n  }\n\n  function openPopup(root) {\n    root.hidden = false;\n    document.documentElement.classList.add('wahup-custom-shirt-popup-open');\n    var refresh = function () {\n      if (root && typeof root.__wahupCustomShirtRefresh === 'function') root.__wahupCustomShirtRefresh();\n    };\n    window.requestAnimationFrame(function () { window.requestAnimationFrame(refresh); });\n  }\n\n  function closePopup(root) {\n    root.hidden = true;\n    document.documentElement.classList.remove('wahup-custom-shirt-popup-open');\n  }\n\n  function fallbackHtml() {\n    return '<div class=\"wahup-custom-shirt-content\"><p class=\"wahup-custom-shirt-eyebrow\">Custom tee builder</p><h2 id=\"wahup-custom-shirt-popup-title\">Create your custom shirt</h2><p class=\"wahup-custom-shirt-copy\">The custom shirt builder is loading. Please try again in a moment.</p></div>';\n  }\n\n  function afterPageSettled(callback) {\n    var run = function () {\n      if ('requestIdleCallback' in window) window.requestIdleCallback(callback, { timeout: 2500 });\n      else window.setTimeout(callback, 250);\n    };\n    if (document.readyState === 'complete') run();\n    else window.addEventListener('load', run, { once: true });\n  }\n\n  function escapeHtml(value) {\n    return String(value == null ? '' : value).replace(/[&<>\"']/g, function (char) {\n      return ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' })[char];\n    });\n  }\n\n  function transformText(value, mode) {\n    var text = String(value || '');\n    if (mode === 'uppercase') return text.toUpperCase();\n    if (mode === 'lowercase') return text.toLowerCase();\n    if (mode === 'titlecase') return text.toLowerCase().replace(/\\b\\w/g, function (char) { return char.toUpperCase(); });\n    return text;\n  }\n\n  function toNum(value, fallback) {\n    var parsed = parseFloat(value);\n    return Number.isFinite(parsed) ? parsed : fallback;\n  }\n\n  function clamp(value, min, max) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  var loadedFonts = {};\n  function ensureFont(fontOrSlot) {\n    var font = fontOrSlot && fontOrSlot.default_font ? fontOrSlot.default_font : fontOrSlot;\n    if (!font || !font.font_url) return font ? (font.css_family || font.name) : '';\n    var family = font.css_family || font.name;\n    if (!loadedFonts[family]) {\n      loadedFonts[family] = true;\n      var style = document.createElement('style');\n      style.textContent = '@font-face{font-family:\"' + family.replace(/\"/g, '') + '\";src:url(\"' + font.font_url + '\") format(\"truetype\");font-display:swap;}';\n      document.head.appendChild(style);\n    }\n    return family;\n  }\n\n  function designPayload(template, mockup) {\n    var region = (mockup && mockup.design_region) || (template && template.design_region) || {};\n    var design = region && region.design && Array.isArray(region.design.layers) ? region.design : null;\n    if (!design && template && template.design_region && template.design_region.design && Array.isArray(template.design_region.design.layers)) design = template.design_region.design;\n    return design || null;\n  }\n\n  function designRegion(template, mockup) {\n    var source = (mockup && mockup.design_region) || (template && template.design_region) || {};\n    var fallback = (template && template.design_region) || {};\n    function number(value, defaultValue) {\n      var parsed = Number(value);\n      return Number.isFinite(parsed) ? parsed : defaultValue;\n    }\n    var region = {\n      x: number(source.x, number(fallback.x, 30)),\n      y: number(source.y, number(fallback.y, 28)),\n      width: number(source.width, number(fallback.width, 40)),\n      height: number(source.height, number(fallback.height, 28)),\n      rotation: number(source.rotation, number(fallback.rotation, 0))\n    };\n    if (region.x <= 1 && region.y <= 1 && region.width <= 1 && region.height <= 1) {\n      region.x *= 100; region.y *= 100; region.width *= 100; region.height *= 100;\n    }\n    return region;\n  }\n\n  function positionLayerHost(layerHost, image, region) {\n    var parent = image && image.parentElement;\n    var parentRect = parent ? parent.getBoundingClientRect() : null;\n    var imageRect = image ? image.getBoundingClientRect() : null;\n    var parentWidth = parentRect && parentRect.width ? parentRect.width : 0;\n    var parentHeight = parentRect && parentRect.height ? parentRect.height : 0;\n    var naturalWidth = image && image.naturalWidth ? image.naturalWidth : 0;\n    var naturalHeight = image && image.naturalHeight ? image.naturalHeight : 0;\n    var imageWidth = imageRect && imageRect.width ? imageRect.width : parentWidth;\n    var imageHeight = imageRect && imageRect.height ? imageRect.height : parentHeight;\n    var contentLeft = imageRect && parentRect ? imageRect.left - parentRect.left : 0;\n    var contentTop = imageRect && parentRect ? imageRect.top - parentRect.top : 0;\n    var contentWidth = imageWidth;\n    var contentHeight = imageHeight;\n    if (naturalWidth && naturalHeight && imageWidth && imageHeight) {\n      var scale = Math.min(imageWidth / naturalWidth, imageHeight / naturalHeight);\n      contentWidth = naturalWidth * scale;\n      contentHeight = naturalHeight * scale;\n      contentLeft += (imageWidth - contentWidth) / 2;\n      contentTop += (imageHeight - contentHeight) / 2;\n    }\n    if (!parentWidth || !parentHeight || !contentWidth || !contentHeight) {\n      layerHost.style.inset = 'auto';\n      layerHost.style.left = region.x + '%';\n      layerHost.style.top = region.y + '%';\n      layerHost.style.width = region.width + '%';\n      layerHost.style.height = region.height + '%';\n    } else {\n      layerHost.style.inset = 'auto';\n      layerHost.style.left = ((contentLeft + contentWidth * region.x / 100) / parentWidth * 100) + '%';\n      layerHost.style.top = ((contentTop + contentHeight * region.y / 100) / parentHeight * 100) + '%';\n      layerHost.style.width = (contentWidth * region.width / 100 / parentWidth * 100) + '%';\n      layerHost.style.height = (contentHeight * region.height / 100 / parentHeight * 100) + '%';\n    }\n    layerHost.style.transformOrigin = '50% 50%';\n    layerHost.style.transform = 'rotate(' + region.rotation + 'deg)';\n  }\n\n  function editableFields(template, mockup) {\n    var design = designPayload(template, mockup);\n    if (design && Array.isArray(design.layers) && design.layers.some(function (layer) { return layer && layer.type !== 'image'; })) {\n      return (design.layers || []).filter(function (layer) { return layer && layer.type !== 'image'; }).map(function (layer, index) {\n      return {\n        field_type: 'layer',\n        field_id: 'layer_' + layer.id,\n        layer_id: layer.id,\n        id: layer.id,\n        label: layer.label || ('Text ' + (index + 1)),\n        placeholder: layer.text || 'Custom text',\n        default_text: layer.text || '',\n        max_length: 60,\n        text_transform: 'none'\n      };\n      });\n    }\n    if (template && Array.isArray(template.text_slots) && template.text_slots.length) {\n      return template.text_slots.map(function (slot) { return Object.assign({ field_type: 'slot', field_id: 'slot_' + slot.id }, slot); });\n    }\n    return [];\n  }\n\n  function fieldText(field, form) {\n    var input = null;\n    if (field.field_type === 'layer') input = form && form.querySelector('[data-layer-id=\"' + CSS.escape(String(field.layer_id)) + '\"]');\n    else input = form && form.querySelector('[name=\"slot_' + field.id + '\"]');\n    return transformText(input ? input.value : field.default_text || field.placeholder || field.label, field.text_transform);\n  }\n\n  function layerText(layer, fields, form) {\n    var field = fields.find(function (item) { return item.field_type === 'layer' && String(item.layer_id) === String(layer.id); });\n    return field ? fieldText(field, form) : (layer.text || 'Text');\n  }\n\n  function createQuadraticSampler(p0, p1, p2) {\n    return function (t) {\n      var u = clamp(t || 0, 0, 1);\n      var v = 1 - u;\n      return {\n        x: v * v * p0.x + 2 * v * u * p1.x + u * u * p2.x,\n        y: v * v * p0.y + 2 * v * u * p1.y + u * u * p2.y,\n        dx: 2 * v * (p1.x - p0.x) + 2 * u * (p2.x - p1.x),\n        dy: 2 * v * (p1.y - p0.y) + 2 * u * (p2.y - p1.y)\n      };\n    };\n  }\n\n  function createCubicSampler(p0, p1, p2, p3) {\n    return function (t) {\n      var u = clamp(t || 0, 0, 1);\n      var v = 1 - u;\n      return {\n        x: v * v * v * p0.x + 3 * v * v * u * p1.x + 3 * v * u * u * p2.x + u * u * u * p3.x,\n        y: v * v * v * p0.y + 3 * v * v * u * p1.y + 3 * v * u * u * p2.y + u * u * u * p3.y,\n        dx: 3 * v * v * (p1.x - p0.x) + 6 * v * u * (p2.x - p1.x) + 3 * u * u * (p3.x - p2.x),\n        dy: 3 * v * v * (p1.y - p0.y) + 6 * v * u * (p2.y - p1.y) + 3 * u * u * (p3.y - p2.y)\n      };\n    };\n  }\n\n  function createCompositeSampler(segments) {\n    var rows = segments.map(function (sampler) {\n      if (typeof sampler !== 'function') return null;\n      var previous = sampler(0);\n      var length = 0;\n      for (var i = 1; i <= 40; i += 1) {\n        var current = sampler(i / 40);\n        length += Math.hypot((current.x || 0) - (previous.x || 0), (current.y || 0) - (previous.y || 0));\n        previous = current;\n      }\n      return length > 0 ? { sampler: sampler, length: length } : null;\n    }).filter(Boolean);\n    var total = rows.reduce(function (sum, row) { return sum + row.length; }, 0) || 1;\n    return function (t) {\n      var target = clamp(t || 0, 0, 1) * total;\n      var acc = 0;\n      for (var i = 0; i < rows.length; i += 1) {\n        var row = rows[i];\n        if (target <= acc + row.length || i === rows.length - 1) {\n          return row.sampler(row.length ? (target - acc) / row.length : 0);\n        }\n        acc += row.length;\n      }\n      return rows.length ? rows[rows.length - 1].sampler(1) : { x: 0, y: 0, dx: 1, dy: 0 };\n    };\n  }\n\n  function createSemiCircleSampler(radius, orientation) {\n    return function (t) {\n      var u = clamp(t || 0, 0, 1);\n      var dir = orientation === 'down' ? 1 : -1;\n      var theta = Math.PI - Math.PI * u;\n      return { x: radius * Math.cos(theta), y: dir * radius * Math.sin(theta), dx: radius * Math.PI * Math.sin(theta), dy: dir * radius * Math.PI * Math.cos(theta) };\n    };\n  }\n\n  function createSamplerLookup(sampler) {\n    if (typeof sampler !== 'function') return null;\n    var samples = [];\n    var total = 0;\n    var previous = sampler(0) || { x: 0, y: 0, dx: 0, dy: -1 };\n    samples.push({ t: 0, point: previous, length: 0 });\n    for (var i = 1; i <= 120; i += 1) {\n      var t = i / 120;\n      var current = sampler(t) || previous;\n      total += Math.hypot((current.x || 0) - (previous.x || 0), (current.y || 0) - (previous.y || 0));\n      samples.push({ t: t, point: current, length: total });\n      previous = current;\n    }\n    if (!Number.isFinite(total) || total <= 0) total = 1;\n    return {\n      total: total,\n      sample: function (distance) {\n        if (distance <= 0) return samples[0].point;\n        if (distance >= total) return samples[samples.length - 1].point;\n        var low = 0;\n        var high = samples.length - 1;\n        while (low < high) {\n          var mid = Math.floor((low + high) / 2);\n          if (samples[mid].length < distance) low = mid + 1;\n          else high = mid;\n        }\n        var upper = samples[low];\n        var lower = samples[Math.max(0, low - 1)];\n        var span = upper.length - lower.length || 1e-3;\n        var alpha = (distance - lower.length) / span;\n        var interpT = lower.t + (upper.t - lower.t) * alpha;\n        return sampler(interpT) || upper.point || lower.point || { x: 0, y: 0, dx: 0, dy: -1 };\n      }\n    };\n  }\n\n  function textPathSampler(pathId, strength) {\n    var id = String(pathId || 'none');\n    var s = clamp(toNum(strength, 1), 0.3, id === 'wave' ? 2 : 1.8);\n    if (id === 'arc-up' || id === 'arc-down') {\n      var span = 260;\n      var amp = 220 * s * (id === 'arc-up' ? -1 : 1);\n      return createSamplerLookup(createQuadraticSampler({ x: -span, y: 0 }, { x: 0, y: amp }, { x: span, y: 0 }));\n    }\n    if (id === 'wave') {\n      var amplitude = 80 * s;\n      return createSamplerLookup(createCompositeSampler([\n        createCubicSampler({ x: -300, y: 0 }, { x: -200, y: -amplitude }, { x: -100, y: amplitude }, { x: 0, y: 0 }),\n        createCubicSampler({ x: 0, y: 0 }, { x: 100, y: -amplitude }, { x: 200, y: amplitude }, { x: 300, y: 0 })\n      ]));\n    }\n    if (id === 'circle') return createSamplerLookup(createSemiCircleSampler(220 * clamp(toNum(strength, 1), 0.5, 1.5), 'up'));\n    return null;\n  }\n\n  function measureNormalTextInstructions(textValue, fontFamily, fontSizePx, letterSpacing) {\n    var fontSize = Math.max(8, toNum(fontSizePx, 72));\n    var spacing = Math.max(0, toNum(letterSpacing, 0));\n    var spaceWidth = Math.max(fontSize * 0.35, 12);\n    var canvas = measureNormalTextInstructions.canvas || (measureNormalTextInstructions.canvas = document.createElement('canvas'));\n    var ctx = canvas.getContext && canvas.getContext('2d');\n    if (ctx) ctx.font = fontSize + 'px \"' + String(fontFamily || 'Arial').replace(/\"/g, '') + '\"';\n    var instructions = [];\n    var cursor = 0;\n    Array.from(String(textValue || 'Text').replace(/\\s+/g, ' ')).forEach(function (symbol) {\n      var isSpacer = symbol === ' ';\n      var measured = isSpacer ? spaceWidth : Math.max(1, (ctx && ctx.measureText ? ctx.measureText(symbol).width : 0) || fontSize * 0.6);\n      instructions.push({ symbol: symbol, isSpacer: isSpacer, x: cursor, y: 0, width: measured, height: fontSize });\n      cursor += measured + spacing;\n    });\n    if (cursor > 0) cursor -= spacing;\n    return { instructions: instructions, width: Math.max(cursor, fontSize, 2), height: Math.max(fontSize * 1.2, 2), letterSpacing: spacing, fontSize: fontSize, totalWidth: Math.max(cursor, 1) };\n  }\n\n  function layoutTextOnPath(layout, lookup) {\n    var instructions = layout && Array.isArray(layout.instructions) ? layout.instructions.slice() : [];\n    if (!instructions.length || !lookup || typeof lookup.sample !== 'function') return [];\n    var totalLength = toNum(lookup.total, 0);\n    if (!Number.isFinite(totalLength) || totalLength <= 0) return [];\n    var spacing = Math.max(0, toNum(layout.letterSpacing, 0));\n    var totalWidth = Number.isFinite(layout.totalWidth) ? layout.totalWidth : instructions.reduce(function (sum, inst) { return sum + toNum(inst.width, 0); }, 0) + spacing * Math.max(instructions.length - 1, 0);\n    if (!Number.isFinite(totalWidth) || totalWidth === 0) totalWidth = 1;\n    if (totalWidth < 0) totalWidth = Math.abs(totalWidth);\n    var scaleFactor = totalLength > 0 && totalWidth > totalLength ? totalLength / totalWidth : 1;\n    var startOffset = totalLength > totalWidth ? (totalLength - totalWidth) / 2 : 0;\n    var cumulative = 0;\n    return instructions.map(function (inst, index) {\n      var glyphWidth = Math.max(1, toNum(inst.width, toNum(layout.fontSize, 72) * 0.6));\n      var distance = startOffset + (cumulative + glyphWidth / 2) * scaleFactor;\n      if (!Number.isFinite(distance)) distance = totalLength * ((index + 0.5) / instructions.length);\n      distance = clamp(distance, 0, totalLength);\n      if (distance >= totalLength) distance = Math.max(0, totalLength - Math.max(1e-4, totalLength * 1e-6));\n      var point = lookup.sample(distance) || { x: 0, y: 0, dx: 0, dy: -1 };\n      var tangent = (point.dx || point.dy) ? { x: point.dx || 0, y: point.dy || 0 } : { x: 1, y: 0 };\n      var angle = Math.atan2(tangent.y, tangent.x) * 180 / Math.PI;\n      var len = Math.hypot(tangent.x, tangent.y) || 1;\n      var normalX = -tangent.y / len;\n      var normalY = tangent.x / len;\n      var glyphHeight = Math.max(1, toNum(inst.height, toNum(layout.fontSize, 72)));\n      cumulative += glyphWidth;\n      if (index < instructions.length - 1) cumulative += spacing;\n      return {\n        instruction: inst,\n        left: (point.x || 0) + normalX * -(glyphHeight / 2),\n        top: (point.y || 0) + normalY * -(glyphHeight / 2),\n        angle: angle\n      };\n    });\n  }\n\n  function placementBounds(placements) {\n    if (!placements || !placements.length) return null;\n    var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n    placements.forEach(function (placement) {\n      var inst = placement.instruction || {};\n      var width = Math.max(1, toNum(inst.width, 1));\n      var height = Math.max(1, toNum(inst.height, width));\n      var x = toNum(placement.left, 0);\n      var y = toNum(placement.top, 0);\n      var radians = toNum(placement.angle, 0) * Math.PI / 180;\n      var extentX = Math.abs(Math.cos(radians)) * width / 2 + Math.abs(Math.sin(radians)) * height / 2;\n      var extentY = Math.abs(Math.sin(radians)) * width / 2 + Math.abs(Math.cos(radians)) * height / 2;\n      minX = Math.min(minX, x - extentX);\n      maxX = Math.max(maxX, x + extentX);\n      minY = Math.min(minY, y - extentY);\n      maxY = Math.max(maxY, y + extentY);\n    });\n    return [minX, minY, maxX, maxY].every(Number.isFinite) ? { minX: minX, minY: minY, maxX: maxX, maxY: maxY, width: Math.max(1, maxX - minX), height: Math.max(1, maxY - minY) } : null;\n  }\n\n  function textPathGlyphPadding(fontSizePx) {\n    var size = Math.max(8, toNum(fontSizePx, 72));\n    return Math.max(size * 0.75, 32);\n  }\n\n  function renderTextPath(layer, text, fontSizePx) {\n    var family = layer.__wahupFontFamily || layer.fontFamily || 'Georgia';\n    var lookup = textPathSampler(layer.textPath, layer.textPathStrength);\n    var root = document.createElement('div');\n    root.className = 'wahup-custom-shirt-text-path';\n    root.style.position = 'relative';\n    root.style.width = '100%';\n    root.style.height = '100%';\n    root.style.pointerEvents = 'none';\n    root.style.overflow = 'visible';\n    if (!lookup) {\n      root.textContent = text || 'Text';\n      return root;\n    }\n    var layout = measureNormalTextInstructions(text || 'Text', family, fontSizePx, layer.letterSpacing);\n    var placements = layoutTextOnPath(layout, lookup);\n    var bounds = placementBounds(placements);\n    if (!bounds) {\n      root.textContent = text || 'Text';\n      return root;\n    }\n    var pad = textPathGlyphPadding(fontSizePx);\n    var viewWidth = Math.max(1, bounds.width + pad * 2);\n    var viewHeight = Math.max(1, bounds.height + pad * 2);\n    var designWidth = Math.max(1, toNum(layer.__wahupDesignWidth, 1024));\n    var hostWidth = Math.max(1, toNum(layer.__wahupHostWidth, designWidth));\n    var strokeScale = hostWidth / designWidth;\n    var strokeWidth = Math.max(0, toNum(layer.strokeWidth || layer.stroke_width, 0) * strokeScale);\n    placements.forEach(function (placement) {\n      var inst = placement.instruction || {};\n      var symbol = String(inst.symbol || '');\n      if (!symbol) return;\n      var span = document.createElement('span');\n      span.textContent = symbol === ' ' ? '\\u00a0' : symbol;\n      span.style.position = 'absolute';\n      span.style.left = (((toNum(placement.left, 0) - bounds.minX + pad) / viewWidth) * 100) + '%';\n      span.style.top = (((toNum(placement.top, 0) - bounds.minY + pad) / viewHeight) * 100) + '%';\n      span.style.transform = 'translate(-50%, -50%) rotate(' + toNum(placement.angle, 0) + 'deg)';\n      span.style.fontFamily = '\"' + String(family).replace(/\"/g, '') + '\", Georgia, serif';\n      span.style.fontSize = Math.max(8, fontSizePx) + 'px';\n      span.style.lineHeight = '1';\n      span.style.whiteSpace = 'pre';\n      span.style.color = layer.color || '#111111';\n      if (strokeWidth > 0) {\n        span.style.webkitTextStroke = strokeWidth + 'px ' + (layer.strokeColor || layer.stroke_color || '#1d4ed8');\n        span.style.textStroke = strokeWidth + 'px ' + (layer.strokeColor || layer.stroke_color || '#1d4ed8');\n        span.style.paintOrder = 'stroke fill';\n      }\n      root.appendChild(span);\n    });\n    return root;\n  }\n\n  function renderDesignLayer(layer, design, fields, form, host) {\n    var el = document.createElement('div');\n    el.className = 'wahup-custom-shirt-text-slot wahup-custom-shirt-design-layer';\n    el.style.left = (Number(layer.x || 50) - Number(layer.width || 60) / 2) + '%';\n    el.style.top = (Number(layer.y || 50) - Number(layer.height || 12) / 2) + '%';\n    el.style.width = Number(layer.width || 60) + '%';\n    el.style.height = Number(layer.height || 12) + '%';\n    el.style.zIndex = Number(layer.zIndex || 10);\n    el.style.transform = 'rotate(' + Number(layer.rotation || 0) + 'deg) scale(' + (Math.max(10, Math.min(300, Number(layer.scale || 100))) / 100) + ')';\n    if (layer.type === 'image' && layer.src) {\n      var img = document.createElement('img');\n      img.src = layer.src;\n      img.alt = '';\n      el.className = 'wahup-custom-shirt-design-image';\n      el.appendChild(img);\n      return el;\n    }\n    var hostWidth = Math.max(1, host.clientWidth || 520);\n    var designWidth = Math.max(1, Number(design.width || 1024));\n    var fontSizePx = Math.max(8, Number(layer.fontSize || 72) / designWidth * hostWidth);\n    el.style.color = layer.color || '#111111';\n    el.style.fontSize = fontSizePx + 'px';\n    var layerFont = (window.__wahupDesignFonts || []).find(function (font) {\n      return String(font.name || font.css_family || '').toLowerCase() === String(layer.fontFamily || '').toLowerCase();\n    });\n    var layerFamily = ensureFont(layerFont) || layer.fontFamily || 'Georgia';\n    layer.__wahupFontFamily = layerFamily;\n    layer.__wahupDesignWidth = designWidth;\n    layer.__wahupHostWidth = hostWidth;\n    el.style.fontFamily = '\"' + String(layerFamily).replace(/\"/g, '') + '\", Georgia, serif';\n    el.style.letterSpacing = Number(layer.letterSpacing || 0) + 'px';\n    el.style.textAlign = layer.align || 'center';\n    var strokeWidth = Math.max(0, Number(layer.strokeWidth || layer.stroke_width || 0) / designWidth * hostWidth);\n    if (strokeWidth > 0 && !(layer.type === 'color-text' || layer.fontKind === 'color')) {\n      el.style.webkitTextStroke = strokeWidth + 'px ' + (layer.strokeColor || layer.stroke_color || '#1d4ed8');\n      el.style.textStroke = strokeWidth + 'px ' + (layer.strokeColor || layer.stroke_color || '#1d4ed8');\n      el.style.paintOrder = 'stroke fill';\n    }\n    var text = layerText(layer, fields, form);\n    if (layer.textPath && layer.textPath !== 'none') el.appendChild(renderTextPath(layer, text, fontSizePx));\n    else el.textContent = text;\n    return el;\n  }\n\n  function renderPreview(template, mockup, form, root) {\n    var image = root.querySelector('[data-preview-mockup], [data-inline-preview-image]');\n    var layerHost = root.querySelector('[data-preview-slots], [data-inline-preview-slots]');\n    if (!image || !layerHost || !mockup) return;\n    image.src = mockup.image_url || '';\n    if (!image.complete) image.onload = function () {\n      var refreshRoot = root;\n      window.requestAnimationFrame(function () {\n        if (refreshRoot && typeof refreshRoot.__wahupCustomShirtRefresh === 'function') refreshRoot.__wahupCustomShirtRefresh();\n      });\n    };\n    layerHost.innerHTML = '';\n    var region = designRegion(template, mockup);\n    positionLayerHost(layerHost, image, region);\n    var fields = editableFields(template, mockup);\n    var design = designPayload(template, mockup);\n    if (design && Array.isArray(design.layers) && design.layers.length) {\n      design.layers.slice().sort(function (a, b) { return Number(a.zIndex || 0) - Number(b.zIndex || 0); }).forEach(function (layer) {\n        layerHost.appendChild(renderDesignLayer(layer, design, fields, form, layerHost));\n      });\n      return;\n    }\n    fields.forEach(function (slot) {\n      var box = slot.box || {};\n      var x = Number(box.x || 50), y = Number(box.y || 50), w = Number(box.width || 60), h = Number(box.height || 12);\n      var el = document.createElement('div');\n      el.className = 'wahup-custom-shirt-text-slot';\n      el.style.left = (x - w / 2) + '%';\n      el.style.top = (y - h / 2) + '%';\n      el.style.width = w + '%';\n      el.style.height = h + '%';\n      el.style.zIndex = Number(box.z_index || 10);\n      el.style.transform = 'rotate(' + Number(box.rotation || 0) + 'deg)';\n      el.style.color = slot.default_color || '#111111';\n      el.style.fontSize = Math.max(12, Number(box.font_size || 36)) + 'px';\n      var fontFamily = ensureFont(slot);\n      if (fontFamily) el.style.fontFamily = '\"' + fontFamily.replace(/\"/g, '') + '\", Georgia, serif';\n      el.style.letterSpacing = Number(slot.letter_spacing || 0) + 'px';\n      el.style.lineHeight = Number(slot.line_height || 1);\n      el.style.opacity = Math.max(0, Math.min(1, Number(slot.opacity || 1)));\n      el.textContent = fieldText(slot, form);\n      layerHost.appendChild(el);\n    });\n  }\n\n  function renderTextFields(container, template, mockup) {\n    var fields = editableFields(template, mockup);\n    container.innerHTML = fields.map(function (field) {\n      var value = field.default_text || field.placeholder || '';\n      if (field.field_type === 'layer') {\n        return '<label class=\"wahup-custom-shirt-label\" for=\"' + escapeHtml(field.field_id) + '\">' + escapeHtml(field.label) + '</label>' +\n          '<input id=\"' + escapeHtml(field.field_id) + '\" name=\"' + escapeHtml(field.field_id) + '\" data-layer-id=\"' + escapeHtml(field.layer_id) + '\" data-slot-label=\"' + escapeHtml(field.label) + '\" maxlength=\"' + (field.max_length || 60) + '\" placeholder=\"' + escapeHtml(field.placeholder || field.label) + '\" value=\"' + escapeHtml(value) + '\">';\n      }\n      return '<label class=\"wahup-custom-shirt-label\" for=\"slot_' + field.id + '\">' + escapeHtml(field.label) + '</label>' +\n        '<input id=\"slot_' + field.id + '\" name=\"slot_' + field.id + '\" maxlength=\"' + (field.max_length || 40) + '\" placeholder=\"' + escapeHtml(field.placeholder || field.label) + '\" value=\"' + escapeHtml(value) + '\">';\n    }).join('');\n  }\n\n  function initBuilder(root) {\n    var data = document.getElementById('wahup-custom-shirt-template-data');\n    if (!data) return;\n    var templates = [];\n    try { templates = JSON.parse(data.textContent || '[]'); } catch (error) { templates = []; }\n    var fontData = document.getElementById('wahup-custom-shirt-font-data');\n    try { window.__wahupDesignFonts = fontData ? JSON.parse(fontData.textContent || '[]') : []; } catch (error) { window.__wahupDesignFonts = []; }\n    var picker = root.querySelector('[data-template-picker]');\n    var builder = root.querySelector('[data-template-builder], [data-inline-shirt-builder]');\n    var title = root.querySelector('[data-builder-title]');\n    var subtitle = root.querySelector('[data-builder-subtitle]');\n    var colorOptions = root.querySelector('[data-color-options], [data-inline-color-options]');\n    var textFields = root.querySelector('[data-text-fields]');\n    var form = root.querySelector('[data-shirt-form], [data-inline-shirt-form]');\n    var status = root.querySelector('[data-shirt-status]');\n    var activeTemplate = null;\n    var activeMockup = null;\n    if (form) { form.removeAttribute('onsubmit'); form.onsubmit = null; }\n    root.__wahupCustomShirtRefresh = function () {\n      if (activeTemplate && activeMockup) renderPreview(activeTemplate, activeMockup, form, root);\n    };\n\n    function selectMockupById(id) {\n      if (!activeTemplate) return;\n      activeMockup = (activeTemplate.mockups || []).find(function (mockup) { return String(mockup.id) === String(id); }) || activeMockup;\n      if (!activeMockup) return;\n      if (colorOptions) {\n        colorOptions.querySelectorAll('[data-mockup-id]').forEach(function (item) {\n          var isActive = String(activeMockup.id) === item.getAttribute('data-mockup-id');\n          item.classList.toggle('is-active', isActive);\n          var itemRadio = item.querySelector('input[name=\"mockup_id\"]');\n          if (itemRadio) itemRadio.checked = isActive;\n        });\n      }\n      if (textFields) renderTextFields(textFields, activeTemplate, activeMockup);\n      root.__wahupCustomShirtRefresh();\n    }\n\n    function selectTemplate(template) {\n      activeTemplate = template;\n      activeMockup = (template.mockups || []).find(function (mockup) { return mockup.is_default; }) || (template.mockups || [])[0] || null;\n      if (title) title.textContent = template.name;\n      if (form) form.setAttribute('data-template-id', template.id);\n      if (subtitle) subtitle.textContent = (template.product_type || '').replace(/_/g, ' ') + ' \u00B7 ' + (template.mockups || []).length + ' colors';\n      if (colorOptions) {\n        colorOptions.innerHTML = (template.mockups || []).map(function (mockup, index) {\n          var active = activeMockup && String(activeMockup.id) === String(mockup.id) ? ' is-active' : '';\n          return '<label class=\"wahup-custom-shirt-color' + active + '\" data-mockup-id=\"' + mockup.id + '\">' +\n            '<input type=\"radio\" name=\"mockup_id\" value=\"' + mockup.id + '\" ' + (active ? 'checked' : '') + '>' +\n            (mockup.image_url ? '<img src=\"' + mockup.image_url + '\" alt=\"\" loading=\"lazy\" decoding=\"async\">' : '') +\n            '<span>' + escapeHtml(mockup.color_name || 'Color') + '</span></label>';\n        }).join('');\n        colorOptions.querySelectorAll('[data-mockup-id]').forEach(function (button) {\n          button.addEventListener('click', function (event) {\n            event.preventDefault();\n            event.stopPropagation();\n            selectMockupById(button.getAttribute('data-mockup-id'));\n          });\n        });\n      }\n      if (textFields) renderTextFields(textFields, template, activeMockup);\n      if (picker) picker.hidden = true;\n      if (builder && builder.hasAttribute('data-template-builder')) builder.hidden = false;\n      root.querySelectorAll('[data-mockup-id]').forEach(function (button) {\n        button.classList.toggle('is-active', activeMockup && String(activeMockup.id) === button.getAttribute('data-mockup-id'));\n      });\n      root.__wahupCustomShirtRefresh();\n    }\n\n    root.querySelectorAll('[data-template-id]').forEach(function (button) {\n      button.addEventListener('click', function () {\n        var id = button.getAttribute('data-template-id');\n        var template = templates.find(function (item) { return String(item.id) === String(id); });\n        if (template) selectTemplate(template);\n      });\n    });\n\n    root.querySelector('[data-template-back]')?.addEventListener('click', function () {\n      if (builder) builder.hidden = true;\n      if (picker) picker.hidden = false;\n    });\n\n    colorOptions?.addEventListener('click', function (event) {\n      var button = event.target.closest('[data-mockup-id]');\n      if (!button || !activeTemplate) return;\n      selectMockupById(button.getAttribute('data-mockup-id'));\n    });\n\n    form?.addEventListener('input', function () {\n      root.__wahupCustomShirtRefresh();\n    });\n\n    form?.addEventListener('submit', function (event) {\n      event.preventDefault();\n      if (!activeTemplate || !activeMockup) return;\n      if (status) status.textContent = 'Saving preview...';\n      var fields = editableFields(activeTemplate, activeMockup);\n      var texts = fields.map(function (field) {\n        return { slot_id: field.id, layer_id: field.layer_id || '', label: field.label, text: fieldText(field, form) };\n      });\n      var sizeEl = form.querySelector('select[name=\"size\"]');\n      var size = sizeEl ? sizeEl.value : '';\n      var submitter = event.submitter;\n      var checkout = submitter && submitter.getAttribute('data-checkout') === '1';\n      form.setAttribute('data-busy', '1');\n      fetch(apiBase(root) + 'preview/', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        credentials: 'omit',\n        mode: 'cors',\n        body: JSON.stringify({ template_id: activeTemplate.id, mockup_id: activeMockup.id, texts: texts, size: size })\n      })\n        .then(function (response) { return response.json(); })\n        .then(function (payload) {\n          if (!payload.ok) throw new Error(payload.error || 'Preview failed');\n          if (status) status.textContent = 'Preparing Shopify cart item...';\n          return fetch(apiBase(root) + 'create-product/', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            credentials: 'omit',\n            mode: 'cors',\n            body: JSON.stringify({ draft_id: payload.draft_id, quantity: 1, size: size })\n          });\n        })\n        .then(function (response) { return response.json(); })\n        .then(function (payload) {\n          if (!payload.ok) throw new Error(payload.error || 'Could not prepare Shopify item.');\n          if (!payload.cart_add || !payload.cart_add.id) throw new Error('Missing Shopify variant for this template.');\n          if (status) status.textContent = 'Adding to cart...';\n          return fetch('/cart/add.js', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(payload.cart_add)\n          });\n        })\n        .then(function (response) {\n          if (!response.ok) throw new Error('Shopify cart add failed.');\n          if (status) status.textContent = checkout ? 'Opening checkout...' : 'Added to cart.';\n          window.location.href = checkout ? '/checkout' : '/cart';\n        })\n        .catch(function (error) { if (status) status.textContent = error.message || 'Could not create shirt.'; })\n        .finally(function () { form.removeAttribute('data-busy'); });\n    });\n\n    if (builder && templates.length) selectTemplate(templates[0]);\n  }\n\n  function preparePopupHtml(root, body, html) {\n    body.innerHTML = html || fallbackHtml();\n    body.querySelectorAll('img').forEach(function (image) { image.loading = image.loading || 'lazy'; image.decoding = 'async'; });\n    initBuilder(root);\n  }\n\n  ready(function () {\n    var root = document.getElementById('wahup-custom-shirt-popup-root');\n    if (!root) return;\n    root.querySelectorAll('[data-custom-shirt-close]').forEach(function (button) { button.addEventListener('click', function () { closePopup(root); }); });\n    var delay = parseInt(root.getAttribute('data-delay-ms') || '3000', 10);\n    window.setTimeout(function () {\n      afterPageSettled(function () {\n        var body = root.querySelector('[data-custom-shirt-body]');\n        var controller = 'AbortController' in window ? new AbortController() : null;\n        var timeout = controller ? window.setTimeout(function () { controller.abort(); }, 3500) : null;\n        fetch(buildUrl(root), { credentials: 'omit', mode: 'cors', cache: 'no-store', signal: controller ? controller.signal : undefined })\n          .then(function (response) { if (!response.ok) throw new Error('HTTP ' + response.status); return response.json(); })\n          .then(function (payload) {\n            if (timeout) window.clearTimeout(timeout);\n            preparePopupHtml(root, body, payload && payload.html ? payload.html : fallbackHtml());\n            openPopup(root);\n          })\n          .catch(function () {\n            if (timeout) window.clearTimeout(timeout);\n            preparePopupHtml(root, body, fallbackHtml());\n            openPopup(root);\n          });\n      });\n    }, Number.isFinite(delay) ? delay : 3000);\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
