{"version":3,"names":["BREADCRUMB_ID","categoryCache","lastUrl","fetchCategories","Promise","resolve","fetch","then","r","json","data","map","cats","category_list","categories","forEach","c","id","name","slug","parentId","parent_category_id","subcategory_list","sc","parseCategoryFromUrl","match","window","location","pathname","parseInt","buildBreadcrumbChain","catId","chain","current","visited","unshift","injectBreadcrumb","titleEl","document","querySelector","old","getElementById","remove","el","length","span","createElement","className","cat","sep","textContent","appendChild","link","href","titleLink","parentNode","insertBefore","nextSibling","tick","currentUrl","needsUpdate","hasBreadcrumb","shouldHave","setInterval","_pushState","history","pushState","apply","arguments","setTimeout","addEventListener"],"sources":["theme-5-inline-common-body_tag-2.js"],"sourcesContent":["\n// Dynamic breadcrumb in Discourse header — shows \"Forums › Category › Subcategory\"\n(function() {\n  var BREADCRUMB_ID = 'fw-header-breadcrumb';\n  var categoryCache = null;\n  var lastUrl = '';\n\n  function fetchCategories() {\n    if (categoryCache) return Promise.resolve(categoryCache);\n    return fetch('/categories.json?include_subcategories=true')\n      .then(function(r) { return r.json(); })\n      .then(function(data) {\n        var map = {};\n        var cats = data.category_list.categories || [];\n        cats.forEach(function(c) {\n          map[c.id] = { id: c.id, name: c.name, slug: c.slug, parentId: c.parent_category_id || null };\n          if (c.subcategory_list) {\n            c.subcategory_list.forEach(function(sc) {\n              map[sc.id] = { id: sc.id, name: sc.name, slug: sc.slug, parentId: sc.parent_category_id || null };\n            });\n          }\n        });\n        categoryCache = map;\n        return map;\n      });\n  }\n\n  function parseCategoryFromUrl() {\n    var match = window.location.pathname.match(/^\\/c\\/(?:[\\w-]+\\/)*?(\\d+)(?:\\/|$)/);\n    if (match) return parseInt(match[1], 10);\n    return null;\n  }\n\n  function buildBreadcrumbChain(catId, map) {\n    var chain = [];\n    var current = catId;\n    var visited = {};\n    while (current && map[current] && !visited[current]) {\n      visited[current] = true;\n      chain.unshift(map[current]);\n      current = map[current].parentId;\n    }\n    return chain;\n  }\n\n  function injectBreadcrumb() {\n    var titleEl = document.querySelector('.d-header .title');\n    if (!titleEl) return false;\n\n    // Remove stale breadcrumb\n    var old = document.getElementById(BREADCRUMB_ID);\n    if (old) old.remove();\n\n    var catId = parseCategoryFromUrl();\n    if (!catId) return true; // No category — just \"Forums\", that's fine\n\n    fetchCategories().then(function(map) {\n      if (parseCategoryFromUrl() !== catId) return;\n\n      // Re-check title element (Ember may have re-rendered)\n      var el = document.querySelector('.d-header .title');\n      if (!el) return;\n\n      // Don't double-inject\n      if (document.getElementById(BREADCRUMB_ID)) return;\n\n      var chain = buildBreadcrumbChain(catId, map);\n      if (chain.length === 0) return;\n\n      var span = document.createElement('span');\n      span.id = BREADCRUMB_ID;\n      span.className = 'fw-header-breadcrumb';\n\n      chain.forEach(function(cat) {\n        var sep = document.createElement('span');\n        sep.className = 'fw-breadcrumb-sep';\n        sep.textContent = '\\u203A';\n        span.appendChild(sep);\n\n        var link = document.createElement('a');\n        link.className = 'fw-breadcrumb-item';\n        link.textContent = cat.name;\n        link.href = '/c/' + cat.slug + '/' + cat.id;\n        span.appendChild(link);\n      });\n\n      var titleLink = el.querySelector('a');\n      if (titleLink) {\n        titleLink.parentNode.insertBefore(span, titleLink.nextSibling);\n      } else {\n        el.appendChild(span);\n      }\n    });\n\n    return true;\n  }\n\n  // Polling loop — catches Ember re-renders, full refreshes, and SPA transitions\n  function tick() {\n    var currentUrl = window.location.href;\n    var needsUpdate = currentUrl !== lastUrl;\n    lastUrl = currentUrl;\n\n    var hasBreadcrumb = document.getElementById(BREADCRUMB_ID);\n    var shouldHave = !!parseCategoryFromUrl();\n\n    if (needsUpdate || (shouldHave && !hasBreadcrumb)) {\n      injectBreadcrumb();\n    } else if (!shouldHave && hasBreadcrumb) {\n      hasBreadcrumb.remove();\n    }\n  }\n\n  // Run tick every 500ms — lightweight check, no API calls unless needed\n  setInterval(tick, 500);\n\n  // Also fire immediately on pushState/popState for snappy response\n  var _pushState = history.pushState;\n  history.pushState = function() {\n    _pushState.apply(history, arguments);\n    setTimeout(tick, 50);\n  };\n  window.addEventListener('popstate', function() {\n    setTimeout(tick, 50);\n  });\n})();\n"],"mappings":"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","ignoreList":[]}