{
  "version": 3,
  "sources": ["/cdn/shop/t/1064/assets/portal-sno.js?auto=format%2Ccompress"],
  "sourcesContent": ["/* ===== Start a New Order \u2013 Upload & AI Handlers ===== */\n(function() {\n  var AI_HOST = 'https://www.rushordertees.com/design';\n  var BATCH_SIZE = 3;\n  var MAX_IMAGES = 21;\n  var IMG_SIZE = 10;\n  var BRANDING = 'ninjatransfers.com';\n\n  /* --- Wait for bySize.js functions to load (defer) --- */\n  function waitForBySize(cb, n) {\n    n = n || 0;\n    if (typeof window.activateMultiupload === 'function' && typeof window.multiFilesManage === 'function') return cb();\n    if (n > 150) { console.warn('Portal: bySize.js functions not found after 15s'); return; }\n    setTimeout(function() { waitForBySize(cb, n + 1); }, 100);\n  }\n\n  /* --- Open multi-upload modal directly on the portal page --- */\n  function openMultiUpload(files) {\n    waitForBySize(function() {\n      activateMultiupload();\n      var filesArr = Array.isArray(files) ? files : Array.from(files);\n      for (var i = 0; i < filesArr.length; i++) {\n        multiFilesManage(filesArr[i], i + 1);\n      }\n    });\n  }\n\n  /* --- Upload Box --- */\n  var uploadCard = document.getElementById('sno-upload-card');\n  var uploadBtn = document.getElementById('sno-upload-btn');\n  var fileInput = document.getElementById('sno-file-input');\n\n  if (uploadCard && fileInput) {\n    uploadBtn.addEventListener('click', function(e) { e.stopPropagation(); fileInput.click(); });\n    uploadCard.addEventListener('click', function(e) {\n      if (e.target.closest('#sno-upload-btn')) return;\n      fileInput.click();\n    });\n    fileInput.addEventListener('change', function() { if (this.files.length) handleFiles(this.files); });\n\n    uploadCard.addEventListener('dragover', function(e) { e.preventDefault(); uploadCard.classList.add('sno-dragover'); });\n    uploadCard.addEventListener('dragleave', function() { uploadCard.classList.remove('sno-dragover'); });\n    uploadCard.addEventListener('drop', function(e) {\n      e.preventDefault();\n      uploadCard.classList.remove('sno-dragover');\n      if (e.dataTransfer.files.length) handleFiles(e.dataTransfer.files);\n    });\n  }\n\n  function handleFiles(files) {\n    openMultiUpload(files);\n    /* reset file input so the same file(s) can be re-selected */\n    if (fileInput) fileInput.value = '';\n  }\n\n  /* --- AI Dialog --- */\n  var aiCard = document.getElementById('sno-ai-card');\n  var aiDialog = document.getElementById('generative-ai-dialog');\n  if (!aiCard || !aiDialog) return;\n\n  aiCard.addEventListener('click', function() { aiDialog.showModal(); });\n\n  aiDialog.querySelector('header button').addEventListener('click', function() { aiDialog.close(); });\n\n  var form = aiDialog.querySelector('form');\n  var imagesEl = document.getElementById('generative-ai-images');\n  var loaderEl = document.getElementById('generative-ai-dialog-loader');\n  var tipsEl = document.getElementById('generative-ai-tips');\n  var remainingEl = document.getElementById('generative-ai-remaining-searches');\n  var generatingEl = document.getElementById('generative-ai-generating');\n\n  form.addEventListener('submit', async function(e) {\n    e.preventDefault();\n    var prompt = form.querySelector('input[name=\"prompt\"]').value;\n    if (!prompt) return;\n\n    loaderEl.classList.add('show');\n    imagesEl.innerHTML = '';\n    remainingEl.textContent = '';\n    if (tipsEl) tipsEl.innerHTML = '';\n    form.setAttribute('disabled', 'disabled');\n\n    var remaining = Number.MAX_SAFE_INTEGER;\n    var existing = [];\n\n    try {\n      var results = await Promise.allSettled([\n        fetch(AI_HOST + '/generative-stats.php?type=clipart').then(function(r) { return r.json(); }),\n        fetch(AI_HOST + '/studio/getGenerativeAiUploads.php?prompt=' + encodeURIComponent(prompt), { credentials: 'include' }).then(function(r) { return r.json(); })\n      ]);\n      var stats = results[0].status === 'fulfilled' ? results[0].value : {};\n      existing = results[1].status === 'fulfilled' ? results[1].value : [];\n      remaining = stats.remainingRequest ? Math.ceil(stats.remainingRequest / BATCH_SIZE) : remaining;\n    } catch(ex) { console.error('AI stats error:', ex); }\n\n    if (remaining > 0 && remaining <= 5) remainingEl.textContent = 'You have ' + remaining + ' more AI searches remaining.';\n    else if (remaining <= 0) remainingEl.textContent = 'You have no more AI searches remaining. Please try again later.';\n\n    existing.forEach(function(img) { imagesEl.appendChild(makeFigure(img)); });\n\n    if (remaining > 0 && existing.length < MAX_IMAGES) {\n      try {\n        var count = Math.min(MAX_IMAGES - existing.length, BATCH_SIZE);\n        generatingEl.textContent = '(Generating ' + count + ' New Images)';\n        var newImgs = await fetch(AI_HOST + '/studio/postBatchGenerativeAiUpload.php', {\n          method: 'POST',\n          body: JSON.stringify({ prompt: prompt, batchSize: BATCH_SIZE, brandingName: BRANDING })\n        }).then(function(r) { return r.json(); });\n        generatingEl.textContent = '';\n        newImgs.forEach(function(img) { imagesEl.appendChild(makeFigure(img)); });\n      } catch(ex) { console.error('AI generate error:', ex); }\n    }\n\n    loaderEl.classList.remove('show');\n    form.removeAttribute('disabled');\n  });\n\n  imagesEl.addEventListener('click', async function(e) {\n    var fig = e.target.closest('figure');\n    if (!fig || !fig.dataset.url) return;\n\n    loaderEl.classList.add('show');\n    form.setAttribute('disabled', 'disabled');\n\n    try {\n      var resp = await fetch(fig.dataset.url);\n      var type = resp.headers.get('Content-Type');\n      var buf = await resp.arrayBuffer();\n      var blob = new Blob([buf], { type: type });\n      var file = new File([blob], fig.dataset.fileName, { type: type });\n      file.isAIImage = true;\n\n      /* Close AI dialog and open multi-upload modal directly */\n      aiDialog.close();\n      openMultiUpload([file]);\n    } catch(ex) {\n      console.error('AI image select error:', ex);\n    }\n\n    loaderEl.classList.remove('show');\n    form.removeAttribute('disabled');\n  });\n\n  function makeFigure(image) {\n    var fig = document.createElement('figure');\n    var img = document.createElement('img');\n    var cap = document.createElement('figcaption');\n    img.src = image.thumbnailUrl;\n    cap.textContent = 'Use this image';\n    fig.dataset.fileName = image.fileName;\n    fig.dataset.url = image.url.replace('/unsafe/', '/unsafe/' + (IMG_SIZE * 300) + 'x0/');\n    fig.appendChild(img);\n    fig.appendChild(cap);\n    return fig;\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
