{
  "version": 3,
  "sources": ["../src/page-loader.js"],
  "sourcesContent": ["/**\n * Page Loader \u2014 pulsing edges-to-center animation at top of viewport\n * Used in: templates/base.html (global)\n *\n * Shows an animated bar for:\n * - Regular page navigations (link clicks)\n * - Form submissions\n * - HTMX requests\n */\n(function () {\n  var bar = document.getElementById(\"page-loader\");\n  if (!bar) return;\n\n  var timer = null;\n\n  function start() {\n    if (timer) { clearTimeout(timer); timer = null; }\n    bar.className = \"\";\n    void bar.offsetWidth; // reflow to restart animation if already loading\n    bar.className = \"loading\";\n  }\n\n  function done() {\n    bar.className = \"done\";\n    timer = setTimeout(function () {\n      bar.className = \"\";\n    }, 400);\n  }\n\n  // Regular navigation: click on <a> links\n  document.addEventListener(\"click\", function (e) {\n    if (e.defaultPrevented || e.target.closest(\".hx-no-loader\")) return;\n    var link = e.target.closest(\"a[href]\");\n    if (\n      !link ||\n      link.target === \"_blank\" ||\n      link.hasAttribute(\"hx-get\") ||\n      link.hasAttribute(\"hx-post\") ||\n      link.hasAttribute(\"download\") ||\n      e.ctrlKey ||\n      e.metaKey ||\n      e.shiftKey\n    )\n      return;\n\n    var href = link.getAttribute(\"href\");\n    if (!href || href.startsWith(\"#\") || href.startsWith(\"javascript:\"))\n      return;\n\n    start();\n  });\n\n  // Form submissions (non-HTMX)\n  document.addEventListener(\"submit\", function (e) {\n    if (e.target.closest(\".hx-no-loader\") || e.target.hasAttribute(\"hx-post\") || e.target.hasAttribute(\"hx-get\"))\n      return;\n    start();\n  });\n\n  // Cancel if browser restored page from bfcache\n  window.addEventListener(\"pageshow\", function (e) {\n    if (e.persisted) done();\n  });\n\n  // HTMX requests (skip background polling marked with .hx-no-loader)\n  document.addEventListener(\"htmx:beforeRequest\", function (e) {\n    if (e.detail.elt.closest(\".hx-no-loader\")) return;\n    start();\n  });\n  document.addEventListener(\"htmx:afterRequest\", function (e) {\n    if (e.detail.elt.closest(\".hx-no-loader\")) return;\n    done();\n  });\n  document.addEventListener(\"htmx:responseError\", function (e) {\n    if (e.detail.elt.closest(\".hx-no-loader\")) return;\n    done();\n  });\n})();\n"],
  "mappings": "OASC,UAAY,CACX,IAAIA,EAAM,SAAS,eAAe,aAAa,EAC/C,GAAI,CAACA,EAAK,OAEV,IAAIC,EAAQ,KAEZ,SAASC,GAAQ,CACXD,IAAS,aAAaA,CAAK,EAAGA,EAAQ,MAC1CD,EAAI,UAAY,GACXA,EAAI,YACTA,EAAI,UAAY,SAClB,CAEA,SAASG,GAAO,CACdH,EAAI,UAAY,OAChBC,EAAQ,WAAW,UAAY,CAC7BD,EAAI,UAAY,EAClB,EAAG,GAAG,CACR,CAGA,SAAS,iBAAiB,QAAS,SAAUI,EAAG,CAC9C,GAAI,EAAAA,EAAE,kBAAoBA,EAAE,OAAO,QAAQ,eAAe,GAC1D,KAAIC,EAAOD,EAAE,OAAO,QAAQ,SAAS,EACrC,GACE,GAACC,GACDA,EAAK,SAAW,UAChBA,EAAK,aAAa,QAAQ,GAC1BA,EAAK,aAAa,SAAS,GAC3BA,EAAK,aAAa,UAAU,GAC5BD,EAAE,SACFA,EAAE,SACFA,EAAE,UAIJ,KAAIE,EAAOD,EAAK,aAAa,MAAM,EAC/B,CAACC,GAAQA,EAAK,WAAW,GAAG,GAAKA,EAAK,WAAW,aAAa,GAGlEJ,EAAM,GACR,CAAC,EAGD,SAAS,iBAAiB,SAAU,SAAUE,EAAG,CAC3CA,EAAE,OAAO,QAAQ,eAAe,GAAKA,EAAE,OAAO,aAAa,SAAS,GAAKA,EAAE,OAAO,aAAa,QAAQ,GAE3GF,EAAM,CACR,CAAC,EAGD,OAAO,iBAAiB,WAAY,SAAUE,EAAG,CAC3CA,EAAE,WAAWD,EAAK,CACxB,CAAC,EAGD,SAAS,iBAAiB,qBAAsB,SAAUC,EAAG,CACvDA,EAAE,OAAO,IAAI,QAAQ,eAAe,GACxCF,EAAM,CACR,CAAC,EACD,SAAS,iBAAiB,oBAAqB,SAAUE,EAAG,CACtDA,EAAE,OAAO,IAAI,QAAQ,eAAe,GACxCD,EAAK,CACP,CAAC,EACD,SAAS,iBAAiB,qBAAsB,SAAUC,EAAG,CACvDA,EAAE,OAAO,IAAI,QAAQ,eAAe,GACxCD,EAAK,CACP,CAAC,CACH,GAAG",
  "names": ["bar", "timer", "start", "done", "e", "link", "href"]
}
