{
  "version": 3,
  "sources": ["/cdn/shop/t/1064/assets/nt-print-ready.js?auto=format%2Ccompress"],
  "sourcesContent": ["/* Print-ready reuse (production-art-sync, Justin 2026-10-12)\n *\n * Once an order ships, the production-art-sync Lambda records the print-ready file our art team\n * made for each line: CRM2's own file in the company bucket eztees-order-designs-printareas (or,\n * for the odd private one, a copy in ninjatransfers-production-art), with a 600 px preview in\n * ninjatransfers-production-art. My Designs hands those files to the by-size product pages for\n * reorders and reuse. This file holds the rules for a design that IS such a file:\n *\n *  - Cart line: `Upload (Vector Files Preferred)` and `_Original Image` = the raw print-ready file,\n *    `_cartImg` = its preview, Remove Background / Super Resolution = No, and `_reorder`\n *    (Justin 2026-10-12, both notes again):\n *      \"THIS IS AN EXACT REORDER OF NT-\u2026 (CRM#\u2026) LINE ITEM ID#\u2026. DO NOT ALTER OR TOUCH THIS FILE\"\n *        at the printed size or smaller,\n *      \"SIMILAR REORDER OF NT-\u2026 (CRM#\u2026) LINE ITEM ID#\u2026. NEW SIZE FOR THIS ORDER.\"  only when the size\n *        asked for is LARGER than the file's printed size (Justin 2026-10-13)\n *    and `_Print Ready Size` = the file's printed size (\"10 x 9.83\"), so a size edit in the cart\n *    (cart-edit-size.js) can apply the same rule.\n *    (NT-\u2026 = the order that made the file, CRM# = its CRM2 order, LINE ITEM ID# = its CRM2 print\n *    area). A new size is still a reorder.\n *  - Remove Background and Upscale stay off and are shown DISABLED, with a hover message \"This feature\n *    is disabled for print ready files\" (Justin 2026-11-02; they were hidden before): the file is not\n *    on imgix, so those transforms cannot run on it, and it is already final.\n *  - Edit with AI, Add Text, Recolor, Filters, Crop or Unlock Proportions = a net new image. The first\n *    use re-uploads the print-ready file as a fresh upload (on imgix, where those tools work) and\n *    drops the reorder: no `_reorder` note from then on.\n *\n * Both by-size engines (bysize-v4.js and the BGR experiment's nt-bgr-common.js) are reached only\n * through hooks they already expose, so neither bundle is rebuilt for this:\n *   window.__bsv4 (getState / update / subscribe), window.__bsv4Bridge.uploadBlob,\n *   window.__bsv4ItemProps(file, row) (extra cart properties; other scripts may set it too, so this\n *   composes with them instead of replacing them).\n * My Designs (assets/nt-artwork-data.js) records each print-ready file's printed size, order and\n * preview in localStorage (META_KEY) when it loads, and its direct Add to Cart uses lineProps().\n */\n(function () {\n  'use strict';\n  if (window.ntPrintReady) return;\n\n  var HOST_RE = /^https:\\/\\/(?:ninjatransfers-production-art\\.s3[.\\w-]*\\.amazonaws\\.com\\/art\\/|eztees-order-designs-printareas\\.s3[.\\w-]*\\.amazonaws\\.com\\/)/i;\n  var COPY_RE = /^https:\\/\\/ninjatransfers-production-art\\./i;\n  var META_KEY = 'nt-print-ready-v1';\n  var UPLOAD = 'Upload (Vector Files Preferred)';\n\n  function bare(u) { return String(u || '').split('?')[0]; }\n  function isPrintReady(u) { return HOST_RE.test(bare(u)); }\n  /* Our copies keep <name>.preview.png beside them; a CRM2 file's preview is only known from the\n     customer's list (meta().p, recorded by My Designs and My Orders, or the list on this page),\n     else the file itself. */\n  function previewOf(u) { return COPY_RE.test(bare(u)) ? bare(u).replace(/\\.[a-z0-9]+$/i, '') + '.preview.png' : bare(u); }\n\n  /* { \"<file url>\": { o: \"NT-\u2026\", c: <CRM2 order ID>, a: <CRM2 print area ID>, w: 11, h: 10.2, p: \"<preview url>\",\n       k: [<keys of the uploads it was made from>] } } */\n  function readMeta() {\n    try { return JSON.parse(localStorage.getItem(META_KEY) || '{}') || {}; } catch (e) { return {}; }\n  }\n  function meta(u) { return readMeta()[bare(u)] || null; }\n  function remember(entries) {\n    try {\n      var all = readMeta(), keys;\n      entries.forEach(function (e) {\n        if (!e || !isPrintReady(e.url)) return;\n        var had = all[bare(e.url)] || {};\n        all[bare(e.url)] = { o: e.o, c: e.c, a: e.a, w: e.w, h: e.h, p: e.p, k: Array.isArray(e.k) ? e.k : had.k };\n      });\n      keys = Object.keys(all);\n      while (keys.length > 1000) delete all[keys.shift()];\n      localStorage.setItem(META_KEY, JSON.stringify(all));\n    } catch (e) {}\n  }\n\n  function knownSize(printed) { return !!(printed && +printed.w > 0 && +printed.h > 0); }\n  /* Larger than the print-ready file's printed size, on either side. */\n  function biggerThan(w, h, printed) { return (+w || 0) > +printed.w + 0.005 || (+h || 0) > +printed.h + 0.005; }\n  /* exact: true / false when the caller knows (My Designs' quick Add to Cart); otherwise EXACT up to\n     the printed size and SIMILAR above it (Justin 2026-10-13), SIMILAR when the printed size is\n     unknown. */\n  function reorderNote(order, w, h, printed, exact) {\n    order = String(order || '').replace(/^#/, '').trim();\n    if (!order) return '';\n    if (typeof exact !== 'boolean') exact = knownSize(printed) && !biggerThan(w, h, printed);\n    var ref = order + (printed && printed.c ? ' (CRM#' + printed.c + ')' : '') + (printed && printed.a ? ' LINE ITEM ID#' + printed.a : '');\n    return exact\n      ? 'THIS IS AN EXACT REORDER OF ' + ref + '. DO NOT ALTER OR TOUCH THIS FILE'\n      : 'SIMILAR REORDER OF ' + ref + '. NEW SIZE FOR THIS ORDER.';\n  }\n\n  /* The record for a print-ready file: its own, else the largest file of the design it was reused\n     for (Justin 2026-10-23, NT-2788541). The customer's list keeps only its newest ~128 KB, so a\n     busy customer's older files drop out of it while they live on in newer orders as the upload a\n     reorder sent, named in that order's entry (`k`). Without a record the printed size was unknown\n     and a smaller size read SIMILAR. Returns { url, m }: the file to attach and its record. */\n  function onRecord(url) {\n    var m = meta(url);\n    if (m) return { url: bare(url), m: m };\n    var key = fileKey(url), list = items();\n    if (!list.length) {\n      var all = readMeta();\n      list = Object.keys(all).map(function (u) { var x = all[u]; return { u: u, o: x.o, c: x.c, a: x.a, w: x.w, h: x.h, p: x.p, k: x.k }; });\n    }\n    var from = list.filter(function (x) { return hasKey(x, key); })[0];\n    if (!from) return { url: bare(url), m: {} };\n    var best = largestLinked(from, list);\n    return { url: bare(best.u), m: { o: best.o, c: best.c, a: best.a, w: best.w, h: best.h, p: best.p } };\n  }\n\n  /* The print-ready file a 600 px preview of ours was made from ('' when `u` is not one, or the\n     page does not know it): the customer's list, else the records kept in this browser. A preview\n     is never the file a line prints (Justin 2026-11-02: NT-2783073 sent one as its upload). */\n  var OUR_PREVIEW_RE = /^https:\\/\\/ninjatransfers-production-art\\.s3[.\\w-]*\\.amazonaws\\.com\\/art\\/[^?#]*\\.preview\\.png$/i;\n  function fileForPreview(u) {\n    u = bare(u);\n    if (!OUR_PREVIEW_RE.test(u)) return '';\n    var hit = items().filter(function (x) { return x.p && bare(x.p) === u && x.u; })[0];\n    if (hit) return bare(hit.u);\n    var all = readMeta();\n    return Object.keys(all).filter(function (f) { return all[f] && all[f].p && bare(all[f].p) === u; })[0] || '';\n  }\n\n  /* The print-ready properties for a line whose upload is `url`, at w x h inches. */\n  function printReadyProps(url, w, h, fallbackOrder, exact) {\n    url = fileForPreview(url) || url;\n    var rec = onRecord(url), m = rec.m;\n    url = rec.url;\n    var p = {};\n    p[UPLOAD] = bare(url);\n    p['_Original Image'] = bare(url);\n    /* the 600 px preview, never the raw file: a gang sheet can be hundreds of MB, which the cart\n       thumbnail and its zoom would load in full (Justin 2026-10-20) */\n    var own = !m.p && items().filter(function (x) { return bare(x.u) === bare(url); })[0];\n    p._cartImg = m.p || (own && own.p) || previewOf(url);\n    p['Remove Background'] = 'No';\n    p['Super Resolution'] = 'No';\n    var note = reorderNote(m.o || fallbackOrder, w, h, m, exact);\n    if (note) p._reorder = note;\n    if (knownSize(m)) p['_Print Ready Size'] = (+m.w) + ' x ' + (+m.h);\n    return p;\n  }\n\n  /* A finished properties object (e.g. My Designs' direct Add to Cart): print-ready rules applied\n     when its upload is a print-ready file, untouched otherwise (it keeps its own note, \"Design\n     previously used on #\u2026\"). opts.resized (My Designs' quick Add to Cart): a size the customer left\n     as ordered is the EXACT reorder (Justin 2026-10-12; CRM2 sometimes printed a hair smaller than\n     ordered); an edited size is SIMILAR only when it is larger than the file's printed size\n     (Justin 2026-10-13). */\n  /* A reorder of a print-ready file carries none of the OLD line's edit flags (Justin 2026-11-02: NT-2819505\n     showed \"AI Edit: Yes\" and \"Remove Background: Yes\" beside an EXACT REORDER note: the My Orders Reorder\n     button copies the original line's properties, and the original had been AI-edited). The print-ready file\n     is the finished art, so: no edit flags, Remove Background / Super Resolution = No. */\n  var STALE_EDIT_KEYS = ['AI Edit', '_AI Edit Count', 'AI Created', '_recolor', '_Text Added', '_image filters', '_Crop'];\n  /* Off on a print-ready file, and a flag only reaches the order when Yes (theme #855), so neither form is\n     kept. The hidden forms were missed: a My Orders reorder of a background-removed line kept\n     \"_Remove Background: Yes\" beside its EXACT note (NT-2798575), and since #855 drops a \"No\" before the\n     rename, the visible \"No\" here no longer overwrote a hidden \"Yes\" on the way to the cart. */\n  var OFF_FLAG_KEYS = ['Remove Background', '_Remove Background', 'Super Resolution', '_Super Resolution'];\n  function scrubEdits(out) {\n    STALE_EDIT_KEYS.forEach(function (k) { delete out[k]; });\n    OFF_FLAG_KEYS.forEach(function (k) { delete out[k]; });\n    return out;\n  }\n  function lineProps(props, fallbackOrder, opts) {\n    if (!props) return props;\n    var up = props[UPLOAD] || props['_' + UPLOAD];\n    if (!isPrintReady(up)) return props;\n    var out = {};\n    Object.keys(props).forEach(function (k) {\n      if (/^_?reorder$/i.test(k) || /^_?design notes$/i.test(k)) return; /* notes reset (Justin 2026-10-12) */\n      out[k] = props[k];\n    });\n    var w = parseFloat(props._width), h = parseFloat(props._height), exact;\n    if (opts && typeof opts.resized === 'boolean') {\n      var m = onRecord(up).m;\n      exact = !opts.resized || (knownSize(m) && !biggerThan(w, h, m));\n    }\n    var fresh = printReadyProps(up, w, h, fallbackOrder, exact);\n    if (props['_' + UPLOAD] && !props[UPLOAD]) { fresh['_' + UPLOAD] = fresh[UPLOAD]; delete fresh[UPLOAD]; }\n    Object.keys(fresh).forEach(function (k) { out[k] = fresh[k]; });\n    return scrubEdits(out);\n  }\n\n  /* The customer's production art (customer metafield custom.production_art), which Liquid renders\n     into script[data-nt-production-art] on My Designs and the members portal (My Orders). */\n  function items() {\n    try {\n      var el = document.querySelector('script[data-nt-production-art]');\n      return unpack(el ? JSON.parse(el.textContent || 'null') : null);\n    } catch (e) { return []; }\n  }\n  /* The Lambda stores the list grouped by order with short links (v 2, production-art-sync\n     packCustomerIndex, 2026-10-23: a metafield holds ~128 KB, and a busy customer's list had room\n     for only their 11 newest orders). Unpacked here to the flat entries with full links that every\n     reader uses; a v 1 list (flat already) passes through.\n       { v: 2, orders: [{ o, c, d, x, f: [{ u, p, \u2026 }] }] }   u / p: \"crm2/<file>\", \"art/<token>/<file>\",\n       a full URL, or (p) a bare name = art/<x>/<name>.preview.png */\n  var CRM2_BASE = 'https://eztees-order-designs-printareas.s3.amazonaws.com/';\n  var ART_BASE = 'https://ninjatransfers-production-art.s3.amazonaws.com/';\n  function fullLink(v) {\n    if (typeof v !== 'string') return v;\n    if (v.indexOf('crm2/') === 0) return CRM2_BASE + v.slice(5);\n    return v.indexOf('art/') === 0 ? ART_BASE + v : v;\n  }\n  function unpack(data) {\n    if (!data) return [];\n    if (Array.isArray(data.items)) return data.items;\n    var out = [];\n    (Array.isArray(data.orders) ? data.orders : []).forEach(function (g) {\n      (g && Array.isArray(g.f) ? g.f : []).forEach(function (f) {\n        var it = { o: g.o, d: g.d };\n        if (g.c) it.c = g.c;\n        Object.keys(f).forEach(function (k) { it[k] = f[k]; });\n        it.u = fullLink(f.u);\n        it.p = !f.p ? null : (g.x && f.p.indexOf('/') < 0 ? ART_BASE + 'art/' + g.x + '/' + f.p + '.preview.png' : fullLink(f.p));\n        out.push(it);\n      });\n    });\n    return out;\n  }\n  /* The theme's file identity (normalizeFileKey in nt-artwork-data.js): last path segment, no query. */\n  function fileKey(u) {\n    var last = bare(u).split('/').pop() || '';\n    try { return decodeURIComponent(last); } catch (e) { return last; }\n  }\n  function hasKey(it, key) { return !!key && Array.isArray(it.k) && it.k.indexOf(key) > -1; }\n  /* Only the largest print-ready file is kept on record for a design, and it is used for every\n     reorder until a bigger one exists (Justin 2026-10-12). A design = every file linked to `item`\n     by reuse: made from it (the newer order's upload was its file), or it made from them.\n     Largest = tallest, then widest. */\n  function largestLinked(item, list) {\n    list = list || items();\n    var seen = [item], best = item;\n    for (var q = 0; q < seen.length && seen.length < 50; q++) {\n      var cur = seen[q], curKey = fileKey(cur.u);\n      list.forEach(function (x) {\n        if (seen.indexOf(x) > -1) return;\n        if (hasKey(x, curKey) || hasKey(cur, fileKey(x.u))) seen.push(x);\n      });\n    }\n    seen.forEach(function (x) {\n      if ((+x.h || 0) > (+best.h || 0) || ((+x.h || 0) === (+best.h || 0) && (+x.w || 0) > (+best.w || 0))) best = x;\n    });\n    return best;\n  }\n  /* A My Orders reorder line (properties already carrying that order's print-ready file): when a\n     bigger file of the same design exists, attach that one instead, with its note (EXACT up to its\n     printed size, SIMILAR above it) and its printed size. Otherwise the line is returned untouched. */\n  function preferLargest(props) {\n    if (!props) return props;\n    var upKey = props['_' + UPLOAD] !== undefined ? '_' + UPLOAD : (props[UPLOAD] !== undefined ? UPLOAD : '');\n    if (!upKey || !isPrintReady(props[upKey])) return props;\n    var list = items();\n    var own = list.filter(function (x) { return bare(x.u) === bare(props[upKey]); })[0];\n    var best = own ? largestLinked(own, list) : null;\n    if (!own || best === own) {\n      var same = {};\n      Object.keys(props).forEach(function (k) { same[k] = props[k]; });\n      return scrubEdits(same);\n    }\n    var out = {};\n    Object.keys(props).forEach(function (k) { if (!/^_?reorder$/i.test(k)) out[k] = props[k]; });\n    out[upKey] = bare(best.u);\n    if (out['_Original Image'] !== undefined) out['_Original Image'] = bare(best.u);\n    if (best.p) out._cartImg = best.p;\n    var note = reorderNote(best.o, parseFloat(props._width), parseFloat(props._height), { w: best.w, h: best.h, c: best.c, a: best.a });\n    if (note) out._reorder = note;\n    if (knownSize(best)) out['_Print Ready Size'] = (+best.w) + ' x ' + (+best.h);\n    else delete out['_Print Ready Size'];\n    return scrubEdits(out);\n  }\n\n  /* Every page that carries the customer's production art (My Designs, the members portal / My\n     Orders) records each print-ready file's order, size and 600 px preview, so a product page\n     reached from any of them gives the cart our preview, not the raw file (Justin 2026-10-20).\n     Oldest first, so the newest survive the cap. */\n  (function () {\n    var list = items();\n    if (list.length) remember(list.slice().reverse().map(function (x) { return { url: x.u, o: x.o, c: x.c, a: x.a, w: x.w, h: x.h, p: x.p, k: x.k }; }));\n  })();\n\n  window.ntPrintReady = {\n    items: items,\n    largestLinked: largestLinked,\n    preferLargest: preferLargest,\n    isPrintReady: isPrintReady,\n    meta: meta,\n    remember: remember,\n    reorderNote: reorderNote,\n    lineProps: lineProps,\n    previewOf: previewOf,\n    fileForPreview: fileForPreview\n  };\n\n  /* ------------------------------------------------ by-size product pages */\n\n  /* Stickers, spangle and puff never go to CRM2, so none of the print-ready handling below applies\n     on their pages (Justin 2026-10-12). Primary signal: the PRODUCT TYPE (any type containing\n     sticker/spangle/puff covers every sticker page), from Shopify's own ShopifyAnalytics meta.\n     Backups: the sticker option groups ([data-stk-group]), spangle's colour picker\n     ([data-nt-spg]) and the template name in the body class. The shared helpers above\n     (My Designs, My Orders) are untouched. */\n  var NON_CRM_RE = /sticker|spangle|puff/i;\n  function nonCrmPage() {\n    var meta = window.ShopifyAnalytics && window.ShopifyAnalytics.meta;\n    var type = meta && meta.product && meta.product.type;\n    if (type && NON_CRM_RE.test(type)) return true;\n    if (document.querySelector('[data-stk-group], [data-nt-spg]')) return true;\n    return /\\btemplate-product-[\\w-]*(puff|spangle|sticker)/.test((document.body && document.body.className) || '');\n  }\n  function prHere(u) { return isPrintReady(u) && !nonCrmPage(); }\n\n  /* Cart properties, composed with any other __bsv4ItemProps (sticker, spangle, gang cards\u2026).\n     \u26A0 Every function assigned to the hook goes on a CHAIN, newest last. A wrapper that read\n     the hook first captured composedProps itself as its \"original\" (nt-stk-builder's\n     wrapItemProps does exactly that), so calling it back must hand over the NEXT function\n     down the chain, not start again at the top \u2014 that loop was \"Maximum call stack size\n     exceeded\" and a dead Proceed to Checkout on every sticker product (Justin 2026-10-12).\n     Print-ready properties are applied once, by the outermost call. */\n  var chain = typeof window.__bsv4ItemProps === 'function' ? [window.__bsv4ItemProps] : [];\n  var depth = 0;\n  function composedProps(file, row) {\n    var level = depth;\n    var fn = chain[chain.length - 1 - level];\n    var base = {};\n    depth++;\n    try { base = typeof fn === 'function' ? (fn.apply(this, arguments) || {}) : {}; }\n    finally { depth--; }\n    if (level > 0) return base;\n    if (!file || !prHere(file.s3Url)) return base;\n    /* The engine applies its background-removal override after this hook; keep it off so it\n       cannot replace the print-ready upload. */\n    file.bgRemove = false;\n    file.superRes = false;\n    var mine = printReadyProps(file.s3Url, row && row.w, row && row.h, file.reorderOf);\n    var out = {};\n    Object.keys(base).forEach(function (k) { out[k] = base[k]; });\n    Object.keys(mine).forEach(function (k) { out[k] = mine[k]; });\n    return out;\n  }\n  /* No Design Notes on a print-ready line (Justin 2026-10-27). The engines write the page's note\n     AFTER the hook above, so hide-upload-property.js calls dropNotes() on each cart/add.js line,\n     before its own rule that a note wipes the line's _reorder. */\n  function dropNotes(props) {\n    if (!props || !prHere(props[UPLOAD] || props['_' + UPLOAD])) return false;\n    var hit = false;\n    Object.keys(props).forEach(function (k) { if (/^_?design notes$/i.test(k)) { delete props[k]; hit = true; } });\n    return hit;\n  }\n  window.ntPrintReady.dropNotes = dropNotes;\n\n  try {\n    Object.defineProperty(window, '__bsv4ItemProps', {\n      configurable: true,\n      get: function () { return composedProps; },\n      set: function (fn) { if (typeof fn === 'function' && fn !== composedProps) chain.push(fn); }\n    });\n  } catch (e) {\n    window.__bsv4ItemProps = composedProps;\n  }\n\n  var styleEl = null;\n  function setStyle(css) {\n    if (!styleEl) {\n      styleEl = document.createElement('style');\n      styleEl.id = 'nt-print-ready-style';\n      document.head.appendChild(styleEl);\n    }\n    if (styleEl.textContent !== css) styleEl.textContent = css;\n  }\n\n  function api() { return window.__bsv4 && typeof window.__bsv4.getState === 'function' ? window.__bsv4 : null; }\n  function files() { var a = api(); return (a && a.getState().files) || []; }\n  function activeFile() {\n    var a = api(); if (!a) return null;\n    var st = a.getState(), fs = st.files || [];\n    return fs.find(function (f) { return f.id === st.activeFileId; }) || fs[0] || null;\n  }\n\n  /* Hide Remove Background / Upscale for print-ready designs and keep them off. Design Notes too\n     (Justin 2026-10-27): the file is final, and a note on its line would also drop its reorder\n     note (hide-upload-property.js). */\n  /* Remove Background / Upscale on a print-ready design: shown greyed out, not clickable, with a hover\n     message (Justin 2026-11-02). The clicks are also blocked below (DISABLED_SEL). */\n  var DISABLED_MSG = 'This feature is disabled for print ready files';\n  function disabledCss(sel) {\n    var kids = sel.split(',').map(function (x) { return x + ' *'; }).join(',');\n    return sel + '{opacity:.45!important;cursor:not-allowed!important;filter:grayscale(1)}' +\n      kids + '{pointer-events:none!important}';\n  }\n  /* The message is a small fixed tooltip (not a CSS ::after): the rail and tool row clip overflow, and the\n     grey-out's opacity would fade it. Shown on hover, and for a moment on a tap (phones have no hover). */\n  var tipEl = null, tipTimer = 0;\n  function showTip(el) {\n    if (!tipEl) {\n      tipEl = document.createElement('div');\n      tipEl.id = 'nt-print-ready-tip';\n      tipEl.setAttribute('role', 'tooltip');\n      tipEl.style.cssText = 'position:fixed;z-index:2147483000;max-width:min(340px,90vw);padding:6px 10px;border-radius:8px;' +\n        'background:#17181a;color:#fff;font:500 12px/1.3 Inter,system-ui,sans-serif;text-align:center;pointer-events:none;' +\n        'box-shadow:0 4px 14px rgba(0,0,0,.18)';\n      tipEl.textContent = DISABLED_MSG;\n      document.body.appendChild(tipEl);\n    }\n    clearTimeout(tipTimer);\n    tipEl.hidden = false;\n    var r = el.getBoundingClientRect(), t = tipEl.getBoundingClientRect();\n    var x = Math.max(8, Math.min(window.innerWidth - t.width - 8, r.left + r.width / 2 - t.width / 2));\n    var y = r.top - t.height - 8; if (y < 8) y = r.bottom + 8;\n    tipEl.style.left = Math.round(x) + 'px'; tipEl.style.top = Math.round(y) + 'px';\n  }\n  function hideTip() { if (tipEl) tipEl.hidden = true; }\n  function offControl(target) {\n    var off = target && target.closest && target.closest(DISABLED_SEL);\n    if (!off) return null;\n    var f = fileForTool(off);\n    return f && prHere(f.s3Url) ? off : null;\n  }\n  document.addEventListener('mouseover', function (e) { var off = offControl(e.target); if (off) showTip(off); else hideTip(); });\n  document.addEventListener('scroll', hideTip, true);\n  function sync() {\n    var a = api(); if (!a) return;\n    var fs = files(), css = [], changed = false;\n    fs.forEach(function (f) {\n      if (!prHere(f.s3Url)) return;\n      if (f.bgRemove || f.superRes) { f.bgRemove = false; f.superRes = false; changed = true; }\n      f.designNote = '';\n      var id = String(f.id).replace(/[\"\\\\]/g, '');\n      /* By Size v5 (Owen 2026-11-02): Remove BG / Upscale greyed by bysize-v4-size-gate.js prGate (\"This feature is\n         disabled for print ready files\"); every other page: shown disabled here (main, Justin 11-02) */\n      if (window.__bsv5Tools) css.push('[data-bsv4-tile=\"' + id + '\"] .bsv4-tile__note{display:none!important}');\n      else {\n        css.push(disabledCss(\n          '[data-bsv4-bgr-for=\"' + id + '\"] .bsv4-ai-card--bgr,' +\n          '[data-bsv4-bgr-for=\"' + id + '\"] .bsv4-ai-card--up,' +\n          '[data-bsv4-edit-for=\"' + id + '\"] [data-bsv4-upscale]'\n        ));\n        css.push('[data-bsv4-tile=\"' + id + '\"] .bsv4-tile__note{display:none!important}');\n        (f.rows || []).forEach(function (r) {\n          css.push('[data-bsv4-row-id=\"' + String(r.id).replace(/[\"\\\\]/g, '') + '\"] .bsv4-dpi-up{display:none!important}');\n        });\n      }\n    });\n    var act = activeFile();\n    /* By Size v5 (Owen 2026-11-02): a print-ready design hides the whole left column (Remove BG / Edge) and the\n       preview takes that space \u2014 the layout is nt-stage-tools.css, keyed on this class */\n    var prOn = !!(window.__bsv5Tools && act && prHere(act.s3Url));\n    Array.prototype.forEach.call(document.querySelectorAll('.bsv4-preview'), function (pv) {\n      if (pv.classList.contains('ntpr-on') !== prOn) pv.classList.toggle('ntpr-on', prOn);\n    });\n    if (act && prHere(act.s3Url)) {\n      if (!window.__bsv5Tools) {\n        /* the stage tool bar's own Remove BG row (nt-stage-tools.js) and the Request Edits modal's switch too */\n        css.push(disabledCss('.bsv4-aitools--stage [data-bsv4-upscale],.bsv4-preview .bsv4-ai-card--bgr,.bsv4-preview .bsv4-ai-card--up,[data-ntst-bgr],.ntre .ntre__tile--inline'));\n      }\n      /* By Size v5 (Owen 11-02): Upscale goes from the tool row too (Remove BG went with the left column) */\n      else css.push('html body .bsv4.bsv4 .bsv4-preview .bsv4-aitools--stage .bsv4-aitools__item.bsv4-aitools__tool[data-bsv4-upscale]{display:none!important}');   /* specific enough to beat the stage tool row's display:flex!important */\n      /* every Design Notes surface: stage tool, rail card / phone button, its drawer, the band under the CTA,\n         and the whole desktop \"Need additional edits to your design? Add a Note\" line ([data-ntdn-cta],\n         nt-design-notes-placement.js), not just its link (Justin 2026-10-29) */\n      css.push('[data-bsv4-notes],.bsv4-notes-fab,.bsv4-notes-rail,[data-bsv4-notes-panel],.bsv4-cta__notes,[data-ntdn-cta],.ntre-cta{display:none!important}');   /* .ntre-cta: By Size v5's \"Add a Note\" strip */\n    }\n    setStyle(css.join('\\n'));\n    if (changed) a.update({ files: fs.slice() });\n  }\n\n  /* First edit / unlock on a print-ready design: re-upload it as a fresh upload (a net new image),\n     then let the click through. */\n  /* + By Size v5's tools (Owen 2026-11-02: Swap Colors, Crop, Edit with AI, Add Text\u2026 = no longer a reorder): Crop (stage +\n     multi-upload menu), Eraser, Soft edges */\n  var TOOL_SEL = '[data-bsv4-edit-open],[data-bsv4-addtext],[data-bsv4-addtext-pill],.nt-recolor-btn,[data-bsv4-fx],[data-bsv4-aip-go],[data-bsv4-lock],' +\n    '[data-ntst-crop],[data-ntst-mcrop],[data-bsv4-erase],[data-bsv4-edges-open]';\n  /* Remove Background / Upscale controls: no clicks on a print-ready design (shown disabled, see sync) */\n  var DISABLED_SEL = '.bsv4-ai-card--bgr,.bsv4-ai-card--up,[data-bsv4-upscale],[data-ntst-bgr],.ntre__tile--inline';\n  var converting = null;\n  function fileForTool(el) {\n    var fs = files();\n    var host = el.closest('[data-bsv4-edit-for]');\n    if (host) return fs.find(function (f) { return f.id === host.dataset.bsv4EditFor; }) || null;\n    var rowEl = el.closest('[data-bsv4-row-id]');\n    if (rowEl) {\n      var rid = rowEl.getAttribute('data-bsv4-row-id');\n      return fs.find(function (f) { return (f.rows || []).some(function (r) { return String(r.id) === rid; }); }) || null;\n    }\n    return activeFile();\n  }\n  /* The fresh upload is measured again at 300 DPI, which reset a 2.14\" x 2.5\" reorder to 10\" x 11.67\" (Justin\n     2026-11-02: $4.88 instead of $0.23). Keep the sizes the customer had: once the page has re-measured, put them\n     back through the design's own Width / Height inputs, the same way a customer types them. */\n  function keepSizes(file, want) {\n    var t0 = Date.now();\n    (function tick() {\n      var rows = file.rows || [];\n      var off = want.some(function (r, i) { return rows[i] && (Math.abs(rows[i].w - r.w) > 0.005 || Math.abs(rows[i].h - r.h) > 0.005); });\n      if (off) {\n        var scope = document.querySelector('[data-bsv4-tile=\"' + String(file.id).replace(/[\"\\\\]/g, '') + '\"]') || document;\n        var vis = function (sel) { return [].filter.call(scope.querySelectorAll(sel), function (n) { return n.offsetParent; }); };\n        var ws = vis('[data-bsv4-w]'), hs = vis('[data-bsv4-h]');\n        if (ws.length === rows.length && hs.length === rows.length) {\n          var put = function (inp, v) {\n            inp.value = String(v);\n            inp.dispatchEvent(new Event('input', { bubbles: true }));\n            inp.dispatchEvent(new Event('change', { bubbles: true }));\n          };\n          want.forEach(function (r, i) {\n            if (!rows[i]) return;\n            delete rows[i].sizeAnchor;\n            if (Math.abs(rows[i].w - r.w) > 0.005) put(ws[i], r.w);\n            if (Math.abs(rows[i].h - r.h) > 0.005) put(hs[i], r.h);\n          });\n        }\n      }\n      if (Date.now() - t0 < 4000) setTimeout(tick, 350);\n    })();\n  }\n  function toFreshUpload(file) {\n    var bridge = window.__bsv4Bridge;\n    var want = (file.rows || []).map(function (r) { return { w: r.w, h: r.h }; });\n    if (!bridge || typeof bridge.uploadBlob !== 'function') return Promise.reject(new Error('no uploader'));\n    var src = bare(file.s3Url);\n    var name = (file.name || src.split('/').pop() || 'design.png').replace(/[^\\w.\\- ]+/g, '-');\n    var ext = (src.match(/\\.([a-z0-9]+)$/i) || [])[1];\n    if (ext && !/\\.[a-z0-9]+$/i.test(name)) name += '.' + ext;\n    /* no-store: the page has usually shown this file already as a plain <img>, and S3 sends that\n       response without CORS headers or Vary: Origin, so a cached copy would fail this read. */\n    return fetch(src, { mode: 'cors', cache: 'no-store' })\n      .then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.blob(); })\n      .then(function (blob) {\n        /* Some CRM2 files are stored as binary/octet-stream; an empty type lets the uploader take\n           it from the file name, as it does for a customer's own upload. */\n        var type = /^(binary|application)\\/octet-stream$/i.test(blob.type) ? '' : blob.type;\n        return bridge.uploadBlob(new File([blob], name, { type: type }));\n      })\n      .then(function (up) {\n        file.s3Url = up.s3Url;\n        file.imgixUrl = up.imgixUrl;\n        file.uploadName = up.uploadName;\n        file.crc = up.crc;\n        file.reorderOf = undefined;       /* a net new image: no _reorder from here on */\n        file.isReadyToPress = undefined;\n        file.ntPrintReadyFrom = src;\n        var a = api(); if (a) a.update({ files: files().slice() });\n        keepSizes(file, want);\n      });\n  }\n  /* A small status line while the file is prepared (it can take a few seconds), and a clear\n     message if it fails, so the click never looks ignored. */\n  function notice(text, isError) {\n    var n = document.getElementById('nt-print-ready-notice');\n    if (!text) { if (n) n.remove(); return; }\n    if (!n) {\n      n = document.createElement('div');\n      n.id = 'nt-print-ready-notice';\n      n.setAttribute('role', 'status');\n      n.setAttribute('aria-live', 'polite');\n      n.style.cssText = 'position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:2147483000;' +\n        'max-width:min(92vw,420px);padding:12px 16px;border-radius:10px;font:600 14px/1.35 system-ui,sans-serif;' +\n        'box-shadow:0 6px 24px rgba(0,0,0,.18);text-align:center';\n      document.body.appendChild(n);\n    }\n    n.style.background = isError ? '#fdecea' : '#16202a';\n    n.style.color = isError ? '#8a1c12' : '#fff';\n    n.textContent = text;\n  }\n  document.addEventListener('click', function (e) {\n    var off = offControl(e.target);\n    if (off) {\n      e.preventDefault(); e.stopImmediatePropagation();\n      showTip(off); clearTimeout(tipTimer); tipTimer = setTimeout(hideTip, 2200);\n      return;\n    }\n    var el = e.target && e.target.closest && e.target.closest(TOOL_SEL);\n    if (!el || el.__ntPrConverted) return;\n    var file = fileForTool(el);\n    if (!file || !prHere(file.s3Url)) return;\n    e.preventDefault();\n    e.stopImmediatePropagation();\n    if (converting) return;\n    el.setAttribute('aria-busy', 'true');\n    notice('Preparing your print-ready file for editing\\u2026');\n    converting = toFreshUpload(file)\n      .then(function () {\n        el.removeAttribute('aria-busy');\n        notice('');\n        /* the click target may have been redrawn meanwhile: use the live one */\n        var target = el.isConnected ? el : document.querySelector(TOOL_SEL.split(',').filter(function (s) { return el.matches(s); })[0] || TOOL_SEL);\n        if (!target) return;\n        target.__ntPrConverted = true;\n        try { target.click(); } finally { target.__ntPrConverted = false; }\n      })\n      .catch(function (err) {\n        el.removeAttribute('aria-busy');\n        notice('Sorry, this design could not be prepared for editing. Please try again.', true);\n        setTimeout(function () { notice(''); }, 5000);\n        if (window.console) console.warn('[nt-print-ready] could not prepare the design for editing:', err && err.message);\n      })\n      .then(function () { converting = null; });\n  }, true);\n\n  var wired = false;\n  function wire() {\n    var a = api();\n    if (!a || wired) return wired;\n    wired = true;\n    a.subscribe(sync);\n    document.addEventListener('bsv4:file-added', sync);\n    document.addEventListener('bsv4:file-uploaded', sync);\n    document.addEventListener('bsv4:rows-changed', sync);\n    sync();\n    return true;\n  }\n  /* The engines load deferred (or, for the BGR experiment, dynamically): wire on their boot event,\n     or as soon as window.__bsv4 appears. */\n  document.addEventListener('bsv4:boot', wire);\n  if (!wire()) {\n    var tries = 0, t = setInterval(function () { if (wire() || ++tries > 240) clearInterval(t); }, 250);\n  }\n})();\n"],
  "mappings": "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",
  "names": ["meta", "t"]
}
