{
  "version": 3,
  "sources": ["/cdn/shop/t/25/assets/dtfny-yard-sign-designer.js?dtfny=ys20261105c"],
  "sourcesContent": ["/**\n * DTF New York \u2014 Custom Yard Sign designer.\n * Upload front (and back if double-sided), pick size/qty/stakes, live unit price + total.\n * Print files via Fly print host. No price-grid table on page.\n */\n(function () {\n  \"use strict\";\n  var EXPORT_DPI = 300;\n  var FLY_PRINT = \"https://dtfny-print.fly.dev/print-files\";\n  var PUBLIC_PRINT = \"https://print.dtfprintingny.com/print-files\";\n\n  // Approved unit prices by size|print|tierMin\n  var PRICES = {\n    '12\" \u00D7 18\"|Single-Sided': {1:11.71,2:10.54,11:7.61,21:7.03,51:4.68},\n    '12\" \u00D7 18\"|Double-Sided': {1:22.00,2:20.00,11:14.85,21:13.71,51:9.14},\n    '18\" \u00D7 24\"|Single-Sided': {1:15.15,2:15.15,11:12.55,21:11.58,51:7.72},\n    '18\" \u00D7 24\"|Double-Sided': {1:28.00,2:25.00,11:22.69,21:20.00,51:13.96},\n    '24\" \u00D7 36\"|Single-Sided': {1:20.05,2:20.05,11:20.05,21:20.05,51:13.80},\n    '24\" \u00D7 36\"|Double-Sided': {1:56.77,2:51.09,11:36.90,21:34.06,51:22.71},\n    '36\" \u00D7 48\"|Single-Sided': {1:64.87,2:58.38,11:42.17,21:38.92,51:25.95},\n    '36\" \u00D7 48\"|Double-Sided': {1:95.00,2:85.00,11:62.44,21:57.64,51:38.42},\n    '48\" \u00D7 48\"|Single-Sided': {1:85.13,2:76.62,11:55.33,21:51.08,51:34.05},\n    '48\" \u00D7 48\"|Double-Sided': {1:120.00,2:108.00,11:78.51,21:72.47,51:48.31},\n    '48\" \u00D7 96\"|Single-Sided': {1:130.00,2:115.00,11:105.00,21:90.00,51:66.46},\n    '48\" \u00D7 96\"|Double-Sided': {1:165.00,2:145.00,11:130.00,21:115.00,51:87.85}\n  };\n  var STAKE_PRICES = {1:4.00,2:4.00,11:4.00,21:3.50,51:3.00};\n  var TIERS = [1,2,11,21,51];\n  var SIZES = [\n    {id:'12x18', label:'12\" \u00D7 18\"', w:12, h:18},\n    {id:'18x24', label:'18\" \u00D7 24\"', w:18, h:24},\n    {id:'24x36', label:'24\" \u00D7 36\"', w:24, h:36},\n    {id:'36x48', label:'36\" \u00D7 48\"', w:36, h:48},\n    {id:'48x48', label:'48\" \u00D7 48\"', w:48, h:48},\n    {id:'48x96', label:'48\" \u00D7 96\"', w:48, h:96}\n  ];\n\n  function tierFor(qty) {\n    var q = Math.max(1, parseInt(qty, 10) || 1);\n    var t = 1;\n    for (var i = 0; i < TIERS.length; i++) if (q >= TIERS[i]) t = TIERS[i];\n    return t;\n  }\n  function money(n) {\n    return \"$\" + (Math.round(n * 100) / 100).toFixed(2);\n  }\n  function $(sel, root) { return (root || document).querySelector(sel); }\n  function readJson(id) {\n    var el = document.getElementById(id);\n    if (!el) return {};\n    try { return JSON.parse(el.textContent || \"{}\"); } catch (e) { return {}; }\n  }\n\n  function mount(root) {\n    if (!root || root.getAttribute(\"data-ready\")) return;\n    root.setAttribute(\"data-ready\", \"1\");\n    var yardMap = readJson(\"dtfny-ys-variants\");\n    var stakeMap = readJson(\"dtfny-ys-stake-variants\");\n    var printUrl = root.getAttribute(\"data-print-url\") || FLY_PRINT;\n    var state = {\n      size: SIZES[0].label,\n      print: \"Single-Sided\",\n      qty: 1,\n      stakes: 0,\n      front: null,\n      back: null,\n      frontName: \"\",\n      backName: \"\",\n      busy: false\n    };\n\n    root.innerHTML =\n      '<div class=\"dtfny-ys\">' +\n        '<header class=\"dtfny-ys__head\">' +\n          '<h1 class=\"dtfny-ys__title\"></h1>' +\n          '<p class=\"dtfny-ys__sub\"></p>' +\n        '</header>' +\n        '<div class=\"dtfny-ys__grid\">' +\n          '<div class=\"dtfny-ys__panel\">' +\n            '<label class=\"dtfny-ys__field\">Size<select data-size></select></label>' +\n            '<label class=\"dtfny-ys__field\">Print<select data-print>' +\n              '<option value=\"Single-Sided\">Single-Sided</option>' +\n              '<option value=\"Double-Sided\">Double-Sided</option>' +\n            '</select></label>' +\n            '<label class=\"dtfny-ys__field\">Quantity<input data-qty type=\"number\" min=\"1\" max=\"100\" value=\"1\"></label>' +\n            '<label class=\"dtfny-ys__field\">H-stakes (optional)<select data-stakes>' +\n              '<option value=\"0\">None</option>' +\n              '<option value=\"1\">1 stake</option>' +\n              '<option value=\"2\">2 stakes (recommended for 24\u00D736 and larger)</option>' +\n            '</select></label>' +\n            '<label class=\"dtfny-ys__field\">Front artwork<input data-front type=\"file\" accept=\"image/png,image/jpeg,image/webp,.png,.jpg,.jpeg,.webp\"></label>' +\n            '<label class=\"dtfny-ys__field\" data-back-wrap hidden>Back artwork<input data-back type=\"file\" accept=\"image/png,image/jpeg,image/webp,.png,.jpg,.jpeg,.webp\"></label>' +\n            '<p class=\"dtfny-ys__hint\">Upload PNG or JPG. Keep important text inside the safe area (dashed). Bleed goes to the edge.</p>' +\n          '</div>' +\n          '<div class=\"dtfny-ys__preview-wrap\">' +\n            '<div class=\"dtfny-ys__face\" data-front-face>' +\n              '<canvas data-canvas width=\"600\" height=\"800\" aria-label=\"Front preview\"></canvas>' +\n              '<div class=\"dtfny-ys__faces\">Front</div>' +\n            '</div>' +\n            '<div class=\"dtfny-ys__face\" data-back-face hidden>' +\n              '<canvas data-canvas-back width=\"600\" height=\"800\" aria-label=\"Back preview\"></canvas>' +\n              '<div class=\"dtfny-ys__faces\">Back</div>' +\n            '</div>' +\n          '</div>' +\n          '<aside class=\"dtfny-ys__quote\">' +\n            '<div class=\"dtfny-ys__price-row\"><span>Unit price</span><strong data-unit>$0.00</strong></div>' +\n            '<div class=\"dtfny-ys__price-row\"><span>Signs</span><strong data-signs-total>$0.00</strong></div>' +\n            '<div class=\"dtfny-ys__price-row\" data-stake-row hidden><span>H-stakes</span><strong data-stake-total>$0.00</strong></div>' +\n            '<div class=\"dtfny-ys__price-row dtfny-ys__price-row--total\"><span>Total</span><strong data-total>$0.00</strong></div>' +\n            '<p class=\"dtfny-ys__tier\" data-tier></p>' +\n            '<button type=\"button\" class=\"dtfny-ys__cta\" data-add disabled>Add sign to cart</button>' +\n            '<p class=\"dtfny-ys__status\" data-status></p>' +\n          '</aside>' +\n        '</div>' +\n      '</div>';\n\n    // styles\n    if (!document.getElementById(\"dtfny-ys-css\")) {\n      var st = document.createElement(\"style\");\n      st.id = \"dtfny-ys-css\";\n      st.textContent = [\n        \".dtfny-ys{--ink:#0e1422;--muted:#5b6472;--line:#e4e0d6;--paper:#f7f4ec;--green:#3A845A;font-family:Inter,system-ui,sans-serif;color:var(--ink);max-width:1180px;margin:0 auto;padding:1.25rem}\",\n        \".dtfny-ys__title{margin:0 0 .4rem;font-size:1.65rem;letter-spacing:-.02em}\",\n        \".dtfny-ys__sub{margin:0 0 1.25rem;color:var(--muted);line-height:1.45}\",\n        \".dtfny-ys__grid{display:grid;gap:1.25rem}\",\n        \"@media(min-width:960px){.dtfny-ys__grid{grid-template-columns:1fr 1.1fr .9fr;align-items:start}}\",\n        \".dtfny-ys__panel,.dtfny-ys__quote{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:1.1rem}\",\n        \".dtfny-ys__field{display:flex;flex-direction:column;gap:.35rem;margin:0 0 .85rem;font-weight:600;font-size:.92rem}\",\n        \".dtfny-ys__field select,.dtfny-ys__field input[type=number],.dtfny-ys__field input[type=file]{font:inherit;font-weight:500;padding:.65rem .75rem;border:1px solid var(--line);border-radius:8px;background:#fff}\",\n        \".dtfny-ys__hint{margin:0;color:var(--muted);font-size:.88rem;line-height:1.4}\",\n        \".dtfny-ys__preview-wrap{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1rem;display:flex;flex-direction:column;align-items:center;gap:.75rem}\",\n        \".dtfny-ys__face{display:flex;flex-direction:column;align-items:center;gap:.4rem;width:100%}\",\n        \".dtfny-ys__preview-wrap canvas{width:100%;max-width:420px;height:auto;background:#eef1f4;border-radius:8px}\",\n        \".dtfny-ys__faces{font-weight:700;font-size:.95rem}\",\n        \".dtfny-ys__preview-wrap--ds{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:1rem;width:100%}\",\n        \".dtfny-ys__preview-wrap--ds canvas{max-width:100%}\",\n        \"@media(min-width:960px){.dtfny-ys__grid--ds{grid-template-columns:.85fr 1.7fr .85fr}}\",\n        \"@media(max-width:700px){.dtfny-ys__preview-wrap--ds{grid-template-columns:1fr}}\",\n        \".dtfny-ys__price-row{display:flex;justify-content:space-between;gap:1rem;margin:0 0 .55rem;color:var(--muted)}\",\n        \".dtfny-ys__price-row strong{color:var(--ink)}\",\n        \".dtfny-ys__price-row--total{margin-top:.85rem;padding-top:.85rem;border-top:1px solid var(--line);font-size:1.1rem}\",\n        \".dtfny-ys__tier{margin:.25rem 0 1rem;color:var(--muted);font-size:.88rem}\",\n        \".dtfny-ys__cta{width:100%;border:0;border-radius:8px;background:var(--green);color:#111;font-weight:700;padding:.95rem 1rem;cursor:pointer}\",\n        \".dtfny-ys__cta:disabled{opacity:.45;cursor:not-allowed}\",\n        \".dtfny-ys__status{min-height:1.3em;margin:.65rem 0 0;font-size:.9rem;color:var(--muted)}\"\n      ].join(\"\");\n      document.head.appendChild(st);\n    }\n\n    $(\".dtfny-ys__title\", root).textContent = root.getAttribute(\"data-heading\") || \"Design your yard sign\";\n    $(\".dtfny-ys__sub\", root).textContent = root.getAttribute(\"data-sub\") || \"Corrugated plastic signs. Upload artwork, pick size and sides. Same-day weekday pickup before 2 PM ET when capacity allows.\";\n    var sizeSel = $(\"[data-size]\", root);\n    SIZES.forEach(function (s) {\n      var o = document.createElement(\"option\");\n      o.value = s.label; o.textContent = s.label;\n      sizeSel.appendChild(o);\n    });\n\n    function sizeMeta() {\n      for (var i = 0; i < SIZES.length; i++) if (SIZES[i].label === state.size) return SIZES[i];\n      return SIZES[0];\n    }\n    function unitPrice() {\n      var table = PRICES[state.size + \"|\" + state.print] || {};\n      return table[tierFor(state.qty)] || 0;\n    }\n    function stakeUnit() { return STAKE_PRICES[tierFor(state.stakes > 0 ? state.stakes : state.qty)] || 4; }\n    // stake volume based on stake qty, not sign qty\n    function stakeUnitFor(n) { return STAKE_PRICES[tierFor(n)] || 4; }\n\n    function variantKey() {\n      return state.size + \"|\" + state.print + \"|\" + tierFor(state.qty);\n    }\n    function pickYardVariant() {\n      var row = yardMap[variantKey()];\n      return row || null;\n    }\n    function pickStakeVariant(n) {\n      if (!n) return null;\n      return stakeMap[String(tierFor(n))] || stakeMap[\"1\"] || null;\n    }\n\n    function drawFace(canvas, img, emptyLabel) {\n      if (!canvas) return;\n      var meta = sizeMeta();\n      var maxW = 600, maxH = 800;\n      var aspect = meta.w / meta.h;\n      var w = maxW, h = Math.round(maxW / aspect);\n      if (h > maxH) { h = maxH; w = Math.round(maxH * aspect); }\n      canvas.width = w; canvas.height = h;\n      var ctx = canvas.getContext(\"2d\");\n      ctx.fillStyle = \"#e8ecf0\";\n      ctx.fillRect(0, 0, w, h);\n      var pad = 18;\n      ctx.fillStyle = \"#ffffff\";\n      ctx.strokeStyle = \"#0e1422\";\n      ctx.lineWidth = 4;\n      roundRect(ctx, pad, pad, w - pad * 2, h - pad * 2, 10);\n      ctx.fill(); ctx.stroke();\n      if (img) {\n        var aw = w - pad * 2, ah = h - pad * 2;\n        ctx.save();\n        roundRect(ctx, pad, pad, aw, ah, 8);\n        ctx.clip();\n        var scale = Math.max(aw / img.width, ah / img.height);\n        var dw = img.width * scale, dh = img.height * scale;\n        ctx.drawImage(img, pad + (aw - dw) / 2, pad + (ah - dh) / 2, dw, dh);\n        ctx.restore();\n      } else {\n        ctx.fillStyle = \"#8a93a0\";\n        ctx.font = \"600 18px Inter,system-ui,sans-serif\";\n        ctx.textAlign = \"center\";\n        ctx.fillText(emptyLabel, w / 2, h / 2);\n      }\n      var safe = Math.max(10, Math.round(Math.min(w, h) * 0.04));\n      ctx.setLineDash([8, 6]);\n      ctx.strokeStyle = \"rgba(58,132,90,.85)\";\n      ctx.lineWidth = 2;\n      ctx.strokeRect(pad + safe, pad + safe, w - (pad + safe) * 2, h - (pad + safe) * 2);\n      ctx.setLineDash([]);\n      ctx.fillStyle = \"rgba(14,20,34,.7)\";\n      ctx.font = \"12px Inter,system-ui,sans-serif\";\n      ctx.textAlign = \"left\";\n      ctx.fillText(\"Safe area\", pad + safe + 4, pad + safe + 14);\n      ctx.fillText(meta.w + '\" \u00D7 ' + meta.h + '\" \u00B7 bleed to edge', pad + 8, h - 10);\n    }\n    function draw() {\n      var ds = state.print === \"Double-Sided\";\n      var wrap = $(\".dtfny-ys__preview-wrap\", root);\n      var grid = $(\".dtfny-ys__grid\", root);\n      var backFace = $(\"[data-back-face]\", root);\n      if (wrap) wrap.classList.toggle(\"dtfny-ys__preview-wrap--ds\", ds);\n      if (grid) grid.classList.toggle(\"dtfny-ys__grid--ds\", ds);\n      if (backFace) backFace.hidden = !ds;\n      drawFace($(\"[data-canvas]\", root), state.front, \"Upload front artwork\");\n      if (ds) drawFace($(\"[data-canvas-back]\", root), state.back, \"Upload back artwork\");\n    }\n    function roundRect(ctx, x, y, w, h, r) {\n      ctx.beginPath();\n      ctx.moveTo(x + r, y);\n      ctx.arcTo(x + w, y, x + w, y + h, r);\n      ctx.arcTo(x + w, y + h, x, y + h, r);\n      ctx.arcTo(x, y + h, x, y, r);\n      ctx.arcTo(x, y, x + w, y, r);\n      ctx.closePath();\n    }\n\n    function renderQuote() {\n      var tier = tierFor(state.qty);\n      var unit = unitPrice();\n      var signsTotal = unit * state.qty;\n      var stakeN = state.stakes;\n      var stakeU = stakeUnitFor(stakeN || 1);\n      var stakeTotal = stakeU * stakeN;\n      var total = signsTotal + stakeTotal;\n      $(\"[data-unit]\", root).textContent = money(unit);\n      $(\"[data-signs-total]\", root).textContent = money(signsTotal);\n      var srow = $(\"[data-stake-row]\", root);\n      if (stakeN > 0) {\n        srow.hidden = false;\n        $(\"[data-stake-total]\", root).textContent = money(stakeTotal) + \" (\" + stakeN + \" \u00D7 \" + money(stakeU) + \")\";\n      } else srow.hidden = true;\n      $(\"[data-total]\", root).textContent = money(total);\n      var labels = {1:\"qty 1\",2:\"qty 2\u201310\",11:\"qty 11\u201320\",21:\"qty 21\u201350\",51:\"qty 51\u2013100\"};\n      $(\"[data-tier]\", root).textContent = \"Volume price: \" + (labels[tier] || (\"qty \" + tier)) + \" \u00B7 \" + state.print;\n      $(\"[data-back-wrap]\", root).hidden = state.print !== \"Double-Sided\";\n      var needBack = state.print === \"Double-Sided\";\n      var ok = !!state.front && (!needBack || !!state.back) && !!pickYardVariant() && !state.busy;\n      $(\"[data-add]\", root).disabled = !ok;\n      draw();\n    }\n\n    function loadFile(file, which) {\n      if (!file) return;\n      var url = URL.createObjectURL(file);\n      var img = new Image();\n      img.onload = function () {\n        if (which === \"front\") { state.front = img; state.frontName = file.name; state.frontFile = file; }\n        else { state.back = img; state.backName = file.name; state.backFile = file; }\n        renderQuote();\n      };\n      img.src = url;\n    }\n\n    sizeSel.addEventListener(\"change\", function () { state.size = sizeSel.value; renderQuote(); });\n    $(\"[data-print]\", root).addEventListener(\"change\", function (e) { state.print = e.target.value; renderQuote(); });\n    $(\"[data-qty]\", root).addEventListener(\"input\", function (e) {\n      state.qty = Math.min(100, Math.max(1, parseInt(e.target.value, 10) || 1));\n      renderQuote();\n    });\n    $(\"[data-stakes]\", root).addEventListener(\"change\", function (e) {\n      state.stakes = parseInt(e.target.value, 10) || 0;\n      renderQuote();\n    });\n    $(\"[data-front]\", root).addEventListener(\"change\", function (e) { loadFile(e.target.files[0], \"front\"); });\n    $(\"[data-back]\", root).addEventListener(\"change\", function (e) { loadFile(e.target.files[0], \"back\"); });\n\n    function fileToDataUrl(file) {\n      return new Promise(function (resolve, reject) {\n        var fr = new FileReader();\n        fr.onload = function () { resolve(fr.result); };\n        fr.onerror = reject;\n        fr.readAsDataURL(file);\n      });\n    }\n    function canvasToBlob(canvas) {\n      return new Promise(function (resolve) {\n        canvas.toBlob(function (b) { resolve(b); }, \"image/png\");\n      });\n    }\n    function blobToDataUrl(blob) {\n      return new Promise(function (resolve, reject) {\n        var fr = new FileReader();\n        fr.onload = function () { resolve(fr.result); };\n        fr.onerror = reject;\n        fr.readAsDataURL(blob);\n      });\n    }\n    async function exportPrintPng(img, meta, name) {\n      // true size at 300 DPI\n      var wPx = Math.round(meta.w * EXPORT_DPI);\n      var hPx = Math.round(meta.h * EXPORT_DPI);\n      var c = document.createElement(\"canvas\");\n      c.width = wPx; c.height = hPx;\n      var ctx = c.getContext(\"2d\");\n      ctx.fillStyle = \"#ffffff\";\n      ctx.fillRect(0, 0, wPx, hPx);\n      // cover\n      var scale = Math.max(wPx / img.width, hPx / img.height);\n      var dw = img.width * scale, dh = img.height * scale;\n      ctx.drawImage(img, (wPx - dw) / 2, (hPx - dh) / 2, dw, dh);\n      var blob = await canvasToBlob(c);\n      var dataUrl = await blobToDataUrl(blob);\n      var endpoints = [printUrl, FLY_PRINT, PUBLIC_PRINT];\n      var lastErr = null;\n      for (var i = 0; i < endpoints.length; i++) {\n        try {\n          var res = await fetch(endpoints[i], {\n            method: \"POST\",\n            headers: {\"Content-Type\": \"application/json\", \"Accept\": \"application/json\"},\n            body: JSON.stringify({ image: dataUrl, name: name || \"yard-sign.png\" })\n          });\n          var body = await res.json();\n          if (!res.ok || !body.url) throw new Error(body.error || (\"HTTP \" + res.status));\n          return body;\n        } catch (err) { lastErr = err; }\n      }\n      throw lastErr || new Error(\"Print upload failed\");\n    }\n\n    $(\"[data-add]\", root).addEventListener(\"click\", async function () {\n      var status = $(\"[data-status]\", root);\n      var yard = pickYardVariant();\n      if (!yard || !state.front) return;\n      state.busy = true; renderQuote();\n      status.textContent = \"Preparing print files\u2026\";\n      try {\n        var meta = sizeMeta();\n        var frontSaved = await exportPrintPng(state.front, meta, \"yard-front-\" + meta.id + \".png\");\n        var backSaved = null;\n        if (state.print === \"Double-Sided\") {\n          if (!state.back) throw new Error(\"Back artwork required for double-sided\");\n          backSaved = await exportPrintPng(state.back, meta, \"yard-back-\" + meta.id + \".png\");\n        }\n        var unit = unitPrice();\n        var props = {\n          \"_dtfny_builder\": \"yard-sign\",\n          \"Size\": state.size,\n          \"Print\": state.print,\n          \"Quantity\": String(state.qty),\n          \"Unit price\": money(unit),\n          \"_quoted_unit_price\": String(unit.toFixed(2)),\n          \"_volume_tier\": String(tierFor(state.qty)),\n          \"Front print file\": frontSaved.url,\n          \"_print_file_id\": frontSaved.id || \"\"\n        };\n        if (backSaved) {\n          props[\"Back print file\"] = backSaved.url;\n          props[\"_print_file_id_back\"] = backSaved.id || \"\";\n        }\n        if (state.frontName) props[\"Front file name\"] = state.frontName;\n        if (state.backName) props[\"Back file name\"] = state.backName;\n\n        var items = [{ id: yard.id, quantity: state.qty, properties: props }];\n        if (state.stakes > 0) {\n          var stake = pickStakeVariant(state.stakes);\n          if (stake) {\n            items.push({\n              id: stake.id,\n              quantity: state.stakes,\n              properties: {\n                \"_dtfny_builder\": \"yard-sign-stake\",\n                \"For\": state.size + \" yard sign\",\n                \"_volume_tier\": String(tierFor(state.stakes)),\n                \"_quoted_unit_price\": String(stakeUnitFor(state.stakes).toFixed(2))\n              }\n            });\n          }\n        }\n        status.textContent = \"Adding to cart\u2026\";\n        var cartRes = await fetch(\"/cart/add.js\", {\n          method: \"POST\",\n          headers: {\"Content-Type\": \"application/json\", \"Accept\": \"application/json\"},\n          body: JSON.stringify({ items: items })\n        });\n        var cartBody = await cartRes.json();\n        if (!cartRes.ok) throw new Error(cartBody.description || cartBody.message || \"Cart add failed\");\n        status.textContent = \"Added. Opening cart\u2026\";\n        window.location.href = \"/cart\";\n      } catch (err) {\n        status.textContent = (err && err.message) ? err.message : \"Could not add to cart.\";\n        state.busy = false; renderQuote();\n      }\n    });\n\n    renderQuote();\n  }\n\n  function boot() {\n    document.querySelectorAll(\"[data-dtfny-yard-sign]\").forEach(mount);\n  }\n  if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", boot);\n  else boot();\n})();\n"],
  "mappings": "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",
  "names": []
}
