@freik/recoil-tools
Version:
Kevin Frei's Web utilities for Recoil
2 lines (1 loc) • 1.19 kB
JavaScript
import{useRecoilCallback as P,atom as Q,selectorFamily as U,useRecoilState as W}from"recoil";import{MakeLog as X}from"@freik/logger";var{log:K,err:Y}=X("recoil-tools");function j(q,B){let x=performance.now();return({set:z})=>(D)=>{if(D.key.length>1||D.key===" "){z(q,"");return}let E=performance.now(),G=E-x>750;x=E,z(q,(N)=>{let J=G?D.key:N+D.key;if(J.length>0)B(J);return J})}}function Z(q,B){return U({key:B,get:(x)=>({get:z})=>z(q).has(x),set:(x)=>({set:z},D)=>z(q,(E)=>{let G=new Set(E);if(D)G.delete(x);else G.add(x);return G})})}function H(q){let B=Q({key:q,default:new Set});return[B,Z(B,`${q}:sel`)]}function b(q){let[B,x]=W(q);return[B,()=>x(!1),()=>x(!0)]}var _=[];function w(){for(let q of _)K("Registered Atom:"),K(q)}function A(q){let B=performance.now();return({set:x})=>(z)=>{if(Y(z.key),z.key.length>1||z.key===" "){x(q,"");return}let D=performance.now(),E=D-B>750;B=D,x(q,(G)=>E?z.key:G+z.key)}}function p(q){return P(({set:B,reset:x,snapshot:z})=>{return q({set:B,reset:x,get:(E)=>z.getLoadable(E).getValue()})})}export{p as useMyTransaction,b as useBoolRecoilState,A as keyboardHook,j as kbTypingHook,w as getAtomValuesEffect,H as MakeSetState,Z as MakeSetSelector};