dev-react-microstore 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/index.ts +7 -10
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var g=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var R=(
|
|
1
|
+
"use strict";var g=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var R=(u,n)=>{for(var a in n)g(u,a,{get:n[a],enumerable:!0})},I=(u,n,a,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let y of v(n))!j.call(u,y)&&y!==a&&g(u,y,{get:()=>n[y],enumerable:!(l=P(n,y))||l.enumerable});return u};var C=u=>I(g({},"__esModule",{value:!0}),u);var D={};R(D,{createStoreState:()=>F,useStoreSelector:()=>z});module.exports=C(D);var f=require("react");function V(u,n){let a;return(...l)=>{clearTimeout(a),a=setTimeout(()=>u(...l),n)}}function F(u,n={}){let a=u,{asyncUpdate:l=!0,debounceDelay:y=0,perKeyDebounce:b={}}=n,T=new Map,p=new Map;return{get:()=>a,set:d=>{var s,i;if(!d)return;let t=[];for(let o in d){let e=o,c=a[e],r=d[e];c!==r&&(Object.is(c,r)||(a[e]=r,t.push(e)))}if(t.length!==0)if(l)for(let o of t)b[o]!==!1?(p.has(o)||p.set(o,V(()=>{var c;(c=T.get(o))==null||c.forEach(r=>r())},y)),p.get(o)()):(s=T.get(o))==null||s.forEach(c=>c());else for(let o of t)(i=T.get(o))==null||i.forEach(e=>e())},subscribe:(d,t)=>{for(let s of d)T.has(s)||T.set(s,new Set),T.get(s).add(t);return()=>{var s;for(let i of d)(s=T.get(i))==null||s.delete(t)}},select:d=>{let t={},s=a;for(let i of d)t[i]=s[i];return t}}}function E(u,n){return u.length===n.length&&u.every((a,l)=>a===n[l])}function z(u,n){let a=(0,f.useRef)({}),l=(0,f.useRef)(null),y=(0,f.useRef)(null),b=(0,f.useRef)(null),T=(0,f.useRef)(!0),p=(0,f.useRef)({}),k=(0,f.useRef)(null);if(!l.current||!E(l.current,n)){let t=[],s=[];for(let i of n)if(typeof i=="string"){let o=i;t.push({key:o}),s.push(o)}else{let o=i;for(let e in o){let c=o[e],r=e;t.push({key:r,compare:c}),s.push(r)}}y.current=t,b.current=s,l.current=n,k.current=null}let m=y.current,x=b.current,K=()=>{let t=u.get();if(T.current){T.current=!1;let e={};for(let{key:c}of m){let r=t[c];p.current[c]=r,e[c]=r}return a.current=e,e}if(!(()=>{var e;for(let{key:c,compare:r}of m){let S=p.current[c],h=t[c];if(S===void 0||((e=r==null?void 0:r(S,h))!=null?e:!Object.is(S,h)))return!0}return!1})())return a.current;let o={};for(let{key:e,compare:c}of m){let r=p.current[e],S=t[e];r===void 0||(c?!c(r,S):!Object.is(r,S))?(p.current[e]=S,o[e]=S):o[e]=r}return a.current=o,o},d=(0,f.useMemo)(()=>{let t=u.get(),s={};for(let i of x)s[i]=t[i];return s},[x]);return k.current||(k.current=t=>u.subscribe(x,t)),(0,f.useSyncExternalStore)(k.current,K,()=>d)}0&&(module.exports={createStoreState,useStoreSelector});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMemo as K,useRef as p,useSyncExternalStore as P}from"react";function v(a,i){let u;return
|
|
1
|
+
import{useMemo as K,useRef as p,useSyncExternalStore as P}from"react";function v(a,i){let u;return(...y)=>{clearTimeout(u),u=setTimeout(()=>a(...y),i)}}function C(a,i={}){let u=a,{asyncUpdate:y=!0,debounceDelay:k=0,perKeyDebounce:b={}}=i,l=new Map,T=new Map;return{get:()=>u,set:f=>{var r,c;if(!f)return;let t=[];for(let o in f){let e=o,s=u[e],n=f[e];s!==n&&(Object.is(s,n)||(u[e]=n,t.push(e)))}if(t.length!==0)if(y)for(let o of t)b[o]!==!1?(T.has(o)||T.set(o,v(()=>{var s;(s=l.get(o))==null||s.forEach(n=>n())},k)),T.get(o)()):(r=l.get(o))==null||r.forEach(s=>s());else for(let o of t)(c=l.get(o))==null||c.forEach(e=>e())},subscribe:(f,t)=>{for(let r of f)l.has(r)||l.set(r,new Set),l.get(r).add(t);return()=>{var r;for(let c of f)(r=l.get(c))==null||r.delete(t)}},select:f=>{let t={},r=u;for(let c of f)t[c]=r[c];return t}}}function j(a,i){return a.length===i.length&&a.every((u,y)=>u===i[y])}function V(a,i){let u=p({}),y=p(null),k=p(null),b=p(null),l=p(!0),T=p({}),S=p(null);if(!y.current||!j(y.current,i)){let t=[],r=[];for(let c of i)if(typeof c=="string"){let o=c;t.push({key:o}),r.push(o)}else{let o=c;for(let e in o){let s=o[e],n=e;t.push({key:n,compare:s}),r.push(n)}}k.current=t,b.current=r,y.current=i,S.current=null}let m=k.current,x=b.current,g=()=>{let t=a.get();if(l.current){l.current=!1;let e={};for(let{key:s}of m){let n=t[s];T.current[s]=n,e[s]=n}return u.current=e,e}if(!(()=>{var e;for(let{key:s,compare:n}of m){let d=T.current[s],h=t[s];if(d===void 0||((e=n==null?void 0:n(d,h))!=null?e:!Object.is(d,h)))return!0}return!1})())return u.current;let o={};for(let{key:e,compare:s}of m){let n=T.current[e],d=t[e];n===void 0||(s?!s(n,d):!Object.is(n,d))?(T.current[e]=d,o[e]=d):o[e]=n}return u.current=o,o},f=K(()=>{let t=a.get(),r={};for(let c of x)r[c]=t[c];return r},[x]);return S.current||(S.current=t=>a.subscribe(x,t)),P(S.current,g,()=>f)}export{C as createStoreState,V as useStoreSelector};
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -4,12 +4,10 @@ type StoreListener = () => void;
|
|
|
4
4
|
|
|
5
5
|
function debounce<T extends (...args: any[]) => void>(fn: T, delay: number): T {
|
|
6
6
|
let timeoutId: ReturnType<typeof setTimeout> | undefined;
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
timeoutId = setTimeout(() => fn.apply(this, args), delay);
|
|
12
|
-
} as T;
|
|
7
|
+
return ((...args: Parameters<T>) => {
|
|
8
|
+
clearTimeout(timeoutId);
|
|
9
|
+
timeoutId = setTimeout(() => fn(...args), delay);
|
|
10
|
+
}) as T;
|
|
13
11
|
}
|
|
14
12
|
|
|
15
13
|
type StoreOptions<T extends object> = {
|
|
@@ -166,6 +164,7 @@ export function useStoreSelector<T extends object, S extends SelectorInput<T>>(
|
|
|
166
164
|
normalizedRef.current = normalized;
|
|
167
165
|
keysRef.current = keys;
|
|
168
166
|
prevSelector.current = selector;
|
|
167
|
+
subscribeRef.current = null;
|
|
169
168
|
}
|
|
170
169
|
|
|
171
170
|
const normalized = normalizedRef.current!;
|
|
@@ -231,11 +230,9 @@ export function useStoreSelector<T extends object, S extends SelectorInput<T>>(
|
|
|
231
230
|
return result as Picked<T, S>;
|
|
232
231
|
}, [keys]);
|
|
233
232
|
|
|
234
|
-
|
|
235
|
-
if (!subscribeRef.current || keysRef.current !== keys) {
|
|
236
|
-
const currentKeys = keys;
|
|
233
|
+
if (!subscribeRef.current) {
|
|
237
234
|
subscribeRef.current = (onStoreChange: () => void) =>
|
|
238
|
-
store.subscribe(
|
|
235
|
+
store.subscribe(keys, onStoreChange);
|
|
239
236
|
}
|
|
240
237
|
|
|
241
238
|
return useSyncExternalStore(subscribeRef.current, getSnapshot, () => staticSnapshot);
|