{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/vh-scene-preview.js?cb=1790332965104"],
  "sourcesContent": ["(function () {\n  if (window.__vhSceneReady) return;\n  window.__vhSceneReady = true;\n\n  function sameOrigin(src) {\n    // store images are rewritten to this origin so the canvas can be exported\n    var i = src.indexOf('/cdn/shop/');\n    return i >= 0 ? src.slice(i) : src;\n  }\n\n  // Horizontal position of the dog's body (0..1 of the image width): median centre of the widest\n  // opaque run in the head/chest band, so a tail sticking out to one side does not pull it off.\n  function bodyAxis(img) {\n    if (img.__vhAxis != null) return img.__vhAxis;\n    var axis = 0.5;\n    try {\n      var H = 240, W = Math.max(1, Math.round(img.naturalWidth * H / img.naturalHeight));\n      var c = document.createElement('canvas');\n      c.width = W;\n      c.height = H;\n      var x = c.getContext('2d');\n      x.drawImage(img, 0, 0, W, H);\n      var d = x.getImageData(0, 0, W, H).data;\n      var top = -1, bot = -1, yy, xx;\n      for (yy = 0; yy < H && top < 0; yy++) for (xx = 0; xx < W; xx++) if (d[(yy * W + xx) * 4 + 3] > 60) { top = yy; break; }\n      for (yy = H - 1; yy >= 0 && bot < 0; yy--) for (xx = 0; xx < W; xx++) if (d[(yy * W + xx) * 4 + 3] > 60) { bot = yy; break; }\n      if (top >= 0) {\n        var h = bot - top + 1, centres = [];\n        for (yy = Math.round(top + h * 0.18); yy <= Math.round(top + h * 0.62); yy++) {\n          var best = 0, bestC = -1, run = 0;\n          for (xx = 0; xx <= W; xx++) {\n            if (xx < W && d[(yy * W + xx) * 4 + 3] > 60) run++;\n            else { if (run > best) { best = run; bestC = xx - run / 2; } run = 0; }\n          }\n          if (bestC >= 0) centres.push(bestC);\n        }\n        centres.sort(function (a, b) { return a - b; });\n        if (centres.length) axis = Math.min(0.75, Math.max(0.25, centres[Math.floor(centres.length / 2)] / W));\n      }\n    } catch (e) {}\n    img.__vhAxis = axis;\n    return axis;\n  }\n\n  function loadImage(src, cache) {\n    if (!src) return Promise.resolve(null);\n    src = sameOrigin(src);\n    if (cache[src]) return cache[src];\n    cache[src] = new Promise(function (resolve) {\n      var img = new Image();\n      if (/^(https?:)?\\/\\//.test(src)) img.crossOrigin = 'anonymous';\n      img.decoding = 'async';\n      img.onload = function () { resolve(img); };\n      img.onerror = function () {\n        // forget the failure so the next render tries again\n        delete cache[src];\n        resolve(null);\n      };\n      img.src = src;\n    });\n    return cache[src];\n  }\n\n  function fileUrl(cfg, name) {\n    if (!name) return '';\n    return name.indexOf('//') >= 0 ? name : (cfg.base || '/cdn/shop/files/') + name;\n  }\n\n  function stemOf(url) {\n    var name = (url || '').split('?')[0].split('#')[0].split('/').pop() || '';\n    var dot = name.lastIndexOf('.');\n    return dot > 0 ? name.slice(0, dot) : name;\n  }\n\n  function readState(opts) {\n    var state = { count: 1, color: '', items: [] };\n    if (!opts) return state;\n    var count = opts.querySelector('[data-vh-count]:checked');\n    if (count) state.count = parseInt(count.value, 10) || 1;\n    var swatch = opts.querySelector('.vh-swatch input:checked');\n    if (swatch) state.color = (swatch.value || '').trim().toLowerCase();\n    var items = opts.querySelectorAll('[data-vh-item]');\n    for (var i = 0; i < items.length; i++) {\n      var picked = items[i].querySelector('[data-vh-style]:checked');\n      var art = items[i].querySelector('input[data-vh-art]');\n      var txt = items[i].querySelector('input[data-vh-counter]');\n      var url = '';\n      if (picked) url = picked.getAttribute('data-vh-art-src') || '';\n      else if (art && art.getAttribute('data-vh-art-url')) url = art.getAttribute('data-vh-art-url');\n      state.items.push({ art: url, name: txt ? (txt.value || '').trim() : '' });\n    }\n    return state;\n  }\n\n  function fitFont(ctx, text, family, weight, size, maxW) {\n    var min = Math.max(8, Math.round(size * 0.45));\n    var s = Math.round(size);\n    ctx.font = weight + ' ' + s + 'px \"' + family + '\", sans-serif';\n    while (s > min && ctx.measureText(text).width > maxW) {\n      s -= 1;\n      ctx.font = weight + ' ' + s + 'px \"' + family + '\", sans-serif';\n    }\n    return s;\n  }\n\n  // dogs standing in a row inside an area, name written under each dog\n  function renderRow(root, cfg, cache, opts) {\n    var state = readState(opts);\n    var n = Math.max(1, Math.min(cfg.maxDogs || 4, state.count));\n    var colorKey = cfg.bases[state.color] ? state.color : cfg.defaultColor;\n    var L = cfg.layout;\n    var jobs = [loadImage(fileUrl(cfg, cfg.bases[colorKey]), cache), loadImage(fileUrl(cfg, cfg.dogDefault.src), cache)];\n    var dogJobs = [];\n    for (var i = 0; i < n; i++) dogJobs.push(loadImage(state.items[i] ? state.items[i].art : '', cache));\n    var fontJob = root.__vhFont || Promise.resolve();\n    return Promise.all([Promise.all(jobs), Promise.all(dogJobs), fontJob]).then(function (res) {\n      var base = res[0][0], dogDefault = res[0][1], dogs = res[1];\n      if (!base) {\n        if (window.console) console.warn('[vh-scene] preview skipped: the base image could not be loaded');\n        return null;\n      }\n      var canvas = document.createElement('canvas');\n      canvas.width = cfg.size;\n      canvas.height = cfg.size;\n      var ctx = canvas.getContext('2d');\n      ctx.imageSmoothingEnabled = true;\n      ctx.imageSmoothingQuality = 'high';\n      ctx.drawImage(base, 0, 0, cfg.size, cfg.size);\n\n      // with a perspective warp the dogs and names are laid out flat on a layer first\n      var dc = ctx, layer = null;\n      if (L.warp) {\n        layer = document.createElement('canvas');\n        layer.width = cfg.size;\n        layer.height = cfg.size;\n        dc = layer.getContext('2d');\n        dc.imageSmoothingEnabled = true;\n        dc.imageSmoothingQuality = 'high';\n      }\n\n      var targetH = L.heights[n - 1] || L.heights[L.heights.length - 1];\n      var slotW = (L.x1 - L.x0) / n;\n      var list = [];\n      var widest = 0;\n      for (var k = 0; k < n; k++) {\n        var img = dogs[k] && dogs[k].naturalWidth ? dogs[k] : dogDefault;\n        if (!img || !img.naturalWidth) { list.push(null); continue; }\n        var w = targetH * img.naturalWidth / img.naturalHeight;\n        var ax = bodyAxis(img);\n        // widest half measured from the body axis, so a long tail on one side counts once\n        widest = Math.max(widest, 2 * w * Math.max(ax, 1 - ax));\n        list.push({ img: img, w: w, h: targetH, ax: ax });\n      }\n      // shrink everything together when the widest dog would not fit its slot\n      var fit = widest ? Math.min(1, slotW * (1 + (L.overlap || 0)) / widest) : 1;\n      for (var j = 0; j < n; j++) {\n        var cx = L.x0 + slotW * (j + 0.5);\n        var d = list[j];\n        if (d) {\n          var dw = d.w * fit, dh = d.h * fit;\n          var left = cx - d.ax * dw;\n          if (L.shadow) {\n            dc.save();\n            dc.fillStyle = L.shadow;\n            dc.beginPath();\n            dc.ellipse(cx, L.bottom - dh * 0.012, dw * 0.36, Math.max(6, dh * 0.035), 0, 0, Math.PI * 2);\n            dc.fill();\n            dc.restore();\n          }\n          dc.drawImage(d.img, left, L.bottom - dh, dw, dh);\n        }\n        var raw = state.items[j] && state.items[j].name ? state.items[j].name : (cfg.defaultNames[j] || '');\n        var text = cfg.uppercase ? raw.toUpperCase() : raw;\n        if (text) {\n          var maxW = L.nameMaxW || (slotW - 14);\n          var nameX = L.nameX != null ? L.nameX : cx;\n          var size = fitFont(dc, text, cfg.font.family, cfg.font.weight, L.nameSizes[n - 1] || L.nameSizes[0], maxW);\n          dc.fillStyle = cfg.font.color;\n          dc.textAlign = 'center';\n          dc.textBaseline = 'middle';\n          if (L.nameOutline) {\n            dc.lineJoin = 'round';\n            dc.lineWidth = Math.max(3, size * 0.12);\n            dc.strokeStyle = L.nameOutline;\n            dc.strokeText(text, nameX, L.nameY, maxW);\n          }\n          dc.fillText(text, nameX, L.nameY, maxW);\n        }\n      }\n      if (layer) drawWarped(ctx, layer, L.warp, base, cfg.size);\n      return canvas;\n    });\n  }\n\n  // Draw one triangle of `img` so that source points s0..s2 land on d0..d2.\n  function drawTriangle(c, img, s0, s1, s2, d0, d1, d2, box) {\n    var den = s0[0] * (s1[1] - s2[1]) + s1[0] * (s2[1] - s0[1]) + s2[0] * (s0[1] - s1[1]);\n    if (!den) return;\n    var a = (d0[0] * (s1[1] - s2[1]) + d1[0] * (s2[1] - s0[1]) + d2[0] * (s0[1] - s1[1])) / den;\n    var b = (d0[1] * (s1[1] - s2[1]) + d1[1] * (s2[1] - s0[1]) + d2[1] * (s0[1] - s1[1])) / den;\n    var cc = (d0[0] * (s2[0] - s1[0]) + d1[0] * (s0[0] - s2[0]) + d2[0] * (s1[0] - s0[0])) / den;\n    var d = (d0[1] * (s2[0] - s1[0]) + d1[1] * (s0[0] - s2[0]) + d2[1] * (s1[0] - s0[0])) / den;\n    var e = (d0[0] * (s1[0] * s2[1] - s2[0] * s1[1]) + d1[0] * (s2[0] * s0[1] - s0[0] * s2[1]) + d2[0] * (s0[0] * s1[1] - s1[0] * s0[1])) / den;\n    var f = (d0[1] * (s1[0] * s2[1] - s2[0] * s1[1]) + d1[1] * (s2[0] * s0[1] - s0[0] * s2[1]) + d2[1] * (s0[0] * s1[1] - s1[0] * s0[1])) / den;\n    // grow the clip triangle a little so neighbouring cells overlap and no hairline seams show\n    var mx = (d0[0] + d1[0] + d2[0]) / 3, my = (d0[1] + d1[1] + d2[1]) / 3;\n    function grow(p) {\n      var dx = p[0] - mx, dy = p[1] - my, l = Math.sqrt(dx * dx + dy * dy) || 1;\n      return [p[0] + dx / l * 0.9, p[1] + dy / l * 0.9];\n    }\n    var g0 = grow(d0), g1 = grow(d1), g2 = grow(d2);\n    c.save();\n    c.beginPath();\n    c.moveTo(g0[0], g0[1]);\n    c.lineTo(g1[0], g1[1]);\n    c.lineTo(g2[0], g2[1]);\n    c.closePath();\n    c.clip();\n    c.setTransform(a, b, cc, d, e, f);\n    c.drawImage(img, box[0], box[1], box[2], box[3], box[0], box[1], box[2], box[3]);\n    c.restore();\n  }\n\n  // Map the flat layer onto the base with a homography (piecewise, on a grid of triangles),\n  // then let the base texture show through a little so the artwork looks printed on the mat.\n  function drawWarped(ctx, layer, warp, base, size) {\n    var h = warp.h, r = warp.rect, n = warp.grid || 18;\n    var out = document.createElement('canvas');\n    out.width = size;\n    out.height = size;\n    var oc = out.getContext('2d');\n    oc.imageSmoothingEnabled = true;\n    oc.imageSmoothingQuality = 'high';\n    function map(x, y) {\n      var w = h[6] * x + h[7] * y + h[8];\n      return [(h[0] * x + h[1] * y + h[2]) / w, (h[3] * x + h[4] * y + h[5]) / w];\n    }\n    var cw = (r[2] - r[0]) / n, ch = (r[3] - r[1]) / n;\n    for (var i = 0; i < n; i++) {\n      for (var j = 0; j < n; j++) {\n        var x0 = r[0] + i * cw, y0 = r[1] + j * ch, x1 = x0 + cw, y1 = y0 + ch;\n        var p00 = [x0, y0], p10 = [x1, y0], p11 = [x1, y1], p01 = [x0, y1];\n        var box = [Math.max(0, x0 - 3), Math.max(0, y0 - 3), cw + 6, ch + 6];\n        drawTriangle(oc, layer, p00, p10, p11, map(x0, y0), map(x1, y0), map(x1, y1), box);\n        drawTriangle(oc, layer, p00, p11, p01, map(x0, y0), map(x1, y1), map(x0, y1), box);\n      }\n    }\n    if (warp.texture) {\n      var art = document.createElement('canvas');\n      art.width = size;\n      art.height = size;\n      var ac = art.getContext('2d');\n      ac.drawImage(out, 0, 0);\n      ac.globalCompositeOperation = 'overlay';\n      ac.globalAlpha = warp.texture;\n      ac.drawImage(base, 0, 0, size, size);\n      ac.globalCompositeOperation = 'destination-in';\n      ac.globalAlpha = 1;\n      ac.drawImage(out, 0, 0);\n      out = art;\n    }\n    ctx.drawImage(out, 0, 0);\n  }\n\n  function render(root, cfg, cache, opts) {\n    if (cfg.layout && cfg.layout.type === 'row') return renderRow(root, cfg, cache, opts);\n    var state = readState(opts);\n    var n = Math.max(1, Math.min(cfg.maxDogs || 4, state.count));\n    var colorKey = cfg.bases[state.color] ? state.color : cfg.defaultColor;\n    var L = cfg.layout;\n    var jobs = [\n      loadImage(fileUrl(cfg, cfg.bases[colorKey]), cache),\n      loadImage(fileUrl(cfg, cfg.loco.src), cache),\n      loadImage(fileUrl(cfg, cfg.dogDefault.src), cache),\n      colorKey !== cfg.defaultColor ? loadImage(fileUrl(cfg, cfg.bases[cfg.defaultColor]), cache) : Promise.resolve(null)\n    ];\n    cfg.wagons.forEach(function (w) { jobs.push(loadImage(fileUrl(cfg, w.src), cache)); });\n    var dogJobs = [];\n    for (var i = 0; i < n; i++) dogJobs.push(loadImage(state.items[i] ? state.items[i].art : '', cache));\n    var fontJob = root.__vhFont || Promise.resolve();\n    return Promise.all([Promise.all(jobs), Promise.all(dogJobs), fontJob]).then(function (res) {\n      var imgs = res[0], dogs = res[1];\n      var base = imgs[0] || imgs[3], loco = imgs[1], dogDefault = imgs[2], wagons = imgs.slice(4).filter(Boolean);\n      if (!base || !loco || !wagons.length) {\n        if (window.console) console.warn('[vh-scene] preview skipped: an image could not be loaded');\n        return null;\n      }\n      var canvas = document.createElement('canvas');\n      canvas.width = cfg.size;\n      canvas.height = cfg.size;\n      var ctx = canvas.getContext('2d');\n      ctx.imageSmoothingEnabled = true;\n      ctx.imageSmoothingQuality = 'high';\n      ctx.drawImage(base, 0, 0, cfg.size, cfg.size);\n\n      var span = L.locoToWagon + L.wagonStep * (n - 1) + L.wagonW;\n      var s = n === 1 ? 1 : Math.min(1, (L.areaRight - L.areaLeft) / span);\n      var locoX = n === 1 ? L.singleLocoX : L.areaLeft + ((L.areaRight - L.areaLeft) - span * s) / 2;\n      var bottom = L.bottom;\n      ctx.drawImage(loco, locoX, bottom - L.locoH * s, L.locoW * s, L.locoH * s);\n\n      for (var k = 0; k < n; k++) {\n        var wx = locoX + (L.locoToWagon + L.wagonStep * k) * s;\n        var wy = bottom - L.wagonH * s;\n        var dog = dogs[k];\n        if (dog && dog.naturalWidth) {\n          var dw = L.dogW * s;\n          var dh = dw * dog.naturalHeight / dog.naturalWidth;\n          var cx = wx + L.bodyCx * s;\n          ctx.save();\n          ctx.beginPath();\n          ctx.rect(0, 0, cfg.size, wy + L.bodyDepth * s);\n          ctx.clip();\n          ctx.drawImage(dog, cx - bodyAxis(dog) * dw, wy - L.dogShow * dh, dw, dh);\n          ctx.restore();\n        } else if (dogDefault) {\n          var D = cfg.dogDefault;\n          ctx.drawImage(dogDefault, wx + D.dx * s, wy + D.dy * s, D.w * s, D.h * s);\n        }\n        ctx.drawImage(wagons[k % wagons.length], wx, wy, L.wagonW * s, L.wagonH * s);\n\n        var raw = state.items[k] && state.items[k].name ? state.items[k].name : (cfg.defaultNames[k] || '');\n        var text = cfg.uppercase ? raw.toUpperCase() : raw;\n        if (text) {\n          var P = cfg.plate;\n          var maxW = P.maxW * s;\n          var size = fitFont(ctx, text, cfg.font.family, cfg.font.weight, P.size * s, maxW);\n          ctx.fillStyle = cfg.font.color;\n          ctx.textAlign = 'center';\n          ctx.textBaseline = 'middle';\n          ctx.fillText(text, wx + P.cx * s, wy + P.cy * s + size * 0.06, maxW);\n        }\n      }\n      return canvas;\n    });\n  }\n\n  function targets(root, cfg) {\n    var scope = root.closest('.shopify-section') || document;\n    var list = [];\n    var all = document.querySelectorAll('img');\n    for (var i = 0; i < all.length; i++) {\n      var img = all[i];\n      if (!scope.contains(img) && !img.closest('sticky-add-to-cart')) continue;\n      var src = img.getAttribute('data-vh-orig-src') || img.getAttribute('src') || '';\n      if (src.indexOf('blob:') === 0) continue;\n      if (stemOf(src) === cfg.mainFile) list.push(img);\n    }\n    return list;\n  }\n\n  function point(img, url) {\n    if (!img.hasAttribute('data-vh-orig-src')) {\n      img.setAttribute('data-vh-orig-src', img.getAttribute('src') || '');\n      if (img.getAttribute('srcset')) img.setAttribute('data-vh-orig-srcset', img.getAttribute('srcset'));\n    }\n    var max = img.getAttribute('data_max_resolution');\n    if (max !== null) {\n      if (!img.hasAttribute('data-vh-orig-maxres')) img.setAttribute('data-vh-orig-maxres', max);\n      img.setAttribute('data_max_resolution', url);\n    }\n    img.removeAttribute('srcset');\n    img.removeAttribute('sizes');\n    if (img.getAttribute('src') !== url) img.src = url;\n  }\n\n  function reapply(root, cfg) {\n    if (!root.__vhUrl) return;\n    targets(root, cfg).forEach(function (img) { point(img, root.__vhUrl); });\n  }\n\n  function apply(root, cfg, canvas, isCurrent) {\n    if (!canvas) return;\n    try {\n      canvas.toBlob(function (blob) {\n        if (!blob || !isCurrent()) return;\n        var url = URL.createObjectURL(blob);\n        var old = root.__vhUrl;\n        root.__vhUrl = url;\n        reapply(root, cfg);\n        if (old) setTimeout(function () { URL.revokeObjectURL(old); }, 10000);\n      }, 'image/jpeg', 0.9);\n    } catch (e) {\n      if (window.console) console.warn('[vh-scene] preview could not be exported', e);\n    }\n  }\n\n  function showFirstSlide(root) {\n    var scope = root.closest('.shopify-section') || document;\n    var show = scope.querySelector('slideshow-component');\n    if (show && typeof show.select === 'function') {\n      try { show.select(0); } catch (e) {}\n    }\n  }\n\n  function changedFromDefault(opts) {\n    var els = opts.querySelectorAll('input, select');\n    for (var i = 0; i < els.length; i++) {\n      var el = els[i];\n      if (el.type === 'radio' || el.type === 'checkbox') { if (el.checked !== el.defaultChecked) return true; }\n      else if (el.tagName === 'SELECT') {\n        // with no option marked selected in the HTML the browser shows the first one\n        var def = 0;\n        for (var j = 0; j < el.options.length; j++) if (el.options[j].defaultSelected) { def = j; break; }\n        if (el.selectedIndex !== def) return true;\n      } else if (el.type === 'text' && el.value !== el.defaultValue) return true;\n    }\n    return false;\n  }\n\n  // the theme can rebuild gallery images (variant change, morph): point them back at the preview\n  function watchGallery(root, cfg, scope) {\n    if (!window.MutationObserver) return;\n    var pending = false;\n    var watch = new MutationObserver(function () {\n      if (pending || !root.__vhUrl) return;\n      pending = true;\n      setTimeout(function () { pending = false; reapply(root, cfg); }, 30);\n    });\n    watch.observe(scope, { subtree: true, childList: true, attributes: true, attributeFilter: ['src', 'srcset'] });\n  }\n\n  // Copy an existing on-page preview (VAHOTA Live preview block) onto the main product image\n  // once the shopper has made a choice, instead of drawing a scene here.\n  function setupMirror(root, cfg, scope, opts) {\n    var touched = changedFromDefault(opts);\n    var seq = 0;\n    function mark() { touched = true; }\n    opts.addEventListener('change', mark, true);\n    opts.addEventListener('input', mark, true);\n    scope.addEventListener('vh:preview:render', function (event) {\n      var canvas = event.detail && event.detail.canvas;\n      if (!touched || !canvas) return;\n      var mine = ++seq;\n      apply(root, cfg, canvas, function () { return mine === seq; });\n      showFirstSlide(root);\n    });\n    watchGallery(root, cfg, scope);\n  }\n\n  function setup(root) {\n    if (root.dataset.vhSceneBound === 'true') return;\n    var cfg;\n    try {\n      cfg = JSON.parse(root.querySelector('[data-vh-scene-config]').textContent);\n    } catch (e) {\n      if (window.console) console.warn('[vh-scene] scene config is not valid JSON', e);\n      return;\n    }\n    if (root.getAttribute('data-vh-main')) cfg.mainFile = root.getAttribute('data-vh-main');\n    if (!cfg.mainFile) return;\n    var scope = root.closest('.shopify-section') || document;\n    var opts = scope.querySelector('[data-vh-options]') || document.querySelector('[data-vh-options]');\n    if (!opts) return;\n    root.dataset.vhSceneBound = 'true';\n    if (cfg.mirror === 'preview') {\n      setupMirror(root, cfg, scope, opts);\n      return;\n    }\n    var cache = {};\n    if (cfg.font && cfg.font.urls && window.FontFace && document.fonts) {\n      root.__vhFont = Promise.all(cfg.font.urls.map(function (f) {\n        var face = new FontFace(cfg.font.family, 'url(' + f.url + ')', { weight: String(cfg.font.weight), unicodeRange: f.range || 'U+0000-00FF' });\n        return face.load().then(function (loaded) { document.fonts.add(loaded); }).catch(function () {});\n      }));\n    }\n\n    var timer = null;\n    var seq = 0;\n    function run(fromUser) {\n      // bump the generation right away so a render still loading images is dropped\n      var mine = ++seq;\n      var isCurrent = function () { return mine === seq; };\n      clearTimeout(timer);\n      timer = setTimeout(function () {\n        if (!isCurrent()) return;\n        render(root, cfg, cache, opts).then(function (canvas) {\n          if (!isCurrent()) return;\n          apply(root, cfg, canvas, isCurrent);\n          if (fromUser) showFirstSlide(root);\n        }).catch(function (e) {\n          if (window.console) console.warn('[vh-scene] render failed', e);\n        });\n      }, 150);\n    }\n    opts.addEventListener('change', function () { run(true); });\n    opts.addEventListener('input', function () { run(true); });\n\n    watchGallery(root, cfg, scope);\n\n    // browsers may restore earlier choices on reload / back: draw them straight away\n    if (changedFromDefault(opts)) run(false);\n    window.addEventListener('pageshow', function (e) { if (e.persisted && changedFromDefault(opts)) run(false); });\n\n    // warm the cache with what the next render will need\n    var warm = function () {\n      var st = readState(opts);\n      var key = cfg.bases[st.color] ? st.color : cfg.defaultColor;\n      loadImage(fileUrl(cfg, cfg.bases[key]), cache);\n      if (cfg.loco) loadImage(fileUrl(cfg, cfg.loco.src), cache);\n      if (cfg.dogDefault) loadImage(fileUrl(cfg, cfg.dogDefault.src), cache);\n      (cfg.wagons || []).forEach(function (w) { loadImage(fileUrl(cfg, w.src), cache); });\n    };\n    if ('requestIdleCallback' in window) window.requestIdleCallback(warm, { timeout: 3000 });\n    else setTimeout(warm, 1500);\n    root.vhSceneRender = function () { run(false); };\n  }\n\n  function init() {\n    document.querySelectorAll('[data-vh-scene]').forEach(setup);\n  }\n  window.__vhSceneInit = init;\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n  document.addEventListener('shopify:section:load', init);\n})();\n"],
  "mappings": "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",
  "names": []
}
