var $e=Object.defineProperty;var w=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(r){throw n=[r],r}};var Ft=(t,e)=>{for(var n in e)$e(t,n,{get:e[n],enumerable:!0})};function B(){for(let t of Ot)document.querySelectorAll(`[data-r-portal-slot="${CSS.escape(t)}"]`).forEach(e=>e.remove());Ot=ut,ut=new Set}function dt(t){return document.getElementById(t)??document.querySelector(`[data-r-portal-target="${CSS.escape(t)}"]`)}function ft(t){let e=Nt.get(t);return e||(e=`p${++De}`,Nt.set(t,e)),ut.add(e),e}function mt(t,e){t.querySelectorAll(`[data-r-portal-slot="${CSS.escape(e)}"]`).forEach(n=>n.remove())}function qt(t,e,n){mt(e,n);let r=document.createElement("div");r.dataset.rPortalSlot=n,r.appendChild(t.content.cloneNode(!0)),e.appendChild(r)}function z(t){t.querySelectorAll("template[data-r-portal]").forEach(e=>{let n=e.closest("[data-r-show-if]");if(n?.closest("resuma-show")?.dataset.rPortalTarget||n?.hidden)return;let r=e.getAttribute("data-r-portal");if(!r)return;let o=dt(r);o&&qt(e,o,ft(e))})}function $t(t,e,n){let r=t.querySelector("template[data-r-portal]");r&&qt(r,e,n)}var De,Nt,ut,Ot,K=w(()=>{"use strict";De=0,Nt=new WeakMap,ut=new Set,Ot=new Set});function h(t){gt.push(t)}function G(){for(;gt.length;){let t=gt.pop();try{t?.()}catch{}}}var gt,R=w(()=>{"use strict";gt=[]});var Kt={};Ft(Kt,{applyDom:()=>Qe,bindFor:()=>M,bindMatch:()=>A,bindReactiveAttrs:()=>T,bindReactiveSubtree:()=>wt,bindReactiveText:()=>k,bindShows:()=>C,initSignals:()=>N,matchValueString:()=>Bt,signalId:()=>b});function N(t){let e=new Map;for(let n of t){let r=b(n.id);e.set(r,je(r,n.value))}return e}function b(t){return typeof t=="string"?t:typeof t=="number"?`s${t}`:`s${t[0]}`}function je(t,e){let n=e,r=new Set,o={id:t,get value(){return n},set value(i){o.set(i)},set(i){Object.is(i,n)||(n=i,r.forEach(a=>a(n)))},update(i){let a=i(n);a!==void 0&&o.set(a)},subscribe(i){return r.add(i),()=>r.delete(i)}};return o}function k(t,e){t.querySelectorAll(We.toLowerCase()).forEach(r=>{if(Dt.has(r))return;let o=r.getAttribute("data-r-signal");if(!o)return;let i=e.get(o);i&&(r.textContent=F(i.value),h(i.subscribe(a=>{r.textContent=F(a)})),Dt.add(r))})}function T(t,e){t.querySelectorAll("[data-r-bind]").forEach(r=>Vt(r,e)),Ue(t,e)}function Ue(t,e){let n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT),r=n.currentNode;for(;r;)r instanceof HTMLElement&&Vt(r,e),r=n.nextNode()}function Ve(t){let e=t.toLowerCase();return e.startsWith("on")||e==="style"}function ze(t){let e=t.replace(/[\u0000-\u0020]+/g,"");return/^(?:javascript|vbscript|data):/i.test(e)?"":t}function Vt(t,e){if(jt.has(t))return;let n=!1;for(let r of Array.from(t.attributes)){let o=r.name;if(!o.startsWith("data-r-bind:"))continue;let i=o.slice(12);if(Ve(i))continue;let[a,s="{}"]=r.value.split("|"),c=e.get(a);if(!c)continue;let d=Be.has(i.toLowerCase()),l=m=>{let f=s.replace("{}",F(m));d&&(f=ze(f)),t.setAttribute(i,f)};l(c.value),h(c.subscribe(l)),n=!0}n&&jt.add(t)}function F(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);try{return JSON.stringify(t)}catch{return String(t)}}function Bt(t){if(t===void 0)return"";if(typeof t=="string")return t;try{let e=JSON.stringify(t);if(e===void 0)return"";let n=JSON.parse(e);return typeof n=="string"?n:e}catch{return F(t)}}function C(t,e){t.querySelectorAll("resuma-show").forEach(n=>{if(Wt.has(n))return;let r=n.getAttribute("data-r-show");if(!r)return;let o=n.getAttribute("data-r-inverted")==="true",i=n.querySelector("[data-r-show-if]"),a=n.querySelector("[data-r-show-else]"),s=e.get(r);if(!s||!i)return;let c=d=>{let l=o?!d:!!d;i.hidden=!l,a&&(a.hidden=l);let m=n.dataset.rPortalTarget,f=i.querySelector("template[data-r-portal]");if(!m&&f&&(m=f.getAttribute("data-r-portal")??void 0,m&&(n.dataset.rPortalTarget=m)),m){let p=dt(m);if(p){let u=ft(n);l?f&&$t(i,p,u):mt(p,u)}}};c(s.value),h(s.subscribe(c)),Wt.add(n)})}function ht(t){if(t&&typeof t=="object")for(let e of["title","name","label","text"]){let n=t[e];if(typeof n=="string")return n}return F(t)}function zt(t){return t.hasAttribute("data-r-signal")}function wt(t,e){k(t,e),T(t,e)}function Ke(t,e,n){if(n){let i=n.cloneNode(!0);return i.setAttribute("data-r-for-key",e),i.removeAttribute("data-r-for-new"),i.querySelectorAll("resuma-dyn").forEach(a=>{zt(a)||(a.textContent=ht(t))}),i}let r=document.createElement("div");r.setAttribute("data-r-for-item",""),r.setAttribute("data-r-for-key",e);let o=document.createElement("span");return o.textContent=ht(t),r.appendChild(o),r}function Ge(t,e){t.querySelectorAll("resuma-dyn").forEach(n=>{zt(n)||(n.textContent=ht(e))})}function Je(t,e,n){if(e&&t&&typeof t=="object"){let r=t[e];if(r!=null)return String(r)}return String(n)}function Xe(t,e){let n=new Set;return t.map((r,o)=>{let i=Je(r,e,o);return n.has(i)&&(i=`${i}:${o}`),n.add(i),i})}function M(t,e){t.querySelectorAll("resuma-for").forEach(n=>{if(pt.has(n))return;let r=n.getAttribute("data-r-for");if(!r)return;let o=n.getAttribute("data-r-key"),i=n.querySelector("[data-r-for-list]"),a=e.get(r);if(!a||!i)return;if(n.hasAttribute("data-r-virtual")){pt.add(n),import("/_resuma/ui.js?v=1.3.1").then(c=>{c.bindVirtualFor(n,a,o,d=>wt(d,e))});return}let s=c=>{let d=Array.isArray(c)?c:[],l=new Map;i.querySelectorAll("[data-r-for-item]").forEach(u=>{let g=u.getAttribute("data-r-for-key");g&&l.set(g,u)});let m=document.createDocumentFragment(),f=i.querySelector("[data-r-for-item]:not([data-r-for-new])")??void 0,p=Xe(d,o);d.forEach((u,g)=>{let v=p[g],S=l.get(v);S?(l.delete(v),Ge(S,u)):(S=Ke(u,v,f),S.setAttribute("data-r-for-new","true")),m.appendChild(S)}),i.replaceChildren(m),l.forEach(u=>u.remove()),wt(i,e)};s(a.value),h(a.subscribe(s)),pt.add(n)})}function A(t,e){t.querySelectorAll("resuma-match").forEach(n=>{if(Ut.has(n))return;let r=n.getAttribute("data-r-match");if(!r)return;let o=e.get(r);if(!o)return;let i=n.querySelectorAll("[data-r-match-case]"),a=n.querySelector("[data-r-match-default]"),s=c=>{let d=Bt(c),l=!1;i.forEach(m=>{let p=(m.getAttribute("data-r-match-when")??"")===d;m.hidden=!p,p&&(l=!0)}),a&&(a.hidden=l)};s(o.value),h(o.subscribe(s)),Ut.add(n)})}function Qe(){let t=window.__resuma;if(!t)return;let e=document.getElementById("resuma-root")??document.body;k(e,t.signals),T(e,t.signals),C(e,t.signals),M(e,t.signals),A(e,t.signals)}var We,Dt,jt,Wt,pt,Ut,Be,H=w(()=>{"use strict";K();R();We="RESUMA-DYN",Dt=new WeakSet,jt=new WeakSet,Wt=new WeakSet,pt=new WeakSet,Ut=new WeakSet;Be=new Set(["href","src","action","formaction","xlink:href","poster","background","ping","data"])});function q(){return window.__resuma}function vt(t,e){return`${t}:${e}`}function Ye(t,e,n){let r=t==="handler"?`/_resuma/handler/${encodeURIComponent(e)}.js`:`/_resuma/island-chunk/${encodeURIComponent(e)}.js`;return n?`${r}?v=${encodeURIComponent(n)}`:r}function Ze(t,e){return e?q().chunkDigests?.[t]||String(Date.now()):q().chunkDigests?.[t]}function tn(t,e){Et([...t].map(n=>({kind:"handler",chunk:n})),e)}function Et(t,e,n){yt++;for(let{kind:r,chunk:o}of t){if(!o)continue;(r==="handler"?e:n)?.delete(o);let a=vt(r,o);O.delete(a),O.delete(`${a}:bust`)}}async function _(t,e,n=!1){let r=q(),o=t==="handler"?r.loaded:r.islandLoaded,i=n?`${vt(t,e)}:bust`:vt(t,e),a=yt,s=Ze(e,n);if(!n){let l=o.get(e);if(l)return l}let c=O.get(i);c||(c=import(Ye(t,e,s)),O.set(i,c),c.finally(()=>O.delete(i)));let d=await c;if(a!==yt)return _(t,e,!0);if(!n){let l=o.get(e);if(l)return l}return o.set(e,d),d}function St(t){q().loaded.has(t)||_("handler",t).catch(()=>{})}function Jt(t){for(let e of t)e&&_("handler",e,!0).catch(()=>{})}function Xt(t){for(let e of t)e&&_("island",e,!0).catch(()=>{})}function Qt(){bt.clear()}async function Yt(t){return _("island",t)}async function J(t,e){if(e){let c=bt.get(e);return c||(c=Gt(e),bt.set(e,c)),c}let n=t.indexOf("#"),r=n===-1?t:t.slice(0,n),o=n===-1?t:t.slice(n+1),i=q();if(r==="__page__"){let c=i.handlers[r]?.[o];if(c)return Gt(c)}let a=await _("handler",r),s=a[o];if(s||(tn([r]),a=await _("handler",r,!0),s=a[o]),!s)throw new Error(`handler ${o} missing in ${r}`);return s}function Gt(t){let e=t.trim(),r=e.startsWith("(")||e.startsWith("function")||e.startsWith("async")?`return (${t});`:`return (async (event, state, __resuma) => { ${t} });`;return new Function(r)()}var bt,O,yt,P=w(()=>{"use strict";bt=new Map,O=new Map,yt=0});function I(t,e){let n=t.querySelectorAll(en),r=[];n.forEach(o=>{let i=o.getAttribute("data-r-chunk");if(!i)return;if((o.getAttribute("data-r-load")??"eager")==="visible"&&"IntersectionObserver"in window){let s=new IntersectionObserver((c,d)=>{for(let l of c)l.isIntersecting&&(d.unobserve(l.target),Zt(o,i,e))},{rootMargin:"100px"});r.push(s),s.observe(o);return}Zt(o,i,e)}),r.length&&h(()=>{for(let o of r)o.disconnect()})}async function Zt(t,e,n){let r=t.getAttribute("data-r-props")??"{}",o={};try{o=JSON.parse(r)}catch{}await nn(e,o,t,n)}async function nn(t,e,n,r){if(n.dataset.rHydrated!=="true")try{let o=await Yt(t);typeof o.resume=="function"&&(o.resume(e,r,n),n.dataset.rHydrated="true")}catch(o){console.debug("[r] island static",t,o)}}var en,kt=w(()=>{"use strict";P();R();en="resuma-island"});function rn(t,e,n){let r=Object.create(n.state);if(!t)return r;for(let[o,i]of Object.entries(t)){let a=e.get(b(i));a&&(r[o]=a)}return r}function X(){for(;$.length;){let t=$.pop();try{t?.()}catch{}}}function Q(t,e,n){for(let r of t)try{let o=rn(r.captures,e,n),i=new Function(`return (${r.body});`)();if(r.kind==="debounce"){let s=i(o,n);typeof s=="function"&&$.push(s)}else{let s=r.target!=null?e.get(b(r.target)):void 0,c=()=>{try{let f=i(o,n);s&&f!==void 0&&s.set(f)}catch(f){console.error("[r] effect",r.id,f)}},d,l=()=>{let f=r.debounce_ms;if(f!=null&&f>0){d!==void 0&&clearTimeout(d),d=setTimeout(c,f);return}c()};l(),$.push(()=>{d!==void 0&&clearTimeout(d)});let m=new Set;for(let f of r.deps)m.add(b(f));if(r.captures)for(let f of Object.values(r.captures))m.add(b(f));for(let f of m){let u=e.get(f)?.subscribe(()=>l());u&&$.push(u)}}}catch(o){console.error("[r] effect init",r.id,o)}}var $,Tt=w(()=>{"use strict";H();$=[]});function Rt(t,e){return t.currentTarget===e?t:new Proxy(t,{get(n,r){if(r==="currentTarget")return e;let o=Reflect.get(n,r,n);return typeof o=="function"?o.bind(n):o}})}function on(t){let e=t.target instanceof Element?t.target:t.target instanceof Text?t.target.parentElement:null,n=`data-r-on:${t.type}`;for(;e&&e!==document.body;){if(e.hasAttribute(n))return e;e=e.parentElement}return null}function te(t,e){let n=e??on(t);return n?Rt(t,n):t}var Ct=w(()=>{"use strict"});function re(){return globalThis.__resumaClientReady}function ne(t){if(!t)return;Mt.add(t);let e=Y.get(t);if(e){Y.delete(t);for(let n of e)n()}}function oe(){if(ee||typeof document>"u")return;ee=!0,document.addEventListener("resuma:client-ready",e=>{let n=e.detail?.id;typeof n=="string"&&ne(n)});let t=re();if(t)for(let e of Object.keys(t))ne(e)}function ie(t){return Mt.has(t)||!!re()?.[t]}function D(t,e){if(oe(),ie(t))return e(),()=>{};let n=Y.get(t);return n||Y.set(t,n=new Set),n.add(e),()=>{n.delete(e)}}function Z(t,e=15e3){return oe(),ie(t)?Promise.resolve():new Promise((n,r)=>{let o=setTimeout(()=>{i(),r(new Error(`waitClient(${t}) timed out after ${e}ms`))},e),i=D(t,()=>{clearTimeout(o),n()})})}function ae(){Mt.clear();let t=globalThis;if(t.__resumaClientReady)for(let e of Object.keys(t.__resumaClientReady))delete t.__resumaClientReady[e]}async function se(t=document){let e=[];for(let n of t.querySelectorAll('script[type="module"]')){let r=n.textContent||"",o=/import\s+"([^"]+)"/.exec(r)?.[1];!o||!o.includes("/static/client/")||(n.remove(),e.push(import(o).then(()=>{},i=>{console.warn("[resuma] ClientComponent import failed",o,i)})))}e.length&&await Promise.all(e)}var Mt,Y,ee,tt=w(()=>{"use strict";Mt=new Set,Y=new Map,ee=!1});var j=w(()=>{"use strict"});function le(t,e){e.querySelectorAll(`[${ce}]`).forEach(o=>o.remove());let n=[...new Set(t.filter(Boolean))];if(!n.length)return;if(!("IntersectionObserver"in window)){for(let o of n)St(o);return}let r=new IntersectionObserver((o,i)=>{for(let a of o){if(!a.isIntersecting)continue;let s=a.target.dataset.rChunk;s&&St(s),i.unobserve(a.target)}},{rootMargin:"120px"});h(()=>r.disconnect());for(let o of e.querySelectorAll("resuma-boundary[data-r-chunk]"))r.observe(o);for(let o of n){let i=document.createElement("resuma-boundary");i.hidden=!0,i.dataset.rChunk=o,i.setAttribute(ce,"true"),e.appendChild(i),r.observe(i)}}var ce,ue=w(()=>{"use strict";R();P();ce="data-r-lazy-chunk-marker"});function an(t){return typeof t=="string"?{body:t}:t}function sn(t,e,n){let r=Object.create(n);if(!t)return r;for(let[o,i]of Object.entries(t)){let a=e.get(b(i));a&&(r[o]=a)}return r}function et(t,e,n,r){let o=Object.entries(t).map(([c,d])=>[c,an(d)]);if(!o.length)return;let i=async(c,d)=>{try{let l=d.body.trim();l.endsWith(")()")&&(l=l.slice(0,-2));let m=sn(d.captures,e,n),f=new Function("state","__resuma",`return (${l})(state, __resuma);`),p=await Promise.resolve(f(m,window.__resuma));typeof p=="function"&&h(p)}catch(l){console.error("[r] task",c,l)}},a=new Set(o.map(([c])=>c)),s=(c,d)=>{a.has(c)&&(a.delete(c),i(c,d))};if("IntersectionObserver"in window){let c=new IntersectionObserver((d,l)=>{for(let m of d){if(!m.isIntersecting)continue;let f=m.target.dataset.rVisibleTask,p=f?o.find(([u])=>u===f)?.[1]:void 0;f&&p&&s(f,p),l.unobserve(m.target)}},{rootMargin:"50px"});h(()=>c.disconnect()),r().querySelectorAll("[data-r-visible-task]").forEach(d=>d.remove());for(let[d]of o){let l=document.createElement("span");l.dataset.rVisibleTask=d,l.className="r-visible-task-marker",l.setAttribute("aria-hidden","true"),r().appendChild(l),c.observe(l)}}else for(let[c,d]of o)s(c,d)}var At=w(()=>{"use strict";j();H();R()});var ke={};Ft(ke,{bootstrap:()=>gn,buildLocalState:()=>ye,mountFlowWidgets:()=>un,mountPage:()=>_t,mutationHeaders:()=>nt,runHandler:()=>ve,showActionFieldErrors:()=>kn});function cn(t){return t instanceof Document||t instanceof Element?!!t.querySelector(de):!1}function he(){return fe??(fe=import("/_resuma/ui.js?v=1.3.1")),fe}function W(t,e=""){he().then(n=>n[t](e))}async function we(t){if(cn(t))try{(await import("/_resuma/flow.js?v=1.3.1")).initFlowWidgets(t)}catch(e){console.error("[r] flow load",e)}}async function ln(t){if(t.querySelector("[data-r-popup],[data-r-modal],[data-r-gesture],[data-r-virtual]"))try{let e=await he();e.initUi(t);let n=window.__resuma;n&&Object.assign(n,{showPopup:e.showPopup,hidePopup:e.hidePopup,showModal:e.showModal,hideModal:e.hideModal,dismissAll:e.dismissAll})}catch(e){console.error("[r] ui load",e)}}function un(t=document){we(t)}function fn(){let t=document.getElementById(be);if(!t?.textContent)return"";try{return JSON.parse(t.textContent).csrf_token??""}catch{return""}}function nt(t={}){let e={...t},n=fn();return n&&(e["x-resuma-csrf"]=n),e}function mn(){let t=document.getElementById(be);if(!t||!t.textContent)return{signals:[],handlers:{},islands:[],actions:[]};try{let e=JSON.parse(t.textContent);return e.serialization_error&&console.error("[r] resumability payload failed to serialize on the server \u2014 page interactivity is broken"),e}catch(e){return console.error("[r] state",e),{signals:[],handlers:{},islands:[],actions:[]}}}function _t(){Re(),X(),G(),B();let t=mn(),e=N(t.signals),n={};for(let[u,g]of e)n[u]=g;let r=window.__resuma,o=r?.loaded??new Map,i=r?.islandLoaded??new Map,a=r?.chunkDigests??{},s=t.chunk_digests??{},c=new Set(t.lazy_chunks??[]),d=new Set(t.islands??[]);for(let u of document.querySelectorAll("[data-r-on\\:click], [data-r-on\\:submit], [data-r-on\\:input], [data-r-on\\:change]"))for(let g of u.attributes){if(!g.name.startsWith("data-r-on:"))continue;let v=g.value,S=v.indexOf("#");if(S===-1)continue;let lt=v.slice(0,S);lt&<!=="__page__"&&c.add(lt)}let l=me();for(let u of l.querySelectorAll("resuma-island[data-r-chunk]")){let g=u.getAttribute("data-r-chunk");g&&d.add(g),delete u.dataset.rHydrated}let m=[];for(let u of c)(!s[u]||a[u]!==s[u])&&m.push(u);let f=[];for(let u of d)(!s[u]||a[u]!==s[u])&&f.push(u);(m.length||f.length)&&Et([...m.map(u=>({kind:"handler",chunk:u})),...f.map(u=>({kind:"island",chunk:u}))],o,i),Qt();let p={state:n,signals:e,handlers:t.handlers,contexts:t.contexts??{},loaded:o,islandLoaded:i,chunkDigests:s,action:En,safeAction:Sn,refreshIsland:Se,context:u=>p.contexts[u],navigate:y,buildUrl:L,invalidate:U,waitClient:Z,onClientReady:D,announce:u=>{let g=document.getElementById("r-live");g&&(g.textContent="",requestAnimationFrame(()=>{g.textContent=u}))},measure:u=>{let g=typeof u=="string"?document.querySelector(u):u;if(!(g instanceof Element))return null;let v=g.getBoundingClientRect();return{x:v.x,y:v.y,width:v.width,height:v.height}},storage:{get:u=>{try{return localStorage.getItem(u)}catch{return null}},set:(u,g)=>{try{localStorage.setItem(u,g)}catch{}},remove:u=>{try{localStorage.removeItem(u)}catch{}}},online:()=>navigator.onLine,presence:()=>({idle:!!window.__rIdle||document.hidden,hidden:document.hidden}),isNavigatingWithKeyboard:()=>document.documentElement.dataset.rNav==="keyboard",contentSizeMultiplier:()=>parseFloat(getComputedStyle(document.documentElement).fontSize)/16||1,focus:Lt,onCleanup:h,showPopup:u=>(W("showPopup",u),!0),hidePopup:u=>W("hidePopup",u),showModal:u=>(W("showModal",u),!0),hideModal:u=>W("hideModal",u),dismissAll:()=>W("dismissAll"),runHandler:ve};window.__resuma=p,c.size&&Jt(c),d.size&&Xt(d),k(l,e),T(l,e),C(l,e),M(l,e),A(l,e),I(l,e),bn(l),z(l),vn(l),we(l),ln(l),et(t.visible_tasks??{},e,n,me),Q(t.effects??[],e,p),le(t.lazy_chunks??[],l)}async function gn(){ge||(ge=!0,rt(_t),_t(),pn(),wn(),it(),ot(location.pathname+location.search),Tn())}function ye(t){let e=window.__resuma;if(!t.length)return e.state;let n={};for(let r of t){let o=r.indexOf(":"),i=o===-1?r:r.slice(0,o),a=o===-1?void 0:r.slice(o+1),s=a!=null?b(a):i,c=e.signals.get(s);c&&(n[i]=c)}return Object.assign(Object.create(e.state),n)}async function ve(t,e,n,r,o){let i=await J(t,e),a=ye(r),s=te(n,o);await i(s,a,window.__resuma)}function pe(t,e){t.toggleAttribute("aria-busy",e),t.classList.toggle("resuma-form-pending",e),t.querySelectorAll("button, input[type=submit], input[type=button]").forEach(n=>{e?(n.disabled||n.setAttribute("data-r-was-enabled","1"),n.disabled=!0):n.getAttribute("data-r-was-enabled")==="1"&&(n.disabled=!1,n.removeAttribute("data-r-was-enabled"))})}function pn(){document.addEventListener("submit",async t=>{if(!(t.target instanceof HTMLFormElement))return;let e=t.target;if(!e.getAttribute("data-r-submit")||(t.preventDefault(),e.hasAttribute("aria-busy")))return;let n=e.getAttribute("data-r-submit"),r=new FormData(e),o={};r.forEach((a,s)=>{o[s]=String(a)});let i=new URLSearchParams(o);pe(e,!0);try{let a=await fetch(e.action||`/_resuma/submit/${encodeURIComponent(n)}`,{method:"POST",credentials:"same-origin",headers:nt({"content-type":"application/x-www-form-urlencoded",accept:"application/json"}),body:i.toString()}),s=await a.json();if(!a.ok||s.ok===!1){hn(e,s.field_errors??{}),(a.status>=500||!s.field_errors)&&console.error("[r] submit",s.error??n);return}Ee(e),s.redirect&&x(s.redirect)}catch(a){console.error("[r] submit",a)}finally{document.contains(e)&&pe(e,!1)}},!0)}function hn(t,e){Ee(t);for(let[n,r]of Object.entries(e)){let o=t.querySelector(`[name="${CSS.escape(n)}"]`);if(!o)continue;let i=document.createElement("span");i.className="resuma-field-error",i.setAttribute("data-r-field-error",n),i.textContent=r,o.insertAdjacentElement("afterend",i)}}function Ee(t){t.querySelectorAll("[data-r-field-error]").forEach(e=>e.remove())}function wn(){document.addEventListener("submit",t=>{if(!(t.target instanceof HTMLFormElement))return;let e=t.target;if(!e.hasAttribute("data-r-loader-refresh")||e.getAttribute("data-r-on:submit")||e.querySelector("[data-r-on\\:submit]"))return;t.preventDefault();let n=new FormData(e),r={};n.forEach((i,a)=>{let s=String(i);s&&(r[a]=s)});let o=e.getAttribute("action")||location.pathname;window.__resuma?.navigate(L(o,r))},!0)}function bn(t){t.querySelectorAll("template[data-r-stream-chunk]").forEach(e=>{let n=e.getAttribute("data-r-stream-chunk");if(!n)return;let r=t.querySelector(`template[data-r-stream="${n}"]`);if(!r||!r.parentElement)return;let o=e.innerHTML,i=document.createRange().createContextualFragment(o);r.replaceWith(i),e.remove()})}function yn(t){if(t.startsWith("/")&&!t.startsWith("//")){y(t);return}try{let e=new URL(t,location.origin);if(e.origin===location.origin&&(e.protocol==="http:"||e.protocol==="https:")){y(e.pathname+e.search+e.hash);return}}catch{}window.location.assign(t)}function vn(t){t.querySelectorAll("[data-r-vt]").forEach(e=>{e.addEventListener("click",n=>{let r=n.target?.closest("a[href]");if(!r||r.getAttribute("target")==="_blank")return;let o=r.getAttribute("href");!o||o.startsWith("#")||o.startsWith("javascript:")||r.hasAttribute("data-r-nav")||(n.preventDefault(),yn(o))})})}async function En(t,e){let n=await fetch(`/_resuma/action/${encodeURIComponent(t)}`,{method:"POST",credentials:"same-origin",headers:nt({"content-type":"application/json"}),body:JSON.stringify({args:e})}),r;try{r=await n.json()}catch{throw n.ok?new Error(`action ${t}: invalid response`):new Error(`action ${t}: ${n.status}`)}if(!n.ok||r.ok===!1)throw new Error(r.error??`action ${t}: ${n.status}`);return r.redirect&&x(r.redirect),r.value}async function Sn(t,e){try{let n=await fetch(`/_resuma/action/${encodeURIComponent(t)}`,{method:"POST",credentials:"same-origin",headers:nt({"content-type":"application/json"}),body:JSON.stringify({args:e})}),r;try{r=await n.json()}catch{return{ok:!1,error:`action ${t}: ${n.status}`}}return!n.ok||r.ok===!1?{ok:!1,error:r.error??`action ${t}: ${n.status}`,field_errors:r.field_errors}:(r.redirect&&x(r.redirect),{ok:!0,value:r.value})}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}function kn(t,e){t.querySelectorAll("[data-r-field-error]").forEach(n=>n.remove());for(let[n,r]of Object.entries(e)){let o=t.querySelector(`[name="${CSS.escape(n)}"]`);if(!o)continue;let i=document.createElement("span");i.className="resuma-field-error",i.setAttribute("data-r-field-error",n),i.textContent=r,o.insertAdjacentElement("afterend",i)}}async function Se(t){let e=await fetch(`/_resuma/island/${encodeURIComponent(t)}`);if(!e.ok)return;let n=await e.text(),r=document.querySelector(`resuma-island[data-r-instance="${t}"]`);if(!r)return;r.outerHTML=n;let o=document.querySelector(`resuma-island[data-r-instance="${CSS.escape(t)}"]`),i=window.__resuma?.signals;!o||!i||(k(o,i),T(o,i),C(o,i),M(o,i),A(o,i),I(o,i))}function Tn(){window.__resumaDev&&window.addEventListener("resuma:dev",t=>{let e=String(t.detail??"");e.startsWith("island:")&&Se(e.slice(7))})}var de,fe,be,dn,me,ge,Te=w(()=>{"use strict";H();kt();Tt();ue();P();P();Ct();xt();At();R();K();tt();j();de="[data-r-flow-dashboard], [data-r-flow-graph], [data-r-event-stream], [data-r-worker-panel]";fe=null;be="resuma-state",dn="resuma-root";me=()=>document.getElementById(dn)??document.body;ge=!1});async function Cn(t){if(!(!t||Ht.has(t))&&!(t.startsWith("http")&&!t.startsWith(location.origin))){Ht.add(t);try{let e=await fetch(t,{headers:{Accept:"text/html"},credentials:"same-origin",cache:"no-store"});e.ok&&V.set(t,await e.text())}catch{}finally{Ht.delete(t)}}}function rt(t){Pt=t}function It(){return document.getElementById(Le)??document.body}function Mn(t){try{return new URL(t,location.origin).origin===location.origin}catch{return!1}}function xe(t,e,n=!1){if(n){if(t===e)return!0;let a="http://resuma.local",s=new URL(t,a),c=new URL(e,a);return s.search?s.pathname+s.search===c.pathname+c.search:s.pathname===c.pathname}if(t===e)return!0;let r="http://resuma.local",o=new URL(t,r),i=new URL(e,r);if(o.search)return o.pathname+o.search===i.pathname+i.search;if(o.pathname===i.pathname)return!0;if(o.pathname!=="/"&&i.pathname.startsWith(o.pathname)){let a=i.pathname.charCodeAt(o.pathname.length);return a===void 0||a===47}return!1}function Me(t,e,n,r){let o=t.getAttribute("data-r-base-class");o||(o=t.className.split(/\s+/).filter(i=>i&&i!==n).join(" "),o||(o=t.className),t.setAttribute("data-r-base-class",o)),t.className=r?`${o} ${n}`.trim():o,r?t.setAttribute("aria-current","page"):t.removeAttribute("aria-current")}function An(t,e){let n=null,r=-1;for(let o of t){let i=o.getAttribute("href");if(!i)continue;let a=o.hasAttribute("data-r-nav-exact");xe(i,e,a)&&i.length>r&&(n=o,r=i.length)}return n}function ot(t){let e=[...document.querySelectorAll("a[data-r-nav]")],n=new Set;for(let o of document.querySelectorAll("[data-r-nav-exclusive]"))n.add(o);let r=new Set;for(let o of n){let i=e.filter(s=>o.contains(s)),a=An(i,t);for(let s of i){let c=s.getAttribute("data-r-active-class");c&&(Me(s,t,c,s===a),r.add(s))}}for(let o of e){if(r.has(o))continue;let i=o.getAttribute("href");if(!i)continue;let a=o.getAttribute("data-r-active-class");if(!a)continue;let s=o.hasAttribute("data-r-nav-exact");Me(o,t,a,xe(i,t,s))}}async function _n(){if(!window.__resuma){window.location.reload();return}if(Pt){Pt(),ot(location.pathname+location.search);return}try{(await Promise.resolve().then(()=>(Te(),ke))).mountPage(),ot(location.pathname+location.search)}catch{window.location.reload()}}function Ln(){Lt(()=>{let t=It();return t.querySelector("[autofocus]")??t.querySelector("h1, [role='heading'], main")??t})}function xn(){for(st=!1;at.length;){let t=at.pop(),e=typeof t=="function"?t():t;if(e?.isConnected){!e.hasAttribute("tabindex")&&!e.matches("a,button,input,select,textarea,[tabindex]")&&e.setAttribute("tabindex","-1");try{e.focus({preventScroll:!0})}catch{e.focus()}return}}}function Lt(t){at.push(t),!st&&(st=!0,queueMicrotask(xn))}function Re(){at.length=0,st=!1}function L(t,e){let n=new URL(t,location.origin);if(e)for(let[r,o]of Object.entries(e))o!=null&&o!==""&&n.searchParams.set(r,o);return n.pathname+n.search}function Hn(t){try{let e=new URL(t,location.origin);e.searchParams.delete("_r");let n=e.searchParams.toString();return e.pathname+(n?`?${n}`:"")}catch{return t}}function Ae(t){try{let e=new URL(t,location.origin);e.searchParams.delete("_r");let n=e.searchParams.toString();return e.pathname+(n?`?${n}`:"")}catch{return t}}function Pn(t){if(typeof t=="boolean"||t===void 0){let n=t??!0;return{pushState:n,scroll:n,usePrefetch:!0}}let e=t.pushState??!0;return{pushState:e,scroll:t.scroll??e,usePrefetch:t.usePrefetch??!0,historyHref:t.historyHref}}async function U(t,e){V.clear();let n=t?.split("?")[0]??location.pathname,r=String(Date.now()),o=L(n,{...e,_r:r}),i=L(n,e);await y(o,{pushState:!1,scroll:!1,usePrefetch:!1,historyHref:i})}async function In(t,e,n,r){if(r!==ct)return;let o=new DOMParser().parseFromString(e,"text/html"),i=o.getElementById(Le),a=o.getElementById(Ce);if(!i||!a?.textContent){window.location.href=t;return}ae(),It().innerHTML=i.innerHTML;let s=document.getElementById(Ce);s&&(s.textContent=a.textContent),o.title&&(document.title=o.title);let c=n.historyHref??Hn(t),d=o.documentElement.getAttribute("dir");d?document.documentElement.setAttribute("dir",d):document.documentElement.removeAttribute("dir"),n.pushState?history.pushState({resumaNav:!0},"",c):history.replaceState({resumaNav:!0},"",c),await _n(),await se(It()),n.scroll&&window.scrollTo(0,0),Ln(),document.dispatchEvent(new CustomEvent("resuma:navigate",{detail:{href:c}}))}async function Fn(t,e,n,r){let o=e.usePrefetch?V.get(t):void 0;if(o)V.delete(t);else{let i=await fetch(t,{headers:{Accept:"text/html"},credentials:"same-origin",cache:"no-store",signal:r});if(n!==ct)return;if(!i.ok){window.location.href=t;return}o=await i.text()}n===ct&&await In(t,o,e,n)}async function y(t,e=!0){if(!Mn(t)){window.location.assign(t);return}let n=Pn(e),r=++ct;_e?.abort();let o=new AbortController;_e=o;let i=async()=>{try{await Fn(t,n,r,o.signal)}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;console.error("[r] nav",c),window.location.href=t}},a=!n.pushState&&!n.scroll,s=document;if(!a&&s.startViewTransition&&!Nn())try{await s.startViewTransition(i).finished}catch{await i()}else await i()}function Nn(){try{return!!document.querySelector(":popover-open,dialog[open]")}catch{return!1}}function x(t){if(t===Rn){U();return}let e=n=>{V.clear();let r=Ae(location.pathname+location.search),o=Ae(n),i=r===o;y(n,{pushState:!i,scroll:!i,usePrefetch:!1,historyHref:o})};if(t.startsWith("/")&&!t.startsWith("//")){e(t);return}try{let n=new URL(t,location.origin);if(n.origin===location.origin&&(n.protocol==="http:"||n.protocol==="https:")){e(n.pathname+n.search+n.hash);return}}catch{}console.warn("[r] bad redirect",t)}function On(t,e){if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||t.target&&t.target!=="_self")return!1;let n=t.getAttribute("href");if(!n||n.startsWith("#")||n.startsWith("javascript:"))return!1;if(n.startsWith("http://")||n.startsWith("https://"))try{return new URL(n).origin===location.origin}catch{return!1}return!0}function it(){document.addEventListener("mouseenter",t=>{let e=t.target;if(!(e instanceof Element))return;let r=e.closest("a[data-r-nav]")?.getAttribute("href");r&&Cn(r)},!0),document.addEventListener("click",t=>{let e=t.target;if(!(e instanceof Element))return;let n=e.closest("a[data-r-nav]");if(!n||!On(n,t))return;let r=n.getAttribute("href");r&&(t.preventDefault(),y(r))}),window.addEventListener("popstate",()=>{y(location.pathname+location.search,{pushState:!1,scroll:!1,usePrefetch:!1})})}var Le,Ce,V,Ht,Rn,Pt,at,st,ct,_e,xt=w(()=>{"use strict";tt();j();Le="resuma-root",Ce="resuma-state",V=new Map,Ht=new Set,Rn="__revalidate__";Pt=null;at=[],st=!1;ct=0,_e=null});H();kt();Tt();P();Ct();xt();At();R();K();tt();j();var qn="resuma-state",$n="resuma-root",Dn="data-r-on:",jn="data-r-cap:",Wn="data-r-inline:",E=()=>document.getElementById($n)??document.body;function Fe(){let t=document.getElementById(qn);if(!t||!t.textContent)return{signals:[],handlers:{},islands:[],actions:[]};try{let e=JSON.parse(t.textContent);return e.serialization_error&&console.error("[resuma] resumability payload failed to serialize on the server \u2014 page interactivity is broken"),e}catch(e){return console.error("[resuma] failed to parse state payload",e),{signals:[],handlers:{},islands:[],actions:[]}}}function Un(){return Fe().csrf_token??""}function Ne(t={}){let e={...t},n=Un();return n&&(e["x-resuma-csrf"]=n),e}function He(){rt(Pe),Pe(),Bn(),Jn(),it()}function Pe(){X(),G(),B();let t=Fe(),e=N(t.signals),n={};for(let[i,a]of e)n[i]=a;let r=window.__resuma,o={state:n,signals:e,handlers:t.handlers,contexts:t.contexts??{},loaded:r?.loaded??new Map,islandLoaded:r?.islandLoaded??new Map,chunkDigests:r?.chunkDigests??{},action:qe,safeAction:tr,refreshIsland:er,context:i=>o.contexts[i],navigate:y,buildUrl:L,invalidate:U,waitClient:Z,onClientReady:D};window.__resuma=o,k(E(),e),T(E(),e),C(E(),e),M(E(),e),A(E(),e),I(E(),e),Qn(E()),z(E()),Zn(E()),t.effects?.length&&Q(t.effects,e,o),et(t.visible_tasks??{},e,n,E)}var Vn=["click","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mousemove","mouseenter","mouseleave","pointerdown","pointerup","pointermove","touchstart","touchend","scroll","wheel","dragstart","dragend","drop","load"];function Bn(){for(let t of Vn)document.addEventListener(t,Kn,!0)}function zn(t){let e=t.target;return e instanceof Element?e:e instanceof Text?e.parentElement:null}async function Kn(t){let e=zn(t);if(!e)return;let n=Dn+t.type,r=jn+t.type,o=Wn+t.type;for(;e&&e!==document.body;){e.getAttribute(`data-r-prevent:${t.type}`)!==null&&t.preventDefault(),e.getAttribute(`data-r-stop:${t.type}`)!==null&&t.stopPropagation();let s=e.getAttribute(n);if(s){let c=(e.getAttribute(r)??"").split(",").map(l=>l.trim()).filter(Boolean),d=e.getAttribute(o);try{let l=await J(s,d),m=Gn(c),f=window.__resuma;await l(Rt(t,e),m,f)}catch(l){console.error("[resuma] handler error",l)}return}e=e.parentElement}}function Gn(t){let e=window.__resuma;if(!t.length)return e.state;let n={};for(let r of t){let o=r.indexOf(":"),i=o===-1?r:r.slice(0,o),a=o===-1?void 0:r.slice(o+1),s=a!=null?b(a):i,c=e.signals.get(s);c&&(n[i]=c)}return Object.assign(Object.create(e.state),n)}function Ie(t,e){t.toggleAttribute("aria-busy",e),t.classList.toggle("resuma-form-pending",e),t.querySelectorAll("button, input[type=submit], input[type=button]").forEach(n=>{e?(n.disabled||n.setAttribute("data-r-was-enabled","1"),n.disabled=!0):n.getAttribute("data-r-was-enabled")==="1"&&(n.disabled=!1,n.removeAttribute("data-r-was-enabled"))})}function Jn(){document.addEventListener("submit",async t=>{if(!(t.target instanceof HTMLFormElement))return;let e=t.target;if(!e.getAttribute("data-r-submit")||(t.preventDefault(),e.hasAttribute("aria-busy")))return;let n=e.getAttribute("data-r-submit"),r=new FormData(e),o={};r.forEach((a,s)=>{o[s]=String(a)});let i=new URLSearchParams(o);Ie(e,!0);try{let a=await fetch(e.action||`/_resuma/submit/${encodeURIComponent(n)}`,{method:"POST",credentials:"same-origin",headers:Ne({"content-type":"application/x-www-form-urlencoded",accept:"application/json"}),body:i.toString()}),s=await a.json();if(!a.ok||s.ok===!1){Xn(e,s.field_errors??{}),(a.status>=500||!s.field_errors)&&console.error("[resuma] submit error",s.error??`submit ${n} failed`);return}if(Oe(e),s.redirect){x(s.redirect);return}console.info("[resuma] submit ok",s.value)}catch(a){console.error("[resuma] submit error",a)}finally{document.contains(e)&&Ie(e,!1)}},!0)}function Xn(t,e){Oe(t);for(let[n,r]of Object.entries(e)){let o=t.querySelector(`[name="${CSS.escape(n)}"]`);if(!o)continue;let i=document.createElement("span");i.className="resuma-field-error",i.setAttribute("data-r-field-error",n),i.textContent=r,o.insertAdjacentElement("afterend",i)}}function Oe(t){t.querySelectorAll("[data-r-field-error]").forEach(e=>e.remove())}function Qn(t){t.querySelectorAll("template[data-r-stream-chunk]").forEach(e=>{let n=e.getAttribute("data-r-stream-chunk");if(!n)return;let r=t.querySelector(`template[data-r-stream="${n}"]`);if(!r||!r.parentElement)return;let o=e.innerHTML,i=document.createRange().createContextualFragment(o);r.replaceWith(i),e.remove()})}function Yn(t){if(t.startsWith("/")&&!t.startsWith("//")){y(t);return}try{let e=new URL(t,location.origin);if(e.origin===location.origin&&(e.protocol==="http:"||e.protocol==="https:")){y(e.pathname+e.search+e.hash);return}}catch{}window.location.assign(t)}function Zn(t){t.querySelectorAll("[data-r-vt]").forEach(e=>{e.addEventListener("click",n=>{let r=n.target?.closest("a[href]");if(!r||r.getAttribute("target")==="_blank")return;let o=r.getAttribute("href");!o||o.startsWith("#")||o.startsWith("javascript:")||r.hasAttribute("data-r-nav")||(n.preventDefault(),Yn(o))})})}async function tr(t,e){try{return{ok:!0,value:await qe(t,e)}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}async function qe(t,e){let n=await fetch(`/_resuma/action/${encodeURIComponent(t)}`,{method:"POST",credentials:"same-origin",headers:Ne({"content-type":"application/json"}),body:JSON.stringify({args:e})}),r;try{r=await n.json()}catch{throw n.ok?new Error(`action ${t}: invalid response`):new Error(`action ${t}: ${n.status}`)}if(!n.ok||r.ok===!1)throw new Error(r.error??`action ${t}: ${n.status}`);return r.redirect&&x(r.redirect),r.value}async function er(t){let e=await fetch(`/_resuma/island/${encodeURIComponent(t)}`);if(!e.ok)return;let n=await e.text(),r=document.querySelector(`resuma-island[data-r-instance="${t}"]`);r&&(r.outerHTML=n);let{applyDom:o}=await Promise.resolve().then(()=>(H(),Kt));o();let i=window.__resuma?.signals;i&&I(E(),i)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",He,{once:!0}):He();
//# sourceMappingURL=runtime.js.map