{"version":3,"names":["window","__topicBackButton","LABEL","USE_CATEGORY_NAME","FALLBACK_URL","ICON","depth","_push","history","pushState","apply","arguments","addEventListener","categoryLink","links","document","querySelectorAll","last","i","length","a","closest","test","getAttribute","onClick","e","preventDefault","back","makeButton","href","name","btn","createElement","className","innerHTML","accessibleLabel","setAttribute","title","build","wrappers","link","textContent","trim","split","wrapper","querySelector","insertBefore","firstChild","heading","nextSibling","appendChild","queued","schedule","requestAnimationFrame","start","MutationObserver","observe","body","childList","subtree"],"sources":["theme-78-inline-common-head_tag.js"],"sourcesContent":["\n(function () {\n  \"use strict\";\n  if (window.__topicBackButton) { return; }\n  window.__topicBackButton = true;\n\n  /* ── options ────────────────────────────────────────────────────── */\n  var LABEL             = \"Back\";\n  var USE_CATEGORY_NAME = false;      // → \"Back to Technical Support\"\n  var FALLBACK_URL      = \"/latest\"; // when no category is on the page\n  /* ───────────────────────────────────────────────────────────────── */\n\n  var ICON =\n    '<svg class=\"topic-back-button__icon\" viewBox=\"0 0 24 24\" fill=\"none\" ' +\n    'stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" ' +\n    'stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\">' +\n    '<path d=\"M19 12H5\"/><path d=\"m11 18-6-6 6-6\"/></svg>';\n\n  // Track genuine in-app navigations. Discourse uses replaceState while you\n  // scroll a post stream, so only pushState is counted here.\n  var depth = 0;\n  var _push = history.pushState;\n  history.pushState = function () {\n    depth++;\n    return _push.apply(this, arguments);\n  };\n  window.addEventListener(\"popstate\", function () {\n    if (depth > 0) { depth--; }\n  });\n\n  function categoryLink() {\n    // Last link = most specific (sub)category. Scoped to the title so the\n    // sidebar's category badges can't match.\n    //\n    // Tags render inside .topic-category too, so the raw list ends with a\n    // /tag/... link on any tagged topic — which sent \"Back\" to a tag page\n    // rather than to the category. Anything under .discourse-tags, and any\n    // href that looks like a tag route, is dropped first.\n    var links = document.querySelectorAll(\"#topic-title .topic-category a[href]\");\n    var last = null;\n    for (var i = 0; i < links.length; i++) {\n      var a = links[i];\n      if (a.closest(\".discourse-tags, .discourse-tag, .box .discourse-tags\")) { continue; }\n      if (/^\\/tag[s]?\\//.test(a.getAttribute(\"href\") || \"\")) { continue; }\n      last = a;\n    }\n    return last;\n  }\n\n  function onClick(e) {\n    if (depth > 0) {\n      // We arrived here from inside the forum — real back is more useful.\n      e.preventDefault();\n      history.back();\n    }\n    // Otherwise fall through: Discourse's click interceptor routes the\n    // href client-side, no full page load.\n  }\n\n  function makeButton(href, name) {\n    var btn = document.createElement(\"a\");\n    btn.className = \"topic-back-button\";\n    btn.href = href;\n    btn.innerHTML =\n      ICON +\n      '<span class=\"topic-back-button__label\">' +\n      (USE_CATEGORY_NAME && name ? LABEL + \" to \" + name : LABEL) +\n      \"</span>\";\n    var accessibleLabel = name ? \"Back to \" + name : LABEL;\n    btn.setAttribute(\"aria-label\", accessibleLabel);\n    if (name) { btn.title = accessibleLabel; }\n    btn.addEventListener(\"click\", onClick);\n    return btn;\n  }\n\n  function build() {\n    // Scrolling into a topic docks the title into the header bar as a\n    // SEPARATE rendered instance of the same title-wrapper markup (confirmed\n    // via devtools: .d-header .extra-info .title-wrapper), so the button has\n    // to be inserted into both instances independently.\n    var wrappers = document.querySelectorAll(\n      \"#topic-title .title-wrapper, .d-header .title-wrapper\"\n    );\n    if (!wrappers.length) { return; }\n\n    var link = categoryLink();\n    var href = link ? link.getAttribute(\"href\") : FALLBACK_URL;\n    var name = link ? link.textContent.trim().split(\"\\n\")[0] : \"\";\n\n    for (var i = 0; i < wrappers.length; i++) {\n      var wrapper = wrappers[i];\n      if (wrapper.querySelector(\".topic-back-button\")) { continue; }\n\n      var btn = makeButton(href, name);\n      if (wrapper.closest(\".d-header\")) {\n        // Docked header: icon sits before the title, on the same row.\n        wrapper.insertBefore(btn, wrapper.firstChild);\n      } else {\n        // In-page title: button goes below the H1, not above it.\n        var heading = wrapper.querySelector(\"h1\");\n        if (heading && heading.nextSibling) {\n          wrapper.insertBefore(btn, heading.nextSibling);\n        } else if (heading) {\n          wrapper.appendChild(btn);\n        } else {\n          wrapper.insertBefore(btn, wrapper.firstChild);\n        }\n      }\n    }\n  }\n\n  // Discourse is an SPA and re-renders the title on every route change,\n  // so re-assert the button whenever the DOM settles.\n  var queued = false;\n  function schedule() {\n    if (queued) { return; }\n    queued = true;\n    requestAnimationFrame(function () {\n      queued = false;\n      build();\n    });\n  }\n\n  function start() {\n    build();\n    new MutationObserver(schedule).observe(document.body, {\n      childList: true,\n      subtree: true\n    });\n  }\n\n  if (document.body) {\n    start();\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", start);\n  }\n})();\n"],"mappings":"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","ignoreList":[]}