@nent/core
Version:
4 lines • 1.77 kB
JavaScript
/*!
* NENT 2022
*/
import{g as e,f as t}from"./index-916ca544.js";const n=e=>!("isConnected"in e)||e.isConnected,s=(()=>{let e;return(...t)=>{e&&clearTimeout(e),e=setTimeout((()=>{e=0,(e=>{for(let t of e.keys())e.set(t,e.get(t).filter(n))})(...t)}),2e3)}})(),o=e=>"function"==typeof e?e():e,r=(n,r)=>{const c=((e,t=((e,t)=>e!==t))=>{const n=o(e);let s=new Map(Object.entries(null!=n?n:{}));const r={dispose:[],get:[],set:[],reset:[]},c=()=>{var t;s=new Map(Object.entries(null!==(t=o(e))&&void 0!==t?t:{})),r.reset.forEach((e=>e()))},i=e=>(r.get.forEach((t=>t(e))),s.get(e)),u=(e,n)=>{const o=s.get(e);t(n,o,e)&&(s.set(e,n),r.set.forEach((t=>t(e,n,o))))},a="undefined"==typeof Proxy?{}:new Proxy(n,{get:(e,t)=>i(t),ownKeys:()=>Array.from(s.keys()),getOwnPropertyDescriptor:()=>({enumerable:!0,configurable:!0}),has:(e,t)=>s.has(t),set:(e,t,n)=>(u(t,n),!0)}),p=(e,t)=>(r[e].push(t),()=>{((e,t)=>{const n=e.indexOf(t);n>=0&&(e[n]=e[e.length-1],e.length--)})(r[e],t)});return{state:a,get:i,set:u,on:p,onChange:(t,n)=>{const s=p("set",((e,s)=>{e===t&&n(s)})),r=p("reset",(()=>n(o(e)[t])));return()=>{s(),r()}},use:(...e)=>{const t=e.reduce(((e,t)=>(t.set&&e.push(p("set",t.set)),t.get&&e.push(p("get",t.get)),t.reset&&e.push(p("reset",t.reset)),t.dispose&&e.push(p("dispose",t.dispose)),e)),[]);return()=>t.forEach((e=>e()))},dispose:()=>{r.dispose.forEach((e=>e())),c()},reset:c,forceUpdate:e=>{const t=s.get(e);r.set.forEach((n=>n(e,t,t)))}}})(n,r);return c.use((()=>{if("function"!=typeof e)return{};const n=new Map;return{dispose:()=>n.clear(),get:t=>{const s=e();s&&((e,t,n)=>{const s=e.get(t);s?s.includes(n)||s.push(n):e.set(t,[n])})(n,t,s)},set:e=>{const o=n.get(e);o&&n.set(e,o.filter(t)),s(n)},reset:()=>{n.forEach((e=>e.forEach(t))),s(n)}}})()),c};export{r as c}