resuma 0.4.2

Resuma - SSR + Resumability + Islands + Server Actions + JS Bridge for Rust
Documentation
1
var m="resuma-state",p="resuma-root",g="data-r-on:",f="data-r-cap:",y="data-r-inline:",a="/_resuma/core.js",E=["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 _(){let t=document.getElementById(m);if(!t||!t.textContent)return{signals:[],handlers:{},islands:[]};try{return JSON.parse(t.textContent)}catch{return{signals:[],handlers:{},islands:[]}}}function h(){return document.getElementById(p)??document.body}function R(t,e){return t.signals.length||t.islands.length||t.visible_tasks&&Object.keys(t.visible_tasks).length||t.lazy_chunks?.length?!0:!!e.querySelector("resuma-island, resuma-boundary, resuma-dyn, [data-r-bind], [data-r-submit], template[data-r-portal], template[data-r-stream-chunk], [data-r-vt], a[data-r-nav]")}async function s(){window.__resumaCoreReady||(window.__resumaCoreReady=import(a).then(t=>t.bootstrap())),await window.__resumaCoreReady}function b(t){let e=t.target;return e instanceof Element?e:e instanceof Text?e.parentElement:null}async function w(t){let e=b(t);if(!e)return;let i=g+t.type,u=f+t.type,d=y+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 r=e.getAttribute(i);if(r){let c=(e.getAttribute(u)??"").split(",").map(n=>n.trim()).filter(Boolean),l=e.getAttribute(d);try{await s(),await(await import(a)).runHandler(r,l,t,c)}catch(n){console.error("[resuma] handler error",n)}return}e=e.parentElement}}function v(){for(let t of E)document.addEventListener(t,w,!0)}function o(){v();let t=_();R(t,h())&&s()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",o,{once:!0}):o();