resuma 1.3.1

Resuma — resumable SSR Rust web framework: zero hydration, islands, server actions, Flow (Axum).
Documentation
1
var f="resuma-state",p="resuma-root",h="data-r-on:",b="data-r-cap:",v="data-r-inline:",a="/_resuma/core.js?v=1.3.1",l=["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 y(){let e=document.getElementById(f);if(!e||!e.textContent)return{signals:[],handlers:{},islands:[]};try{return JSON.parse(e.textContent)}catch{return{signals:[],handlers:{},islands:[]}}}function R(){return document.getElementById(p)??document.body}function _(e){for(let n of Object.values(e))if(Object.keys(n).length)return!0;return!1}function E(e,n){if(e.signals.length||e.islands.length||e.effects?.length||_(e.handlers)||e.visible_tasks&&Object.keys(e.visible_tasks).length||e.lazy_chunks?.length)return!0;let r=l.map(o=>`[data-r-on\\:${o}]`).join(", ");return!!n.querySelector(`resuma-island, resuma-boundary, resuma-dyn, resuma-show, resuma-for, resuma-match, [data-r-bind], [data-r-submit], ${r}, template[data-r-portal], template[data-r-stream-chunk], [data-r-vt], a[data-r-nav], [data-r-popup], [data-r-modal], [data-r-gesture], [data-r-virtual], dialog[data-r-modal]`)}async function d(){window.__resumaCoreReady||(window.__resumaCoreReady=import(a).then(e=>e.bootstrap())),await window.__resumaCoreReady}function u(){let e=y();E(e,R())&&d()}function w(e){let n=e.target;return n instanceof Element?n:n instanceof Text?n.parentElement:null}async function k(e){let n=w(e);if(!n)return;let r=h+e.type,o=b+e.type,c=v+e.type;for(;n&&n!==document.body;){n.getAttribute(`data-r-prevent:${e.type}`)!==null&&e.preventDefault(),n.getAttribute(`data-r-stop:${e.type}`)!==null&&e.stopPropagation();let s=n.getAttribute(r);if(s){let g=(n.getAttribute(o)??"").split(",").map(t=>t.trim()).filter(Boolean),m=n.getAttribute(c);try{await d(),await(await import(a)).runHandler(s,m,e,g,n)}catch(t){console.error("[resuma] handler error",t)}return}n=n.parentElement}}function P(){for(let e of l)document.addEventListener(e,k,!0)}function i(){P(),u()}u();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",i,{once:!0}):i();