{"version":3,"file":"main.Mf-rHP.js","sources":["theme-54/virtual:theme","theme-54/discourse/api-initializers/theme-initializer.gjs","theme-54/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(54);\n\nexport function themePrefix(key) {\n  return `theme_translations.54.${key}`;\n}\n","import { withPluginApi } from \"discourse/lib/plugin-api\";\n\nfunction _createTabs(el) {\n  const tabContainers = el.querySelectorAll(\".d-wrap[data-wrap=topic-tabs]\");\n\n  tabContainers.forEach((container, containerIndex) => {\n    const tabs = Array.from(container.querySelectorAll(\".d-wrap[data-wrap=tab]\"));\n    if (tabs.length === 0) return;\n\n    // 1. Clean up: Hide <hr> tags that are between tabs (not inside them)\n    const allHrs = container.querySelectorAll(\"hr\");\n    allHrs.forEach((hr) => {\n      // Check if the <hr> is directly inside a tab\n      const isInsideTab = tabs.some((tab) => tab.contains(hr));\n      if (!isInsideTab) {\n        hr.style.display = \"none\";\n      }\n    });\n\n    // Generate unique IDs for this container's tabs\n    const containerId = `tabs-container-${containerIndex}`;\n    const tabListId = `${containerId}-list`;\n\n    // Create tab list (navigation)\n    const navPills = document.createElement(\"ul\");\n    navPills.id = tabListId;\n    navPills.classList.add(\"nav\", \"nav-pills\", \"custom-tabs-nav\");\n    navPills.setAttribute(\"role\", \"tablist\");\n\n    // Create tab panels and navigation items\n    tabs.forEach((tab, index) => {\n      const label = tab.getAttribute(\"data-label\") || `Tab ${index + 1}`;\n      const tabId = `${containerId}-tab-${index}`;\n      const panelId = `${containerId}-panel-${index}`;\n\n      // Create navigation item\n      const li = document.createElement(\"li\");\n      li.setAttribute(\"role\", \"presentation\");\n\n      const link = document.createElement(\"a\");\n      link.id = tabId;\n      link.setAttribute(\"role\", \"tab\");\n      link.setAttribute(\"aria-selected\", index === 0 ? \"true\" : \"false\");\n      link.setAttribute(\"aria-controls\", panelId);\n      link.setAttribute(\"tabindex\", index === 0 ? \"0\" : \"-1\");\n      link.innerText = label;\n      link.href = \"#\";\n\n      if (index === 0) link.classList.add(\"active\");\n\n      link.addEventListener(\"click\", (e) => {\n        e.preventDefault();\n        _switchTab(tabs, navPills, tabListId, containerId, index);\n      });\n\n      // Keyboard navigation\n      link.addEventListener(\"keydown\", (e) => {\n        let targetIndex = null;\n        const tabLinks = navPills.querySelectorAll(\"a[role='tab']\");\n        \n        if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n          e.preventDefault();\n          targetIndex = index === 0 ? tabLinks.length - 1 : index - 1;\n        } else if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n          e.preventDefault();\n          targetIndex = index === tabLinks.length - 1 ? 0 : index + 1;\n        } else if (e.key === \"Home\") {\n          e.preventDefault();\n          targetIndex = 0;\n        } else if (e.key === \"End\") {\n          e.preventDefault();\n          targetIndex = tabLinks.length - 1;\n        }\n\n        if (targetIndex !== null) {\n          tabLinks[targetIndex].focus();\n          _switchTab(tabs, navPills, tabListId, containerId, targetIndex);\n        }\n      });\n\n      li.appendChild(link);\n      navPills.appendChild(li);\n\n      // Mark tab content with ARIA attributes\n      tab.id = panelId;\n      tab.setAttribute(\"role\", \"tabpanel\");\n      tab.setAttribute(\"aria-labelledby\", tabId);\n      tab.setAttribute(\"aria-hidden\", index === 0 ? \"false\" : \"true\");\n      if (index !== 0) tab.style.display = \"none\";\n    });\n\n    container.prepend(navPills);\n  });\n}\n\nfunction _switchTab(tabs, navPills, tabListId, containerId, targetIndex) {\n  const tabLinks = navPills.querySelectorAll(\"a[role='tab']\");\n\n  // Update all tabs and panels\n  tabLinks.forEach((link, i) => {\n    const panelId = `${containerId}-panel-${i}`;\n    const panel = document.getElementById(panelId);\n\n    if (i === targetIndex) {\n      link.classList.add(\"active\");\n      link.setAttribute(\"aria-selected\", \"true\");\n      link.setAttribute(\"tabindex\", \"0\");\n      if (panel) {\n        panel.style.display = \"block\";\n        panel.setAttribute(\"aria-hidden\", \"false\");\n      }\n    } else {\n      link.classList.remove(\"active\");\n      link.setAttribute(\"aria-selected\", \"false\");\n      link.setAttribute(\"tabindex\", \"-1\");\n      if (panel) {\n        panel.style.display = \"none\";\n        panel.setAttribute(\"aria-hidden\", \"true\");\n      }\n    }\n  });\n}\n\nexport default {\n  name: \"discourse-nav-pill-tabs\",\n  initialize() {\n    withPluginApi(\"0.8.31\", (api) => {\n      api.decorateCookedElement(_createTabs, { id: \"tabs-pills-decorator\" });\n    });\n  },\n};","import * as Mod1 from \"./discourse/api-initializers/theme-initializer\";\nconst compatModules = {\n  \"discourse/api-initializers/theme-initializer\": Mod1,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["getObjectForTheme","_createTabs","el","querySelectorAll","forEach","container","containerIndex","tabs","Array","from","length","hr","some","tab","contains","style","display","containerId","tabListId","navPills","document","createElement","id","classList","add","setAttribute","index","label","getAttribute","tabId","panelId","li","link","innerText","href","addEventListener","e","preventDefault","_switchTab","targetIndex","tabLinks","key","focus","appendChild","prepend","i","panel","getElementById","remove","themeInitializer","name","initialize","withPluginApi","api","decorateCookedElement","compatModules"],"mappings":"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"}