From 6c87abd4fc1144179c59f42056a0ce3ae693f603 Mon Sep 17 00:00:00 2001 From: Agahnim Date: Wed, 13 May 2026 14:00:54 +0200 Subject: [PATCH] global: add formatter --- content/bibou-quotes.json | 32 +- content/mp-tracks.json | 2 +- content/p-tracks.json | 2 +- content/web-articles.json | 2 +- shell.nix | 35 +- static/contextmenu.js | 24 +- static/miniplayer.js | 18 +- static/style.css | 80 +- static/vendor/htmx.min.js | 3525 +++++++++++++++++++++++++++- templates/base.html | 160 +- templates/home.html | 10 +- templates/music.html | 12 +- templates/notfound.html | 8 +- templates/partials/header.html | 42 +- templates/partials/home.html | 167 +- templates/partials/miniplayer.html | 63 +- templates/partials/music.html | 10 +- templates/partials/notfound.html | 12 +- treefmt.toml | 9 + 19 files changed, 3925 insertions(+), 288 deletions(-) create mode 100644 treefmt.toml diff --git a/content/bibou-quotes.json b/content/bibou-quotes.json index 9b81d64..70e4d21 100644 --- a/content/bibou-quotes.json +++ b/content/bibou-quotes.json @@ -1,17 +1,17 @@ [ - "The Oracle of the Bibou doth whisper 'neath the moon's pale gaze.", - "He who doth watch in the shadow, seeth all.", - "Verily, even pixels bear a soul, thus speaketh the Bibou.", - "Dread not the error, for 'tis but the path unto the light.", - "Let thy heart guide thy mouse, O child of the web.", - "Each click be a prayer, and the Oracle doth hear.", - "Rise, and partake of a biscuit, for the road be long.", - "This day, thou shalt walk upon the feather of a dove.", - "The owl doth watch thee. Forget not thine duties.", - "A rain of pixels shall fall this very night.", - "The neighbour’s cat doth conspire. Be wary, O soul.", - "Thy click is not in vain, for the Bibou hath seen thee.", - "Verily, 'tis Monday... and courage thou shalt need.", - "Fear not the dark, for the Bibou lurks there, awaiting food.", - "The Bibou's gaze pierceth the soul..." -] \ No newline at end of file + "The Oracle of the Bibou doth whisper 'neath the moon's pale gaze.", + "He who doth watch in the shadow, seeth all.", + "Verily, even pixels bear a soul, thus speaketh the Bibou.", + "Dread not the error, for 'tis but the path unto the light.", + "Let thy heart guide thy mouse, O child of the web.", + "Each click be a prayer, and the Oracle doth hear.", + "Rise, and partake of a biscuit, for the road be long.", + "This day, thou shalt walk upon the feather of a dove.", + "The owl doth watch thee. Forget not thine duties.", + "A rain of pixels shall fall this very night.", + "The neighbour’s cat doth conspire. Be wary, O soul.", + "Thy click is not in vain, for the Bibou hath seen thee.", + "Verily, 'tis Monday... and courage thou shalt need.", + "Fear not the dark, for the Bibou lurks there, awaiting food.", + "The Bibou's gaze pierceth the soul..." +] diff --git a/content/mp-tracks.json b/content/mp-tracks.json index 4c71b65..bbe1519 100644 --- a/content/mp-tracks.json +++ b/content/mp-tracks.json @@ -35,4 +35,4 @@ "artist": "Monodrone", "src": "/static/assets/music/dark.mp3" } -] \ No newline at end of file +] diff --git a/content/p-tracks.json b/content/p-tracks.json index 215e1d8..1e7fdeb 100644 --- a/content/p-tracks.json +++ b/content/p-tracks.json @@ -69,4 +69,4 @@ "src": "/static/assets/music/times.mp3", "album": "Extinction" } -] \ No newline at end of file +] diff --git a/content/web-articles.json b/content/web-articles.json index c3f3e3c..018d622 100644 --- a/content/web-articles.json +++ b/content/web-articles.json @@ -7,4 +7,4 @@ "date": "2026-03-23", "body": "It's been a long time ! I'm writing this as I am completely overhauling the website, but I won't tell much about it until I'm done with this project ! What I can say though is that this section is far more extensible now thanks to the handy web-articles json file !" } -] \ No newline at end of file +] diff --git a/shell.nix b/shell.nix index 122c15c..d5d8731 100644 --- a/shell.nix +++ b/shell.nix @@ -1,17 +1,20 @@ -{pkgs ? import {}}: -pkgs.mkShell { - packages = with pkgs; [ - rustc - rust-analyzer - rustfmt - clippy - cargo - cargo-watch - ]; +{pkgs ? import {}}: let +in + pkgs.mkShell { + packages = with pkgs; [ + rustc + rust-analyzer + rustfmt + clippy + cargo + cargo-watch + treefmt + prettier + ]; - shellHook = '' - echo "=========================================================" - echo "Pour lancer le projet et avoir les changements en temps réel : " - echo "- cargo watch -w content -w src -w templates -w static -x run" - ''; -} + shellHook = '' + echo "=========================================================" + echo "Pour lancer le projet et avoir les changements en temps réel : " + echo "- cargo watch -w content -w src -w templates -w static -x run" + ''; + } diff --git a/static/contextmenu.js b/static/contextmenu.js index 8171e6e..0861ffc 100644 --- a/static/contextmenu.js +++ b/static/contextmenu.js @@ -1,5 +1,5 @@ -(function() { - const menu = document.createElement('helo'); +(function () { + const menu = document.createElement("helo"); menu.innerHTML = ` @@ -7,7 +7,7 @@ `; - menu.style.display = 'none'; + menu.style.display = "none"; function ensureMenu() { if (!document.body.contains(menu)) { @@ -18,7 +18,7 @@ const showMenu = (x, y) => { ensureMenu(); - menu.style.display = 'block'; + menu.style.display = "block"; menu.style.left = `${x}px`; menu.style.top = `${y}px`; @@ -34,20 +34,20 @@ }; const hideMenu = () => { - menu.style.display = 'none'; + menu.style.display = "none"; }; - document.addEventListener('contextmenu', (e) => { + document.addEventListener("contextmenu", (e) => { e.preventDefault(); showMenu(e.clientX, e.clientY); }); - document.addEventListener('click', hideMenu); - document.addEventListener('scroll', hideMenu); + document.addEventListener("click", hideMenu); + document.addEventListener("scroll", hideMenu); - document.addEventListener('keydown', (e) => { - if (e.key === 'Escape') hideMenu(); + document.addEventListener("keydown", (e) => { + if (e.key === "Escape") hideMenu(); }); - document.body.addEventListener('htmx:historyRestore', ensureMenu); -})(); \ No newline at end of file + document.body.addEventListener("htmx:historyRestore", ensureMenu); +})(); diff --git a/static/miniplayer.js b/static/miniplayer.js index 5ec159e..54367a8 100644 --- a/static/miniplayer.js +++ b/static/miniplayer.js @@ -15,7 +15,6 @@ function initMiniPlayer() { const trackTitleEl = player.querySelector("track-title"); const trackArtistEl = player.querySelector("track-artist"); - let isTransitioning = false; let currentTrackIndex = 0; let isPlaying = false; @@ -65,9 +64,13 @@ function initMiniPlayer() { if (trackArtistEl) trackArtistEl.textContent = tracks[index].artist; if (wasPlaying) { - audio.addEventListener("loadeddata", () => { - audio.play(); - }, { once: true }); + audio.addEventListener( + "loadeddata", + () => { + audio.play(); + }, + { once: true }, + ); } }; @@ -82,13 +85,15 @@ function initMiniPlayer() { }; const handlePrev = () => { - const newIndex = currentTrackIndex === 0 ? tracks.length - 1 : currentTrackIndex - 1; + const newIndex = + currentTrackIndex === 0 ? tracks.length - 1 : currentTrackIndex - 1; loadTrack(newIndex); }; const handleNext = () => { isTransitioning = true; - const newIndex = currentTrackIndex === tracks.length - 1 ? 0 : currentTrackIndex + 1; + const newIndex = + currentTrackIndex === tracks.length - 1 ? 0 : currentTrackIndex + 1; loadTrack(newIndex); }; @@ -124,7 +129,6 @@ function initMiniPlayer() { } }); - audio.addEventListener("pause", () => { if (isTransitioning) return; diff --git a/static/style.css b/static/style.css index 471a393..104be0d 100644 --- a/static/style.css +++ b/static/style.css @@ -122,7 +122,7 @@ blockquote:before, blockquote:after, q:before, q:after { - content: ''; + content: ""; content: none; } @@ -133,7 +133,6 @@ table { /* Animations */ - @keyframes fadeInNOut { 0% { opacity: 0; @@ -149,7 +148,6 @@ table { } @keyframes woopwoop { - 0%, 100% { transform: translateY(0) rotate(-2deg); @@ -160,7 +158,6 @@ table { } } - @keyframes marquee { from { transform: translateX(0); @@ -184,7 +181,6 @@ table { } @keyframes boing { - 0%, 100% { transform: translateY(-25%); @@ -202,7 +198,6 @@ table { src: url("assets/fonts/ah.ttf") format("truetype"); } - :root { --lavender: #cdb4db; --light-pink: #ffc8dd; @@ -219,20 +214,15 @@ table { text-shadow: 0px 0px 3px var(--darkerer-pink); } - - - body { background-size: cover; background-position: center; min-height: 100lvh; width: 100lvw; overflow: auto; - font-family: "DotGothic16", - sans-serif; + font-family: "DotGothic16", sans-serif; font-size: 1rem; - &:has(#content home-content) { background-image: url(assets/images/tiledbgpink.webp); } @@ -302,9 +292,11 @@ crt { } &::before { - background: linear-gradient(to bottom, - transparent 50%, - rgba(0, 0, 0, 0.2) 51%); + background: linear-gradient( + to bottom, + transparent 50%, + rgba(0, 0, 0, 0.2) 51% + ); background-size: 100% 4px; animation: scanlines 1s steps(60) infinite; } @@ -454,8 +446,6 @@ navbar { margin-left: auto; padding-right: 0.5rem; } - - } } @@ -480,7 +470,9 @@ home-content { box { border-radius: 0.4rem; - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + box-shadow: + 0 4px 6px -1px rgb(0 0 0 / 0.1), + 0 2px 4px -2px rgb(0 0 0 / 0.1); background-color: white; padding: 1rem; @@ -495,7 +487,7 @@ home-content { display: flex; gap: 1rem; - >socials-header { + > socials-header { color: var(--darkerer-pink); } @@ -507,7 +499,7 @@ home-content { bibou-message { font-style: italic; - color: var(--grey-500) + color: var(--grey-500); } bibou-container { @@ -542,9 +534,6 @@ home-content { font-style: italic; text-align: center; } - - - } &#newsbox { @@ -554,7 +543,7 @@ home-content { justify-content: center; gap: 0.6rem; - &>img { + & > img { margin: auto; } } @@ -594,16 +583,14 @@ home-content { flex-wrap: wrap; gap: 1rem; - >img { + > img { flex: 1 1 auto; } - - >img:nth-last-child(-n+3) { + > img:nth-last-child(-n + 3) { flex: 1 1 30%; } } - } } @@ -636,12 +623,23 @@ home-content { woopwoop span { display: inline-block; - background: linear-gradient(90deg, var(--blue), var(--darker-pink), var(--darkerer-pink), var(--lavender), var(--light-blue), var(--light-pink), var(--pink)); + background: linear-gradient( + 90deg, + var(--blue), + var(--darker-pink), + var(--darkerer-pink), + var(--lavender), + var(--light-blue), + var(--light-pink), + var(--pink) + ); background-size: 200% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; - animation: woopwoop 1.2s ease-in-out infinite, woopwoopmove 2s linear infinite; + animation: + woopwoop 1.2s ease-in-out infinite, + woopwoopmove 2s linear infinite; } chibis { @@ -667,7 +665,6 @@ home-content { /* Music */ music { - display: flex; flex-direction: row; flex-wrap: wrap; @@ -703,15 +700,16 @@ music { } } - box { border-radius: 0.4rem; - box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + box-shadow: + 0 4px 6px -1px rgb(0 0 0 / 0.1), + 0 2px 4px -2px rgb(0 0 0 / 0.1); background-color: white; padding: 1rem; } - >cute-container { + > cute-container { display: flex; flex-direction: column; flex-wrap: wrap; @@ -734,7 +732,9 @@ katcenkat { max-width: 100svw; height: auto; object-fit: contain; - transition: opacity 5s ease, transform 5s ease-out; + transition: + opacity 5s ease, + transform 5s ease-out; opacity: 1; transform: translateY(0px); @@ -755,7 +755,9 @@ mini-player { border: 2px solid; border-color: #ffffff #808080 #808080 #ffffff; box-shadow: 2px 2px 0 #000; - transition: opacity 0.3s, translate 0.3s; + transition: + opacity 0.3s, + translate 0.3s; font-size: clamp(0.625rem, 2svw, 0.75rem); ominous-message { @@ -986,7 +988,6 @@ mini-player { pink-statusbar { display: none; } - } /* Music page */ @@ -1039,7 +1040,7 @@ helo { padding: 0.5rem 0; min-width: 150px; z-index: 9999; - font-family: 'VT323', monospace; + font-family: "VT323", monospace; font-size: 1.2rem; helo-content { @@ -1052,5 +1053,4 @@ helo { width: 5svw; } } - -} \ No newline at end of file +} diff --git a/static/vendor/htmx.min.js b/static/vendor/htmx.min.js index faafa3e..6a3a60a 100644 --- a/static/vendor/htmx.min.js +++ b/static/vendor/htmx.min.js @@ -1 +1,3524 @@ -var htmx=function(){"use strict";const Q={onLoad:null,process:null,on:null,off:null,trigger:null,ajax:null,find:null,findAll:null,closest:null,values:function(e,t){const n=dn(e,t||"post");return n.values},remove:null,addClass:null,removeClass:null,toggleClass:null,takeClass:null,swap:null,defineExtension:null,removeExtension:null,logAll:null,logNone:null,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",inlineStyleNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",scrollBehavior:"instant",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get","delete"],selfRequestsOnly:true,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null,disableInheritance:false,responseHandling:[{code:"204",swap:false},{code:"[23]..",swap:true},{code:"[45]..",swap:false,error:true}],allowNestedOobSwaps:true,historyRestoreAsHxRequest:true,reportValidityOfForms:false},parseInterval:null,location:location,_:null,version:"2.0.8"};Q.onLoad=V;Q.process=Ft;Q.on=xe;Q.off=be;Q.trigger=ae;Q.ajax=Ln;Q.find=f;Q.findAll=x;Q.closest=g;Q.remove=_;Q.addClass=K;Q.removeClass=G;Q.toggleClass=W;Q.takeClass=Z;Q.swap=ze;Q.defineExtension=_n;Q.removeExtension=zn;Q.logAll=j;Q.logNone=$;Q.parseInterval=d;Q._=e;const n={addTriggerHandler:St,bodyContains:se,canAccessLocalStorage:X,findThisElement:Se,filterValues:yn,swap:ze,hasAttribute:s,getAttributeValue:a,getClosestAttributeValue:ne,getClosestMatch:q,getExpressionVars:Rn,getHeaders:mn,getInputValues:dn,getInternalData:oe,getSwapSpecification:bn,getTriggerSpecs:st,getTarget:Ee,makeFragment:D,mergeObjects:le,makeSettleInfo:Sn,oobSwap:Te,querySelectorExt:ue,settleImmediately:Yt,shouldCancel:ht,triggerEvent:ae,triggerErrorEvent:fe,withExtensions:Vt};const de=["get","post","put","delete","patch"];const R=de.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e instanceof Element&&e.getAttribute(t)}function s(e,t){return!!e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function a(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){const t=e.parentElement;if(!t&&e.parentNode instanceof ShadowRoot)return e.parentNode;return t}function te(){return document}function y(e,t){return e.getRootNode?e.getRootNode({composed:t}):te()}function q(e,t){while(e&&!t(e)){e=u(e)}return e||null}function o(e,t,n){const r=a(t,n);const o=a(t,"hx-disinherit");var i=a(t,"hx-inherit");if(e!==t){if(Q.config.disableInheritance){if(i&&(i==="*"||i.split(" ").indexOf(n)>=0)){return r}else{return null}}if(o&&(o==="*"||o.split(" ").indexOf(n)>=0)){return"unset"}}return r}function ne(t,n){let r=null;q(t,function(e){return!!(r=o(t,ce(e),n))});if(r!=="unset"){return r}}function h(e,t){return e instanceof Element&&e.matches(t)}function A(e){const t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;const n=t.exec(e);if(n){return n[1].toLowerCase()}else{return""}}function L(e){if("parseHTMLUnsafe"in Document){return Document.parseHTMLUnsafe(e)}const t=new DOMParser;return t.parseFromString(e,"text/html")}function N(e,t){while(t.childNodes.length>0){e.append(t.childNodes[0])}}function r(e){const t=te().createElement("script");ie(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}return t}function i(e){return e.matches("script")&&(e.type==="text/javascript"||e.type==="module"||e.type==="")}function I(e){Array.from(e.querySelectorAll("script")).forEach(e=>{if(i(e)){const t=r(e);const n=e.parentNode;try{n.insertBefore(t,e)}catch(e){H(e)}finally{e.remove()}}})}function D(e){const t=e.replace(/]*)?>[\s\S]*?<\/head>/i,"");const n=A(t);let r;if(n==="html"){r=new DocumentFragment;const i=L(e);N(r,i.body);r.title=i.title}else if(n==="body"){r=new DocumentFragment;const i=L(t);N(r,i.body);r.title=i.title}else{const i=L('");r=i.querySelector("template").content;r.title=i.title;var o=r.querySelector("title");if(o&&o.parentNode===r){o.remove();r.title=o.innerText}}if(r){if(Q.config.allowScriptTags){I(r)}else{r.querySelectorAll("script").forEach(e=>e.remove())}}return r}function re(e){if(e){e()}}function t(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function P(e){return typeof e==="function"}function k(e){return t(e,"Object")}function oe(e){const t="htmx-internal-data";let n=e[t];if(!n){n=e[t]={}}return n}function M(t){const n=[];if(t){for(let e=0;e=0}function se(e){return e.getRootNode({composed:true})===document}function B(e){return e.trim().split(/\s+/)}function le(e,t){for(const n in t){if(t.hasOwnProperty(n)){e[n]=t[n]}}return e}function v(e){try{return JSON.parse(e)}catch(e){H(e);return null}}function X(){const e="htmx:sessionStorageTest";try{sessionStorage.setItem(e,e);sessionStorage.removeItem(e);return true}catch(e){return false}}function U(e){const t=new URL(e,"http://x");if(t){e=t.pathname+t.search}if(e!="/"){e=e.replace(/\/+$/,"")}return e}function e(e){return On(te().body,function(){return eval(e)})}function V(t){const e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function j(){Q.logger=function(e,t,n){if(console){console.log(t,e,n)}}}function $(){Q.logger=null}function f(e,t){if(typeof e!=="string"){return e.querySelector(t)}else{return f(te(),e)}}function x(e,t){if(typeof e!=="string"){return e.querySelectorAll(t)}else{return x(te(),e)}}function b(){return window}function _(e,t){e=w(e);if(t){b().setTimeout(function(){_(e);e=null},t)}else{u(e).removeChild(e)}}function ce(e){return e instanceof Element?e:null}function z(e){return e instanceof HTMLElement?e:null}function J(e){return typeof e==="string"?e:null}function p(e){return e instanceof Element||e instanceof Document||e instanceof DocumentFragment?e:null}function K(e,t,n){e=ce(w(e));if(!e){return}if(n){b().setTimeout(function(){K(e,t);e=null},n)}else{e.classList&&e.classList.add(t)}}function G(e,t,n){let r=ce(w(e));if(!r){return}if(n){b().setTimeout(function(){G(r,t);r=null},n)}else{if(r.classList){r.classList.remove(t);if(r.classList.length===0){r.removeAttribute("class")}}}}function W(e,t){e=w(e);e.classList.toggle(t)}function Z(e,t){e=w(e);ie(e.parentElement.children,function(e){G(e,t)});K(ce(e),t)}function g(e,t){e=ce(w(e));if(e){return e.closest(t)}return null}function l(e,t){return e.substring(0,t.length)===t}function Y(e,t){return e.substring(e.length-t.length)===t}function pe(e){const t=e.trim();if(l(t,"<")&&Y(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function m(t,r,n){if(r.indexOf("global ")===0){return m(t,r.slice(7),true)}t=w(t);const o=[];{let t=0;let n=0;for(let e=0;e"){t--}}if(n0){const r=pe(o.shift());let e;if(r.indexOf("closest ")===0){e=g(ce(t),pe(r.slice(8)))}else if(r.indexOf("find ")===0){e=f(p(t),pe(r.slice(5)))}else if(r==="next"||r==="nextElementSibling"){e=ce(t).nextElementSibling}else if(r.indexOf("next ")===0){e=ge(t,pe(r.slice(5)),!!n)}else if(r==="previous"||r==="previousElementSibling"){e=ce(t).previousElementSibling}else if(r.indexOf("previous ")===0){e=me(t,pe(r.slice(9)),!!n)}else if(r==="document"){e=document}else if(r==="window"){e=window}else if(r==="body"){e=document.body}else if(r==="root"){e=y(t,!!n)}else if(r==="host"){e=t.getRootNode().host}else{s.push(r)}if(e){i.push(e)}}if(s.length>0){const e=s.join(",");const c=p(y(t,!!n));i.push(...M(c.querySelectorAll(e)))}return i}var ge=function(t,e,n){const r=p(y(t,n)).querySelectorAll(e);for(let e=0;e=0;e--){const o=r[e];if(o.compareDocumentPosition(t)===Node.DOCUMENT_POSITION_FOLLOWING){return o}}};function ue(e,t){if(typeof e!=="string"){return m(e,t)[0]}else{return m(te().body,e)[0]}}function w(e,t){if(typeof e==="string"){return f(p(t)||document,e)}else{return e}}function ye(e,t,n,r){if(P(t)){return{target:te().body,event:J(e),listener:t,options:n}}else{return{target:w(e),event:J(t),listener:n,options:r}}}function xe(t,n,r,o){Gn(function(){const e=ye(t,n,r,o);e.target.addEventListener(e.event,e.listener,e.options)});const e=P(n);return e?n:r}function be(t,n,r){Gn(function(){const e=ye(t,n,r);e.target.removeEventListener(e.event,e.listener)});return P(n)?n:r}const ve=te().createElement("output");function we(t,n){const e=ne(t,n);if(e){if(e==="this"){return[Se(t,n)]}else{const r=m(t,e);const o=/(^|,)(\s*)inherit(\s*)($|,)/.test(e);if(o){const i=ce(q(t,function(e){return e!==t&&s(ce(e),n)}));if(i){r.push(...we(i,n))}}if(r.length===0){H('The selector "'+e+'" on '+n+" returned no matches!");return[ve]}else{return r}}}}function Se(e,t){return ce(q(e,function(e){return a(ce(e),t)!=null}))}function Ee(e){const t=ne(e,"hx-target");if(t){if(t==="this"){return Se(e,"hx-target")}else{return ue(e,t)}}else{const n=oe(e);if(n.boosted){return te().body}else{return e}}}function Ce(e){return Q.config.attributesToSettle.includes(e)}function Oe(t,n){ie(Array.from(t.attributes),function(e){if(!n.hasAttribute(e.name)&&Ce(e.name)){t.removeAttribute(e.name)}});ie(n.attributes,function(e){if(Ce(e.name)){t.setAttribute(e.name,e.value)}})}function He(t,e){const n=Jn(e);for(let e=0;e0){s=e.substring(0,e.indexOf(":"));n=e.substring(e.indexOf(":")+1)}else{s=e}o.removeAttribute("hx-swap-oob");o.removeAttribute("data-hx-swap-oob");const r=m(t,n,false);if(r.length){ie(r,function(e){let t;const n=o.cloneNode(true);t=te().createDocumentFragment();t.appendChild(n);if(!He(s,e)){t=p(n)}const r={shouldSwap:true,target:e,fragment:t};if(!ae(e,"htmx:oobBeforeSwap",r))return;e=r.target;if(r.shouldSwap){qe(t);$e(s,e,e,t,i);Re()}ie(i.elts,function(e){ae(e,"htmx:oobAfterSwap",r)})});o.parentNode.removeChild(o)}else{o.parentNode.removeChild(o);fe(te().body,"htmx:oobErrorNoTarget",{content:o})}return e}function Re(){const e=f("#--htmx-preserve-pantry--");if(e){for(const t of[...e.children]){const n=f("#"+t.id);n.parentNode.moveBefore(t,n);n.remove()}e.remove()}}function qe(e){ie(x(e,"[hx-preserve], [data-hx-preserve]"),function(e){const t=a(e,"id");const n=te().getElementById(t);if(n!=null){if(e.moveBefore){let e=f("#--htmx-preserve-pantry--");if(e==null){te().body.insertAdjacentHTML("afterend","
");e=f("#--htmx-preserve-pantry--")}e.moveBefore(n,null)}else{e.parentNode.replaceChild(n,e)}}})}function Ae(l,e,c){ie(e.querySelectorAll("[id]"),function(t){const n=ee(t,"id");if(n&&n.length>0){const r=n.replace("'","\\'");const o=t.tagName.replace(":","\\:");const e=p(l);const i=e&&e.querySelector(o+"[id='"+r+"']");if(i&&i!==e){const s=t.cloneNode();Oe(t,i);c.tasks.push(function(){Oe(t,s)})}}})}function Le(e){return function(){G(e,Q.config.addedClass);Ft(ce(e));Ne(p(e));ae(e,"htmx:load")}}function Ne(e){const t="[autofocus]";const n=z(h(e,t)?e:e.querySelector(t));if(n!=null){n.focus()}}function c(e,t,n,r){Ae(e,n,r);while(n.childNodes.length>0){const o=n.firstChild;K(ce(o),Q.config.addedClass);e.insertBefore(o,t);if(o.nodeType!==Node.TEXT_NODE&&o.nodeType!==Node.COMMENT_NODE){r.tasks.push(Le(o))}}}function Ie(e,t){let n=0;while(n0}function ze(h,d,p,g){if(!g){g={}}let m=null;let n=null;let e=function(){re(g.beforeSwapCallback);h=w(h);const r=g.contextElement?y(g.contextElement,false):te();const e=document.activeElement;let t={};t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null};const o=Sn(h);if(p.swapStyle==="textContent"){h.textContent=d}else{let n=D(d);o.title=g.title||n.title;if(g.historyRequest){n=n.querySelector("[hx-history-elt],[data-hx-history-elt]")||n}if(g.selectOOB){const i=g.selectOOB.split(",");for(let t=0;t0){b().setTimeout(n,p.settleDelay)}else{n()}};let t=Q.config.globalViewTransitions;if(p.hasOwnProperty("transition")){t=p.transition}const r=g.contextElement||te();if(t&&ae(r,"htmx:beforeTransition",g.eventInfo)&&typeof Promise!=="undefined"&&document.startViewTransition){const o=new Promise(function(e,t){m=e;n=t});const i=e;e=function(){document.startViewTransition(function(){i();return o})}}try{if(p?.swapDelay&&p.swapDelay>0){b().setTimeout(e,p.swapDelay)}else{e()}}catch(e){fe(r,"htmx:swapError",g.eventInfo);re(n);throw e}}function Je(e,t,n){const r=e.getResponseHeader(t);if(r.indexOf("{")===0){const o=v(r);for(const i in o){if(o.hasOwnProperty(i)){let e=o[i];if(k(e)){n=e.target!==undefined?e.target:n}else{e={value:e}}ae(n,i,e)}}}else{const s=r.split(",");for(let e=0;e0){const s=o[0];if(s==="]"){e--;if(e===0){if(n===null){t=t+"true"}o.shift();t+=")})";try{const l=On(r,function(){return Function(t)()},function(){return true});l.source=t;return l}catch(e){fe(te().body,"htmx:syntax:error",{error:e,source:t});return null}}}else if(s==="["){e++}if(tt(s,n,i)){t+="(("+i+"."+s+") ? ("+i+"."+s+") : (window."+s+"))"}else{t=t+s}n=o.shift()}}}function O(e,t){let n="";while(e.length>0&&!t.test(e[0])){n+=e.shift()}return n}function rt(e){let t;if(e.length>0&&Ye.test(e[0])){e.shift();t=O(e,Qe).trim();e.shift()}else{t=O(e,E)}return t}const ot="input, textarea, select";function it(e,t,n){const r=[];const o=et(t);do{O(o,C);const l=o.length;const c=O(o,/[,\[\s]/);if(c!==""){if(c==="every"){const u={trigger:"every"};O(o,C);u.pollInterval=d(O(o,/[,\[\s]/));O(o,C);var i=nt(e,o,"event");if(i){u.eventFilter=i}r.push(u)}else{const f={trigger:c};var i=nt(e,o,"event");if(i){f.eventFilter=i}O(o,C);while(o.length>0&&o[0]!==","){const a=o.shift();if(a==="changed"){f.changed=true}else if(a==="once"){f.once=true}else if(a==="consume"){f.consume=true}else if(a==="delay"&&o[0]===":"){o.shift();f.delay=d(O(o,E))}else if(a==="from"&&o[0]===":"){o.shift();if(Ye.test(o[0])){var s=rt(o)}else{var s=O(o,E);if(s==="closest"||s==="find"||s==="next"||s==="previous"){o.shift();const h=rt(o);if(h.length>0){s+=" "+h}}}f.from=s}else if(a==="target"&&o[0]===":"){o.shift();f.target=rt(o)}else if(a==="throttle"&&o[0]===":"){o.shift();f.throttle=d(O(o,E))}else if(a==="queue"&&o[0]===":"){o.shift();f.queue=O(o,E)}else if(a==="root"&&o[0]===":"){o.shift();f[a]=rt(o)}else if(a==="threshold"&&o[0]===":"){o.shift();f[a]=O(o,E)}else{fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}r.push(f)}}if(o.length===l){fe(e,"htmx:syntax:error",{token:o.shift()})}O(o,C)}while(o[0]===","&&o.shift());if(n){n[t]=r}return r}function st(e){const t=a(e,"hx-trigger");let n=[];if(t){const r=Q.config.triggerSpecsCache;n=r&&r[t]||it(e,t,r)}if(n.length>0){return n}else if(h(e,"form")){return[{trigger:"submit"}]}else if(h(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(h(e,ot)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function lt(e){oe(e).cancelled=true}function ct(e,t,n){const r=oe(e);r.timeout=b().setTimeout(function(){if(se(e)&&r.cancelled!==true){if(!pt(n,e,Xt("hx:poll:trigger",{triggerSpec:n,target:e}))){t(e)}ct(e,t,n)}},n.pollInterval)}function ut(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function ft(e){return g(e,Q.config.disableSelector)}function at(t,n,e){if(t instanceof HTMLAnchorElement&&ut(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"&&String(ee(t,"method")).toLowerCase()!=="dialog"){n.boosted=true;let r,o;if(t.tagName==="A"){r="get";o=ee(t,"href")}else{const i=ee(t,"method");r=i?i.toLowerCase():"get";o=ee(t,"action");if(o==null||o===""){o=location.href}if(r==="get"&&o.includes("?")){o=o.replace(/\?[^#]+/,"")}}e.forEach(function(e){gt(t,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)},n,e,true)})}}function ht(e,t){if(e.type==="submit"&&t.tagName==="FORM"){return true}else if(e.type==="click"){const n=t.closest('input[type="submit"], button');if(n&&n.form&&n.type==="submit"){return true}const r=t.closest("a");const o=/^#.+/;if(r&&r.href&&!o.test(r.getAttribute("href"))){return true}}return false}function dt(e,t){return oe(e).boosted&&e instanceof HTMLAnchorElement&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function pt(e,t,n){const r=e.eventFilter;if(r){try{return r.call(t,n)!==true}catch(e){const o=r.source;fe(te().body,"htmx:eventFilter:error",{error:e,source:o});return true}}return false}function gt(l,c,e,u,f){const a=oe(l);let t;if(u.from){t=m(l,u.from)}else{t=[l]}if(u.changed){if(!("lastValue"in a)){a.lastValue=new WeakMap}t.forEach(function(e){if(!a.lastValue.has(u)){a.lastValue.set(u,new WeakMap)}a.lastValue.get(u).set(e,e.value)})}ie(t,function(i){const s=function(e){if(!se(l)){i.removeEventListener(u.trigger,s);return}if(dt(l,e)){return}if(f||ht(e,i)){e.preventDefault()}if(pt(u,l,e)){return}const t=oe(e);t.triggerSpec=u;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(l)<0){t.handledFor.push(l);if(u.consume){e.stopPropagation()}if(u.target&&e.target){if(!h(ce(e.target),u.target)){return}}if(u.once){if(a.triggeredOnce){return}else{a.triggeredOnce=true}}if(u.changed){const n=e.target;const r=n.value;const o=a.lastValue.get(u);if(o.has(n)&&o.get(n)===r){return}o.set(n,r)}if(a.delayed){clearTimeout(a.delayed)}if(a.throttle){return}if(u.throttle>0){if(!a.throttle){ae(l,"htmx:trigger");c(l,e);a.throttle=b().setTimeout(function(){a.throttle=null},u.throttle)}}else if(u.delay>0){a.delayed=b().setTimeout(function(){ae(l,"htmx:trigger");c(l,e)},u.delay)}else{ae(l,"htmx:trigger");c(l,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:u.trigger,listener:s,on:i});i.addEventListener(u.trigger,s)})}let mt=false;let yt=null;function xt(){if(!yt){yt=function(){mt=true};window.addEventListener("scroll",yt);window.addEventListener("resize",yt);setInterval(function(){if(mt){mt=false;ie(te().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"),function(e){bt(e)})}},200)}}function bt(e){if(!s(e,"data-hx-revealed")&&F(e)){e.setAttribute("data-hx-revealed","true");const t=oe(e);if(t.initHash){ae(e,"revealed")}else{e.addEventListener("htmx:afterProcessNode",function(){ae(e,"revealed")},{once:true})}}}function vt(e,t,n,r){const o=function(){if(!n.loaded){n.loaded=true;ae(e,"htmx:trigger");t(e)}};if(r>0){b().setTimeout(o,r)}else{o()}}function wt(t,n,e){let i=false;ie(de,function(r){if(s(t,"hx-"+r)){const o=a(t,"hx-"+r);i=true;n.path=o;n.verb=r;e.forEach(function(e){St(t,e,n,function(e,t){const n=ce(e);if(ft(n)){S(n);return}he(r,o,n,t)})})}});return i}function St(r,e,t,n){if(e.trigger==="revealed"){xt();gt(r,n,t,e);bt(ce(r))}else if(e.trigger==="intersect"){const o={};if(e.root){o.root=ue(r,e.root)}if(e.threshold){o.threshold=parseFloat(e.threshold)}const i=new IntersectionObserver(function(t){for(let e=0;e0){t.polling=true;ct(ce(r),n,e)}else{gt(r,n,t,e)}}function Et(e){const t=ce(e);if(!t){return false}const n=t.attributes;for(let e=0;e", "+e).join(""));return o}else{return[]}}function Rt(e){const t=At(e.target);const n=Nt(e);if(n){n.lastButtonClicked=t}}function qt(e){const t=Nt(e);if(t){t.lastButtonClicked=null}}function At(e){return g(ce(e),"button, input[type='submit']")}function Lt(e){return e.form||g(e,"form")}function Nt(e){const t=At(e.target);if(!t){return}const n=Lt(t);if(!n){return}return oe(n)}function It(e){e.addEventListener("click",Rt);e.addEventListener("focusin",Rt);e.addEventListener("focusout",qt)}function Dt(t,e,n){const r=oe(t);if(!Array.isArray(r.onHandlers)){r.onHandlers=[]}let o;const i=function(e){On(t,function(){if(ft(t)){return}if(!o){o=new Function("event",n)}o.call(t,e)})};t.addEventListener(e,i);r.onHandlers.push({event:e,listener:i})}function Pt(t){Pe(t);for(let e=0;eQ.config.historyCacheSize){i.shift()}while(i.length>0){try{sessionStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){fe(te().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Jt(t){if(!X()){return null}t=U(t);const n=v(sessionStorage.getItem("htmx-history-cache"))||[];for(let e=0;e=200&&this.status<400){r.response=this.response;ae(te().body,"htmx:historyCacheMissLoad",r);ze(r.historyElt,r.response,n,{contextElement:r.historyElt,historyRequest:true});$t(r.path);ae(te().body,"htmx:historyRestore",{path:e,cacheMiss:true,serverResponse:r.response})}else{fe(te().body,"htmx:historyCacheMissLoadError",r)}};if(ae(te().body,"htmx:historyCacheMiss",r)){t.send()}}function en(e){Gt();e=e||location.pathname+location.search;const t=Jt(e);if(t){const n={swapStyle:"innerHTML",swapDelay:0,settleDelay:0,scroll:t.scroll};const r={path:e,item:t,historyElt:_t(),swapSpec:n};if(ae(te().body,"htmx:historyCacheHit",r)){ze(r.historyElt,t.content,n,{contextElement:r.historyElt,title:t.title});$t(r.path);ae(te().body,"htmx:historyRestore",r)}}else{if(Q.config.refreshOnHistoryMiss){Q.location.reload(true)}else{Qt(e)}}}function tn(e){let t=we(e,"hx-indicator");if(t==null){t=[e]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.classList.add.call(e.classList,Q.config.requestClass)});return t}function nn(e){let t=we(e,"hx-disabled-elt");if(t==null){t=[]}ie(t,function(e){const t=oe(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","");e.setAttribute("data-disabled-by-htmx","")});return t}function rn(e,t){ie(e.concat(t),function(e){const t=oe(e);t.requestCount=(t.requestCount||1)-1});ie(e,function(e){const t=oe(e);if(t.requestCount===0){e.classList.remove.call(e.classList,Q.config.requestClass)}});ie(t,function(e){const t=oe(e);if(t.requestCount===0){e.removeAttribute("disabled");e.removeAttribute("data-disabled-by-htmx")}})}function on(t,n){for(let e=0;en.indexOf(e)<0)}else{e=e.filter(e=>e!==n)}r.delete(t);ie(e,e=>r.append(t,e))}}function un(e){if(e instanceof HTMLSelectElement&&e.multiple){return M(e.querySelectorAll("option:checked")).map(function(e){return e.value})}if(e instanceof HTMLInputElement&&e.files){return M(e.files)}return e.value}function fn(t,n,r,e,o){if(e==null||on(t,e)){return}else{t.push(e)}if(sn(e)){const i=ee(e,"name");ln(i,un(e),n);if(o){an(e,r)}}if(e instanceof HTMLFormElement){ie(e.elements,function(e){if(t.indexOf(e)>=0){cn(e.name,un(e),n)}else{t.push(e)}if(o){an(e,r)}});new FormData(e).forEach(function(e,t){if(e instanceof File&&e.name===""){return}ln(t,e,n)})}}function an(e,t){const n=e;if(n.willValidate){ae(n,"htmx:validation:validate");if(!n.checkValidity()){if(ae(n,"htmx:validation:failed",{message:n.validationMessage,validity:n.validity})&&!t.length&&Q.config.reportValidityOfForms){n.reportValidity()}t.push({elt:n,message:n.validationMessage,validity:n.validity})}}}function hn(n,e){for(const t of e.keys()){n.delete(t)}e.forEach(function(e,t){n.append(t,e)});return n}function dn(e,t){const n=[];const r=new FormData;const o=new FormData;const i=[];const s=oe(e);if(s.lastButtonClicked&&!se(s.lastButtonClicked)){s.lastButtonClicked=null}let l=e instanceof HTMLFormElement&&e.noValidate!==true||a(e,"hx-validate")==="true";if(s.lastButtonClicked){l=l&&s.lastButtonClicked.formNoValidate!==true}if(t!=="get"){fn(n,o,i,Lt(e),l)}fn(n,r,i,e,l);if(s.lastButtonClicked||e.tagName==="BUTTON"||e.tagName==="INPUT"&&ee(e,"type")==="submit"){const u=s.lastButtonClicked||e;const f=ee(u,"name");ln(f,u.value,o)}const c=we(e,"hx-include");ie(c,function(e){fn(n,r,i,ce(e),l);if(!h(e,"form")){ie(p(e).querySelectorAll(ot),function(e){fn(n,r,i,e,l)})}});hn(r,o);return{errors:i,formData:r,values:kn(r)}}function pn(e,t,n){if(e!==""){e+="&"}if(String(n)==="[object Object]"){n=JSON.stringify(n)}const r=encodeURIComponent(n);e+=encodeURIComponent(t)+"="+r;return e}function gn(e){e=Dn(e);let n="";e.forEach(function(e,t){n=pn(n,t,e)});return n}function mn(e,t,n){const r={"HX-Request":"true","HX-Trigger":ee(e,"id"),"HX-Trigger-Name":ee(e,"name"),"HX-Target":a(t,"id"),"HX-Current-URL":location.href};Cn(e,"hx-headers",false,r);if(n!==undefined){r["HX-Prompt"]=n}if(oe(e).boosted){r["HX-Boosted"]="true"}return r}function yn(n,e){const t=ne(e,"hx-params");if(t){if(t==="none"){return new FormData}else if(t==="*"){return n}else if(t.indexOf("not ")===0){ie(t.slice(4).split(","),function(e){e=e.trim();n.delete(e)});return n}else{const r=new FormData;ie(t.split(","),function(t){t=t.trim();if(n.has(t)){n.getAll(t).forEach(function(e){r.append(t,e)})}});return r}}else{return n}}function xn(e){return!!ee(e,"href")&&ee(e,"href").indexOf("#")>=0}function bn(e,t){const n=t||ne(e,"hx-swap");const r={swapStyle:oe(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&oe(e).boosted&&!xn(e)){r.show="top"}if(n){const s=B(n);if(s.length>0){for(let e=0;e0?o.join(":"):null;r.scroll=u;r.scrollTarget=i}else if(l.indexOf("show:")===0){const f=l.slice(5);var o=f.split(":");const a=o.pop();var i=o.length>0?o.join(":"):null;r.show=a;r.showTarget=i}else if(l.indexOf("focus-scroll:")===0){const h=l.slice("focus-scroll:".length);r.focusScroll=h=="true"}else if(e==0){r.swapStyle=l}else{H("Unknown modifier in hx-swap: "+l)}}}}return r}function vn(e){return ne(e,"hx-encoding")==="multipart/form-data"||h(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function wn(t,n,r){let o=null;Vt(n,function(e){if(o==null){o=e.encodeParameters(t,r,n)}});if(o!=null){return o}else{if(vn(n)){return hn(new FormData,Dn(r))}else{return gn(r)}}}function Sn(e){return{tasks:[],elts:[e]}}function En(e,t){const n=e[0];const r=e[e.length-1];if(t.scroll){var o=null;if(t.scrollTarget){o=ce(ue(n,t.scrollTarget))}if(t.scroll==="top"&&(n||o)){o=o||n;o.scrollTop=0}if(t.scroll==="bottom"&&(r||o)){o=o||r;o.scrollTop=o.scrollHeight}if(typeof t.scroll==="number"){b().setTimeout(function(){window.scrollTo(0,t.scroll)},0)}}if(t.show){var o=null;if(t.showTarget){let e=t.showTarget;if(t.showTarget==="window"){e="body"}o=ce(ue(n,e))}if(t.show==="top"&&(n||o)){o=o||n;o.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(r||o)){o=o||r;o.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function Cn(r,e,o,i,s){if(i==null){i={}}if(r==null){return i}const l=a(r,e);if(l){let e=l.trim();let t=o;if(e==="unset"){return null}if(e.indexOf("javascript:")===0){e=e.slice(11);t=true}else if(e.indexOf("js:")===0){e=e.slice(3);t=true}if(e.indexOf("{")!==0){e="{"+e+"}"}let n;if(t){n=On(r,function(){if(s){return Function("event","return ("+e+")").call(r,s)}else{return Function("return ("+e+")").call(r)}},{})}else{n=v(e)}for(const c in n){if(n.hasOwnProperty(c)){if(i[c]==null){i[c]=n[c]}}}}return Cn(ce(u(r)),e,o,i,s)}function On(e,t,n){if(Q.config.allowEval){return t()}else{fe(e,"htmx:evalDisallowedError");return n}}function Hn(e,t,n){return Cn(e,"hx-vars",true,n,t)}function Tn(e,t,n){return Cn(e,"hx-vals",false,n,t)}function Rn(e,t){return le(Hn(e,t),Tn(e,t))}function qn(t,n,r){if(r!==null){try{t.setRequestHeader(n,r)}catch(e){t.setRequestHeader(n,encodeURIComponent(r));t.setRequestHeader(n+"-URI-AutoEncoded","true")}}}function An(t){if(t.responseURL){try{const e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(te().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function T(e,t){return t.test(e.getAllResponseHeaders())}function Ln(t,n,r){t=t.toLowerCase();if(r){if(r instanceof Element||typeof r==="string"){return he(t,n,null,null,{targetOverride:w(r)||ve,returnPromise:true})}else{let e=w(r.target);if(r.target&&!e||r.source&&!e&&!w(r.source)){e=ve}return he(t,n,w(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:e,swapOverride:r.swap,select:r.select,returnPromise:true,push:r.push,replace:r.replace,selectOOB:r.selectOOB})}}else{return he(t,n,null,null,{returnPromise:true})}}function Nn(e){const t=[];while(e){t.push(e);e=e.parentElement}return t}function In(e,t,n){const r=new URL(t,location.protocol!=="about:"?location.href:window.origin);const o=location.protocol!=="about:"?location.origin:window.origin;const i=o===r.origin;if(Q.config.selfRequestsOnly){if(!i){return false}}return ae(e,"htmx:validateUrl",le({url:r,sameHost:i},n))}function Dn(e){if(e instanceof FormData)return e;const t=new FormData;for(const n in e){if(e.hasOwnProperty(n)){if(e[n]&&typeof e[n].forEach==="function"){e[n].forEach(function(e){t.append(n,e)})}else if(typeof e[n]==="object"&&!(e[n]instanceof Blob)){t.append(n,JSON.stringify(e[n]))}else{t.append(n,e[n])}}}return t}function Pn(r,o,e){return new Proxy(e,{get:function(t,e){if(typeof e==="number")return t[e];if(e==="length")return t.length;if(e==="push"){return function(e){t.push(e);r.append(o,e)}}if(typeof t[e]==="function"){return function(){t[e].apply(t,arguments);r.delete(o);t.forEach(function(e){r.append(o,e)})}}if(t[e]&&t[e].length===1){return t[e][0]}else{return t[e]}},set:function(e,t,n){e[t]=n;r.delete(o);e.forEach(function(e){r.append(o,e)});return true}})}function kn(o){return new Proxy(o,{get:function(e,t){if(typeof t==="symbol"){const r=Reflect.get(e,t);if(typeof r==="function"){return function(){return r.apply(o,arguments)}}else{return r}}if(t==="toJSON"){return()=>Object.fromEntries(o)}if(t in e){if(typeof e[t]==="function"){return function(){return o[t].apply(o,arguments)}}}const n=o.getAll(t);if(n.length===0){return undefined}else if(n.length===1){return n[0]}else{return Pn(e,t,n)}},set:function(t,n,e){if(typeof n!=="string"){return false}t.delete(n);if(e&&typeof e.forEach==="function"){e.forEach(function(e){t.append(n,e)})}else if(typeof e==="object"&&!(e instanceof Blob)){t.append(n,JSON.stringify(e))}else{t.append(n,e)}return true},deleteProperty:function(e,t){if(typeof t==="string"){e.delete(t)}return true},ownKeys:function(e){return Reflect.ownKeys(Object.fromEntries(e))},getOwnPropertyDescriptor:function(e,t){return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e),t)}})}function he(t,n,r,o,i,k){let s=null;let l=null;i=i!=null?i:{};if(i.returnPromise&&typeof Promise!=="undefined"){var e=new Promise(function(e,t){s=e;l=t})}if(r==null){r=te().body}const M=i.handler||Vn;const F=i.select||null;if(!se(r)){re(s);return e}const c=i.targetOverride||ce(Ee(r));if(c==null||c==ve){fe(r,"htmx:targetError",{target:ne(r,"hx-target")});re(l);return e}let u=oe(r);const f=u.lastButtonClicked;if(f){const A=ee(f,"formaction");if(A!=null){n=A}const L=ee(f,"formmethod");if(L!=null){if(de.includes(L.toLowerCase())){t=L}else{re(s);return e}}}const a=ne(r,"hx-confirm");if(k===undefined){const K=function(e){return he(t,n,r,o,i,!!e)};const G={target:c,elt:r,path:n,verb:t,triggeringEvent:o,etc:i,issueRequest:K,question:a};if(ae(r,"htmx:confirm",G)===false){re(s);return e}}let h=r;let d=ne(r,"hx-sync");let p=null;let B=false;if(d){const N=d.split(":");const I=N[0].trim();if(I==="this"){h=Se(r,"hx-sync")}else{h=ce(ue(r,I))}d=(N[1]||"drop").trim();u=oe(h);if(d==="drop"&&u.xhr&&u.abortable!==true){re(s);return e}else if(d==="abort"){if(u.xhr){re(s);return e}else{B=true}}else if(d==="replace"){ae(h,"htmx:abort")}else if(d.indexOf("queue")===0){const W=d.split(" ");p=(W[1]||"last").trim()}}if(u.xhr){if(u.abortable){ae(h,"htmx:abort")}else{if(p==null){if(o){const D=oe(o);if(D&&D.triggerSpec&&D.triggerSpec.queue){p=D.triggerSpec.queue}}if(p==null){p="last"}}if(u.queuedRequests==null){u.queuedRequests=[]}if(p==="first"&&u.queuedRequests.length===0){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="all"){u.queuedRequests.push(function(){he(t,n,r,o,i)})}else if(p==="last"){u.queuedRequests=[];u.queuedRequests.push(function(){he(t,n,r,o,i)})}re(s);return e}}const g=new XMLHttpRequest;u.xhr=g;u.abortable=B;const m=function(){u.xhr=null;u.abortable=false;if(u.queuedRequests!=null&&u.queuedRequests.length>0){const e=u.queuedRequests.shift();e()}};const X=ne(r,"hx-prompt");if(X){var y=prompt(X);if(y===null||!ae(r,"htmx:prompt",{prompt:y,target:c})){re(s);m();return e}}if(a&&!k){if(!confirm(a)){re(s);m();return e}}let x=mn(r,c,y);if(t!=="get"&&!vn(r)){x["Content-Type"]="application/x-www-form-urlencoded"}if(i.headers){x=le(x,i.headers)}const U=dn(r,t);let b=U.errors;const V=U.formData;if(i.values){hn(V,Dn(i.values))}const j=Dn(Rn(r,o));const v=hn(V,j);let w=yn(v,r);if(Q.config.getCacheBusterParam&&t==="get"){w.set("org.htmx.cache-buster",ee(c,"id")||"true")}if(n==null||n===""){n=location.href}const S=Cn(r,"hx-request");const $=oe(r).boosted;let E=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;const C={boosted:$,useUrlParams:E,formData:w,parameters:kn(w),unfilteredFormData:v,unfilteredParameters:kn(v),headers:x,elt:r,target:c,verb:t,errors:b,withCredentials:i.credentials||S.credentials||Q.config.withCredentials,timeout:i.timeout||S.timeout||Q.config.timeout,path:n,triggeringEvent:o};if(!ae(r,"htmx:configRequest",C)){re(s);m();return e}n=C.path;t=C.verb;x=C.headers;w=Dn(C.parameters);b=C.errors;E=C.useUrlParams;if(b&&b.length>0){ae(r,"htmx:validation:halted",C);re(s);m();return e}const _=n.split("#");const z=_[0];const O=_[1];let H=n;if(E){H=z;const Z=!w.keys().next().done;if(Z){if(H.indexOf("?")<0){H+="?"}else{H+="&"}H+=gn(w);if(O){H+="#"+O}}}if(!In(r,H,C)){fe(r,"htmx:invalidPath",C);re(l);m();return e}g.open(t.toUpperCase(),H,true);g.overrideMimeType("text/html");g.withCredentials=C.withCredentials;g.timeout=C.timeout;if(S.noHeaders){}else{for(const P in x){if(x.hasOwnProperty(P)){const Y=x[P];qn(g,P,Y)}}}const T={xhr:g,target:c,requestConfig:C,etc:i,boosted:$,select:F,pathInfo:{requestPath:n,finalRequestPath:H,responsePath:null,anchor:O}};g.onload=function(){try{const t=Nn(r);T.pathInfo.responsePath=An(g);M(r,T);if(T.keepIndicators!==true){rn(R,q)}ae(r,"htmx:afterRequest",T);ae(r,"htmx:afterOnLoad",T);if(!se(r)){let e=null;while(t.length>0&&e==null){const n=t.shift();if(se(n)){e=n}}if(e){ae(e,"htmx:afterRequest",T);ae(e,"htmx:afterOnLoad",T)}}re(s)}catch(e){fe(r,"htmx:onLoadError",le({error:e},T));throw e}finally{m()}};g.onerror=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:sendError",T);re(l);m()};g.onabort=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:sendAbort",T);re(l);m()};g.ontimeout=function(){rn(R,q);fe(r,"htmx:afterRequest",T);fe(r,"htmx:timeout",T);re(l);m()};if(!ae(r,"htmx:beforeRequest",T)){re(s);m();return e}var R=tn(r);var q=nn(r);ie(["loadstart","loadend","progress","abort"],function(t){ie([g,g.upload],function(e){e.addEventListener(t,function(e){ae(r,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ae(r,"htmx:beforeSend",T);const J=E?null:wn(g,r,w);g.send(J);return e}function Mn(e,t){const n=t.xhr;let r=null;let o=null;if(T(n,/HX-Push:/i)){r=n.getResponseHeader("HX-Push");o="push"}else if(T(n,/HX-Push-Url:/i)){r=n.getResponseHeader("HX-Push-Url");o="push"}else if(T(n,/HX-Replace-Url:/i)){r=n.getResponseHeader("HX-Replace-Url");o="replace"}if(r){if(r==="false"){return{}}else{return{type:o,path:r}}}const i=t.pathInfo.finalRequestPath;const s=t.pathInfo.responsePath;const l=t.etc.push||ne(e,"hx-push-url");const c=t.etc.replace||ne(e,"hx-replace-url");const u=oe(e).boosted;let f=null;let a=null;if(l){f="push";a=l}else if(c){f="replace";a=c}else if(u){f="push";a=s||i}if(a){if(a==="false"){return{}}if(a==="true"){a=s||i}if(t.pathInfo.anchor&&a.indexOf("#")===-1){a=a+"#"+t.pathInfo.anchor}return{type:f,path:a}}else{return{}}}function Fn(e,t){var n=new RegExp(e.code);return n.test(t.toString(10))}function Bn(e){for(var t=0;t`+`.${t}{opacity:0;visibility: hidden} `+`.${n} .${t}, .${n}.${t}{opacity:1;visibility: visible;transition: opacity 200ms ease-in}`+"")}}function Zn(){const e=te().querySelector('meta[name="htmx-config"]');if(e){return v(e.content)}else{return null}}function Yn(){const e=Zn();if(e){Q.config=le(Q.config,e)}}Gn(function(){Yn();Wn();let e=te().body;Ft(e);const t=te().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){const t=e.detail.elt||e.target;const n=oe(t);if(n&&n.xhr){n.xhr.abort()}});const n=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){en();ie(t,function(e){ae(e,"htmx:restored",{document:te(),triggerEvent:ae})})}else{if(n){n(e)}}};b().setTimeout(function(){ae(e,"htmx:load",{});e=null},0)});return Q}(); \ No newline at end of file +var htmx = (function () { + "use strict"; + const Q = { + onLoad: null, + process: null, + on: null, + off: null, + trigger: null, + ajax: null, + find: null, + findAll: null, + closest: null, + values: function (e, t) { + const n = dn(e, t || "post"); + return n.values; + }, + remove: null, + addClass: null, + removeClass: null, + toggleClass: null, + takeClass: null, + swap: null, + defineExtension: null, + removeExtension: null, + logAll: null, + logNone: null, + logger: null, + config: { + historyEnabled: true, + historyCacheSize: 10, + refreshOnHistoryMiss: false, + defaultSwapStyle: "innerHTML", + defaultSwapDelay: 0, + defaultSettleDelay: 20, + includeIndicatorStyles: true, + indicatorClass: "htmx-indicator", + requestClass: "htmx-request", + addedClass: "htmx-added", + settlingClass: "htmx-settling", + swappingClass: "htmx-swapping", + allowEval: true, + allowScriptTags: true, + inlineScriptNonce: "", + inlineStyleNonce: "", + attributesToSettle: ["class", "style", "width", "height"], + withCredentials: false, + timeout: 0, + wsReconnectDelay: "full-jitter", + wsBinaryType: "blob", + disableSelector: "[hx-disable], [data-hx-disable]", + scrollBehavior: "instant", + defaultFocusScroll: false, + getCacheBusterParam: false, + globalViewTransitions: false, + methodsThatUseUrlParams: ["get", "delete"], + selfRequestsOnly: true, + ignoreTitle: false, + scrollIntoViewOnBoost: true, + triggerSpecsCache: null, + disableInheritance: false, + responseHandling: [ + { code: "204", swap: false }, + { code: "[23]..", swap: true }, + { code: "[45]..", swap: false, error: true }, + ], + allowNestedOobSwaps: true, + historyRestoreAsHxRequest: true, + reportValidityOfForms: false, + }, + parseInterval: null, + location: location, + _: null, + version: "2.0.8", + }; + Q.onLoad = V; + Q.process = Ft; + Q.on = xe; + Q.off = be; + Q.trigger = ae; + Q.ajax = Ln; + Q.find = f; + Q.findAll = x; + Q.closest = g; + Q.remove = _; + Q.addClass = K; + Q.removeClass = G; + Q.toggleClass = W; + Q.takeClass = Z; + Q.swap = ze; + Q.defineExtension = _n; + Q.removeExtension = zn; + Q.logAll = j; + Q.logNone = $; + Q.parseInterval = d; + Q._ = e; + const n = { + addTriggerHandler: St, + bodyContains: se, + canAccessLocalStorage: X, + findThisElement: Se, + filterValues: yn, + swap: ze, + hasAttribute: s, + getAttributeValue: a, + getClosestAttributeValue: ne, + getClosestMatch: q, + getExpressionVars: Rn, + getHeaders: mn, + getInputValues: dn, + getInternalData: oe, + getSwapSpecification: bn, + getTriggerSpecs: st, + getTarget: Ee, + makeFragment: D, + mergeObjects: le, + makeSettleInfo: Sn, + oobSwap: Te, + querySelectorExt: ue, + settleImmediately: Yt, + shouldCancel: ht, + triggerEvent: ae, + triggerErrorEvent: fe, + withExtensions: Vt, + }; + const de = ["get", "post", "put", "delete", "patch"]; + const R = de + .map(function (e) { + return "[hx-" + e + "], [data-hx-" + e + "]"; + }) + .join(", "); + function d(e) { + if (e == undefined) { + return undefined; + } + let t = NaN; + if (e.slice(-2) == "ms") { + t = parseFloat(e.slice(0, -2)); + } else if (e.slice(-1) == "s") { + t = parseFloat(e.slice(0, -1)) * 1e3; + } else if (e.slice(-1) == "m") { + t = parseFloat(e.slice(0, -1)) * 1e3 * 60; + } else { + t = parseFloat(e); + } + return isNaN(t) ? undefined : t; + } + function ee(e, t) { + return e instanceof Element && e.getAttribute(t); + } + function s(e, t) { + return ( + !!e.hasAttribute && (e.hasAttribute(t) || e.hasAttribute("data-" + t)) + ); + } + function a(e, t) { + return ee(e, t) || ee(e, "data-" + t); + } + function u(e) { + const t = e.parentElement; + if (!t && e.parentNode instanceof ShadowRoot) return e.parentNode; + return t; + } + function te() { + return document; + } + function y(e, t) { + return e.getRootNode ? e.getRootNode({ composed: t }) : te(); + } + function q(e, t) { + while (e && !t(e)) { + e = u(e); + } + return e || null; + } + function o(e, t, n) { + const r = a(t, n); + const o = a(t, "hx-disinherit"); + var i = a(t, "hx-inherit"); + if (e !== t) { + if (Q.config.disableInheritance) { + if (i && (i === "*" || i.split(" ").indexOf(n) >= 0)) { + return r; + } else { + return null; + } + } + if (o && (o === "*" || o.split(" ").indexOf(n) >= 0)) { + return "unset"; + } + } + return r; + } + function ne(t, n) { + let r = null; + q(t, function (e) { + return !!(r = o(t, ce(e), n)); + }); + if (r !== "unset") { + return r; + } + } + function h(e, t) { + return e instanceof Element && e.matches(t); + } + function A(e) { + const t = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; + const n = t.exec(e); + if (n) { + return n[1].toLowerCase(); + } else { + return ""; + } + } + function L(e) { + if ("parseHTMLUnsafe" in Document) { + return Document.parseHTMLUnsafe(e); + } + const t = new DOMParser(); + return t.parseFromString(e, "text/html"); + } + function N(e, t) { + while (t.childNodes.length > 0) { + e.append(t.childNodes[0]); + } + } + function r(e) { + const t = te().createElement("script"); + ie(e.attributes, function (e) { + t.setAttribute(e.name, e.value); + }); + t.textContent = e.textContent; + t.async = false; + if (Q.config.inlineScriptNonce) { + t.nonce = Q.config.inlineScriptNonce; + } + return t; + } + function i(e) { + return ( + e.matches("script") && + (e.type === "text/javascript" || e.type === "module" || e.type === "") + ); + } + function I(e) { + Array.from(e.querySelectorAll("script")).forEach((e) => { + if (i(e)) { + const t = r(e); + const n = e.parentNode; + try { + n.insertBefore(t, e); + } catch (e) { + H(e); + } finally { + e.remove(); + } + } + }); + } + function D(e) { + const t = e.replace(/]*)?>[\s\S]*?<\/head>/i, ""); + const n = A(t); + let r; + if (n === "html") { + r = new DocumentFragment(); + const i = L(e); + N(r, i.body); + r.title = i.title; + } else if (n === "body") { + r = new DocumentFragment(); + const i = L(t); + N(r, i.body); + r.title = i.title; + } else { + const i = L( + '", + ); + r = i.querySelector("template").content; + r.title = i.title; + var o = r.querySelector("title"); + if (o && o.parentNode === r) { + o.remove(); + r.title = o.innerText; + } + } + if (r) { + if (Q.config.allowScriptTags) { + I(r); + } else { + r.querySelectorAll("script").forEach((e) => e.remove()); + } + } + return r; + } + function re(e) { + if (e) { + e(); + } + } + function t(e, t) { + return Object.prototype.toString.call(e) === "[object " + t + "]"; + } + function P(e) { + return typeof e === "function"; + } + function k(e) { + return t(e, "Object"); + } + function oe(e) { + const t = "htmx-internal-data"; + let n = e[t]; + if (!n) { + n = e[t] = {}; + } + return n; + } + function M(t) { + const n = []; + if (t) { + for (let e = 0; e < t.length; e++) { + n.push(t[e]); + } + } + return n; + } + function ie(t, n) { + if (t) { + for (let e = 0; e < t.length; e++) { + n(t[e]); + } + } + } + function F(e) { + const t = e.getBoundingClientRect(); + const n = t.top; + const r = t.bottom; + return n < window.innerHeight && r >= 0; + } + function se(e) { + return e.getRootNode({ composed: true }) === document; + } + function B(e) { + return e.trim().split(/\s+/); + } + function le(e, t) { + for (const n in t) { + if (t.hasOwnProperty(n)) { + e[n] = t[n]; + } + } + return e; + } + function v(e) { + try { + return JSON.parse(e); + } catch (e) { + H(e); + return null; + } + } + function X() { + const e = "htmx:sessionStorageTest"; + try { + sessionStorage.setItem(e, e); + sessionStorage.removeItem(e); + return true; + } catch (e) { + return false; + } + } + function U(e) { + const t = new URL(e, "http://x"); + if (t) { + e = t.pathname + t.search; + } + if (e != "/") { + e = e.replace(/\/+$/, ""); + } + return e; + } + function e(e) { + return On(te().body, function () { + return eval(e); + }); + } + function V(t) { + const e = Q.on("htmx:load", function (e) { + t(e.detail.elt); + }); + return e; + } + function j() { + Q.logger = function (e, t, n) { + if (console) { + console.log(t, e, n); + } + }; + } + function $() { + Q.logger = null; + } + function f(e, t) { + if (typeof e !== "string") { + return e.querySelector(t); + } else { + return f(te(), e); + } + } + function x(e, t) { + if (typeof e !== "string") { + return e.querySelectorAll(t); + } else { + return x(te(), e); + } + } + function b() { + return window; + } + function _(e, t) { + e = w(e); + if (t) { + b().setTimeout(function () { + _(e); + e = null; + }, t); + } else { + u(e).removeChild(e); + } + } + function ce(e) { + return e instanceof Element ? e : null; + } + function z(e) { + return e instanceof HTMLElement ? e : null; + } + function J(e) { + return typeof e === "string" ? e : null; + } + function p(e) { + return e instanceof Element || + e instanceof Document || + e instanceof DocumentFragment + ? e + : null; + } + function K(e, t, n) { + e = ce(w(e)); + if (!e) { + return; + } + if (n) { + b().setTimeout(function () { + K(e, t); + e = null; + }, n); + } else { + e.classList && e.classList.add(t); + } + } + function G(e, t, n) { + let r = ce(w(e)); + if (!r) { + return; + } + if (n) { + b().setTimeout(function () { + G(r, t); + r = null; + }, n); + } else { + if (r.classList) { + r.classList.remove(t); + if (r.classList.length === 0) { + r.removeAttribute("class"); + } + } + } + } + function W(e, t) { + e = w(e); + e.classList.toggle(t); + } + function Z(e, t) { + e = w(e); + ie(e.parentElement.children, function (e) { + G(e, t); + }); + K(ce(e), t); + } + function g(e, t) { + e = ce(w(e)); + if (e) { + return e.closest(t); + } + return null; + } + function l(e, t) { + return e.substring(0, t.length) === t; + } + function Y(e, t) { + return e.substring(e.length - t.length) === t; + } + function pe(e) { + const t = e.trim(); + if (l(t, "<") && Y(t, "/>")) { + return t.substring(1, t.length - 2); + } else { + return t; + } + } + function m(t, r, n) { + if (r.indexOf("global ") === 0) { + return m(t, r.slice(7), true); + } + t = w(t); + const o = []; + { + let t = 0; + let n = 0; + for (let e = 0; e < r.length; e++) { + const l = r[e]; + if (l === "," && t === 0) { + o.push(r.substring(n, e)); + n = e + 1; + continue; + } + if (l === "<") { + t++; + } else if (l === "/" && e < r.length - 1 && r[e + 1] === ">") { + t--; + } + } + if (n < r.length) { + o.push(r.substring(n)); + } + } + const i = []; + const s = []; + while (o.length > 0) { + const r = pe(o.shift()); + let e; + if (r.indexOf("closest ") === 0) { + e = g(ce(t), pe(r.slice(8))); + } else if (r.indexOf("find ") === 0) { + e = f(p(t), pe(r.slice(5))); + } else if (r === "next" || r === "nextElementSibling") { + e = ce(t).nextElementSibling; + } else if (r.indexOf("next ") === 0) { + e = ge(t, pe(r.slice(5)), !!n); + } else if (r === "previous" || r === "previousElementSibling") { + e = ce(t).previousElementSibling; + } else if (r.indexOf("previous ") === 0) { + e = me(t, pe(r.slice(9)), !!n); + } else if (r === "document") { + e = document; + } else if (r === "window") { + e = window; + } else if (r === "body") { + e = document.body; + } else if (r === "root") { + e = y(t, !!n); + } else if (r === "host") { + e = t.getRootNode().host; + } else { + s.push(r); + } + if (e) { + i.push(e); + } + } + if (s.length > 0) { + const e = s.join(","); + const c = p(y(t, !!n)); + i.push(...M(c.querySelectorAll(e))); + } + return i; + } + var ge = function (t, e, n) { + const r = p(y(t, n)).querySelectorAll(e); + for (let e = 0; e < r.length; e++) { + const o = r[e]; + if (o.compareDocumentPosition(t) === Node.DOCUMENT_POSITION_PRECEDING) { + return o; + } + } + }; + var me = function (t, e, n) { + const r = p(y(t, n)).querySelectorAll(e); + for (let e = r.length - 1; e >= 0; e--) { + const o = r[e]; + if (o.compareDocumentPosition(t) === Node.DOCUMENT_POSITION_FOLLOWING) { + return o; + } + } + }; + function ue(e, t) { + if (typeof e !== "string") { + return m(e, t)[0]; + } else { + return m(te().body, e)[0]; + } + } + function w(e, t) { + if (typeof e === "string") { + return f(p(t) || document, e); + } else { + return e; + } + } + function ye(e, t, n, r) { + if (P(t)) { + return { target: te().body, event: J(e), listener: t, options: n }; + } else { + return { target: w(e), event: J(t), listener: n, options: r }; + } + } + function xe(t, n, r, o) { + Gn(function () { + const e = ye(t, n, r, o); + e.target.addEventListener(e.event, e.listener, e.options); + }); + const e = P(n); + return e ? n : r; + } + function be(t, n, r) { + Gn(function () { + const e = ye(t, n, r); + e.target.removeEventListener(e.event, e.listener); + }); + return P(n) ? n : r; + } + const ve = te().createElement("output"); + function we(t, n) { + const e = ne(t, n); + if (e) { + if (e === "this") { + return [Se(t, n)]; + } else { + const r = m(t, e); + const o = /(^|,)(\s*)inherit(\s*)($|,)/.test(e); + if (o) { + const i = ce( + q(t, function (e) { + return e !== t && s(ce(e), n); + }), + ); + if (i) { + r.push(...we(i, n)); + } + } + if (r.length === 0) { + H('The selector "' + e + '" on ' + n + " returned no matches!"); + return [ve]; + } else { + return r; + } + } + } + } + function Se(e, t) { + return ce( + q(e, function (e) { + return a(ce(e), t) != null; + }), + ); + } + function Ee(e) { + const t = ne(e, "hx-target"); + if (t) { + if (t === "this") { + return Se(e, "hx-target"); + } else { + return ue(e, t); + } + } else { + const n = oe(e); + if (n.boosted) { + return te().body; + } else { + return e; + } + } + } + function Ce(e) { + return Q.config.attributesToSettle.includes(e); + } + function Oe(t, n) { + ie(Array.from(t.attributes), function (e) { + if (!n.hasAttribute(e.name) && Ce(e.name)) { + t.removeAttribute(e.name); + } + }); + ie(n.attributes, function (e) { + if (Ce(e.name)) { + t.setAttribute(e.name, e.value); + } + }); + } + function He(t, e) { + const n = Jn(e); + for (let e = 0; e < n.length; e++) { + const r = n[e]; + try { + if (r.isInlineSwap(t)) { + return true; + } + } catch (e) { + H(e); + } + } + return t === "outerHTML"; + } + function Te(e, o, i, t) { + t = t || te(); + let n = "#" + CSS.escape(ee(o, "id")); + let s = "outerHTML"; + if (e === "true") { + } else if (e.indexOf(":") > 0) { + s = e.substring(0, e.indexOf(":")); + n = e.substring(e.indexOf(":") + 1); + } else { + s = e; + } + o.removeAttribute("hx-swap-oob"); + o.removeAttribute("data-hx-swap-oob"); + const r = m(t, n, false); + if (r.length) { + ie(r, function (e) { + let t; + const n = o.cloneNode(true); + t = te().createDocumentFragment(); + t.appendChild(n); + if (!He(s, e)) { + t = p(n); + } + const r = { shouldSwap: true, target: e, fragment: t }; + if (!ae(e, "htmx:oobBeforeSwap", r)) return; + e = r.target; + if (r.shouldSwap) { + qe(t); + $e(s, e, e, t, i); + Re(); + } + ie(i.elts, function (e) { + ae(e, "htmx:oobAfterSwap", r); + }); + }); + o.parentNode.removeChild(o); + } else { + o.parentNode.removeChild(o); + fe(te().body, "htmx:oobErrorNoTarget", { content: o }); + } + return e; + } + function Re() { + const e = f("#--htmx-preserve-pantry--"); + if (e) { + for (const t of [...e.children]) { + const n = f("#" + t.id); + n.parentNode.moveBefore(t, n); + n.remove(); + } + e.remove(); + } + } + function qe(e) { + ie(x(e, "[hx-preserve], [data-hx-preserve]"), function (e) { + const t = a(e, "id"); + const n = te().getElementById(t); + if (n != null) { + if (e.moveBefore) { + let e = f("#--htmx-preserve-pantry--"); + if (e == null) { + te().body.insertAdjacentHTML( + "afterend", + "
", + ); + e = f("#--htmx-preserve-pantry--"); + } + e.moveBefore(n, null); + } else { + e.parentNode.replaceChild(n, e); + } + } + }); + } + function Ae(l, e, c) { + ie(e.querySelectorAll("[id]"), function (t) { + const n = ee(t, "id"); + if (n && n.length > 0) { + const r = n.replace("'", "\\'"); + const o = t.tagName.replace(":", "\\:"); + const e = p(l); + const i = e && e.querySelector(o + "[id='" + r + "']"); + if (i && i !== e) { + const s = t.cloneNode(); + Oe(t, i); + c.tasks.push(function () { + Oe(t, s); + }); + } + } + }); + } + function Le(e) { + return function () { + G(e, Q.config.addedClass); + Ft(ce(e)); + Ne(p(e)); + ae(e, "htmx:load"); + }; + } + function Ne(e) { + const t = "[autofocus]"; + const n = z(h(e, t) ? e : e.querySelector(t)); + if (n != null) { + n.focus(); + } + } + function c(e, t, n, r) { + Ae(e, n, r); + while (n.childNodes.length > 0) { + const o = n.firstChild; + K(ce(o), Q.config.addedClass); + e.insertBefore(o, t); + if (o.nodeType !== Node.TEXT_NODE && o.nodeType !== Node.COMMENT_NODE) { + r.tasks.push(Le(o)); + } + } + } + function Ie(e, t) { + let n = 0; + while (n < e.length) { + t = ((t << 5) - t + e.charCodeAt(n++)) | 0; + } + return t; + } + function De(t) { + let n = 0; + for (let e = 0; e < t.attributes.length; e++) { + const r = t.attributes[e]; + if (r.value) { + n = Ie(r.name, n); + n = Ie(r.value, n); + } + } + return n; + } + function Pe(t) { + const n = oe(t); + if (n.onHandlers) { + for (let e = 0; e < n.onHandlers.length; e++) { + const r = n.onHandlers[e]; + be(t, r.event, r.listener); + } + delete n.onHandlers; + } + } + function ke(e) { + const t = oe(e); + if (t.timeout) { + clearTimeout(t.timeout); + } + if (t.listenerInfos) { + ie(t.listenerInfos, function (e) { + if (e.on) { + be(e.on, e.trigger, e.listener); + } + }); + } + Pe(e); + ie(Object.keys(t), function (e) { + if (e !== "firstInitCompleted") delete t[e]; + }); + } + function S(e) { + ae(e, "htmx:beforeCleanupElement"); + ke(e); + ie(e.children, function (e) { + S(e); + }); + } + function Me(t, e, n) { + if (t.tagName === "BODY") { + return je(t, e, n); + } + let r; + const o = t.previousSibling; + const i = u(t); + if (!i) { + return; + } + c(i, t, e, n); + if (o == null) { + r = i.firstChild; + } else { + r = o.nextSibling; + } + n.elts = n.elts.filter(function (e) { + return e !== t; + }); + while (r && r !== t) { + if (r instanceof Element) { + n.elts.push(r); + } + r = r.nextSibling; + } + S(t); + t.remove(); + } + function Fe(e, t, n) { + return c(e, e.firstChild, t, n); + } + function Be(e, t, n) { + return c(u(e), e, t, n); + } + function Xe(e, t, n) { + return c(e, null, t, n); + } + function Ue(e, t, n) { + return c(u(e), e.nextSibling, t, n); + } + function Ve(e) { + S(e); + const t = u(e); + if (t) { + return t.removeChild(e); + } + } + function je(e, t, n) { + const r = e.firstChild; + c(e, r, t, n); + if (r) { + while (r.nextSibling) { + S(r.nextSibling); + e.removeChild(r.nextSibling); + } + S(r); + e.removeChild(r); + } + } + function $e(t, e, n, r, o) { + switch (t) { + case "none": + return; + case "outerHTML": + Me(n, r, o); + return; + case "afterbegin": + Fe(n, r, o); + return; + case "beforebegin": + Be(n, r, o); + return; + case "beforeend": + Xe(n, r, o); + return; + case "afterend": + Ue(n, r, o); + return; + case "delete": + Ve(n); + return; + default: + var i = Jn(e); + for (let e = 0; e < i.length; e++) { + const s = i[e]; + try { + const l = s.handleSwap(t, n, r, o); + if (l) { + if (Array.isArray(l)) { + for (let e = 0; e < l.length; e++) { + const c = l[e]; + if ( + c.nodeType !== Node.TEXT_NODE && + c.nodeType !== Node.COMMENT_NODE + ) { + o.tasks.push(Le(c)); + } + } + } + return; + } + } catch (e) { + H(e); + } + } + if (t === "innerHTML") { + je(n, r, o); + } else { + $e(Q.config.defaultSwapStyle, e, n, r, o); + } + } + } + function _e(e, n, r) { + var t = x(e, "[hx-swap-oob], [data-hx-swap-oob]"); + ie(t, function (e) { + if (Q.config.allowNestedOobSwaps || e.parentElement === null) { + const t = a(e, "hx-swap-oob"); + if (t != null) { + Te(t, e, n, r); + } + } else { + e.removeAttribute("hx-swap-oob"); + e.removeAttribute("data-hx-swap-oob"); + } + }); + return t.length > 0; + } + function ze(h, d, p, g) { + if (!g) { + g = {}; + } + let m = null; + let n = null; + let e = function () { + re(g.beforeSwapCallback); + h = w(h); + const r = g.contextElement ? y(g.contextElement, false) : te(); + const e = document.activeElement; + let t = {}; + t = { + elt: e, + start: e ? e.selectionStart : null, + end: e ? e.selectionEnd : null, + }; + const o = Sn(h); + if (p.swapStyle === "textContent") { + h.textContent = d; + } else { + let n = D(d); + o.title = g.title || n.title; + if (g.historyRequest) { + n = n.querySelector("[hx-history-elt],[data-hx-history-elt]") || n; + } + if (g.selectOOB) { + const i = g.selectOOB.split(","); + for (let t = 0; t < i.length; t++) { + const s = i[t].split(":", 2); + let e = s[0].trim(); + if (e.indexOf("#") === 0) { + e = e.substring(1); + } + const l = s[1] || "true"; + const c = n.querySelector("#" + e); + if (c) { + Te(l, c, o, r); + } + } + } + _e(n, o, r); + ie(x(n, "template"), function (e) { + if (e.content && _e(e.content, o, r)) { + e.remove(); + } + }); + if (g.select) { + const u = te().createDocumentFragment(); + ie(n.querySelectorAll(g.select), function (e) { + u.appendChild(e); + }); + n = u; + } + qe(n); + $e(p.swapStyle, g.contextElement, h, n, o); + Re(); + } + if (t.elt && !se(t.elt) && ee(t.elt, "id")) { + const f = document.getElementById(ee(t.elt, "id")); + const a = { + preventScroll: + p.focusScroll !== undefined + ? !p.focusScroll + : !Q.config.defaultFocusScroll, + }; + if (f) { + if (t.start && f.setSelectionRange) { + try { + f.setSelectionRange(t.start, t.end); + } catch (e) {} + } + f.focus(a); + } + } + h.classList.remove(Q.config.swappingClass); + ie(o.elts, function (e) { + if (e.classList) { + e.classList.add(Q.config.settlingClass); + } + ae(e, "htmx:afterSwap", g.eventInfo); + }); + re(g.afterSwapCallback); + if (!p.ignoreTitle) { + Xn(o.title); + } + const n = function () { + ie(o.tasks, function (e) { + e.call(); + }); + ie(o.elts, function (e) { + if (e.classList) { + e.classList.remove(Q.config.settlingClass); + } + ae(e, "htmx:afterSettle", g.eventInfo); + }); + if (g.anchor) { + const e = ce(w("#" + g.anchor)); + if (e) { + e.scrollIntoView({ block: "start", behavior: "auto" }); + } + } + En(o.elts, p); + re(g.afterSettleCallback); + re(m); + }; + if (p.settleDelay > 0) { + b().setTimeout(n, p.settleDelay); + } else { + n(); + } + }; + let t = Q.config.globalViewTransitions; + if (p.hasOwnProperty("transition")) { + t = p.transition; + } + const r = g.contextElement || te(); + if ( + t && + ae(r, "htmx:beforeTransition", g.eventInfo) && + typeof Promise !== "undefined" && + document.startViewTransition + ) { + const o = new Promise(function (e, t) { + m = e; + n = t; + }); + const i = e; + e = function () { + document.startViewTransition(function () { + i(); + return o; + }); + }; + } + try { + if (p?.swapDelay && p.swapDelay > 0) { + b().setTimeout(e, p.swapDelay); + } else { + e(); + } + } catch (e) { + fe(r, "htmx:swapError", g.eventInfo); + re(n); + throw e; + } + } + function Je(e, t, n) { + const r = e.getResponseHeader(t); + if (r.indexOf("{") === 0) { + const o = v(r); + for (const i in o) { + if (o.hasOwnProperty(i)) { + let e = o[i]; + if (k(e)) { + n = e.target !== undefined ? e.target : n; + } else { + e = { value: e }; + } + ae(n, i, e); + } + } + } else { + const s = r.split(","); + for (let e = 0; e < s.length; e++) { + ae(n, s[e].trim(), []); + } + } + } + const Ke = /\s/; + const E = /[\s,]/; + const Ge = /[_$a-zA-Z]/; + const We = /[_$a-zA-Z0-9]/; + const Ze = ['"', "'", "/"]; + const C = /[^\s]/; + const Ye = /[{(]/; + const Qe = /[})]/; + function et(e) { + const t = []; + let n = 0; + while (n < e.length) { + if (Ge.exec(e.charAt(n))) { + var r = n; + while (We.exec(e.charAt(n + 1))) { + n++; + } + t.push(e.substring(r, n + 1)); + } else if (Ze.indexOf(e.charAt(n)) !== -1) { + const o = e.charAt(n); + var r = n; + n++; + while (n < e.length && e.charAt(n) !== o) { + if (e.charAt(n) === "\\") { + n++; + } + n++; + } + t.push(e.substring(r, n + 1)); + } else { + const i = e.charAt(n); + t.push(i); + } + n++; + } + return t; + } + function tt(e, t, n) { + return ( + Ge.exec(e.charAt(0)) && + e !== "true" && + e !== "false" && + e !== "this" && + e !== n && + t !== "." + ); + } + function nt(r, o, i) { + if (o[0] === "[") { + o.shift(); + let e = 1; + let t = " return (function(" + i + "){ return ("; + let n = null; + while (o.length > 0) { + const s = o[0]; + if (s === "]") { + e--; + if (e === 0) { + if (n === null) { + t = t + "true"; + } + o.shift(); + t += ")})"; + try { + const l = On( + r, + function () { + return Function(t)(); + }, + function () { + return true; + }, + ); + l.source = t; + return l; + } catch (e) { + fe(te().body, "htmx:syntax:error", { error: e, source: t }); + return null; + } + } + } else if (s === "[") { + e++; + } + if (tt(s, n, i)) { + t += + "((" + + i + + "." + + s + + ") ? (" + + i + + "." + + s + + ") : (window." + + s + + "))"; + } else { + t = t + s; + } + n = o.shift(); + } + } + } + function O(e, t) { + let n = ""; + while (e.length > 0 && !t.test(e[0])) { + n += e.shift(); + } + return n; + } + function rt(e) { + let t; + if (e.length > 0 && Ye.test(e[0])) { + e.shift(); + t = O(e, Qe).trim(); + e.shift(); + } else { + t = O(e, E); + } + return t; + } + const ot = "input, textarea, select"; + function it(e, t, n) { + const r = []; + const o = et(t); + do { + O(o, C); + const l = o.length; + const c = O(o, /[,\[\s]/); + if (c !== "") { + if (c === "every") { + const u = { trigger: "every" }; + O(o, C); + u.pollInterval = d(O(o, /[,\[\s]/)); + O(o, C); + var i = nt(e, o, "event"); + if (i) { + u.eventFilter = i; + } + r.push(u); + } else { + const f = { trigger: c }; + var i = nt(e, o, "event"); + if (i) { + f.eventFilter = i; + } + O(o, C); + while (o.length > 0 && o[0] !== ",") { + const a = o.shift(); + if (a === "changed") { + f.changed = true; + } else if (a === "once") { + f.once = true; + } else if (a === "consume") { + f.consume = true; + } else if (a === "delay" && o[0] === ":") { + o.shift(); + f.delay = d(O(o, E)); + } else if (a === "from" && o[0] === ":") { + o.shift(); + if (Ye.test(o[0])) { + var s = rt(o); + } else { + var s = O(o, E); + if ( + s === "closest" || + s === "find" || + s === "next" || + s === "previous" + ) { + o.shift(); + const h = rt(o); + if (h.length > 0) { + s += " " + h; + } + } + } + f.from = s; + } else if (a === "target" && o[0] === ":") { + o.shift(); + f.target = rt(o); + } else if (a === "throttle" && o[0] === ":") { + o.shift(); + f.throttle = d(O(o, E)); + } else if (a === "queue" && o[0] === ":") { + o.shift(); + f.queue = O(o, E); + } else if (a === "root" && o[0] === ":") { + o.shift(); + f[a] = rt(o); + } else if (a === "threshold" && o[0] === ":") { + o.shift(); + f[a] = O(o, E); + } else { + fe(e, "htmx:syntax:error", { token: o.shift() }); + } + O(o, C); + } + r.push(f); + } + } + if (o.length === l) { + fe(e, "htmx:syntax:error", { token: o.shift() }); + } + O(o, C); + } while (o[0] === "," && o.shift()); + if (n) { + n[t] = r; + } + return r; + } + function st(e) { + const t = a(e, "hx-trigger"); + let n = []; + if (t) { + const r = Q.config.triggerSpecsCache; + n = (r && r[t]) || it(e, t, r); + } + if (n.length > 0) { + return n; + } else if (h(e, "form")) { + return [{ trigger: "submit" }]; + } else if (h(e, 'input[type="button"], input[type="submit"]')) { + return [{ trigger: "click" }]; + } else if (h(e, ot)) { + return [{ trigger: "change" }]; + } else { + return [{ trigger: "click" }]; + } + } + function lt(e) { + oe(e).cancelled = true; + } + function ct(e, t, n) { + const r = oe(e); + r.timeout = b().setTimeout(function () { + if (se(e) && r.cancelled !== true) { + if (!pt(n, e, Xt("hx:poll:trigger", { triggerSpec: n, target: e }))) { + t(e); + } + ct(e, t, n); + } + }, n.pollInterval); + } + function ut(e) { + return ( + location.hostname === e.hostname && + ee(e, "href") && + ee(e, "href").indexOf("#") !== 0 + ); + } + function ft(e) { + return g(e, Q.config.disableSelector); + } + function at(t, n, e) { + if ( + (t instanceof HTMLAnchorElement && + ut(t) && + (t.target === "" || t.target === "_self")) || + (t.tagName === "FORM" && + String(ee(t, "method")).toLowerCase() !== "dialog") + ) { + n.boosted = true; + let r, o; + if (t.tagName === "A") { + r = "get"; + o = ee(t, "href"); + } else { + const i = ee(t, "method"); + r = i ? i.toLowerCase() : "get"; + o = ee(t, "action"); + if (o == null || o === "") { + o = location.href; + } + if (r === "get" && o.includes("?")) { + o = o.replace(/\?[^#]+/, ""); + } + } + e.forEach(function (e) { + gt( + t, + function (e, t) { + const n = ce(e); + if (ft(n)) { + S(n); + return; + } + he(r, o, n, t); + }, + n, + e, + true, + ); + }); + } + } + function ht(e, t) { + if (e.type === "submit" && t.tagName === "FORM") { + return true; + } else if (e.type === "click") { + const n = t.closest('input[type="submit"], button'); + if (n && n.form && n.type === "submit") { + return true; + } + const r = t.closest("a"); + const o = /^#.+/; + if (r && r.href && !o.test(r.getAttribute("href"))) { + return true; + } + } + return false; + } + function dt(e, t) { + return ( + oe(e).boosted && + e instanceof HTMLAnchorElement && + t.type === "click" && + (t.ctrlKey || t.metaKey) + ); + } + function pt(e, t, n) { + const r = e.eventFilter; + if (r) { + try { + return r.call(t, n) !== true; + } catch (e) { + const o = r.source; + fe(te().body, "htmx:eventFilter:error", { error: e, source: o }); + return true; + } + } + return false; + } + function gt(l, c, e, u, f) { + const a = oe(l); + let t; + if (u.from) { + t = m(l, u.from); + } else { + t = [l]; + } + if (u.changed) { + if (!("lastValue" in a)) { + a.lastValue = new WeakMap(); + } + t.forEach(function (e) { + if (!a.lastValue.has(u)) { + a.lastValue.set(u, new WeakMap()); + } + a.lastValue.get(u).set(e, e.value); + }); + } + ie(t, function (i) { + const s = function (e) { + if (!se(l)) { + i.removeEventListener(u.trigger, s); + return; + } + if (dt(l, e)) { + return; + } + if (f || ht(e, i)) { + e.preventDefault(); + } + if (pt(u, l, e)) { + return; + } + const t = oe(e); + t.triggerSpec = u; + if (t.handledFor == null) { + t.handledFor = []; + } + if (t.handledFor.indexOf(l) < 0) { + t.handledFor.push(l); + if (u.consume) { + e.stopPropagation(); + } + if (u.target && e.target) { + if (!h(ce(e.target), u.target)) { + return; + } + } + if (u.once) { + if (a.triggeredOnce) { + return; + } else { + a.triggeredOnce = true; + } + } + if (u.changed) { + const n = e.target; + const r = n.value; + const o = a.lastValue.get(u); + if (o.has(n) && o.get(n) === r) { + return; + } + o.set(n, r); + } + if (a.delayed) { + clearTimeout(a.delayed); + } + if (a.throttle) { + return; + } + if (u.throttle > 0) { + if (!a.throttle) { + ae(l, "htmx:trigger"); + c(l, e); + a.throttle = b().setTimeout(function () { + a.throttle = null; + }, u.throttle); + } + } else if (u.delay > 0) { + a.delayed = b().setTimeout(function () { + ae(l, "htmx:trigger"); + c(l, e); + }, u.delay); + } else { + ae(l, "htmx:trigger"); + c(l, e); + } + } + }; + if (e.listenerInfos == null) { + e.listenerInfos = []; + } + e.listenerInfos.push({ trigger: u.trigger, listener: s, on: i }); + i.addEventListener(u.trigger, s); + }); + } + let mt = false; + let yt = null; + function xt() { + if (!yt) { + yt = function () { + mt = true; + }; + window.addEventListener("scroll", yt); + window.addEventListener("resize", yt); + setInterval(function () { + if (mt) { + mt = false; + ie( + te().querySelectorAll( + "[hx-trigger*='revealed'],[data-hx-trigger*='revealed']", + ), + function (e) { + bt(e); + }, + ); + } + }, 200); + } + } + function bt(e) { + if (!s(e, "data-hx-revealed") && F(e)) { + e.setAttribute("data-hx-revealed", "true"); + const t = oe(e); + if (t.initHash) { + ae(e, "revealed"); + } else { + e.addEventListener( + "htmx:afterProcessNode", + function () { + ae(e, "revealed"); + }, + { once: true }, + ); + } + } + } + function vt(e, t, n, r) { + const o = function () { + if (!n.loaded) { + n.loaded = true; + ae(e, "htmx:trigger"); + t(e); + } + }; + if (r > 0) { + b().setTimeout(o, r); + } else { + o(); + } + } + function wt(t, n, e) { + let i = false; + ie(de, function (r) { + if (s(t, "hx-" + r)) { + const o = a(t, "hx-" + r); + i = true; + n.path = o; + n.verb = r; + e.forEach(function (e) { + St(t, e, n, function (e, t) { + const n = ce(e); + if (ft(n)) { + S(n); + return; + } + he(r, o, n, t); + }); + }); + } + }); + return i; + } + function St(r, e, t, n) { + if (e.trigger === "revealed") { + xt(); + gt(r, n, t, e); + bt(ce(r)); + } else if (e.trigger === "intersect") { + const o = {}; + if (e.root) { + o.root = ue(r, e.root); + } + if (e.threshold) { + o.threshold = parseFloat(e.threshold); + } + const i = new IntersectionObserver(function (t) { + for (let e = 0; e < t.length; e++) { + const n = t[e]; + if (n.isIntersecting) { + ae(r, "intersect"); + break; + } + } + }, o); + i.observe(ce(r)); + gt(ce(r), n, t, e); + } else if (!t.firstInitCompleted && e.trigger === "load") { + if (!pt(e, r, Xt("load", { elt: r }))) { + vt(ce(r), n, t, e.delay); + } + } else if (e.pollInterval > 0) { + t.polling = true; + ct(ce(r), n, e); + } else { + gt(r, n, t, e); + } + } + function Et(e) { + const t = ce(e); + if (!t) { + return false; + } + const n = t.attributes; + for (let e = 0; e < n.length; e++) { + const r = n[e].name; + if ( + l(r, "hx-on:") || + l(r, "data-hx-on:") || + l(r, "hx-on-") || + l(r, "data-hx-on-") + ) { + return true; + } + } + return false; + } + const Ct = new XPathEvaluator().createExpression( + './/*[@*[ starts-with(name(), "hx-on:") or starts-with(name(), "data-hx-on:") or' + + ' starts-with(name(), "hx-on-") or starts-with(name(), "data-hx-on-") ]]', + ); + function Ot(e, t) { + if (Et(e)) { + t.push(ce(e)); + } + const n = Ct.evaluate(e); + let r = null; + while ((r = n.iterateNext())) t.push(ce(r)); + } + function Ht(e) { + const t = []; + if (e instanceof DocumentFragment) { + for (const n of e.childNodes) { + Ot(n, t); + } + } else { + Ot(e, t); + } + return t; + } + function Tt(e) { + if (e.querySelectorAll) { + const n = + ", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]"; + const r = []; + for (const i in jn) { + const s = jn[i]; + if (s.getSelectors) { + var t = s.getSelectors(); + if (t) { + r.push(t); + } + } + } + const o = e.querySelectorAll( + R + + n + + ", form, [type='submit']," + + " [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger]" + + r + .flat() + .map((e) => ", " + e) + .join(""), + ); + return o; + } else { + return []; + } + } + function Rt(e) { + const t = At(e.target); + const n = Nt(e); + if (n) { + n.lastButtonClicked = t; + } + } + function qt(e) { + const t = Nt(e); + if (t) { + t.lastButtonClicked = null; + } + } + function At(e) { + return g(ce(e), "button, input[type='submit']"); + } + function Lt(e) { + return e.form || g(e, "form"); + } + function Nt(e) { + const t = At(e.target); + if (!t) { + return; + } + const n = Lt(t); + if (!n) { + return; + } + return oe(n); + } + function It(e) { + e.addEventListener("click", Rt); + e.addEventListener("focusin", Rt); + e.addEventListener("focusout", qt); + } + function Dt(t, e, n) { + const r = oe(t); + if (!Array.isArray(r.onHandlers)) { + r.onHandlers = []; + } + let o; + const i = function (e) { + On(t, function () { + if (ft(t)) { + return; + } + if (!o) { + o = new Function("event", n); + } + o.call(t, e); + }); + }; + t.addEventListener(e, i); + r.onHandlers.push({ event: e, listener: i }); + } + function Pt(t) { + Pe(t); + for (let e = 0; e < t.attributes.length; e++) { + const n = t.attributes[e].name; + const r = t.attributes[e].value; + if (l(n, "hx-on") || l(n, "data-hx-on")) { + const o = n.indexOf("-on") + 3; + const i = n.slice(o, o + 1); + if (i === "-" || i === ":") { + let e = n.slice(o + 1); + if (l(e, ":")) { + e = "htmx" + e; + } else if (l(e, "-")) { + e = "htmx:" + e.slice(1); + } else if (l(e, "htmx-")) { + e = "htmx:" + e.slice(5); + } + Dt(t, e, r); + } + } + } + } + function kt(t) { + ae(t, "htmx:beforeProcessNode"); + const n = oe(t); + const e = st(t); + const r = wt(t, n, e); + if (!r) { + if (ne(t, "hx-boost") === "true") { + at(t, n, e); + } else if (s(t, "hx-trigger")) { + e.forEach(function (e) { + St(t, e, n, function () {}); + }); + } + } + if (t.tagName === "FORM" || (ee(t, "type") === "submit" && s(t, "form"))) { + It(t); + } + n.firstInitCompleted = true; + ae(t, "htmx:afterProcessNode"); + } + function Mt(e) { + if (!(e instanceof Element)) { + return false; + } + const t = oe(e); + const n = De(e); + if (t.initHash !== n) { + ke(e); + t.initHash = n; + return true; + } + return false; + } + function Ft(e) { + e = w(e); + if (ft(e)) { + S(e); + return; + } + const t = []; + if (Mt(e)) { + t.push(e); + } + ie(Tt(e), function (e) { + if (ft(e)) { + S(e); + return; + } + if (Mt(e)) { + t.push(e); + } + }); + ie(Ht(e), Pt); + ie(t, kt); + } + function Bt(e) { + return e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); + } + function Xt(e, t) { + return new CustomEvent(e, { + bubbles: true, + cancelable: true, + composed: true, + detail: t, + }); + } + function fe(e, t, n) { + ae(e, t, le({ error: t }, n)); + } + function Ut(e) { + return e === "htmx:afterProcessNode"; + } + function Vt(e, t, n) { + ie(Jn(e, [], n), function (e) { + try { + t(e); + } catch (e) { + H(e); + } + }); + } + function H(e) { + console.error(e); + } + function ae(e, t, n) { + e = w(e); + if (n == null) { + n = {}; + } + n.elt = e; + const r = Xt(t, n); + if (Q.logger && !Ut(t)) { + Q.logger(e, t, n); + } + if (n.error) { + H(n.error); + ae(e, "htmx:error", { errorInfo: n }); + } + let o = e.dispatchEvent(r); + const i = Bt(t); + if (o && i !== t) { + const s = Xt(i, r.detail); + o = o && e.dispatchEvent(s); + } + Vt(ce(e), function (e) { + o = o && e.onEvent(t, r) !== false && !r.defaultPrevented; + }); + return o; + } + let jt; + function $t(e) { + jt = e; + if (X()) { + sessionStorage.setItem("htmx-current-path-for-history", e); + } + } + $t(location.pathname + location.search); + function _t() { + const e = te().querySelector("[hx-history-elt],[data-hx-history-elt]"); + return e || te().body; + } + function zt(t, e) { + if (!X()) { + return; + } + const n = Kt(e); + const r = te().title; + const o = window.scrollY; + if (Q.config.historyCacheSize <= 0) { + sessionStorage.removeItem("htmx-history-cache"); + return; + } + t = U(t); + const i = v(sessionStorage.getItem("htmx-history-cache")) || []; + for (let e = 0; e < i.length; e++) { + if (i[e].url === t) { + i.splice(e, 1); + break; + } + } + const s = { url: t, content: n, title: r, scroll: o }; + ae(te().body, "htmx:historyItemCreated", { item: s, cache: i }); + i.push(s); + while (i.length > Q.config.historyCacheSize) { + i.shift(); + } + while (i.length > 0) { + try { + sessionStorage.setItem("htmx-history-cache", JSON.stringify(i)); + break; + } catch (e) { + fe(te().body, "htmx:historyCacheError", { cause: e, cache: i }); + i.shift(); + } + } + } + function Jt(t) { + if (!X()) { + return null; + } + t = U(t); + const n = v(sessionStorage.getItem("htmx-history-cache")) || []; + for (let e = 0; e < n.length; e++) { + if (n[e].url === t) { + return n[e]; + } + } + return null; + } + function Kt(e) { + const t = Q.config.requestClass; + const n = e.cloneNode(true); + ie(x(n, "." + t), function (e) { + G(e, t); + }); + ie(x(n, "[data-disabled-by-htmx]"), function (e) { + e.removeAttribute("disabled"); + }); + return n.innerHTML; + } + function Gt() { + const e = _t(); + let t = jt; + if (X()) { + t = sessionStorage.getItem("htmx-current-path-for-history"); + } + t = t || location.pathname + location.search; + const n = te().querySelector( + '[hx-history="false" i],[data-hx-history="false" i]', + ); + if (!n) { + ae(te().body, "htmx:beforeHistorySave", { path: t, historyElt: e }); + zt(t, e); + } + if (Q.config.historyEnabled) + history.replaceState({ htmx: true }, te().title, location.href); + } + function Wt(e) { + if (Q.config.getCacheBusterParam) { + e = e.replace(/org\.htmx\.cache-buster=[^&]*&?/, ""); + if (Y(e, "&") || Y(e, "?")) { + e = e.slice(0, -1); + } + } + if (Q.config.historyEnabled) { + history.pushState({ htmx: true }, "", e); + } + $t(e); + } + function Zt(e) { + if (Q.config.historyEnabled) history.replaceState({ htmx: true }, "", e); + $t(e); + } + function Yt(e) { + ie(e, function (e) { + e.call(undefined); + }); + } + function Qt(e) { + const t = new XMLHttpRequest(); + const n = { swapStyle: "innerHTML", swapDelay: 0, settleDelay: 0 }; + const r = { path: e, xhr: t, historyElt: _t(), swapSpec: n }; + t.open("GET", e, true); + if (Q.config.historyRestoreAsHxRequest) { + t.setRequestHeader("HX-Request", "true"); + } + t.setRequestHeader("HX-History-Restore-Request", "true"); + t.setRequestHeader("HX-Current-URL", location.href); + t.onload = function () { + if (this.status >= 200 && this.status < 400) { + r.response = this.response; + ae(te().body, "htmx:historyCacheMissLoad", r); + ze(r.historyElt, r.response, n, { + contextElement: r.historyElt, + historyRequest: true, + }); + $t(r.path); + ae(te().body, "htmx:historyRestore", { + path: e, + cacheMiss: true, + serverResponse: r.response, + }); + } else { + fe(te().body, "htmx:historyCacheMissLoadError", r); + } + }; + if (ae(te().body, "htmx:historyCacheMiss", r)) { + t.send(); + } + } + function en(e) { + Gt(); + e = e || location.pathname + location.search; + const t = Jt(e); + if (t) { + const n = { + swapStyle: "innerHTML", + swapDelay: 0, + settleDelay: 0, + scroll: t.scroll, + }; + const r = { path: e, item: t, historyElt: _t(), swapSpec: n }; + if (ae(te().body, "htmx:historyCacheHit", r)) { + ze(r.historyElt, t.content, n, { + contextElement: r.historyElt, + title: t.title, + }); + $t(r.path); + ae(te().body, "htmx:historyRestore", r); + } + } else { + if (Q.config.refreshOnHistoryMiss) { + Q.location.reload(true); + } else { + Qt(e); + } + } + } + function tn(e) { + let t = we(e, "hx-indicator"); + if (t == null) { + t = [e]; + } + ie(t, function (e) { + const t = oe(e); + t.requestCount = (t.requestCount || 0) + 1; + e.classList.add.call(e.classList, Q.config.requestClass); + }); + return t; + } + function nn(e) { + let t = we(e, "hx-disabled-elt"); + if (t == null) { + t = []; + } + ie(t, function (e) { + const t = oe(e); + t.requestCount = (t.requestCount || 0) + 1; + e.setAttribute("disabled", ""); + e.setAttribute("data-disabled-by-htmx", ""); + }); + return t; + } + function rn(e, t) { + ie(e.concat(t), function (e) { + const t = oe(e); + t.requestCount = (t.requestCount || 1) - 1; + }); + ie(e, function (e) { + const t = oe(e); + if (t.requestCount === 0) { + e.classList.remove.call(e.classList, Q.config.requestClass); + } + }); + ie(t, function (e) { + const t = oe(e); + if (t.requestCount === 0) { + e.removeAttribute("disabled"); + e.removeAttribute("data-disabled-by-htmx"); + } + }); + } + function on(t, n) { + for (let e = 0; e < t.length; e++) { + const r = t[e]; + if (r.isSameNode(n)) { + return true; + } + } + return false; + } + function sn(e) { + const t = e; + if ( + t.name === "" || + t.name == null || + t.disabled || + g(t, "fieldset[disabled]") + ) { + return false; + } + if ( + t.type === "button" || + t.type === "submit" || + t.tagName === "image" || + t.tagName === "reset" || + t.tagName === "file" + ) { + return false; + } + if (t.type === "checkbox" || t.type === "radio") { + return t.checked; + } + return true; + } + function ln(t, e, n) { + if (t != null && e != null) { + if (Array.isArray(e)) { + e.forEach(function (e) { + n.append(t, e); + }); + } else { + n.append(t, e); + } + } + } + function cn(t, n, r) { + if (t != null && n != null) { + let e = r.getAll(t); + if (Array.isArray(n)) { + e = e.filter((e) => n.indexOf(e) < 0); + } else { + e = e.filter((e) => e !== n); + } + r.delete(t); + ie(e, (e) => r.append(t, e)); + } + } + function un(e) { + if (e instanceof HTMLSelectElement && e.multiple) { + return M(e.querySelectorAll("option:checked")).map(function (e) { + return e.value; + }); + } + if (e instanceof HTMLInputElement && e.files) { + return M(e.files); + } + return e.value; + } + function fn(t, n, r, e, o) { + if (e == null || on(t, e)) { + return; + } else { + t.push(e); + } + if (sn(e)) { + const i = ee(e, "name"); + ln(i, un(e), n); + if (o) { + an(e, r); + } + } + if (e instanceof HTMLFormElement) { + ie(e.elements, function (e) { + if (t.indexOf(e) >= 0) { + cn(e.name, un(e), n); + } else { + t.push(e); + } + if (o) { + an(e, r); + } + }); + new FormData(e).forEach(function (e, t) { + if (e instanceof File && e.name === "") { + return; + } + ln(t, e, n); + }); + } + } + function an(e, t) { + const n = e; + if (n.willValidate) { + ae(n, "htmx:validation:validate"); + if (!n.checkValidity()) { + if ( + ae(n, "htmx:validation:failed", { + message: n.validationMessage, + validity: n.validity, + }) && + !t.length && + Q.config.reportValidityOfForms + ) { + n.reportValidity(); + } + t.push({ elt: n, message: n.validationMessage, validity: n.validity }); + } + } + } + function hn(n, e) { + for (const t of e.keys()) { + n.delete(t); + } + e.forEach(function (e, t) { + n.append(t, e); + }); + return n; + } + function dn(e, t) { + const n = []; + const r = new FormData(); + const o = new FormData(); + const i = []; + const s = oe(e); + if (s.lastButtonClicked && !se(s.lastButtonClicked)) { + s.lastButtonClicked = null; + } + let l = + (e instanceof HTMLFormElement && e.noValidate !== true) || + a(e, "hx-validate") === "true"; + if (s.lastButtonClicked) { + l = l && s.lastButtonClicked.formNoValidate !== true; + } + if (t !== "get") { + fn(n, o, i, Lt(e), l); + } + fn(n, r, i, e, l); + if ( + s.lastButtonClicked || + e.tagName === "BUTTON" || + (e.tagName === "INPUT" && ee(e, "type") === "submit") + ) { + const u = s.lastButtonClicked || e; + const f = ee(u, "name"); + ln(f, u.value, o); + } + const c = we(e, "hx-include"); + ie(c, function (e) { + fn(n, r, i, ce(e), l); + if (!h(e, "form")) { + ie(p(e).querySelectorAll(ot), function (e) { + fn(n, r, i, e, l); + }); + } + }); + hn(r, o); + return { errors: i, formData: r, values: kn(r) }; + } + function pn(e, t, n) { + if (e !== "") { + e += "&"; + } + if (String(n) === "[object Object]") { + n = JSON.stringify(n); + } + const r = encodeURIComponent(n); + e += encodeURIComponent(t) + "=" + r; + return e; + } + function gn(e) { + e = Dn(e); + let n = ""; + e.forEach(function (e, t) { + n = pn(n, t, e); + }); + return n; + } + function mn(e, t, n) { + const r = { + "HX-Request": "true", + "HX-Trigger": ee(e, "id"), + "HX-Trigger-Name": ee(e, "name"), + "HX-Target": a(t, "id"), + "HX-Current-URL": location.href, + }; + Cn(e, "hx-headers", false, r); + if (n !== undefined) { + r["HX-Prompt"] = n; + } + if (oe(e).boosted) { + r["HX-Boosted"] = "true"; + } + return r; + } + function yn(n, e) { + const t = ne(e, "hx-params"); + if (t) { + if (t === "none") { + return new FormData(); + } else if (t === "*") { + return n; + } else if (t.indexOf("not ") === 0) { + ie(t.slice(4).split(","), function (e) { + e = e.trim(); + n.delete(e); + }); + return n; + } else { + const r = new FormData(); + ie(t.split(","), function (t) { + t = t.trim(); + if (n.has(t)) { + n.getAll(t).forEach(function (e) { + r.append(t, e); + }); + } + }); + return r; + } + } else { + return n; + } + } + function xn(e) { + return !!ee(e, "href") && ee(e, "href").indexOf("#") >= 0; + } + function bn(e, t) { + const n = t || ne(e, "hx-swap"); + const r = { + swapStyle: oe(e).boosted ? "innerHTML" : Q.config.defaultSwapStyle, + swapDelay: Q.config.defaultSwapDelay, + settleDelay: Q.config.defaultSettleDelay, + }; + if (Q.config.scrollIntoViewOnBoost && oe(e).boosted && !xn(e)) { + r.show = "top"; + } + if (n) { + const s = B(n); + if (s.length > 0) { + for (let e = 0; e < s.length; e++) { + const l = s[e]; + if (l.indexOf("swap:") === 0) { + r.swapDelay = d(l.slice(5)); + } else if (l.indexOf("settle:") === 0) { + r.settleDelay = d(l.slice(7)); + } else if (l.indexOf("transition:") === 0) { + r.transition = l.slice(11) === "true"; + } else if (l.indexOf("ignoreTitle:") === 0) { + r.ignoreTitle = l.slice(12) === "true"; + } else if (l.indexOf("scroll:") === 0) { + const c = l.slice(7); + var o = c.split(":"); + const u = o.pop(); + var i = o.length > 0 ? o.join(":") : null; + r.scroll = u; + r.scrollTarget = i; + } else if (l.indexOf("show:") === 0) { + const f = l.slice(5); + var o = f.split(":"); + const a = o.pop(); + var i = o.length > 0 ? o.join(":") : null; + r.show = a; + r.showTarget = i; + } else if (l.indexOf("focus-scroll:") === 0) { + const h = l.slice("focus-scroll:".length); + r.focusScroll = h == "true"; + } else if (e == 0) { + r.swapStyle = l; + } else { + H("Unknown modifier in hx-swap: " + l); + } + } + } + } + return r; + } + function vn(e) { + return ( + ne(e, "hx-encoding") === "multipart/form-data" || + (h(e, "form") && ee(e, "enctype") === "multipart/form-data") + ); + } + function wn(t, n, r) { + let o = null; + Vt(n, function (e) { + if (o == null) { + o = e.encodeParameters(t, r, n); + } + }); + if (o != null) { + return o; + } else { + if (vn(n)) { + return hn(new FormData(), Dn(r)); + } else { + return gn(r); + } + } + } + function Sn(e) { + return { tasks: [], elts: [e] }; + } + function En(e, t) { + const n = e[0]; + const r = e[e.length - 1]; + if (t.scroll) { + var o = null; + if (t.scrollTarget) { + o = ce(ue(n, t.scrollTarget)); + } + if (t.scroll === "top" && (n || o)) { + o = o || n; + o.scrollTop = 0; + } + if (t.scroll === "bottom" && (r || o)) { + o = o || r; + o.scrollTop = o.scrollHeight; + } + if (typeof t.scroll === "number") { + b().setTimeout(function () { + window.scrollTo(0, t.scroll); + }, 0); + } + } + if (t.show) { + var o = null; + if (t.showTarget) { + let e = t.showTarget; + if (t.showTarget === "window") { + e = "body"; + } + o = ce(ue(n, e)); + } + if (t.show === "top" && (n || o)) { + o = o || n; + o.scrollIntoView({ block: "start", behavior: Q.config.scrollBehavior }); + } + if (t.show === "bottom" && (r || o)) { + o = o || r; + o.scrollIntoView({ block: "end", behavior: Q.config.scrollBehavior }); + } + } + } + function Cn(r, e, o, i, s) { + if (i == null) { + i = {}; + } + if (r == null) { + return i; + } + const l = a(r, e); + if (l) { + let e = l.trim(); + let t = o; + if (e === "unset") { + return null; + } + if (e.indexOf("javascript:") === 0) { + e = e.slice(11); + t = true; + } else if (e.indexOf("js:") === 0) { + e = e.slice(3); + t = true; + } + if (e.indexOf("{") !== 0) { + e = "{" + e + "}"; + } + let n; + if (t) { + n = On( + r, + function () { + if (s) { + return Function("event", "return (" + e + ")").call(r, s); + } else { + return Function("return (" + e + ")").call(r); + } + }, + {}, + ); + } else { + n = v(e); + } + for (const c in n) { + if (n.hasOwnProperty(c)) { + if (i[c] == null) { + i[c] = n[c]; + } + } + } + } + return Cn(ce(u(r)), e, o, i, s); + } + function On(e, t, n) { + if (Q.config.allowEval) { + return t(); + } else { + fe(e, "htmx:evalDisallowedError"); + return n; + } + } + function Hn(e, t, n) { + return Cn(e, "hx-vars", true, n, t); + } + function Tn(e, t, n) { + return Cn(e, "hx-vals", false, n, t); + } + function Rn(e, t) { + return le(Hn(e, t), Tn(e, t)); + } + function qn(t, n, r) { + if (r !== null) { + try { + t.setRequestHeader(n, r); + } catch (e) { + t.setRequestHeader(n, encodeURIComponent(r)); + t.setRequestHeader(n + "-URI-AutoEncoded", "true"); + } + } + } + function An(t) { + if (t.responseURL) { + try { + const e = new URL(t.responseURL); + return e.pathname + e.search; + } catch (e) { + fe(te().body, "htmx:badResponseUrl", { url: t.responseURL }); + } + } + } + function T(e, t) { + return t.test(e.getAllResponseHeaders()); + } + function Ln(t, n, r) { + t = t.toLowerCase(); + if (r) { + if (r instanceof Element || typeof r === "string") { + return he(t, n, null, null, { + targetOverride: w(r) || ve, + returnPromise: true, + }); + } else { + let e = w(r.target); + if ((r.target && !e) || (r.source && !e && !w(r.source))) { + e = ve; + } + return he(t, n, w(r.source), r.event, { + handler: r.handler, + headers: r.headers, + values: r.values, + targetOverride: e, + swapOverride: r.swap, + select: r.select, + returnPromise: true, + push: r.push, + replace: r.replace, + selectOOB: r.selectOOB, + }); + } + } else { + return he(t, n, null, null, { returnPromise: true }); + } + } + function Nn(e) { + const t = []; + while (e) { + t.push(e); + e = e.parentElement; + } + return t; + } + function In(e, t, n) { + const r = new URL( + t, + location.protocol !== "about:" ? location.href : window.origin, + ); + const o = location.protocol !== "about:" ? location.origin : window.origin; + const i = o === r.origin; + if (Q.config.selfRequestsOnly) { + if (!i) { + return false; + } + } + return ae(e, "htmx:validateUrl", le({ url: r, sameHost: i }, n)); + } + function Dn(e) { + if (e instanceof FormData) return e; + const t = new FormData(); + for (const n in e) { + if (e.hasOwnProperty(n)) { + if (e[n] && typeof e[n].forEach === "function") { + e[n].forEach(function (e) { + t.append(n, e); + }); + } else if (typeof e[n] === "object" && !(e[n] instanceof Blob)) { + t.append(n, JSON.stringify(e[n])); + } else { + t.append(n, e[n]); + } + } + } + return t; + } + function Pn(r, o, e) { + return new Proxy(e, { + get: function (t, e) { + if (typeof e === "number") return t[e]; + if (e === "length") return t.length; + if (e === "push") { + return function (e) { + t.push(e); + r.append(o, e); + }; + } + if (typeof t[e] === "function") { + return function () { + t[e].apply(t, arguments); + r.delete(o); + t.forEach(function (e) { + r.append(o, e); + }); + }; + } + if (t[e] && t[e].length === 1) { + return t[e][0]; + } else { + return t[e]; + } + }, + set: function (e, t, n) { + e[t] = n; + r.delete(o); + e.forEach(function (e) { + r.append(o, e); + }); + return true; + }, + }); + } + function kn(o) { + return new Proxy(o, { + get: function (e, t) { + if (typeof t === "symbol") { + const r = Reflect.get(e, t); + if (typeof r === "function") { + return function () { + return r.apply(o, arguments); + }; + } else { + return r; + } + } + if (t === "toJSON") { + return () => Object.fromEntries(o); + } + if (t in e) { + if (typeof e[t] === "function") { + return function () { + return o[t].apply(o, arguments); + }; + } + } + const n = o.getAll(t); + if (n.length === 0) { + return undefined; + } else if (n.length === 1) { + return n[0]; + } else { + return Pn(e, t, n); + } + }, + set: function (t, n, e) { + if (typeof n !== "string") { + return false; + } + t.delete(n); + if (e && typeof e.forEach === "function") { + e.forEach(function (e) { + t.append(n, e); + }); + } else if (typeof e === "object" && !(e instanceof Blob)) { + t.append(n, JSON.stringify(e)); + } else { + t.append(n, e); + } + return true; + }, + deleteProperty: function (e, t) { + if (typeof t === "string") { + e.delete(t); + } + return true; + }, + ownKeys: function (e) { + return Reflect.ownKeys(Object.fromEntries(e)); + }, + getOwnPropertyDescriptor: function (e, t) { + return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e), t); + }, + }); + } + function he(t, n, r, o, i, k) { + let s = null; + let l = null; + i = i != null ? i : {}; + if (i.returnPromise && typeof Promise !== "undefined") { + var e = new Promise(function (e, t) { + s = e; + l = t; + }); + } + if (r == null) { + r = te().body; + } + const M = i.handler || Vn; + const F = i.select || null; + if (!se(r)) { + re(s); + return e; + } + const c = i.targetOverride || ce(Ee(r)); + if (c == null || c == ve) { + fe(r, "htmx:targetError", { target: ne(r, "hx-target") }); + re(l); + return e; + } + let u = oe(r); + const f = u.lastButtonClicked; + if (f) { + const A = ee(f, "formaction"); + if (A != null) { + n = A; + } + const L = ee(f, "formmethod"); + if (L != null) { + if (de.includes(L.toLowerCase())) { + t = L; + } else { + re(s); + return e; + } + } + } + const a = ne(r, "hx-confirm"); + if (k === undefined) { + const K = function (e) { + return he(t, n, r, o, i, !!e); + }; + const G = { + target: c, + elt: r, + path: n, + verb: t, + triggeringEvent: o, + etc: i, + issueRequest: K, + question: a, + }; + if (ae(r, "htmx:confirm", G) === false) { + re(s); + return e; + } + } + let h = r; + let d = ne(r, "hx-sync"); + let p = null; + let B = false; + if (d) { + const N = d.split(":"); + const I = N[0].trim(); + if (I === "this") { + h = Se(r, "hx-sync"); + } else { + h = ce(ue(r, I)); + } + d = (N[1] || "drop").trim(); + u = oe(h); + if (d === "drop" && u.xhr && u.abortable !== true) { + re(s); + return e; + } else if (d === "abort") { + if (u.xhr) { + re(s); + return e; + } else { + B = true; + } + } else if (d === "replace") { + ae(h, "htmx:abort"); + } else if (d.indexOf("queue") === 0) { + const W = d.split(" "); + p = (W[1] || "last").trim(); + } + } + if (u.xhr) { + if (u.abortable) { + ae(h, "htmx:abort"); + } else { + if (p == null) { + if (o) { + const D = oe(o); + if (D && D.triggerSpec && D.triggerSpec.queue) { + p = D.triggerSpec.queue; + } + } + if (p == null) { + p = "last"; + } + } + if (u.queuedRequests == null) { + u.queuedRequests = []; + } + if (p === "first" && u.queuedRequests.length === 0) { + u.queuedRequests.push(function () { + he(t, n, r, o, i); + }); + } else if (p === "all") { + u.queuedRequests.push(function () { + he(t, n, r, o, i); + }); + } else if (p === "last") { + u.queuedRequests = []; + u.queuedRequests.push(function () { + he(t, n, r, o, i); + }); + } + re(s); + return e; + } + } + const g = new XMLHttpRequest(); + u.xhr = g; + u.abortable = B; + const m = function () { + u.xhr = null; + u.abortable = false; + if (u.queuedRequests != null && u.queuedRequests.length > 0) { + const e = u.queuedRequests.shift(); + e(); + } + }; + const X = ne(r, "hx-prompt"); + if (X) { + var y = prompt(X); + if (y === null || !ae(r, "htmx:prompt", { prompt: y, target: c })) { + re(s); + m(); + return e; + } + } + if (a && !k) { + if (!confirm(a)) { + re(s); + m(); + return e; + } + } + let x = mn(r, c, y); + if (t !== "get" && !vn(r)) { + x["Content-Type"] = "application/x-www-form-urlencoded"; + } + if (i.headers) { + x = le(x, i.headers); + } + const U = dn(r, t); + let b = U.errors; + const V = U.formData; + if (i.values) { + hn(V, Dn(i.values)); + } + const j = Dn(Rn(r, o)); + const v = hn(V, j); + let w = yn(v, r); + if (Q.config.getCacheBusterParam && t === "get") { + w.set("org.htmx.cache-buster", ee(c, "id") || "true"); + } + if (n == null || n === "") { + n = location.href; + } + const S = Cn(r, "hx-request"); + const $ = oe(r).boosted; + let E = Q.config.methodsThatUseUrlParams.indexOf(t) >= 0; + const C = { + boosted: $, + useUrlParams: E, + formData: w, + parameters: kn(w), + unfilteredFormData: v, + unfilteredParameters: kn(v), + headers: x, + elt: r, + target: c, + verb: t, + errors: b, + withCredentials: + i.credentials || S.credentials || Q.config.withCredentials, + timeout: i.timeout || S.timeout || Q.config.timeout, + path: n, + triggeringEvent: o, + }; + if (!ae(r, "htmx:configRequest", C)) { + re(s); + m(); + return e; + } + n = C.path; + t = C.verb; + x = C.headers; + w = Dn(C.parameters); + b = C.errors; + E = C.useUrlParams; + if (b && b.length > 0) { + ae(r, "htmx:validation:halted", C); + re(s); + m(); + return e; + } + const _ = n.split("#"); + const z = _[0]; + const O = _[1]; + let H = n; + if (E) { + H = z; + const Z = !w.keys().next().done; + if (Z) { + if (H.indexOf("?") < 0) { + H += "?"; + } else { + H += "&"; + } + H += gn(w); + if (O) { + H += "#" + O; + } + } + } + if (!In(r, H, C)) { + fe(r, "htmx:invalidPath", C); + re(l); + m(); + return e; + } + g.open(t.toUpperCase(), H, true); + g.overrideMimeType("text/html"); + g.withCredentials = C.withCredentials; + g.timeout = C.timeout; + if (S.noHeaders) { + } else { + for (const P in x) { + if (x.hasOwnProperty(P)) { + const Y = x[P]; + qn(g, P, Y); + } + } + } + const T = { + xhr: g, + target: c, + requestConfig: C, + etc: i, + boosted: $, + select: F, + pathInfo: { + requestPath: n, + finalRequestPath: H, + responsePath: null, + anchor: O, + }, + }; + g.onload = function () { + try { + const t = Nn(r); + T.pathInfo.responsePath = An(g); + M(r, T); + if (T.keepIndicators !== true) { + rn(R, q); + } + ae(r, "htmx:afterRequest", T); + ae(r, "htmx:afterOnLoad", T); + if (!se(r)) { + let e = null; + while (t.length > 0 && e == null) { + const n = t.shift(); + if (se(n)) { + e = n; + } + } + if (e) { + ae(e, "htmx:afterRequest", T); + ae(e, "htmx:afterOnLoad", T); + } + } + re(s); + } catch (e) { + fe(r, "htmx:onLoadError", le({ error: e }, T)); + throw e; + } finally { + m(); + } + }; + g.onerror = function () { + rn(R, q); + fe(r, "htmx:afterRequest", T); + fe(r, "htmx:sendError", T); + re(l); + m(); + }; + g.onabort = function () { + rn(R, q); + fe(r, "htmx:afterRequest", T); + fe(r, "htmx:sendAbort", T); + re(l); + m(); + }; + g.ontimeout = function () { + rn(R, q); + fe(r, "htmx:afterRequest", T); + fe(r, "htmx:timeout", T); + re(l); + m(); + }; + if (!ae(r, "htmx:beforeRequest", T)) { + re(s); + m(); + return e; + } + var R = tn(r); + var q = nn(r); + ie(["loadstart", "loadend", "progress", "abort"], function (t) { + ie([g, g.upload], function (e) { + e.addEventListener(t, function (e) { + ae(r, "htmx:xhr:" + t, { + lengthComputable: e.lengthComputable, + loaded: e.loaded, + total: e.total, + }); + }); + }); + }); + ae(r, "htmx:beforeSend", T); + const J = E ? null : wn(g, r, w); + g.send(J); + return e; + } + function Mn(e, t) { + const n = t.xhr; + let r = null; + let o = null; + if (T(n, /HX-Push:/i)) { + r = n.getResponseHeader("HX-Push"); + o = "push"; + } else if (T(n, /HX-Push-Url:/i)) { + r = n.getResponseHeader("HX-Push-Url"); + o = "push"; + } else if (T(n, /HX-Replace-Url:/i)) { + r = n.getResponseHeader("HX-Replace-Url"); + o = "replace"; + } + if (r) { + if (r === "false") { + return {}; + } else { + return { type: o, path: r }; + } + } + const i = t.pathInfo.finalRequestPath; + const s = t.pathInfo.responsePath; + const l = t.etc.push || ne(e, "hx-push-url"); + const c = t.etc.replace || ne(e, "hx-replace-url"); + const u = oe(e).boosted; + let f = null; + let a = null; + if (l) { + f = "push"; + a = l; + } else if (c) { + f = "replace"; + a = c; + } else if (u) { + f = "push"; + a = s || i; + } + if (a) { + if (a === "false") { + return {}; + } + if (a === "true") { + a = s || i; + } + if (t.pathInfo.anchor && a.indexOf("#") === -1) { + a = a + "#" + t.pathInfo.anchor; + } + return { type: f, path: a }; + } else { + return {}; + } + } + function Fn(e, t) { + var n = new RegExp(e.code); + return n.test(t.toString(10)); + } + function Bn(e) { + for (var t = 0; t < Q.config.responseHandling.length; t++) { + var n = Q.config.responseHandling[t]; + if (Fn(n, e.status)) { + return n; + } + } + return { swap: false }; + } + function Xn(e) { + if (e) { + const t = f("title"); + if (t) { + t.textContent = e; + } else { + window.document.title = e; + } + } + } + function Un(e, t) { + if (t === "this") { + return e; + } + const n = ce(ue(e, t)); + if (n == null) { + fe(e, "htmx:targetError", { target: t }); + throw new Error(`Invalid re-target ${t}`); + } + return n; + } + function Vn(t, e) { + const n = e.xhr; + let r = e.target; + const o = e.etc; + const i = e.select; + if (!ae(t, "htmx:beforeOnLoad", e)) return; + if (T(n, /HX-Trigger:/i)) { + Je(n, "HX-Trigger", t); + } + if (T(n, /HX-Location:/i)) { + let e = n.getResponseHeader("HX-Location"); + var s = {}; + if (e.indexOf("{") === 0) { + s = v(e); + e = s.path; + delete s.path; + } + s.push = s.push || "true"; + Ln("get", e, s); + return; + } + const l = + T(n, /HX-Refresh:/i) && n.getResponseHeader("HX-Refresh") === "true"; + if (T(n, /HX-Redirect:/i)) { + e.keepIndicators = true; + Q.location.href = n.getResponseHeader("HX-Redirect"); + l && Q.location.reload(); + return; + } + if (l) { + e.keepIndicators = true; + Q.location.reload(); + return; + } + const c = Mn(t, e); + const u = Bn(n); + const f = u.swap; + let a = !!u.error; + let h = Q.config.ignoreTitle || u.ignoreTitle; + let d = u.select; + if (u.target) { + e.target = Un(t, u.target); + } + var p = o.swapOverride; + if (p == null && u.swapOverride) { + p = u.swapOverride; + } + if (T(n, /HX-Retarget:/i)) { + e.target = Un(t, n.getResponseHeader("HX-Retarget")); + } + if (T(n, /HX-Reswap:/i)) { + p = n.getResponseHeader("HX-Reswap"); + } + var g = n.response; + var m = le( + { + shouldSwap: f, + serverResponse: g, + isError: a, + ignoreTitle: h, + selectOverride: d, + swapOverride: p, + }, + e, + ); + if (u.event && !ae(r, u.event, m)) return; + if (!ae(r, "htmx:beforeSwap", m)) return; + r = m.target; + g = m.serverResponse; + a = m.isError; + h = m.ignoreTitle; + d = m.selectOverride; + p = m.swapOverride; + e.target = r; + e.failed = a; + e.successful = !a; + if (m.shouldSwap) { + if (n.status === 286) { + lt(t); + } + Vt(t, function (e) { + g = e.transformResponse(g, n, t); + }); + if (c.type) { + Gt(); + } + var y = bn(t, p); + if (!y.hasOwnProperty("ignoreTitle")) { + y.ignoreTitle = h; + } + r.classList.add(Q.config.swappingClass); + if (i) { + d = i; + } + if (T(n, /HX-Reselect:/i)) { + d = n.getResponseHeader("HX-Reselect"); + } + const x = o.selectOOB || ne(t, "hx-select-oob"); + const b = ne(t, "hx-select"); + ze(r, g, y, { + select: d === "unset" ? null : d || b, + selectOOB: x, + eventInfo: e, + anchor: e.pathInfo.anchor, + contextElement: t, + afterSwapCallback: function () { + if (T(n, /HX-Trigger-After-Swap:/i)) { + let e = t; + if (!se(t)) { + e = te().body; + } + Je(n, "HX-Trigger-After-Swap", e); + } + }, + afterSettleCallback: function () { + if (T(n, /HX-Trigger-After-Settle:/i)) { + let e = t; + if (!se(t)) { + e = te().body; + } + Je(n, "HX-Trigger-After-Settle", e); + } + }, + beforeSwapCallback: function () { + if (c.type) { + ae(te().body, "htmx:beforeHistoryUpdate", le({ history: c }, e)); + if (c.type === "push") { + Wt(c.path); + ae(te().body, "htmx:pushedIntoHistory", { path: c.path }); + } else { + Zt(c.path); + ae(te().body, "htmx:replacedInHistory", { path: c.path }); + } + } + }, + }); + } + if (a) { + fe( + t, + "htmx:responseError", + le( + { + error: + "Response Status Error Code " + + n.status + + " from " + + e.pathInfo.requestPath, + }, + e, + ), + ); + } + } + const jn = {}; + function $n() { + return { + init: function (e) { + return null; + }, + getSelectors: function () { + return null; + }, + onEvent: function (e, t) { + return true; + }, + transformResponse: function (e, t, n) { + return e; + }, + isInlineSwap: function (e) { + return false; + }, + handleSwap: function (e, t, n, r) { + return false; + }, + encodeParameters: function (e, t, n) { + return null; + }, + }; + } + function _n(e, t) { + if (t.init) { + t.init(n); + } + jn[e] = le($n(), t); + } + function zn(e) { + delete jn[e]; + } + function Jn(e, n, r) { + if (n == undefined) { + n = []; + } + if (e == undefined) { + return n; + } + if (r == undefined) { + r = []; + } + const t = a(e, "hx-ext"); + if (t) { + ie(t.split(","), function (e) { + e = e.replace(/ /g, ""); + if (e.slice(0, 7) == "ignore:") { + r.push(e.slice(7)); + return; + } + if (r.indexOf(e) < 0) { + const t = jn[e]; + if (t && n.indexOf(t) < 0) { + n.push(t); + } + } + }); + } + return Jn(ce(u(e)), n, r); + } + var Kn = false; + te().addEventListener("DOMContentLoaded", function () { + Kn = true; + }); + function Gn(e) { + if (Kn || te().readyState === "complete") { + e(); + } else { + te().addEventListener("DOMContentLoaded", e); + } + } + function Wn() { + if (Q.config.includeIndicatorStyles !== false) { + const e = Q.config.inlineStyleNonce + ? ` nonce="${Q.config.inlineStyleNonce}"` + : ""; + const t = Q.config.indicatorClass; + const n = Q.config.requestClass; + te().head.insertAdjacentHTML( + "beforeend", + `` + + `.${t}{opacity:0;visibility: hidden} ` + + `.${n} .${t}, .${n}.${t}{opacity:1;visibility: visible;transition: opacity 200ms ease-in}` + + "", + ); + } + } + function Zn() { + const e = te().querySelector('meta[name="htmx-config"]'); + if (e) { + return v(e.content); + } else { + return null; + } + } + function Yn() { + const e = Zn(); + if (e) { + Q.config = le(Q.config, e); + } + } + Gn(function () { + Yn(); + Wn(); + let e = te().body; + Ft(e); + const t = te().querySelectorAll( + "[hx-trigger='restored'],[data-hx-trigger='restored']", + ); + e.addEventListener("htmx:abort", function (e) { + const t = e.detail.elt || e.target; + const n = oe(t); + if (n && n.xhr) { + n.xhr.abort(); + } + }); + const n = window.onpopstate ? window.onpopstate.bind(window) : null; + window.onpopstate = function (e) { + if (e.state && e.state.htmx) { + en(); + ie(t, function (e) { + ae(e, "htmx:restored", { document: te(), triggerEvent: ae }); + }); + } else { + if (n) { + n(e); + } + } + }; + b().setTimeout(function () { + ae(e, "htmx:load", {}); + e = null; + }, 0); + }); + return Q; +})(); diff --git a/templates/base.html b/templates/base.html index 4e404d1..0d785d0 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,91 +1,95 @@ - + + + + + + + Agahnim proto + + + + + - - - - - - Agahnim proto - - - - - + + + + + {% include "partials/header.html" %} + + {% block miniplayer %}{% endblock %} + + - - - - - {% include "partials/header.html" %} - - {% block miniplayer %}{% endblock %} - - + +
{% block content %}{% endblock %}
+
- -
- {% block content %}{% endblock %} -
-
- - - - - + + - - \ No newline at end of file + document.body.addEventListener("htmx:afterSwap", () => { + updateMiniplayerVisibility(); + updateNavState(); + closeMobileMenu(); + window.scrollTo(0, 0); + }); + + + diff --git a/templates/home.html b/templates/home.html index 60927c5..625005d 100644 --- a/templates/home.html +++ b/templates/home.html @@ -1,9 +1,3 @@ -{% extends "base.html" %} - -{% block content %} -{% include "partials/home.html" %} -{% endblock %} - -{% block miniplayer %} -{% include "partials/miniplayer.html" %} +{% extends "base.html" %} {% block content %} {% include "partials/home.html" %} +{% endblock %} {% block miniplayer %} {% include "partials/miniplayer.html" %} {% endblock %} diff --git a/templates/music.html b/templates/music.html index 8f01d3b..eb86d4f 100644 --- a/templates/music.html +++ b/templates/music.html @@ -1,9 +1,3 @@ -{% extends "base.html" %} - -{% block content %} -{% include "partials/music.html" %} -{% endblock %} - -{% block miniplayer %} -{% include "partials/miniplayer.html" %} -{% endblock %} +{% extends "base.html" %} {% block content %} {% include "partials/music.html" +%} {% endblock %} {% block miniplayer %} {% include "partials/miniplayer.html" +%} {% endblock %} diff --git a/templates/notfound.html b/templates/notfound.html index 36d7f65..92f2880 100644 --- a/templates/notfound.html +++ b/templates/notfound.html @@ -1,6 +1,2 @@ -{% extends "base.html" %} - - -{% block content %} -{% include "partials/notfound.html" %} -{% endblock %} \ No newline at end of file +{% extends "base.html" %} {% block content %} {% include +"partials/notfound.html" %} {% endblock %} diff --git a/templates/partials/header.html b/templates/partials/header.html index 4be4f7b..2661de7 100644 --- a/templates/partials/header.html +++ b/templates/partials/header.html @@ -1,5 +1,5 @@ - + Home - + About me - + Blog - + Projects - + Music - + @@ -27,18 +27,18 @@ \ No newline at end of file + (function () { + const dateEl = document.querySelector("current-date"); + if (dateEl) { + const update = () => { + const now = new Date(); + const h = String(now.getHours()).padStart(2, "0"); + const m = String(now.getMinutes()).padStart(2, "0"); + const s = String(now.getSeconds()).padStart(2, "0"); + dateEl.textContent = `${h}:${m}:${s}`; + }; + update(); + setInterval(update, 1000); + } + })(); + diff --git a/templates/partials/home.html b/templates/partials/home.html index 67813fd..66968b7 100644 --- a/templates/partials/home.html +++ b/templates/partials/home.html @@ -1,85 +1,142 @@ - A welcome text in pink + A welcome text in pink - {% for _ in 0..12 %} -  彡★Welcome to my little corner of the Web★彡  - {% endfor %} + {% for _ in 0..12 %}  彡★Welcome to my little corner of the + Web★彡  {% endfor %} - Thank you for visiting my brand new website ! - For now it's still a work in progress but I'm sure you will see - changes if you come back from time to time :) -

+ Thank you for visiting my brand new website ! For now + it's still a work in progress but I'm sure + you will see changes if you come back from time to time :)

My name is Agahnim - she/her, - I'm a developer and music producer from - France ! -

- I created this website not just to improve my - web development - skills, but also because it's fun - to - build a project like this. It's a small, personal space on the internet, away from the social climate, which is - getting worse and worse. -

- This website is inspired by the vaporwave - aesthetic and - the old - PCs I used to tinker with when I was a kid. - I always liked this type of aesthetic and the mix of melancholy of comfort it brings me. - It feels good to bring that vibe into one of my projects. + she/her, I'm a + developer and + music producer from + France !

+ I created this website not just to + improve my web development skills, but also + because it's fun to build a project like this. It's a + small, personal space on the internet, away from the social climate, which + is getting worse and worse.

+ This website is inspired by the + vaporwave aesthetic and the old PCs I used + to tinker with when I was a kid. I always liked this type of aesthetic and + the mix of melancholy of comfort it brings me. It feels good to bring that + vibe into one of my projects. - 88x31 pixel art badge with a retro computer - Badge with text 'CSS is Awesome' - Queer pride flag badge - Cover art for The Legend of Zelda Skyward Sword - Trans rights badge with text 'Trans Rights Now' - Kirby character animated GIF - Pink animated pixel art badge - Trans pride flag animated badge + 88x31 pixel art badge with a retro computer + Badge with text 'CSS is Awesome' + Queer pride flag badge + Cover art for The Legend of Zelda Skyward Sword + Trans rights badge with text 'Trans Rights Now' + Kirby character animated GIF + Pink animated pixel art badge + Trans pride flag animated badge
Socials ! - GitHub logo - Spotify logo - Instagram logo + GitHub logo + Spotify logo + Instagram logo - Decorative divider - Consult the wisdom of the Bibou, if thou darest... + Decorative divider + Consult the wisdom of the Bibou, if thou darest... - Bibou endormi - Bibou éveillé + Bibou endormi + Bibou éveillé - - + - Animated text 'Updates' + Animated text 'Updates' {% for article in news %} - - {{ article.body }} - - Decorative divider + {{ article.body }} + Decorative divider {% else %} - - Nothing to see here, for now... - + Nothing to see here, for now... {% endfor %} @@ -127,4 +184,4 @@ ttText(quote); }); }) (); - \ No newline at end of file + diff --git a/templates/partials/miniplayer.html b/templates/partials/miniplayer.html index 33ad1b4..41df9ad 100644 --- a/templates/partials/miniplayer.html +++ b/templates/partials/miniplayer.html @@ -13,31 +13,78 @@ - + - Volume - + Volume + {% endif %} diff --git a/templates/partials/music.html b/templates/partials/music.html index 144e7ed..0ff26b2 100644 --- a/templates/partials/music.html +++ b/templates/partials/music.html @@ -6,20 +6,20 @@ \ No newline at end of file + diff --git a/templates/partials/notfound.html b/templates/partials/notfound.html index 559e044..67ee888 100644 --- a/templates/partials/notfound.html +++ b/templates/partials/notfound.html @@ -1,4 +1,10 @@ - Pink text, 404 Not Found - A drawing depicting a cute but fat cat - \ No newline at end of file + Pink text, 404 Not Found + A drawing depicting a cute but fat cat + diff --git a/treefmt.toml b/treefmt.toml new file mode 100644 index 0000000..4fbeb64 --- /dev/null +++ b/treefmt.toml @@ -0,0 +1,9 @@ +[formatter.rustfmt] +command = "rustfmt" +options = ["--edition", "2024"] +includes = ["*.rs"] + +[formatter.prettier] +command = "prettier" +options = ["--write"] +includes = ["*.html", "*.css", "*.js", "*.ts", "*.json", "*.md"]