UNPKG

react-liberate

Version:

simple and elegant React Global State Manager.

2 lines (1 loc) 3.07 kB
"use strict";var V=Object.create;var g=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var N=(e,t)=>{for(var n in t)g(e,n,{get:t[n],enumerable:!0})},k=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of H(t))!J.call(e,s)&&s!==n&&g(e,s,{get:()=>t[s],enumerable:!(i=W(t,s))||i.enumerable});return e};var U=(e,t,n)=>(n=e!=null?V(B(e)):{},k(t||!e||!e.__esModule?g(n,"default",{value:e,enumerable:!0}):n,e)),q=e=>k(g({},"__esModule",{value:!0}),e);var Z={};N(Z,{createLiberate:()=>j,defineStore:()=>M,liberate:()=>c,setActiveLiberate:()=>w});module.exports=q(Z);var o=require("@maoism/runtime-core"),G=require("savage-types");var v=U(require("react"),1),a=require("@maoism/runtime-core"),x=require("savage-types"),z=require("savage-utils");function S(){return{}}function P(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}function T(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,i)=>e.set(i,n)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!t.hasOwnProperty(n))continue;let i=t[n],s=e[n];P(s)&&P(i)&&e.hasOwnProperty(n)&&!(0,a.isRef)(i)&&!(0,a.isReactive)(i)?e[n]=T(s,i):e[n]=i}return e}function Q(){let[,e]=v.default.useState({});return v.default.useCallback(()=>e({}),[])}var L=new WeakMap;function R(){let e=Q(),t=L.get(e);t||(t=new a.ReactiveEffect(S,S,()=>{e(),t!=null&&t.dirty&&t.run()}),t.run(),L.set(e,t)),a.activeEffect.value=t}var A=require("react");var E="component";function _(e){E=e}function X(){try{_("pending"),(0,A.useState)(),_("component")}catch(e){_("js")}return E}function h(e,t=S){X()==="component"?e():t()}function Y(e){try{e()}catch(t){}}Y(()=>{let e=globalThis.console.error;globalThis.console.error=function(...t){E!=="pending"&&e(...t)}});var c;function j(){return{_store:new Map,_state:new Map,_plugins:new Set,use(e){return this._plugins.add(e),this}}}function w(e){c=e}w(j());var O=new Set;function D(e,t=S){return O.add(e),()=>{O.delete(e),t()}}function F(e){O.forEach(t=>t(e))}var d=!1;function M(e,t){let n=!1;function i(){let{state:l,actions:m,getters:b}=t,f=(0,o.reactive)(l?l():{}),C=l?l():{},I={$id:e,$state:f,$patch(r){n=!1,(0,G.isFunction)(r)?r(f):T(f,r),n=!0,F(f)},$reset(){this.$patch(r=>{Object.assign(r,C)})},$subscribe(r){let u=D(r,()=>y()),y=(0,o.watch)(f,K=>{n&&r(K)},{deep:!0,flush:"sync"});return u}};c._state.set(e,f);let p=(0,o.reactive)(Object.assign(I,(0,o.toRefs)(f),Object.keys(m!=null?m:[]).reduce((r,u)=>Object.assign(r,{[u]:function(...y){return m[u].call(p,...y)}}),{}),Object.keys(b||{}).reduce((r,u)=>(r[u]=(0,o.markRaw)((0,o.computed)(()=>b==null?void 0:b[u].call(p,p))),r),{}))),$=d;d=!0,c._plugins.forEach(r=>{Object.assign(p,r({store:p,options:t})||{})}),d=$,c._store.set(e,p)}function s(){return d||h(()=>o.activeEffect.value=void 0),c._store.has(e)||i(),d||h(()=>R()),n=!0,c._store.get(e)}return s.$id=e,s}0&&(module.exports={createLiberate,defineStore,liberate,setActiveLiberate});