{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/setup-flow.js"],
  "sourcesContent": ["/* =====================================================\n   TUNE MFD - Setup flow runtime (state graph walker)\n   Mountable for Shopify + Flow Lab preview.\n   ===================================================== */\n(function () {\n  'use strict';\n\n  function cloneBag(obj) {\n    var out = {};\n    Object.keys(obj || {}).forEach(function (key) {\n      out[key] = obj[key];\n    });\n    return out;\n  }\n\n  function escapeHtml(str) {\n    return String(str)\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;');\n  }\n\n  function formatBody(text) {\n    var escaped = escapeHtml(text || '');\n    escaped = escaped.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n    escaped = escaped.replace(/\\n/g, '<br>');\n    return escaped;\n  }\n\n  function typeLabel(type) {\n    if (type === 'question') return 'Question';\n    if (type === 'info') return 'Guidance';\n    if (type === 'terminal') return 'Outcome';\n    return type || '';\n  }\n\n  function isVideoUrl(url) {\n    if (!url) return false;\n    if (/^data:video\\//i.test(url)) return true;\n    if (/cdn\\.shopify\\.com\\/videos\\//i.test(url)) return true;\n    return /\\.(mp4|webm|ogg|mov)(\\?|#|$)/i.test(url);\n  }\n\n  function isImageUrl(url) {\n    if (!url) return false;\n    if (/^data:image\\//i.test(url)) return true;\n    return /\\.(png|jpe?g|gif|webp|svg|avif)(\\?|#|$)/i.test(url);\n  }\n\n  function applyMediaOverrides(graph) {\n    var media = window.TUNE_SETUP_MEDIA || {};\n    if (!graph || !graph.nodes) return graph;\n    if (media.wiringDiagram && graph.nodes.wiring_diagram) {\n      graph.nodes.wiring_diagram.image = media.wiringDiagram;\n    }\n    return graph;\n  }\n\n  function mount(root, graph) {\n    if (!root) {\n      return null;\n    }\n\n    if (typeof root._tuneSetupDestroy === 'function') {\n      root._tuneSetupDestroy();\n    }\n\n    graph = applyMediaOverrides(graph);\n\n    if (!graph || !graph.nodes || !graph.initial) {\n      root.innerHTML = '<p class=\"setup_error\">Setup flow data failed to load.</p>';\n      return null;\n    }\n\n    var stageEl = root.querySelector('[data-setup-stage]');\n    var typeEl = root.querySelector('[data-setup-type]');\n    var titleEl = root.querySelector('[data-setup-title]');\n    var bodyEl = root.querySelector('[data-setup-body]');\n    var mediaEl = root.querySelector('[data-setup-media]');\n    var choicesEl = root.querySelector('[data-setup-choices]');\n    var backBtn = root.querySelector('[data-setup-back]');\n    var progressEl = root.querySelector('[data-setup-progress-label]');\n    var restartBtn = root.querySelector('[data-setup-restart]');\n\n    if (!titleEl || !bodyEl || !choicesEl) {\n      root.innerHTML = '<p class=\"setup_error\">Setup flow markup is incomplete.</p>';\n      return null;\n    }\n\n    var currentId = graph.initial;\n    var bag = {};\n    var history = [];\n    var destroyed = false;\n    var mediaLoopTimer = null;\n    var mediaRaf = null;\n\n    function getNode(id) {\n      return graph.nodes[id] || null;\n    }\n\n    function clearMediaTimers() {\n      if (mediaLoopTimer) {\n        clearTimeout(mediaLoopTimer);\n        mediaLoopTimer = null;\n      }\n      if (mediaRaf) {\n        cancelAnimationFrame(mediaRaf);\n        mediaRaf = null;\n      }\n    }\n\n    function renderMedia(node) {\n      if (!mediaEl) return;\n      clearMediaTimers();\n      mediaEl.innerHTML = '';\n      var video = (node.video || '').trim();\n      var image = (node.image || '').trim();\n      if (!video && !image) {\n        mediaEl.hidden = true;\n        return;\n      }\n      mediaEl.hidden = false;\n\n      if (image && !video) {\n        var figure = document.createElement('div');\n        figure.className = 'setup_image';\n        var img = document.createElement('img');\n        img.className = 'setup_image_el';\n        img.src = image;\n        img.alt = node.imageAlt || node.title || 'Wiring diagram';\n        img.loading = 'lazy';\n        img.decoding = 'async';\n        figure.appendChild(img);\n        mediaEl.appendChild(figure);\n        return;\n      }\n\n      if (isVideoUrl(video)) {\n        var wrap = document.createElement('div');\n        wrap.className = 'setup_video';\n\n        var vid = document.createElement('video');\n        vid.className = 'setup_video_el';\n        vid.src = video;\n        vid.controls = false;\n        vid.autoplay = true;\n        vid.muted = true;\n        vid.defaultMuted = true;\n        vid.setAttribute('muted', '');\n        vid.playsInline = true;\n        vid.setAttribute('playsinline', '');\n        vid.setAttribute('webkit-playsinline', '');\n        vid.preload = 'auto';\n        vid.setAttribute('disablepictureinpicture', '');\n        vid.setAttribute('controlslist', 'nodownload noplaybackrate noremoteplayback');\n        vid.disablePictureInPicture = true;\n\n        var track = document.createElement('div');\n        track.className = 'setup_video_progress';\n        track.setAttribute('aria-hidden', 'true');\n        var bar = document.createElement('div');\n        bar.className = 'setup_video_progress_bar';\n        track.appendChild(bar);\n\n        function setProgress(ratio) {\n          var pct = Math.max(0, Math.min(1, ratio || 0)) * 100;\n          bar.style.width = pct + '%';\n        }\n\n        function tickProgress() {\n          if (destroyed || !vid.duration || !isFinite(vid.duration)) {\n            mediaRaf = null;\n            return;\n          }\n          setProgress(vid.currentTime / vid.duration);\n          if (!vid.paused && !vid.ended) {\n            mediaRaf = requestAnimationFrame(tickProgress);\n          } else {\n            mediaRaf = null;\n          }\n        }\n\n        function startProgressLoop() {\n          if (mediaRaf) cancelAnimationFrame(mediaRaf);\n          mediaRaf = requestAnimationFrame(tickProgress);\n        }\n\n        function restartAfterPause() {\n          if (destroyed) return;\n          setProgress(0);\n          vid.currentTime = 0;\n          var playPromise = vid.play();\n          if (playPromise && typeof playPromise.catch === 'function') {\n            playPromise.catch(function () {});\n          }\n          startProgressLoop();\n        }\n\n        vid.addEventListener('loadedmetadata', function () {\n          setProgress(0);\n        });\n\n        vid.addEventListener('play', startProgressLoop);\n\n        vid.addEventListener('timeupdate', function () {\n          if (vid.duration && isFinite(vid.duration)) {\n            setProgress(vid.currentTime / vid.duration);\n          }\n        });\n\n        vid.addEventListener('ended', function () {\n          setProgress(1);\n          clearMediaTimers();\n          mediaLoopTimer = setTimeout(restartAfterPause, 3000);\n        });\n\n        wrap.appendChild(vid);\n        wrap.appendChild(track);\n        mediaEl.appendChild(wrap);\n\n        var playPromise = vid.play();\n        if (playPromise && typeof playPromise.catch === 'function') {\n          playPromise.catch(function () {});\n        }\n        startProgressLoop();\n      } else {\n        var frame = document.createElement('iframe');\n        frame.src = video;\n        frame.title = node.title || 'Setup video';\n        frame.setAttribute('allowfullscreen', '');\n        frame.setAttribute('loading', 'lazy');\n        mediaEl.appendChild(frame);\n      }\n    }\n\n    function render() {\n      if (destroyed) return;\n\n      var node = getNode(currentId);\n      if (!node) {\n        titleEl.textContent = 'Broken path';\n        bodyEl.textContent = 'Node \"' + currentId + '\" is missing from the graph.';\n        choicesEl.innerHTML = '';\n        if (mediaEl) {\n          mediaEl.innerHTML = '';\n          mediaEl.hidden = true;\n        }\n        return;\n      }\n\n      root.setAttribute('data-setup-progress', String(history.length));\n      root.setAttribute('data-setup-node', currentId);\n      root.setAttribute('data-setup-node-type', node.type || '');\n\n      if (typeEl) {\n        typeEl.textContent = typeLabel(node.type);\n      }\n      titleEl.textContent = node.title || '';\n      bodyEl.innerHTML = formatBody(node.body || '');\n      renderMedia(node);\n\n      if (progressEl) {\n        progressEl.textContent = history.length === 0\n          ? 'Start'\n          : 'Step ' + (history.length + 1);\n      }\n\n      if (backBtn) {\n        backBtn.hidden = history.length === 0;\n        backBtn.disabled = history.length === 0;\n      }\n\n      if (restartBtn) {\n        restartBtn.hidden = history.length === 0 && node.type !== 'terminal';\n      }\n\n      choicesEl.innerHTML = '';\n      var choices = node.choices || [];\n      choices.forEach(function (choice) {\n        if (choice.separatorBefore || choice.separatorTitle) {\n          var sepWrap = document.createElement('div');\n          sepWrap.className = 'setup_choice_break';\n          if (choice.separatorTitle) {\n            var sepTitle = document.createElement('p');\n            sepTitle.className = 'setup_choice_section_title';\n            sepTitle.textContent = choice.separatorTitle;\n            sepWrap.appendChild(sepTitle);\n          } else {\n            var sep = document.createElement('div');\n            sep.className = 'setup_choice_separator';\n            sep.setAttribute('role', 'separator');\n            sep.setAttribute('aria-hidden', 'true');\n            sepWrap.appendChild(sep);\n          }\n          choicesEl.appendChild(sepWrap);\n        }\n\n        var btn = document.createElement('button');\n        btn.type = 'button';\n        btn.className = 'setup_choice';\n        if (choice.image) {\n          btn.className += ' setup_choice--has-image';\n        }\n        if (choice.variant === 'aside') {\n          btn.className += ' setup_choice--aside';\n        }\n        btn.setAttribute('data-choice-id', choice.id);\n\n        if (choice.image) {\n          var media = document.createElement('span');\n          media.className = 'setup_choice_media';\n          var img = document.createElement('img');\n          img.src = choice.image;\n          img.alt = choice.imageAlt || choice.label || '';\n          img.loading = 'lazy';\n          img.decoding = 'async';\n          media.appendChild(img);\n          btn.appendChild(media);\n        }\n\n        var text = document.createElement('span');\n        text.className = 'setup_choice_label';\n        text.textContent = choice.label || choice.id;\n        btn.appendChild(text);\n\n        btn.addEventListener('click', function () {\n          choose(choice);\n        });\n        choicesEl.appendChild(btn);\n      });\n\n      if (stageEl) {\n        stageEl.classList.remove('setup_stage--enter');\n        void stageEl.offsetWidth;\n        stageEl.classList.add('setup_stage--enter');\n      }\n    }\n\n    function choose(choice) {\n      if (!choice || !choice.next) {\n        return;\n      }\n      if (!getNode(choice.next)) {\n        titleEl.textContent = 'Broken edge';\n        bodyEl.textContent = 'Choice leads to missing node \"' + choice.next + '\".';\n        choicesEl.innerHTML = '';\n        return;\n      }\n\n      if (choice.clearHistory) {\n        history = [];\n        bag = {};\n      } else {\n        history.push({\n          nodeId: currentId,\n          choiceId: choice.id,\n          bagSnapshot: cloneBag(bag)\n        });\n      }\n\n      if (choice.set && typeof choice.set === 'object') {\n        Object.keys(choice.set).forEach(function (key) {\n          bag[key] = choice.set[key];\n        });\n      }\n\n      currentId = choice.next;\n      render();\n    }\n\n    function goBack() {\n      if (history.length === 0) {\n        return;\n      }\n      var prev = history.pop();\n      currentId = prev.nodeId;\n      bag = cloneBag(prev.bagSnapshot);\n      render();\n    }\n\n    function restart() {\n      currentId = graph.initial;\n      bag = {};\n      history = [];\n      render();\n    }\n\n    function destroy() {\n      destroyed = true;\n      clearMediaTimers();\n      if (backBtn) backBtn.removeEventListener('click', goBack);\n      if (restartBtn) restartBtn.removeEventListener('click', restart);\n      choicesEl.innerHTML = '';\n      if (mediaEl) {\n        mediaEl.innerHTML = '';\n        mediaEl.hidden = true;\n      }\n      root._tuneSetupDestroy = null;\n      root._tuneSetupApi = null;\n    }\n\n    if (backBtn) {\n      backBtn.addEventListener('click', goBack);\n    }\n    if (restartBtn) {\n      restartBtn.addEventListener('click', restart);\n    }\n\n    var api = {\n      destroy: destroy,\n      restart: restart,\n      render: render,\n      getState: function () {\n        return {\n          currentId: currentId,\n          bag: cloneBag(bag),\n          depth: history.length\n        };\n      }\n    };\n\n    root._tuneSetupDestroy = destroy;\n    root._tuneSetupApi = api;\n    render();\n    return api;\n  }\n\n  window.TUNE_SetupFlow = {\n    mount: mount\n  };\n\n  var autoloadRoot = document.querySelector('[data-setup-flow][data-setup-autoload]');\n  if (!autoloadRoot) {\n    autoloadRoot = document.querySelector('[data-setup-flow]:not([data-setup-preview])');\n  }\n  if (autoloadRoot && window.TUNE_SETUP_FLOW && !autoloadRoot.hasAttribute('data-setup-preview')) {\n    mount(autoloadRoot, window.TUNE_SETUP_FLOW);\n  }\n})();\n"],
  "mappings": "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",
  "names": ["playPromise"]
}
