{
  "version": 3,
  "sources": ["/cdn/shop/t/1064/assets/nt-upscale.js?auto=format%2Ccompress"],
  "sourcesContent": ["(function (global) {\n  'use strict';\n  const host = 'https://ffzl1o5pab.execute-api.us-east-1.amazonaws.com';\n  const base = host + '/storefront/v1';\n  const model = 'RealESRGAN_x4plus', resolution = 2048;\n  const primaryTimeoutMs = 30000, fallbackTimeoutMs = 90000;\n  const records = new Map();\n  const uploads = new Map();\n  let bridge, root, timer;\n  const active = file => !!global.__ntUpscaleEnabled && !!file && !file.sheet;\n  const sha256 = async bytes => Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)), b => b.toString(16).padStart(2, '0')).join('');\n  const delay = (ms, signal) => new Promise((resolve, reject) => {\n    if (signal.aborted) return reject(signal.reason);\n    const onAbort = () => { clearTimeout(id); reject(signal.reason); };\n    const id = setTimeout(() => { signal.removeEventListener('abort', onAbort); resolve(); }, ms);\n    signal.addEventListener('abort', onAbort, {once: true});\n  });\n  function printSize(file) {\n    const rows = (file.rows || []).filter(r => Number.isFinite(r.w) && r.w > 0 && Number.isFinite(r.h) && r.h > 0 && r.qty > 0 && Number.isFinite(r.variantId));\n    return rows.length ? {width: Math.max(...rows.map(r => r.w)), height: Math.max(...rows.map(r => r.h))} : null;\n  }\n  function spec(file) {\n    if (!active(file) || !file.superRes) return null;\n    if (file.ntAiPending || file.ntMaskPending || file.ntTextPending || (file.bgRemove && !file.bgrVersions?.[file.bgrModel])) return null;\n    const printSizeInches = printSize(file);\n    if (!printSizeInches) return null;\n    if (file.ntEdges) throw new Error('Set Edges to Original before upscaling.');\n    const source = new URL(bridge.productionUpload({...file, superRes: false, currentOptions: String(file.currentOptions || '').replace(/&?upscale=[^&]*/g, '')}));\n    if (source.protocol !== 'https:' || source.hostname !== 'ninjauploads-production.imgix.net' || source.username || source.password || source.port) throw new Error('This artwork cannot be upscaled.');\n    source.searchParams.delete('upscale');\n    source.searchParams.set('fm', 'png');\n    source.searchParams.set('cs', 'srgb');\n    const key = JSON.stringify([source.href, printSizeInches, model, resolution]);\n    return {sourceUrl: source.href, printSizeInches, key};\n  }\n  function current(file) {\n    try { const s = spec(file), r = records.get(file.id); return s && r?.key === s.key ? r : null; } catch (_) { return null; }\n  }\n  async function request(url, init, signal) {\n    const response = await fetch(url, {...init, credentials: 'omit', signal});\n    if (!response.ok) throw Object.assign(new Error('Upscaling is unavailable. Turn Upscale off or try again.'), {status: response.status, retryAfter: Math.max(2, Number(response.headers.get('Retry-After')) || 2)});\n    return response;\n  }\n  async function json(url, init, signal) {\n    for (let attempt = 0; ; attempt++) {\n      try {\n        const response = await request(url, init, signal);\n        const data = await response.json();\n        const poll = Number(data.pollAfterMs);\n        return {data, retry: Number.isFinite(poll) && poll >= 250 && poll <= 2000 ? poll / 1000 : Math.max(2, Number(response.headers.get('Retry-After')) || 2)};\n      } catch (error) {\n        if (signal.aborted || attempt >= 2 || (error.status && error.status < 500 && error.status !== 429)) throw error;\n        await delay(Math.max(2000 * (attempt + 1), (error.retryAfter || 0) * 1000), signal);\n      }\n    }\n  }\n  async function process(s, r) {\n    const signal = r.controller.signal;\n    if (!r.upload) {\n    const cached = uploads.get(s.sourceUrl);\n    if (cached && cached.upload.expiresAt * 1000 > Date.now() + 30000 && cached.uses < 20) {\n      r.upload = cached.upload; r.serverTransfers = !!cached.serverTransfers; cached.uses++;\n    }\n    }\n    if (!r.upload && global.NtBgrProductionUpload?.tokenFor && global.NtBgrProductionUpload?.acceptReceipt) {\n      let sourceToken;\n      try { sourceToken = global.NtBgrProductionUpload.tokenFor(s.sourceUrl); } catch (_) {}\n      if (sourceToken) {\n        try {\n          r.upload = (await json(base + '/uploads/import', {method:'POST', headers:{'Content-Type':'application/json'},\n            body:JSON.stringify({sourceUrl:s.sourceUrl, sourceToken})}, signal)).data;\n          r.serverTransfers = true;\n          uploads.set(s.sourceUrl, {upload:r.upload, uses:1, serverTransfers:true});\n          while (uploads.size > 16) uploads.delete(uploads.keys().next().value);\n        } catch (error) {\n          if (![400, 403, 404].includes(error.status)) throw error;\n          // Older/edited sources retain the exact existing prepared-source path.\n        }\n      }\n    }\n    if (!r.upload) {\n    const source = await request(s.sourceUrl, {}, signal);\n    const blob = await source.blob();\n    if (!blob.size || blob.size > 100 * 1024 * 1024 || blob.type.split(';')[0] !== 'image/png') throw new Error('This artwork cannot be upscaled.');\n    const upload = (await json(base + '/uploads/intent', {method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({sha256: await sha256(await blob.arrayBuffer()), sizeBytes: blob.size, contentType: 'image/png'})}, signal)).data;\n    const putHeaders = Object.fromEntries(Object.entries(upload.headers).filter(([name]) => name.toLowerCase() !== 'content-length'));\n    await request(upload.uploadUrl, {method: 'PUT', headers: putHeaders, body: blob}, signal);\n    r.upload = upload;\n    uploads.set(s.sourceUrl, {upload, uses: 1});\n    while (uploads.size > 16) uploads.delete(uploads.keys().next().value);\n    }\n    if (!r.body) {\n    const upload = r.upload;\n    r.body = JSON.stringify({uploadId: upload.uploadId, model, resolution, printSizeInches: s.printSizeInches});\n    r.headers = {'Content-Type': 'application/json', 'X-Upload-Token': upload.uploadToken, 'Idempotency-Key': crypto.randomUUID()};\n    }\n    const publication = global.NtBgrProductionUpload?.acceptReceipt ? '?publish=1' : '';\n    const statusAddress = path => { const url = new URL(path, host); if (publication) url.searchParams.set('publish','1'); return url.href; };\n    let {data: job, retry} = r.job ? await json(statusAddress(r.job.statusUrl), {headers: {'X-Job-Token': r.jobToken}}, signal) : await json(base + '/upscale' + publication, {method: 'POST', headers: r.headers, body: r.body}, signal);\n    r.jobToken ||= job.jobToken;\n    const jobToken = r.jobToken;\n    r.job = job;\n    if (job.status === 'submission_unknown') throw new Error('Upscale submission could not be confirmed.');\n    while (!['complete', 'failed', 'expired'].includes(job.status)) {\n      if (Date.now() > job.deadlineUtc * 1000) throw new Error('Upscaling timed out. Turn Upscale off or try again.');\n      await delay(retry * 1000, signal);\n      const statusUrl = new URL(job.statusUrl, host);\n      if (statusUrl.origin !== host || !statusUrl.pathname.startsWith('/storefront/v1/jobs/')) throw new Error('Invalid upscale response.');\n      ({data: job, retry} = await json(statusAddress(statusUrl.href), {headers: {'X-Job-Token': jobToken}}, signal));\n      r.job = job;\n      if (job.status === 'submission_unknown') throw new Error('Upscale submission could not be confirmed.');\n    }\n    if (job.status !== 'complete' || !job.output) throw new Error('Upscaling failed. Turn Upscale off or try again.');\n    const output = await request(job.output.url, {}, signal);\n    const bytes = await output.arrayBuffer();\n    if (bytes.byteLength !== job.output.sizeBytes || await sha256(bytes) !== job.output.sha256) throw new Error('Upscaled artwork could not be verified. Try again.');\n    const result = new Blob([bytes], {type: job.output.contentType});\n    const bitmap = await createImageBitmap(result);\n    const width = bitmap.width, height = bitmap.height;\n    bitmap.close();\n    if (signal.aborted) throw signal.reason;\n    let url = s.sourceUrl;\n    if (job.operation !== 'unchanged') {\n      if (current(r.file) !== r || !bridge.getState().files.includes(r.file)) throw new DOMException('Cancelled', 'AbortError');\n      if (r.previewUrl) URL.revokeObjectURL(r.previewUrl);\n      r.previewUrl = URL.createObjectURL(result);\n      bridge.update({files: [...bridge.getState().files]});\n      paint(r.file, 'Saving upscaled artwork\u2026');\n      let saved;\n      if (job.storefrontOutput) {\n        const published = job.storefrontOutput;\n        if (published.sha256 !== job.output.sha256 || published.sizeBytes !== job.output.sizeBytes || published.contentType !== job.output.contentType) throw new Error('Upscaled artwork could not be verified. Try again.');\n        global.NtBgrProductionUpload.acceptReceipt(published);\n        saved = {imgixUrl:published.url};\n      } else {\n        saved = await bridge.uploadBlob(new File([result], 'upscale-' + job.output.sha256.slice(0, 16) + '.png', {type: result.type}));\n      }\n      const durable = new URL(saved.imgixUrl);\n      if (durable.protocol !== 'https:' || durable.hostname !== 'ninjauploads-production.imgix.net' || durable.search || durable.hash) throw new Error('Upscaled artwork could not be saved. Try again.');\n      url = durable.href + '?fm=png&cs=srgb';\n    }\n    return {url, width, height, operation: job.operation, jobId: job.jobId, sha256: job.output.sha256, provider: job.operation === 'unchanged' ? 'Original' : 'RunPod', model: job.operation === 'unchanged' ? null : model};\n  }\n  function assertCurrent(r, signal) {\n    if (signal.aborted || current(r.file) !== r || !bridge.getState().files.includes(r.file)) throw signal.reason || new DOMException('Cancelled', 'AbortError');\n  }\n  function durableUrl(value) {\n    const url = new URL(value);\n    if (url.protocol !== 'https:' || url.hostname !== 'ninjauploads-production.imgix.net' || url.username || url.password || url.port || url.search || url.hash) throw new Error('Upscaled artwork could not be saved. Try again.');\n    return url;\n  }\n  async function stage(r, duration, operation) {\n    const controller = new AbortController(); r.controller = controller;\n    const signal = controller.signal;\n    let onAbort, timedOut = false;\n    const aborted = new Promise((_, reject) => {\n      onAbort = () => reject(timedOut ? Object.assign(new Error('Upscaling timed out. Turn Upscale off or try again.'), {name:'TimeoutError'}) : signal.reason || new DOMException('Cancelled', 'AbortError'));\n      signal.addEventListener('abort', onAbort, {once:true});\n    });\n    // Keep fetch cancellation standard; report the stage deadline separately.\n    const deadline = setTimeout(() => { timedOut = true; controller.abort(); }, duration);\n    try { return await Promise.race([operation(signal), aborted]); }\n    finally { clearTimeout(deadline); signal.removeEventListener('abort', onAbort); }\n  }\n  async function fallback(s, r, signal) {\n    // Freeze the exact prepared pixels before AI processing, including crops and edits.\n    // Uploads may not support cancellation; every continuation checks source ownership.\n    const response = await request(s.sourceUrl, {}, signal);\n    const blob = await response.blob();\n    if (!blob.size || blob.size > 100 * 1024 * 1024 || blob.type.split(';')[0] !== 'image/png') throw new Error('This artwork cannot be upscaled.');\n    const bitmap = await createImageBitmap(blob);\n    const sourceWidth = bitmap.width, sourceHeight = bitmap.height; bitmap.close();\n    assertCurrent(r, signal);\n    if (Math.max(sourceWidth, sourceHeight) >= resolution || (sourceWidth / s.printSizeInches.width >= 150 && sourceHeight / s.printSizeInches.height >= 150)) {\n      return {url:s.sourceUrl, width:sourceWidth, height:sourceHeight, operation:'unchanged', provider:'Original', model:null, fallback:true};\n    }\n    const source = await bridge.uploadBlob(new File([blob], 'upscale-source.png', {type:'image/png'}));\n    assertCurrent(r, signal);\n    const url = durableUrl(source.imgixUrl);\n    for (const [key,value] of Object.entries({upscale:'true', 'upscale-fallback':'false', fm:'png', cs:'srgb', fit:'clip', w:String(resolution), h:String(resolution)})) url.searchParams.set(key,value);\n    const rendered = await request(url.href, {}, signal);\n    const output = await rendered.blob();\n    if (!output.size || output.size > 100 * 1024 * 1024 || output.type.split(';')[0] !== 'image/png') throw new Error('Upscaled artwork could not be verified. Try again.');\n    const decoded = await createImageBitmap(output);\n    const width = decoded.width, height = decoded.height; decoded.close();\n    const expectedWidth = Math.round(sourceWidth * resolution / Math.max(sourceWidth, sourceHeight));\n    const expectedHeight = Math.round(sourceHeight * resolution / Math.max(sourceWidth, sourceHeight));\n    if (Math.max(width,height) !== resolution || Math.abs(width-expectedWidth)>1 || Math.abs(height-expectedHeight)>1) throw new Error('Upscaled artwork could not be verified. Try again.');\n    const sha = await sha256(await output.arrayBuffer());\n    assertCurrent(r, signal);\n    const saved = await bridge.uploadBlob(new File([output], 'upscale-'+sha.slice(0,16)+'.png', {type:'image/png'}));\n    assertCurrent(r, signal);\n    const resultUrl = durableUrl(saved.imgixUrl).href + '?fm=png&cs=srgb';\n    // Never retain a premium-render URL in the cart or apply a late primary result.\n    if (r.previewUrl) URL.revokeObjectURL(r.previewUrl);\n    r.previewUrl = URL.createObjectURL(output);\n    return {url:resultUrl, width, height, operation:'upscaled', provider:'Imgix', model:'Imgix Super Resolution', sha256:sha, fallback:true};\n  }\n  function paint(file, message) {\n    const scopes = Array.from(root.querySelectorAll('[data-bsv4-tile]')).filter(el => el.dataset.bsv4Tile === String(file.id));\n    const state = bridge.getState();\n    if (state.activeFileId === file.id || (!state.activeFileId && state.files[0] === file)) scopes.push(root);\n    for (const scope of scopes) {\n      const host = scope.querySelector('[data-bsv4-canvas] figure');\n      if (!host) continue;\n      let status = host.querySelector('[data-nt-upscale-status]');\n      if (!status) { status = document.createElement('p'); status.dataset.ntUpscaleStatus = ''; status.setAttribute('role', 'status'); Object.assign(status.style, {position: 'absolute', top: '52px', right: '12px', maxWidth: 'calc(100% - 24px)', margin: '0', padding: '5px 9px', borderRadius: '5px', background: '#fff', color: '#172b4d', fontSize: '12px', lineHeight: '1.4', zIndex: '3', pointerEvents: 'none'}); host.append(status); }\n      status.textContent = message;\n      status.hidden = !message;\n    }\n  }\n  function status(file) {\n    if (!file.superRes) return '';\n    const r = current(file);\n    if (!r) {\n      try { spec(file); } catch (error) { return error.message; }\n      return printSize(file) ? 'Waiting for artwork\u2026' : 'Choose a print size to upscale.';\n    }\n    if (r.error) return r.error;\n    if (!r.result) return r.fallbackActive ? 'Retrying upscaling\u2026' : r.previewUrl ? 'Saving upscaled artwork\u2026' : 'Upscaling\u2026';\n    return r.result.operation === 'unchanged' ? 'Original resolution retained.' : 'Upscaled';\n  }\n  function ensure(file, retry = false) {\n    let s;\n    try { s = spec(file); } catch (error) { paint(file, error.message); return Promise.reject(error); }\n    if (!s) return Promise.reject(new Error('Choose a print size and wait for your artwork to finish processing.'));\n    let r = records.get(file.id);\n    if (r?.key === s.key && (!r.error || !retry)) return r.promise;\n    const previous = r?.key === s.key ? r : null;\n    r?.controller.abort();\n    if (!previous && r?.previewUrl) URL.revokeObjectURL(r.previewUrl);\n    r = {...previous, file, key:s.key, error:null, result:null, fallbackActive:!!previous?.fallbackActive && previous?.job?.status !== 'complete', controller:new AbortController()};\n    records.set(file.id, r);\n    r.promise = (async () => {\n      if (!r.fallbackActive) {\n        try { return await stage(r, primaryTimeoutMs, () => process(s, r)); }\n        catch (error) {\n          if (error.name === 'AbortError' || current(file) !== r || !bridge.getState().files.includes(file)) throw error;\n          r.fallbackActive = true;\n          if (r.previewUrl) { URL.revokeObjectURL(r.previewUrl); r.previewUrl = null; }\n          paint(file, 'Retrying upscaling\u2026');\n        }\n      }\n      return stage(r, fallbackTimeoutMs, signal => fallback(s, r, signal));\n    })().then(result => {\n      assertCurrent(r, r.controller.signal);\n      r.result = result;\n      bridge.update({files:[...bridge.getState().files]});\n      paint(file, status(file));\n      return result;\n    }).catch(error => {\n      // Source changes/toggle-off delete this record. A timeout on the current\n      // record must release busy state and permit a fresh fallback attempt.\n      if (records.get(file.id) === r && current(file) === r) {\n        r.error = 'Upscaling failed. Turn Upscale off or try again.';\n        paint(file, r.error);\n        bridge.update({files:[...bridge.getState().files]});\n      }\n      throw error;\n    });\n    r.promise.catch(() => {});\n    paint(file, 'Upscaling\u2026');\n    return r.promise;\n  }\n  function sync() {\n    clearTimeout(timer);\n    const files = bridge.getState().files;\n    for (const [id, record] of records) {\n      const file = files.find(f => f.id === id);\n      if (!file || !file.superRes || current(file) !== record) { record.controller.abort(); if (record.previewUrl) URL.revokeObjectURL(record.previewUrl); records.delete(id); }\n    }\n    timer = setTimeout(() => {\n      for (const file of bridge.getState().files) {\n        if (!active(file)) continue;\n        if (file.superRes) ensure(file).catch(() => {});\n        paint(file, status(file));\n      }\n    }, 350);\n  }\n  function init(element) {\n    if (bridge || !global.__ntUpscaleEnabled) return;\n    bridge = global.__bsv4Bridge; root = element;\n    bridge.subscribe(sync);\n    (global.__bsv5BusyProbes ||= []).push(file => active(file) && file.superRes && !!current(file) && !current(file).result && !current(file).error);\n    sync();\n  }\n  async function prepare(files) {\n    for (const file of files) if (active(file) && file.superRes) await ensure(file, true);\n  }\n  function apply(properties, file) {\n    if (!active(file) || !file.superRes) return;\n    const result = current(file)?.result;\n    if (!result) throw new Error('Wait for upscaling to finish, or turn Upscale off.');\n    properties['Upload (Vector Files Preferred)'] = result.url;\n    properties._cartImg = result.url + '&w=150&h=150&fit=max';\n    properties['Super Resolution'] = result.operation === 'upscaled' ? 'Yes' : 'No';\n    delete properties['_Super Resolution']; delete properties['__Super Resolution'];\n    delete properties['_Upscale Model']; delete properties['_Upscale Job']; delete properties['_Upscale Fallback'];\n    properties['_Upscale Provider'] = result.provider;\n    if (result.model) properties['_Upscale Model'] = result.model;\n    if (result.fallback) properties['_Upscale Fallback'] = 'Yes';\n    properties['_Upscale Operation'] = result.operation;\n    if (result.jobId) properties['_Upscale Job'] = result.jobId;\n  }\n  function preview(file) {\n    const r = current(file);\n    return r?.previewUrl || (r?.result ? r.result.url + '&w=1600&h=1600&fit=max' : null);\n  }\n  function dpi(file, row, fallback) {\n    if (!active(file)) return file.superRes ? fallback * 4 : fallback;\n    const result = file.superRes && current(file)?.result;\n    return result ? Math.min(result.width / row.w, result.height / row.h) : fallback;\n  }\n  global.NtUpscale = Object.freeze({active, init, prepare, apply, preview, dpi, printSize});\n})(window);\n"],
  "mappings": "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",
  "names": ["init", "url", "host", "status", "fallback"]
}
