{
  "version": 3,
  "sources": ["/cdn/shop/t/1064/assets/invoice-pdf-generator.js?auto=format%2Ccompress"],
  "sourcesContent": ["(function() {\n  var logoUrl = window.__ntInvoiceLogoUrl || '';\n\n  /* Match the my-designs/recent-designs preview pipeline: rewrite S3 \u2192 imgix and\n     ask imgix to rasterize EPS/AI/PDF/SVG/TIFF/PSD to PNG so <img> can load it. */\n  var IMGIX_HOST = 'ninjauploads-production.imgix.net';\n  var S3_HOST = 'ninja-services-production-ninjauploadss3bucket-zks2mguobhe4.s3.amazonaws.com';\n  var REMOTE_PREVIEW_EXTS = ['ai', 'eps', 'pdf', 'svg', 'tif', 'tiff', 'psd'];\n  function needsRemotePreview(url) {\n    try {\n      var ext = url.split('?')[0].split('.').pop().toLowerCase();\n      return REMOTE_PREVIEW_EXTS.indexOf(ext) > -1;\n    } catch(e) { return false; }\n  }\n  function transformImgUrl(url) {\n    if (!url) return url;\n    var c = url.replace(S3_HOST, IMGIX_HOST);\n    if (needsRemotePreview(url)) {\n      var sep = c.indexOf('?') > -1 ? '&' : '?';\n      return c + sep + 'fm=png&w=240&auto=compress&q=80';\n    }\n    return c;\n  }\n\n  /* Preload logo to get natural dimensions */\n  var logoImg = null;\n  var logoNatW = 0;\n  var logoNatH = 0;\n  if (logoUrl && logoUrl.indexOf('no_image') === -1) {\n    logoImg = new Image();\n    logoImg.crossOrigin = 'anonymous';\n    logoImg.src = logoUrl;\n    logoImg.onload = function() { logoNatW = logoImg.naturalWidth; logoNatH = logoImg.naturalHeight; };\n  }\n\n  /* Preload line-item images: call before generating so images are cached.\n     Uses the same image_url order-details renders; if CORS blocks it we try\n     a direct fetch \u2192 dataURI path. We never swap in a different image. */\n  function preloadImages(items, callback) {\n    var urls = [];\n    (items || []).forEach(function(li) {\n      var u = li.image_url || li.fallback_url || '';\n      if (u && u.indexOf('//') === 0) u = 'https:' + u;\n      u = transformImgUrl(u);\n      if (u && u.indexOf('http') === 0 && urls.indexOf(u) === -1) urls.push(u);\n    });\n    if (urls.length === 0) return callback({});\n    var loaded = {};\n    var count = 0;\n    var done = false;\n    function finish() { if (!done) { done = true; callback(loaded); } }\n    function tick() { count++; if (count >= urls.length) finish(); }\n    function tryFetchDataUri(url, cb) {\n      try {\n        fetch(url, { mode: 'cors' })\n          .then(function(res) { return res.ok ? res.blob() : null; })\n          .then(function(blob) {\n            if (!blob) return cb(null);\n            var reader = new FileReader();\n            reader.onloadend = function() {\n              var img = new Image();\n              img.onload = function() { cb(img); };\n              img.onerror = function() { cb(null); };\n              img.src = reader.result;\n            };\n            reader.onerror = function() { cb(null); };\n            reader.readAsDataURL(blob);\n          })\n          .catch(function() { cb(null); });\n      } catch (e) { cb(null); }\n    }\n    urls.forEach(function(url) {\n      var img = new Image();\n      img.crossOrigin = 'anonymous';\n      img.onload = function() { loaded[url] = img; tick(); };\n      img.onerror = function() {\n        tryFetchDataUri(url, function(dataImg) {\n          if (dataImg) loaded[url] = dataImg;\n          tick();\n        });\n      };\n      img.src = url;\n    });\n    /* Safety timeout */\n    setTimeout(finish, 6000);\n  }\n\n  function generateInvoice(data, imgCache) {\n    var jsPDF = window.jspdf.jsPDF;\n    var doc = new jsPDF('p', 'pt', 'letter');\n    var pageW = doc.internal.pageSize.getWidth();\n    var margin = 50;\n    var y = 50;\n\n    /* ---- Header: Order # + INVOICE ---- */\n    doc.setFontSize(22);\n    doc.setFont('helvetica', 'bold');\n    doc.text(data.order_name, margin, y);\n    y += 20;\n    doc.setFontSize(14);\n    doc.setTextColor(80, 80, 80);\n    doc.text('INVOICE', margin, y);\n    doc.setTextColor(0, 0, 0);\n\n    /* ---- Logo (right side, natural aspect ratio) ---- */\n    if (logoImg && logoImg.complete && logoImg.naturalWidth > 0) {\n      try {\n        var maxLogoW = 120;\n        var maxLogoH = 60;\n        var natW = logoImg.naturalWidth;\n        var natH = logoImg.naturalHeight;\n        var scale = Math.min(maxLogoW / natW, maxLogoH / natH);\n        var drawW = natW * scale;\n        var drawH = natH * scale;\n        doc.addImage(logoImg, 'PNG', pageW - margin - drawW, 30, drawW, drawH);\n      } catch(e) {}\n    }\n\n    /* ---- Divider ---- */\n    y += 20;\n    doc.setDrawColor(40, 40, 40);\n    doc.setLineWidth(2);\n    doc.line(margin, y, pageW - margin, y);\n\n    /* ---- Address Block ---- */\n    y += 30;\n    var colW = (pageW - margin * 2) / 3;\n\n    doc.setFontSize(8);\n    doc.setFont('helvetica', 'bold');\n    doc.setTextColor(100);\n    doc.text('BILL TO', margin, y);\n    doc.text('SHIP TO', margin + colW, y);\n    doc.text('ORDER DETAILS', pageW - margin, y, { align: 'right' });\n    y += 16;\n\n    doc.setFontSize(9);\n    doc.setFont('helvetica', 'normal');\n    doc.setTextColor(30);\n\n    var ba = data.billing_address || {};\n    var baLines = [ba.name, ba.address1, ba.address2, [ba.city, ba.province].filter(Boolean).join(', '), [ba.zip, ba.country].filter(Boolean).join(' ')].filter(Boolean);\n    baLines.forEach(function(l) { doc.text(l, margin, y); y += 13; });\n\n    y = y - (baLines.length * 13);\n    var sa = data.shipping_address || {};\n    var saLines = [sa.name, sa.address1, sa.address2, [sa.city, sa.province].filter(Boolean).join(', '), [sa.zip, sa.country].filter(Boolean).join(' ')].filter(Boolean);\n    saLines.forEach(function(l) { doc.text(l, margin + colW, y); y += 13; });\n\n    var detailY = y - (saLines.length * 13);\n    var detailX = pageW - margin;\n    doc.setFont('helvetica', 'normal');\n    doc.text('Order #: ' + data.order_name, detailX, detailY, { align: 'right' });\n    detailY += 13;\n\n    /* B2B purchase-order number, when the order carries one. Sits directly\n       under Order # so procurement can match the invoice to their PO. */\n    if (data.po_number) {\n      doc.text('PO #: ' + data.po_number, detailX, detailY, { align: 'right' });\n      detailY += 13;\n    }\n\n    if (data.shipping_method) {\n      var smText = 'Ship Method: ' + data.shipping_method;\n      var smLines = doc.splitTextToSize(smText, colW - 10);\n      smLines.forEach(function(line) {\n        doc.text(line, detailX, detailY, { align: 'right' });\n        detailY += 13;\n      });\n    }\n\n    if (data.transactions && data.transactions.length > 0) {\n      var payments = data.transactions.filter(function(t) {\n        return t.kind === 'sale' || t.kind === 'capture';\n      });\n      if (payments.length === 0) payments = data.transactions;\n      var gatewayNames = {\n        'shopify_payments': 'Card',\n        'gift_card': 'Gift Card',\n        'store_credit': 'Store Credit',\n        'manual': 'Manual',\n        'paypal': 'PayPal',\n        'cash': 'Cash',\n        'money_order': 'Money Order'\n      };\n      payments.forEach(function(t) {\n        if (!t.gateway) return;\n        var label;\n        if (t.card_last_four) {\n          label = 'Card ending in ' + t.card_last_four;\n        } else {\n          label = gatewayNames[t.gateway] || t.gateway.replace(/_/g, ' ').replace(/\\b\\w/g, function(c) { return c.toUpperCase(); });\n        }\n        if (t.amount) label += ' - ' + t.amount;\n        doc.text(label, detailX, detailY, { align: 'right' });\n        detailY += 13;\n      });\n    }\n\n    y = Math.max(y, detailY) + 20;\n\n    /* ---- Invoice Date ---- */\n    doc.setDrawColor(200);\n    doc.setLineWidth(0.5);\n    doc.line(margin, y, pageW - margin, y);\n    y += 20;\n    doc.setFontSize(8);\n    doc.setFont('helvetica', 'bold');\n    doc.setTextColor(100);\n    doc.text('INVOICE DATE', margin, y);\n    doc.setFontSize(10);\n    doc.setFont('helvetica', 'bold');\n    doc.setTextColor(30);\n    doc.text('  ' + data.date, margin + 72, y);\n    y += 25;\n\n    /* ---- Line Items Table (with image thumbnails + dimensions + properties) ---- */\n    var imgColW = 52;\n    var tableBody = [];\n    var rowImages = [];\n    var rowData = [];\n    function decodeHtml(s) {\n      if (!s) return s;\n      var el = document.createElement('textarea');\n      el.innerHTML = s;\n      return el.value;\n    }\n    function parseMoney(s) {\n      if (!s || typeof s !== 'string') return 0;\n      if (s.toUpperCase() === 'FREE') return 0;\n      var n = parseFloat(s.replace(/[^0-9.\\-]/g, ''));\n      return isNaN(n) ? 0 : n;\n    }\n    function formatMoney(n) {\n      if (n < 0) return '-$' + Math.abs(n).toFixed(2);\n      return '$' + n.toFixed(2);\n    }\n    var computedSubtotal = 0;\n    (data.line_items || []).forEach(function(li, idx) {\n      var title = decodeHtml(li.display_title || li.title);\n      var _invVt = decodeHtml(li.variant_title || '');\n      if (title && _invVt && _invVt !== 'Default Title') {\n        var _invSuffix = ' - ' + _invVt;\n        if (title.indexOf(_invSuffix) !== -1) {\n          title = title.split(_invSuffix).join('').trim();\n        }\n      }\n      if (title && title.indexOf('Style #') !== -1) {\n        title = title.split('Style #')[0].replace(/\\s*-\\s*$/, '').trim();\n      }\n      var details = [];\n      if (!li.is_style_variant) {\n        var vt = decodeHtml(li.variant_title || '');\n        if (vt && vt !== 'Default Title') details.push(vt);\n      }\n      if (li.width && li.height) {\n        details.push(li.width + '\" W x ' + li.height + '\" H');\n      } else if (li.width) {\n        details.push('Width: ' + li.width + '\"');\n      } else if (li.height) {\n        details.push('Height: ' + li.height + '\"');\n      }\n      if (li.properties && li.properties.length) {\n        for (var pp = 0; pp < li.properties.length; pp++) {\n          var pk = decodeHtml(li.properties[pp].key || '');\n          var pv = decodeHtml(li.properties[pp].value || '');\n          if (!pk || !pv) continue;\n          if (pk.toLowerCase().trim() === 'upload (vector files preferred)') continue;\n          details.push(pk + ': ' + pv);\n        }\n      }\n      var origPrice = li.price || '';\n      var finPrice = li.final_price || li.price || '';\n      var origLine = li.original_line_price || li.total || '';\n      var finLine = li.total || '';\n      var lineHasDiscount = (parseMoney(origPrice) > parseMoney(finPrice)) && parseMoney(origPrice) > 0;\n      var pctOff = 0;\n      var lineSavings = 0;\n      if (lineHasDiscount) {\n        pctOff = Math.round((parseMoney(origPrice) - parseMoney(finPrice)) / parseMoney(origPrice) * 100);\n        lineSavings = parseMoney(origLine) - parseMoney(finLine);\n      }\n      computedSubtotal += parseMoney(finLine);\n      rowData.push({ title: title || '', details: details, origPrice: origPrice, finPrice: finPrice, origLine: origLine, finLine: finLine, hasDiscount: lineHasDiscount, pctOff: pctOff, lineSavings: lineSavings });\n      /* combined uses single \\n so autoTable reserves minimal vertical space */\n      var combined = title || '';\n      if (details.length) combined += '\\n' + details.join('\\n');\n      /* Reserve vertical space for the discount pill so it fits inside the cell border */\n      if (lineHasDiscount) combined += '\\n \\n ';\n      /* Empty unit price + total cells \u2014 drawn manually in didDrawCell so we can show strikethrough + new */\n      tableBody.push(['', combined, String(li.quantity), '', '']);\n      var imgUrl = li.image_url || li.fallback_url || '';\n      if (imgUrl && imgUrl.indexOf('//') === 0) imgUrl = 'https:' + imgUrl;\n      imgUrl = transformImgUrl(imgUrl);\n      rowImages.push(imgCache[imgUrl] || null);\n    });\n\n    doc.autoTable({\n      startY: y,\n      head: [['', 'ITEM', 'QTY', 'UNIT PRICE', 'TOTAL']],\n      body: tableBody,\n      margin: { left: margin, right: margin },\n      styles: { fontSize: 9, cellPadding: { top: 8, right: 8, bottom: 8, left: 8 }, lineColor: [220, 220, 220], lineWidth: 0.5, minCellHeight: 50, valign: 'top' },\n      headStyles: { fillColor: [40, 40, 40], textColor: [255, 255, 255], fontStyle: 'bold', fontSize: 8, minCellHeight: 0 },\n      columnStyles: {\n        0: { cellWidth: imgColW, halign: 'center' },\n        1: { cellWidth: 'auto' },\n        2: { cellWidth: 50, halign: 'left' },\n        3: { cellWidth: 80, halign: 'right' },\n        4: { cellWidth: 70, halign: 'right' }\n      },\n      theme: 'grid',\n      willDrawCell: function(hookData) {\n        if (hookData.section === 'body' && (hookData.column.index === 1 || hookData.column.index === 3 || hookData.column.index === 4)) {\n          /* Suppress default text rendering \u2014 we'll draw manually in didDrawCell */\n          hookData.cell.text = [];\n        }\n      },\n      didDrawCell: function(hookData) {\n        if (hookData.section === 'body' && hookData.column.index === 0) {\n          var img = rowImages[hookData.row.index];\n          if (img) {\n            try {\n              var cellW = hookData.cell.width;\n              var cellH = hookData.cell.height;\n              var pad = 4;\n              var maxW = cellW - pad * 2;\n              var maxH = cellH - pad * 2;\n              var iW = img.naturalWidth;\n              var iH = img.naturalHeight;\n              var sc = Math.min(maxW / iW, maxH / iH, 1);\n              var dW = iW * sc;\n              var dH = iH * sc;\n              var cx = hookData.cell.x + (cellW - dW) / 2;\n              var cy = hookData.cell.y + (cellH - dH) / 2;\n              doc.addImage(img, 'PNG', cx, cy, dW, dH);\n            } catch(e) {}\n          }\n        } else if (hookData.section === 'body' && hookData.column.index === 1) {\n          var row = rowData[hookData.row.index];\n          if (!row) return;\n          var pad = 8;\n          var innerX = hookData.cell.x + pad;\n          var innerW = hookData.cell.width - pad * 2;\n          var lineH = 11;\n          var cursorY = hookData.cell.y + pad + 8;\n          doc.setFont('helvetica', 'bold');\n          doc.setFontSize(9);\n          doc.setTextColor(30);\n          var titleLines = doc.splitTextToSize(row.title || '', innerW);\n          for (var ti = 0; ti < titleLines.length; ti++) {\n            doc.text(titleLines[ti], innerX, cursorY);\n            cursorY += lineH;\n          }\n          if (row.details && row.details.length) {\n            doc.setFont('helvetica', 'normal');\n            doc.setTextColor(80);\n            for (var di = 0; di < row.details.length; di++) {\n              var detLines = doc.splitTextToSize(row.details[di], innerW);\n              for (var dj = 0; dj < detLines.length; dj++) {\n                doc.text(detLines[dj], innerX, cursorY);\n                cursorY += lineH;\n              }\n            }\n          }\n          if (row.hasDiscount && row.pctOff > 0) {\n            var pillText = row.pctOff + '% off for ' + (row.lineSavings < 0 ? '-$' + Math.abs(row.lineSavings).toFixed(2) : '$' + row.lineSavings.toFixed(2));\n            doc.setFont('helvetica', 'bold');\n            doc.setFontSize(8);\n            var pillTextW = doc.getTextWidth(pillText);\n            var pillPadX = 6;\n            var pillH = 13;\n            var pillW = pillTextW + pillPadX * 2;\n            var pillX = innerX;\n            var pillY = cursorY - 1;\n            doc.setFillColor(220, 252, 231);\n            doc.roundedRect(pillX, pillY, pillW, pillH, 3, 3, 'F');\n            doc.setTextColor(22, 163, 74);\n            doc.text(pillText, pillX + pillPadX, pillY + pillH - 4);\n          }\n        } else if (hookData.section === 'body' && (hookData.column.index === 3 || hookData.column.index === 4)) {\n          var prow = rowData[hookData.row.index];\n          if (!prow) return;\n          var ppad = 8;\n          var rightX = hookData.cell.x + hookData.cell.width - ppad;\n          /* Top-align baseline to match QTY column and title in column 1 */\n          var topY = hookData.cell.y + ppad + 8;\n          var origText = hookData.column.index === 3 ? prow.origPrice : prow.origLine;\n          var finText = hookData.column.index === 3 ? prow.finPrice : prow.finLine;\n          if (prow.hasDiscount && origText && finText && origText !== finText) {\n            /* Original price strikethrough on top line */\n            doc.setFont('helvetica', 'normal');\n            doc.setFontSize(9);\n            doc.setTextColor(150);\n            var origW = doc.getTextWidth(origText);\n            doc.text(origText, rightX, topY, { align: 'right' });\n            doc.setLineWidth(0.6);\n            doc.setDrawColor(150);\n            doc.line(rightX - origW, topY - 3, rightX, topY - 3);\n            /* New price on the line below in bold */\n            doc.setFont('helvetica', 'bold');\n            doc.setFontSize(9);\n            doc.setTextColor(30);\n            doc.text(finText, rightX, topY + 12, { align: 'right' });\n          } else {\n            doc.setFont('helvetica', 'normal');\n            doc.setFontSize(9);\n            doc.setTextColor(30);\n            doc.text(finText || '', rightX, topY, { align: 'right' });\n          }\n        }\n      }\n    });\n\n    y = doc.lastAutoTable.finalY + 20;\n\n    /* ---- Totals ---- */\n    var totalsX = pageW - margin - 150;\n    var totalsValX = pageW - margin;\n\n    doc.setFontSize(10);\n    doc.setFont('helvetica', 'normal');\n    doc.setTextColor(30);\n\n    /* Subtotal = sum of new (post-discount) line totals */\n    var subtotalToShow;\n    if (data.subtotal === 'FREE' || data.subtotal === '$0.00') {\n      subtotalToShow = data.subtotal;\n    } else {\n      subtotalToShow = formatMoney(computedSubtotal);\n    }\n    doc.text('Subtotal', totalsX, y);\n    doc.text(subtotalToShow, totalsValX, y, { align: 'right' });\n    y += 18;\n\n    doc.text('Shipping', totalsX, y);\n    doc.text(data.shipping, totalsValX, y, { align: 'right' });\n    y += 4;\n    doc.setDrawColor(40);\n    doc.setLineWidth(1);\n    doc.line(totalsX, y, totalsValX, y);\n    y += 16;\n\n    if (data.tax && data.tax !== '$0.00' && data.tax !== 'FREE') {\n      doc.text('Tax', totalsX, y);\n      doc.text(data.tax, totalsValX, y, { align: 'right' });\n      y += 18;\n    }\n\n    doc.setFont('helvetica', 'bold');\n    doc.text('Total', totalsX, y);\n    doc.text(data.total, totalsValX, y, { align: 'right' });\n    y += 24;\n\n    /* ---- Savings Tag (green discount badge) ---- */\n    var savingsAmt = parseMoney(data.total_discounts);\n    if (savingsAmt > 0 && data.total_discounts && data.total_discounts !== 'FREE') {\n      var savText = 'You saved ' + data.total_discounts;\n      doc.setFontSize(11);\n      doc.setFont('helvetica', 'bold');\n      var textW = doc.getTextWidth(savText);\n      var iconW = 14;\n      var padIn = 12;\n      var gap = 8;\n      var tagW = textW + iconW + padIn * 2 + gap;\n      var tagH = 26;\n      var tagX = pageW - margin - tagW;\n      var tagY = y;\n      /* Light green background */\n      doc.setFillColor(220, 252, 231);\n      doc.roundedRect(tagX, tagY, tagW, tagH, 6, 6, 'F');\n      /* Tag-shaped icon (price tag pointing left) */\n      var iconCX = tagX + padIn + iconW / 2;\n      var iconCY = tagY + tagH / 2;\n      doc.setFillColor(22, 163, 74);\n      doc.setDrawColor(22, 163, 74);\n      var tw = 12, th = 12;\n      var tagPath = [\n        [4, -th / 2],\n        [tw - 4, 0],\n        [0, th],\n        [-(tw - 4), 0],\n        [-4, -th / 2]\n      ];\n      doc.lines(tagPath, iconCX - tw / 2, iconCY, [1, 1], 'F', true);\n      /* Hole near pointed end */\n      doc.setFillColor(255, 255, 255);\n      doc.circle(iconCX - tw / 2 + 4.2, iconCY, 1.1, 'F');\n      /* Savings text */\n      doc.setTextColor(22, 163, 74);\n      doc.setFont('helvetica', 'bold');\n      doc.setFontSize(11);\n      doc.text(savText, tagX + tagW - padIn, iconCY + 4, { align: 'right' });\n    }\n\n    /* ---- Footer ---- */\n    var footerY = doc.internal.pageSize.getHeight() - 60;\n    doc.setDrawColor(200);\n    doc.setLineWidth(0.5);\n    doc.line(margin, footerY, pageW - margin, footerY);\n    footerY += 18;\n    doc.setFontSize(8);\n    doc.setFont('helvetica', 'normal');\n    doc.setTextColor(150);\n    doc.text('Ninja Transfers  \u00B7  2727 Commerce Way, Philadelphia, PA 19154', pageW / 2, footerY, { align: 'center' });\n    footerY += 13;\n    doc.text('(888) 356-3665  \u00B7  service@ninjatransfers.com  \u00B7  ninjatransfers.com', pageW / 2, footerY, { align: 'center' });\n\n    /* ---- Status diagonal stamp (drawn last so it overlays everything) ----\n       Cancelled takes precedence over reprint when both flags are set. */\n    var stampText = '';\n    var stampRgb = null;\n    if (data.cancelled) {\n      stampText = 'CANCELLED';\n      stampRgb = { strong: [200, 30, 30], faded: [240, 200, 200] };\n    } else if (data.is_reprint) {\n      stampText = 'REPRINT ORDER';\n      stampRgb = { strong: [20, 150, 60], faded: [190, 225, 200] };\n    }\n    if (stampText) {\n      var stampCX = pageW / 2;\n      var stampCY = doc.internal.pageSize.getHeight() / 2;\n      var stampAngle = 30; /* counter-clockwise degrees */\n      var gstateApplied = false;\n      try {\n        if (doc.GState) {\n          doc.saveGraphicsState();\n          doc.setGState(new doc.GState({ opacity: 0.18 }));\n          gstateApplied = true;\n        }\n      } catch(e) { gstateApplied = false; }\n      var stampColor = gstateApplied ? stampRgb.strong : stampRgb.faded;\n      doc.setTextColor(stampColor[0], stampColor[1], stampColor[2]);\n      doc.setDrawColor(stampColor[0], stampColor[1], stampColor[2]);\n      doc.setFontSize(60);\n      doc.setFont('helvetica', 'bold');\n      doc.text(stampText, stampCX, stampCY, { align: 'center', angle: stampAngle, baseline: 'middle' });\n      if (gstateApplied) {\n        try { doc.restoreGraphicsState(); } catch(e) {}\n      }\n    }\n\n    var blobUrl = doc.output('bloburl');\n    window.open(blobUrl, '_blank');\n  }\n\n  window.__ntInvoice = function(el) {\n    try {\n      var handle = el.getAttribute('data-order-invoice');\n      var scriptEl = document.querySelector('.ao-invoice-data[data-order=\"' + handle + '\"]');\n      if (!scriptEl) { alert('Invoice data not found.'); return; }\n      var data = JSON.parse(scriptEl.textContent);\n      /* Preload line-item images, then generate */\n      preloadImages(data.line_items, function(imgCache) {\n        generateInvoice(data, imgCache);\n      });\n    } catch(err) {\n      console.error('Invoice generation error:', err);\n      alert('Could not generate invoice. Please try again.');\n    }\n  };\n})();\n"],
  "mappings": "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",
  "names": []
}
