react19-store
Version:
A simple yet elegant, light weight, react18 global store to replace Zustand for better tree shaking.
2 lines (1 loc) • 1.36 kB
JavaScript
var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var s in e)a(t,s,{get:e[s],enumerable:!0})},m=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of l(e))!u.call(t,n)&&n!==s&&a(t,n,{get:()=>e[n],enumerable:!(r=f(e,n))||r.enumerable});return t};var S=t=>m(a({},"__esModule",{value:!0}),t);var P={};d(P,{persist:()=>O});module.exports=S(P);var w=(t,e)=>{let s=document.cookie.split("; ").find(r=>r.startsWith(t));switch(e==null?void 0:e.storage){case"cookie":return s==null?void 0:s.split("=")[1];case"session":return sessionStorage.getItem(t);default:return localStorage.getItem(t)}},I=(t,e,s)=>{var r;switch(s==null?void 0:s.storage){case"cookie":document.cookie=`${t}=${e}; max-age=31536000; SameSite=Strict;`,((r=s.sync)==null||r)&&sessionStorage.setItem(t,e);return;case"session":sessionStorage.setItem(t,e);return;default:localStorage.setItem(t,e)}},O=t=>({init(e,s,r){var o;if(typeof window=="undefined")return;let n=w(e,t),c=JSON.parse(n||"{}").val;c&&r(c),((o=t==null?void 0:t.sync)==null||o)&&addEventListener("storage",i=>{if(i.key===e&&i.newValue){let g=JSON.parse(i.newValue).val;g!==void 0&&r(g)}})},onChange(e,s){typeof window!="undefined"&&I(e,JSON.stringify({val:s}),t)}});0&&(module.exports={persist});
;