var ie=Object.defineProperty;var y=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(r){throw n=[r],r}};var X=(t,e)=>{for(var n in e)ie(t,n,{get:e[n],enumerable:!0})};function q(){for(let t of gt)document.querySelectorAll(`[data-r-portal-slot="${CSS.escape(t)}"]`).forEach(e=>e.remove());gt=Y,Y=new Set}function Q(t){return document.getElementById(t)??document.querySelector(`[data-r-portal-target="${CSS.escape(t)}"]`)}function Z(t){let e=mt.get(t);return e||(e=`p${++ae}`,mt.set(t,e)),Y.add(e),e}function tt(t,e){t.querySelectorAll(`[data-r-portal-slot="${CSS.escape(e)}"]`).forEach(n=>n.remove())}function pt(t,e,n){tt(e,n);let r=document.createElement("div");r.dataset.rPortalSlot=n,r.appendChild(t.content.cloneNode(!0)),e.appendChild(r)}function W(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=Q(r);o&&pt(e,o,Z(e))})}function wt(t,e,n){let r=t.querySelector("template[data-r-portal]");r&&pt(r,e,n)}var ae,mt,Y,gt,N=y(()=>{"use strict";ae=0,mt=new WeakMap,Y=new Set,gt=new Set});function p(t){et.push(t)}function $(){for(;et.length;){let t=et.pop();try{t?.()}catch{}}}var et,E=y(()=>{"use strict";et=[]});var Rt={};X(Rt,{applyDom:()=>he,bindFor:()=>T,bindMatch:()=>M,bindReactiveAttrs:()=>S,bindReactiveSubtree:()=>Mt,bindReactiveText:()=>v,bindShows:()=>k,initSignals:()=>P,matchValueString:()=>kt,signalId:()=>w});function P(t){let e=new Map;for(let n of t){let r=w(n.id);e.set(r,se(r,n.value))}return e}function w(t){return typeof t=="string"?t:typeof t=="number"?`s${t}`:`s${t[0]}`}function se(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 v(t,e){t.querySelectorAll(ce.toLowerCase()).forEach(r=>{if(ht.has(r))return;let o=r.getAttribute("data-r-signal");if(!o)return;let i=e.get(o);i&&(r.textContent=H(i.value),p(i.subscribe(a=>{r.textContent=H(a)})),ht.add(r))})}function S(t,e){t.querySelectorAll("[data-r-bind]").forEach(r=>Et(r,e)),le(t,e)}function le(t,e){let n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT),r=n.currentNode;for(;r;)r instanceof HTMLElement&&Et(r,e),r=n.nextNode()}function ue(t){let e=t.toLowerCase();return e.startsWith("on")||e==="style"}function fe(t){let e=t.replace(/[\u0000-\u0020]+/g,"");return/^(?:javascript|vbscript|data):/i.test(e)?"":t}function Et(t,e){if(yt.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(ue(i))continue;let[a,s="{}"]=r.value.split("|"),c=e.get(a);if(!c)continue;let u=de.has(i.toLowerCase()),l=f=>{let d=s.replace("{}",H(f));u&&(d=fe(d)),t.setAttribute(i,d)};l(c.value),p(c.subscribe(l)),n=!0}n&&yt.add(t)}function H(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 kt(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 H(t)}}function k(t,e){t.querySelectorAll("resuma-show").forEach(n=>{if(bt.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=u=>{let l=o?!u:!!u;i.hidden=!l,a&&(a.hidden=l);let f=n.dataset.rPortalTarget,d=i.querySelector("template[data-r-portal]");if(!f&&d&&(f=d.getAttribute("data-r-portal")??void 0,f&&(n.dataset.rPortalTarget=f)),f){let m=Q(f);if(m){let g=Z(n);l?d&&wt(i,m,g):tt(m,g)}}};c(s.value),p(s.subscribe(c)),bt.add(n)})}function x(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 H(t)}function Tt(t){return t.hasAttribute("data-r-signal")}function Mt(t,e){v(t,e),S(t,e)}function me(t,e,n){if(n){let i=n.cloneNode(!0);if(i.setAttribute("data-r-for-key",e),i.removeAttribute("data-r-for-new"),i.querySelectorAll("resuma-dyn").forEach(a=>{Tt(a)||(a.textContent=x(t))}),!i.querySelector("resuma-dyn")){let a=i.querySelector(".todo-title");a&&(a.textContent=x(t))}return 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=x(t),r.appendChild(o),r}function ge(t,e){if(t.querySelectorAll("resuma-dyn").forEach(n=>{Tt(n)||(n.textContent=x(e))}),!t.querySelector("resuma-dyn")){let n=t.querySelector(".todo-title");n&&(n.textContent=x(e))}}function pe(t,e,n){if(e&&t&&typeof t=="object"){let r=t[e];if(r!=null)return String(r)}return String(n)}function we(t,e){let n=new Set;return t.map((r,o)=>{let i=pe(r,e,o);return n.has(i)&&(i=`${i}:${o}`),n.add(i),i})}function T(t,e){t.querySelectorAll("resuma-for").forEach(n=>{if(vt.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;let s=c=>{let u=Array.isArray(c)?c:[],l=new Map;i.querySelectorAll("[data-r-for-item]").forEach(g=>{let F=g.getAttribute("data-r-for-key");F&&l.set(F,g)});let f=document.createDocumentFragment(),d=i.querySelector("[data-r-for-item]:not([data-r-for-new])")??void 0,m=we(u,o);u.forEach((g,F)=>{let J=m[F],_=l.get(J);_?(l.delete(J),ge(_,g)):(_=me(g,J,d),_.setAttribute("data-r-for-new","true")),f.appendChild(_)}),i.replaceChildren(f),l.forEach(g=>g.remove()),Mt(i,e)};s(a.value),p(a.subscribe(s)),vt.add(n)})}function M(t,e){t.querySelectorAll("resuma-match").forEach(n=>{if(St.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 u=kt(c),l=!1;i.forEach(f=>{let m=(f.getAttribute("data-r-match-when")??"")===u;f.hidden=!m,m&&(l=!0)}),a&&(a.hidden=l)};s(o.value),p(o.subscribe(s)),St.add(n)})}function he(){let t=window.__resuma;if(!t)return;let e=document.getElementById("resuma-root")??document.body;v(e,t.signals),S(e,t.signals),k(e,t.signals),T(e,t.signals),M(e,t.signals)}var ce,ht,yt,bt,vt,St,de,R=y(()=>{"use strict";N();E();ce="RESUMA-DYN",ht=new WeakSet,yt=new WeakSet,bt=new WeakSet,vt=new WeakSet,St=new WeakSet;de=new Set(["href","src","action","formaction","xlink:href","poster","background","ping","data"])});function C(t,e){let n=t.querySelectorAll(ye),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,u)=>{for(let l of c)l.isIntersecting&&(u.unobserve(l.target),Ct(o,i,e))},{rootMargin:"100px"});r.push(s),s.observe(o);return}Ct(o,i,e)}),r.length&&p(()=>{for(let o of r)o.disconnect()})}async function Ct(t,e,n){let r=t.getAttribute("data-r-props")??"{}",o={};try{o=JSON.parse(r)}catch{}await be(e,o,t,n)}async function be(t,e,n,r){if(n.dataset.rHydrated!=="true")try{let o=await import(`/_resuma/island-chunk/${t}.js`);typeof o.resume=="function"&&(o.resume(e,r,n),n.dataset.rHydrated="true")}catch(o){console.debug("[r] island static",t,o)}}var ye,nt=y(()=>{"use strict";E();ye="resuma-island"});function ve(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(w(i));a&&(r[o]=a)}return r}function j(){for(;I.length;){let t=I.pop();try{t?.()}catch{}}}function D(t,e,n){for(let r of t)try{let o=ve(r.captures,e,n),i=new Function(`return (${r.body});`)();if(r.kind==="debounce"){let s=i(o,n);typeof s=="function"&&I.push(s)}else{let s=r.target!=null?e.get(w(r.target)):void 0,c=()=>{try{let d=i(o,n);s&&d!==void 0&&s.set(d)}catch(d){console.error("[r] effect",r.id,d)}},u,l=()=>{let d=r.debounce_ms;if(d!=null&&d>0){u!==void 0&&clearTimeout(u),u=setTimeout(c,d);return}c()};l(),I.push(()=>{u!==void 0&&clearTimeout(u)});let f=new Set;for(let d of r.deps)f.add(w(d));if(r.captures)for(let d of Object.values(r.captures))f.add(w(d));for(let d of f){let g=e.get(d)?.subscribe(()=>l());g&&I.push(g)}}}catch(o){console.error("[r] effect init",r.id,o)}}var I,rt=y(()=>{"use strict";R();I=[]});function _t(){return window.__resuma}async function Se(t){let e=_t(),n=e.loaded.get(t);if(n)return n;let r=ot.get(t);return r||(r=import(`/_resuma/handler/${t}.js`),ot.set(t,r),r.finally(()=>ot.delete(t))),n=await r,e.loaded.set(t,n),n}async function V(t,e){if(e){let c=Lt.get(e);return c||(c=At(e),Lt.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=_t();if(r==="__page__"){let c=i.handlers[r]?.[o];if(c)return At(c)}let s=(await Se(r))[o];if(!s)throw new Error(`handler ${o} missing in ${r}`);return s}function At(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 Lt,ot,it=y(()=>{"use strict";Lt=new Map,ot=new Map});var O=y(()=>{"use strict"});function Ht(t){let e=window.__resuma;e&&(e.loaded.has(t)||import(`/_resuma/handler/${t}.js`).then(n=>{e.loaded.set(t,n)}).catch(()=>{}))}function Pt(t,e){e.querySelectorAll(`[${xt}]`).forEach(o=>o.remove());let n=[...new Set(t.filter(o=>o&&o!=="__page__"))];if(!n.length)return;if(!("IntersectionObserver"in window)){for(let o of n)Ht(o);return}let r=new IntersectionObserver((o,i)=>{for(let a of o){if(!a.isIntersecting)continue;let s=a.target.dataset.rChunk;s&&Ht(s),i.unobserve(a.target)}},{rootMargin:"120px"});p(()=>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(xt,"true"),e.appendChild(i),r.observe(i)}}var xt,It=y(()=>{"use strict";E();xt="data-r-lazy-chunk-marker"});function Ee(t){return typeof t=="string"?{body:t}:t}function ke(t,e,n){let r=Object.create(n);if(!t)return r;for(let[o,i]of Object.entries(t)){let a=e.get(w(i));a&&(r[o]=a)}return r}function U(t,e,n,r){let o=Object.entries(t).map(([c,u])=>[c,Ee(u)]);if(!o.length)return;let i=async(c,u)=>{try{let l=u.body.trim();l.endsWith(")()")&&(l=l.slice(0,-2));let f=ke(u.captures,e,n),d=new Function("state","__resuma",`return (${l})(state, __resuma);`),m=await Promise.resolve(d(f,window.__resuma));typeof m=="function"&&p(m)}catch(l){console.error("[r] task",c,l)}},a=new Set(o.map(([c])=>c)),s=(c,u)=>{a.has(c)&&(a.delete(c),i(c,u))};if("IntersectionObserver"in window){let c=new IntersectionObserver((u,l)=>{for(let f of u){if(!f.isIntersecting)continue;let d=f.target.dataset.rVisibleTask,m=d?o.find(([g])=>g===d)?.[1]:void 0;d&&m&&s(d,m),l.unobserve(f.target)}},{rootMargin:"50px"});p(()=>c.disconnect()),r().querySelectorAll("[data-r-visible-task]").forEach(u=>u.remove());for(let[u]of o){let l=document.createElement("span");l.dataset.rVisibleTask=u,l.style.cssText="position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden",r().appendChild(l),c.observe(l)}}else for(let[c,u]of o)s(c,u)}var at=y(()=>{"use strict";O();R();E()});var Ot={};X(Ot,{initFlowWidgets:()=>Te});function Te(t){}var Ft=y(()=>{"use strict"});var Gt={};X(Gt,{bootstrap:()=>_e,buildLocalState:()=>Dt,mountFlowWidgets:()=>Re,mountPage:()=>st,mutationHeaders:()=>ct,runHandler:()=>xe});function Me(t){return t instanceof Document||t instanceof Element?!!t.querySelector(qt):!1}async function $t(t){if(Me(t))try{(await Promise.resolve().then(()=>(Ft(),Ot))).initFlowWidgets(t)}catch(e){console.error("[r] flow load",e)}}function Re(t=document){$t(t)}function Le(){let t=document.getElementById(jt);if(!t?.textContent)return"";try{return JSON.parse(t.textContent).csrf_token??""}catch{return""}}function ct(t={}){let e={...t},n=Le();return n&&(e["x-resuma-csrf"]=n),e}function Ae(){let t=document.getElementById(jt);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 st(){j(),$(),q();let t=Ae(),e=P(t.signals),n={};for(let[a,s]of e)n[a]=s;let r=window.__resuma,o={state:n,signals:e,handlers:t.handlers,contexts:t.contexts??{},loaded:r?.loaded??new Map,action:Ut,safeAction:We,refreshIsland:Bt,context:a=>o.contexts[a],navigate:h,buildUrl:L,invalidate:G};window.__resuma=o;let i=Wt();v(i,e),S(i,e),k(i,e),T(i,e),M(i,e),C(i,e),Oe(i),W(i),qe(i),$t(i),U(t.visible_tasks??{},e,n,Wt),D(t.effects??[],e,o),Pt(t.lazy_chunks??[],i)}async function _e(){Nt||(Nt=!0,B(st),st(),He(),Ie(),z(),Ne())}function Dt(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?w(a):i,c=e.signals.get(s);c&&(n[i]=c)}return Object.assign(Object.create(e.state),n)}async function xe(t,e,n,r){let o=await V(t,e),i=Dt(r);await o(n,i,window.__resuma)}function He(){document.addEventListener("submit",async t=>{if(!(t.target instanceof HTMLFormElement))return;let e=t.target;if(!e.getAttribute("data-r-submit"))return;t.preventDefault();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);try{let a=await fetch(e.action||`/_resuma/submit/${encodeURIComponent(n)}`,{method:"POST",credentials:"same-origin",headers:ct({"content-type":"application/x-www-form-urlencoded",accept:"application/json"}),body:i.toString()}),s=await a.json();if(!a.ok||s.ok===!1){Pe(e,s.field_errors??{}),(a.status>=500||!s.field_errors)&&console.error("[r] submit",s.error??n);return}Vt(e),s.redirect&&A(s.redirect)}catch(a){console.error("[r] submit",a)}},!0)}function Pe(t,e){Vt(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 Vt(t){t.querySelectorAll("[data-r-field-error]").forEach(e=>e.remove())}function Ie(){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 Oe(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 Fe(t){if(t.startsWith("/")&&!t.startsWith("//")){h(t);return}try{let e=new URL(t,location.origin);if(e.origin===location.origin&&(e.protocol==="http:"||e.protocol==="https:")){h(e.pathname+e.search+e.hash);return}}catch{}window.location.assign(t)}function qe(t){"startViewTransition"in document&&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");if(!o||o.startsWith("#")||o.startsWith("javascript:"))return;n.preventDefault();let i=()=>Fe(o);document.startViewTransition?.(i)??i()})})}async function Ut(t,e){let n=await fetch(`/_resuma/action/${encodeURIComponent(t)}`,{method:"POST",credentials:"same-origin",headers:ct({"content-type":"application/json"}),body:JSON.stringify({args:e})});if(!n.ok)throw new Error(`action ${t}: ${n.status}`);let r=await n.json();if(r.ok===!1)throw new Error(r.error??"action failed");return r.redirect&&A(r.redirect),r.value}async function We(t,e){try{return{ok:!0,value:await Ut(t,e)}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}async function Bt(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||(v(o,i),S(o,i),k(o,i),T(o,i),M(o,i),C(o,i))}function Ne(){if(!window.__resumaDev||typeof WebSocket>"u")return;let t=location.protocol==="https:"?"wss":"ws",e=!1,n=()=>{let r=new WebSocket(`${t}://${location.host}/_resuma/dev/ws`);r.addEventListener("open",()=>{if(e){location.reload();return}e=!0}),r.addEventListener("message",o=>{let i=String(o.data);if(i==="reload"){location.reload();return}i.startsWith("island:")&&Bt(i.slice(7))}),r.addEventListener("close",()=>{setTimeout(n,500)}),r.addEventListener("error",()=>{r.close()})};n()}var qt,jt,Ce,Wt,Nt,zt=y(()=>{"use strict";R();nt();rt();It();it();lt();at();E();N();O();qt="[data-r-flow-dashboard], [data-r-flow-graph], [data-r-event-stream], [data-r-worker-panel]";jt="resuma-state",Ce="resuma-root";Wt=()=>document.getElementById(Ce)??document.body;Nt=!1});async function $e(t){if(!(!t||ut.has(t))&&!(t.startsWith("http")&&!t.startsWith(location.origin))){ut.add(t);try{let e=await fetch(t,{headers:{Accept:"text/html"},credentials:"same-origin"});e.ok&&K.set(t,await e.text())}catch{}finally{ut.delete(t)}}}function B(t){ft=t}function Qt(){return document.getElementById(Yt)??document.body}function je(t){try{return new URL(t,location.origin).origin===location.origin}catch{return!1}}function De(t,e){if(t===e)return!0;let n="http://resuma.local",r=new URL(t,n),o=new URL(e,n);if(r.search)return r.pathname+r.search===o.pathname+o.search;if(r.pathname===o.pathname)return!0;if(r.pathname!=="/"&&o.pathname.startsWith(r.pathname)){let i=o.pathname.charCodeAt(r.pathname.length);return i===void 0||i===47}return!1}function Jt(t){document.querySelectorAll("a[data-r-nav]").forEach(e=>{let n=e.getAttribute("href");if(!n)return;let r=e.getAttribute("data-r-active-class");if(!r)return;let o=(e.getAttribute("data-r-base-class")??e.className).split(/\s+/).filter(i=>i&&i!==r).join(" ");e.setAttribute("data-r-base-class",o),e.className=De(n,t)?`${o} ${r}`.trim():o})}async function Ve(){if(!window.__resuma){window.location.reload();return}if(ft){ft(),Jt(location.pathname+location.search);return}try{(await Promise.resolve().then(()=>(zt(),Gt))).mountPage(),Jt(location.pathname+location.search)}catch{window.location.reload()}}function Ue(){let t=Qt(),e=t.querySelector("[autofocus]")??t.querySelector("h1, [role='heading'], main")??t;e.hasAttribute("tabindex")||e.setAttribute("tabindex","-1");try{e.focus({preventScroll:!0})}catch{e.focus()}}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}async function G(t,e){K.clear();let n=t?.split("?")[0]??location.pathname,r=String(Date.now());await h(L(n,{...e,_r:r}))}async function h(t,e=!0){if(!je(t)){window.location.assign(t);return}let n=++dt;Xt?.abort();let r=new AbortController;Xt=r;try{let o=K.get(t);if(o)K.delete(t);else{let u=await fetch(t,{headers:{Accept:"text/html"},credentials:"same-origin",signal:r.signal});if(n!==dt)return;if(!u.ok){window.location.href=t;return}o=await u.text()}if(n!==dt)return;let i=new DOMParser().parseFromString(o,"text/html"),a=i.getElementById(Yt),s=i.getElementById(Kt);if(!a||!s?.textContent){window.location.href=t;return}Qt().innerHTML=a.innerHTML;let c=document.getElementById(Kt);c&&(c.textContent=s.textContent),i.title&&(document.title=i.title),e&&history.pushState({resumaNav:!0},"",t),Ve(),e&&window.scrollTo(0,0),Ue(),document.dispatchEvent(new CustomEvent("resuma:navigate",{detail:{href:t}}))}catch(o){if(o instanceof DOMException&&o.name==="AbortError")return;console.error("[r] nav",o),window.location.href=t}}function A(t){if(t.startsWith("/")&&!t.startsWith("//")){h(t);return}try{let e=new URL(t,location.origin);if(e.origin===location.origin&&(e.protocol==="http:"||e.protocol==="https:")){h(e.pathname+e.search+e.hash);return}}catch{}console.warn("[r] bad redirect",t)}function Be(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 z(){document.addEventListener("mouseenter",t=>{let e=t.target;if(!(e instanceof Element))return;let r=e.closest("a[data-r-nav]")?.getAttribute("href");r&&$e(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||!Be(n,t))return;let r=n.getAttribute("href");r&&(t.preventDefault(),h(r))}),window.addEventListener("popstate",()=>{h(location.pathname+location.search,!1)})}var Yt,Kt,K,ut,ft,dt,Xt,lt=y(()=>{"use strict";O();Yt="resuma-root",Kt="resuma-state",K=new Map,ut=new Set;ft=null;dt=0,Xt=null});R();nt();rt();it();lt();at();E();N();O();var Ge="resuma-state",ze="resuma-root",Ke="data-r-on:",Je="data-r-cap:",Xe="data-r-inline:",b=()=>document.getElementById(ze)??document.body;function ee(){let t=document.getElementById(Ge);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 Ye(){return ee().csrf_token??""}function ne(t={}){let e={...t},n=Ye();return n&&(e["x-resuma-csrf"]=n),e}function Zt(){B(te),te(),Ze(),rn(),z()}function te(){j(),$(),q();let t=ee(),e=P(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,action:oe,safeAction:ln,refreshIsland:un,context:i=>o.contexts[i],navigate:h,buildUrl:L,invalidate:G};window.__resuma=o,v(b(),e),S(b(),e),k(b(),e),T(b(),e),M(b(),e),C(b(),e),an(b()),W(b()),cn(b()),t.effects?.length&&D(t.effects,e,o),U(t.visible_tasks??{},e,n,b)}var Qe=["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 Ze(){for(let t of Qe)document.addEventListener(t,en,!0)}function tn(t){let e=t.target;return e instanceof Element?e:e instanceof Text?e.parentElement:null}async function en(t){let e=tn(t);if(!e)return;let n=Ke+t.type,r=Je+t.type,o=Xe+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),u=e.getAttribute(o);try{let l=await V(s,u),f=nn(c),d=window.__resuma;await l(t,f,d)}catch(l){console.error("[resuma] handler error",l)}return}e=e.parentElement}}function nn(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?w(a):i,c=e.signals.get(s);c&&(n[i]=c)}return Object.assign(Object.create(e.state),n)}function rn(){document.addEventListener("submit",async t=>{if(!(t.target instanceof HTMLFormElement))return;let e=t.target;if(!e.getAttribute("data-r-submit"))return;t.preventDefault();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);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){on(e,s.field_errors??{}),(a.status>=500||!s.field_errors)&&console.error("[resuma] submit error",s.error??`submit ${n} failed`);return}if(re(e),s.redirect){A(s.redirect);return}console.info("[resuma] submit ok",s.value)}catch(a){console.error("[resuma] submit error",a)}},!0)}function on(t,e){re(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 re(t){t.querySelectorAll("[data-r-field-error]").forEach(e=>e.remove())}function an(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 sn(t){if(t.startsWith("/")&&!t.startsWith("//")){h(t);return}try{let e=new URL(t,location.origin);if(e.origin===location.origin&&(e.protocol==="http:"||e.protocol==="https:")){h(e.pathname+e.search+e.hash);return}}catch{}window.location.assign(t)}function cn(t){"startViewTransition"in document&&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");if(!o||o.startsWith("#")||o.startsWith("javascript:"))return;n.preventDefault();let i=()=>sn(o);document.startViewTransition?.(i)??i()})})}async function ln(t,e){try{return{ok:!0,value:await oe(t,e)}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}async function oe(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})});if(!n.ok)throw new Error(`[resuma] action ${t} failed: ${n.status}`);let r=await n.json();if(r.ok===!1)throw new Error(r.error??"action failed");return r.redirect&&A(r.redirect),r.value}async function un(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(()=>(R(),Rt));o();let i=window.__resuma?.signals;i&&C(b(),i)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Zt,{once:!0}):Zt();
//# sourceMappingURL=runtime.js.map