-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrea.min.js
1 lines (1 loc) · 1.37 KB
/
rea.min.js
1
function Rea(e){const t={},o=[],r=new Map,n=new Proxy(e.data,{set:(l,c,s,d)=>(Array.isArray(s)&&(s=new Proxy(s,{set:(e,t,o,r)=>(setTimeout(()=>{n[c]=e.slice()}),Reflect.set(e,t,o,r))})),setTimeout(()=>{const l=document.querySelectorAll(`[r-${c}]`);for(let e of l||[])e.textContent=s;const d=document.querySelectorAll(`[r-show-${c}]`);for(let e of d||[])e.style.display=s?"":"none";const a=document.querySelectorAll(`[r-model-${c}]`);for(let e of a||[])e.value=s,o.includes(e)||(o.push(e),e.addEventListener("input",()=>{n[c]=e.value}));const i=document.querySelectorAll(`[r-for-${c}]`);for(let e of i||[]){r.get(e)||r.set(e,e.innerHTML||"<div>r-prop</div>"),e.innerHTML=s.map((t,o)=>r.get(e).replace(/r-prop-(\w+)/g,(e,o)=>t[o]).replace(/r-prop/g,t).replace(/r-event="/g,'r-event="'+o+":")).join("");const t=e.querySelectorAll("[r-event]");for(let e of t||[]){const[t,o,r]=e.getAttribute("r-event").split(":");e.addEventListener(o,e=>{n[r](e,+t)})}}for(let o of t[c]||[])n[o]=e.computed[o].call(n)}),Reflect.set(l,c,s,d))});for(let t in e.data)n[t]=e.data[t];for(let o in e.computed){const r=new Proxy(e.data,{get:(e,r,n)=>(t[r]||(t[r]=new Set),t[r].add(o),Reflect.get(e,r,n))});n[o]=e.computed[o].call(r)}for(let t in e.methods)n[t]=e.methods[t].bind(n);const l=document.querySelectorAll("[r-event]");for(let e of l||[]){const[t,o]=e.getAttribute("r-event").split(":");e.addEventListener(t,n[o])}}