@yakocloud/state-vocab 2.1.3 → 2.2.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/README.md CHANGED
@@ -331,6 +331,7 @@ createRoot(document.getElementById('root')!).render(
331
331
  | `storage` | `Storage \| (() => Storage) \| undefined` | `undefined` (in-memory) |
332
332
  | `defaultValue` | `T \| undefined` | `undefined` |
333
333
  | `bidirectional` | `true \| undefined` | `undefined` |
334
+ | `autoSet` | `true \| undefined` | `undefined` |
334
335
  | `serialize` | `(v: T) => string` | `JSON.stringify` |
335
336
  | `deserialize` | `(v: string) => T` | `JSON.parse` |
336
337
 
@@ -350,5 +351,6 @@ React context provider. Must be an ancestor of any component using `.useState()`
350
351
  | `options.delayedSet` | `number \| undefined` | Debounce delay for `onSet` in ms |
351
352
  | `options.onSet` | `(next: D, prev: D) => void \| undefined` | Callback after state change |
352
353
  | `options.bidirectional` | `true \| undefined` | bidirectional state update to sync tabs |
354
+ | `options.autoSet` | `true \| undefined` | set the passed default value |
353
355
 
354
356
  Returns `[value, setValue, resetValue]`.
@@ -1,8 +1,8 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("react"),K=Symbol("state-def"),C=Symbol("state-path"),D=Symbol("state-ssr-support");function fe(t,c,a){if(!c)return t;const s=c.split(".");let r=t;for(const o of s)if(r!==null&&typeof r=="object"&&o in r)r=r[o];else return a;return r===void 0?a:r}function de(t,c,a){const s=c.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(let o=0;o<s.length-1;o++){const i=s[o],b=s[o+1];(r[i]===void 0||r[i]===null)&&(r[i]=/^\d+$/.test(b)?[]:{}),r=r[i]}return r[s[s.length-1]]=a,t}function me(t,c=0){let a;return function(...s){a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,t.apply(this,s)},c)}}function be(t,c,a=[]){return _.useMemo(()=>me(t,c),a)}function ve(t){const c=JSON.stringify(t,null,2).split(`
2
- `),a=[],s=[];for(const r of c){const o=r.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);if(o){const[,i,b,R,f]=o;a.push(`${i}%c"${b}"%c${R}%c${f}`),s.push("color: #9cdcfe; font-weight: bold","color: #cccccc","color: #ce9178")}else a.push(`%c${r}`),s.push("color: #cccccc")}console.log(a.join(`
3
- `),...s,t)}var j={exports:{}},O={};var G;function pe(){if(G)return O;G=1;var t=Symbol.for("react.transitional.element"),c=Symbol.for("react.fragment");function a(s,r,o){var i=null;if(o!==void 0&&(i=""+o),r.key!==void 0&&(i=""+r.key),"key"in r){o={};for(var b in r)b!=="key"&&(o[b]=r[b])}else o=r;return r=o.ref,{$$typeof:t,type:s,key:i,ref:r!==void 0?r:null,props:o}}return O.Fragment=c,O.jsx=a,O.jsxs=a,O}var x={};var X;function Ee(){return X||(X=1,process.env.NODE_ENV!=="production"&&(function(){function t(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ue?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case p:return"Fragment";case v:return"Profiler";case E:return"StrictMode";case oe:return"Suspense";case ae:return"SuspenseList";case ce:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case k:return"Portal";case P:return e.displayName||"Context";case h:return(e._context.displayName||"Context")+".Consumer";case ne:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case se:return n=e.displayName||null,n!==null?n:t(e.type)||"Memo";case V:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function c(e){return""+e}function a(e){try{c(e);var n=!1}catch{n=!0}if(n){n=console;var u=n.error,d=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return u.call(n,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",d),c(e)}}function s(e){if(e===p)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===V)return"<...>";try{var n=t(e);return n?"<"+n+">":"<...>"}catch{return"<...>"}}function r(){var e=$.A;return e===null?null:e.getOwner()}function o(){return Error("react-stack-top-frame")}function i(e){if(L.call(e,"key")){var n=Object.getOwnPropertyDescriptor(e,"key").get;if(n&&n.isReactWarning)return!1}return e.key!==void 0}function b(e,n){function u(){z||(z=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",n))}u.isReactWarning=!0,Object.defineProperty(e,"key",{get:u,configurable:!0})}function R(){var e=t(this.type);return W[e]||(W[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function f(e,n,u,d,A,M){var m=u.ref;return e={$$typeof:y,type:e,key:n,props:u,_owner:d},(m!==void 0?m:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:R}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:A}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:M}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function l(e,n,u,d,A,M){var m=n.children;if(m!==void 0)if(d)if(le(m)){for(d=0;d<m.length;d++)S(m[d]);Object.freeze&&Object.freeze(m)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else S(m);if(L.call(n,"key")){m=t(e);var w=Object.keys(n).filter(function(ie){return ie!=="key"});d=0<w.length?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}",q[m+d]||(w=0<w.length?"{"+w.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react"),te=Symbol("state-def"),C=Symbol("state-path"),z=Symbol("state-ssr-support");function ie(t,s,o){if(!s)return t;const a=s.split(".");let r=t;for(const c of a)if(r!==null&&typeof r=="object"&&c in r)r=r[c];else return o;return r===void 0?o:r}function fe(t,s,o){const a=s.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(let c=0;c<a.length-1;c++){const u=a[c],l=a[c+1];(r[u]===void 0||r[u]===null)&&(r[u]=/^\d+$/.test(l)?[]:{}),r=r[u]}return r[a[a.length-1]]=o,t}function de(t,s=0){let o;return function(...a){o!==void 0&&clearTimeout(o),o=setTimeout(()=>{o=void 0,t.apply(this,a)},s)}}function me(t,s,o=[]){return S.useMemo(()=>de(t,s),o)}function be(t){const s=JSON.stringify(t,null,2).split(`
2
+ `),o=[],a=[];for(const r of s){const c=r.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);if(c){const[,u,l,_,d]=c;o.push(`${u}%c"${l}"%c${_}%c${d}`),a.push("color: #9cdcfe; font-weight: bold","color: #cccccc","color: #ce9178")}else o.push(`%c${r}`),a.push("color: #cccccc")}console.log(o.join(`
3
+ `),...a,t)}var V={exports:{}},O={};var B;function ve(){if(B)return O;B=1;var t=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function o(a,r,c){var u=null;if(c!==void 0&&(u=""+c),r.key!==void 0&&(u=""+r.key),"key"in r){c={};for(var l in r)l!=="key"&&(c[l]=r[l])}else c=r;return r=c.ref,{$$typeof:t,type:a,key:u,ref:r!==void 0?r:null,props:c}}return O.Fragment=s,O.jsx=o,O.jsxs=o,O}var A={};var H;function Ee(){return H||(H=1,process.env.NODE_ENV!=="production"&&(function(){function t(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ce?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case E:return"Fragment";case P:return"Profiler";case g:return"StrictMode";case x:return"Suspense";case oe:return"SuspenseList";case se:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case k:return"Portal";case h:return e.displayName||"Context";case v:return(e._context.displayName||"Context")+".Consumer";case I:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ae:return n=e.displayName||null,n!==null?n:t(e.type)||"Memo";case M:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function s(e){return""+e}function o(e){try{s(e);var n=!1}catch{n=!0}if(n){n=console;var i=n.error,m=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return i.call(n,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",m),s(e)}}function a(e){if(e===E)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===M)return"<...>";try{var n=t(e);return n?"<"+n+">":"<...>"}catch{return"<...>"}}function r(){var e=Y.A;return e===null?null:e.getOwner()}function c(){return Error("react-stack-top-frame")}function u(e){if(W.call(e,"key")){var n=Object.getOwnPropertyDescriptor(e,"key").get;if(n&&n.isReactWarning)return!1}return e.key!==void 0}function l(e,n){function i(){J||(J=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",n))}i.isReactWarning=!0,Object.defineProperty(e,"key",{get:i,configurable:!0})}function _(){var e=t(this.type);return U[e]||(U[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function d(e,n,i,m,j,F){var b=i.ref;return e={$$typeof:T,type:e,key:n,props:i,_owner:m},(b!==void 0?b:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:_}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:j}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:F}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function f(e,n,i,m,j,F){var b=n.children;if(b!==void 0)if(m)if(ue(b)){for(m=0;m<b.length;m++)p(b[m]);Object.freeze&&Object.freeze(b)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else p(b);if(W.call(n,"key")){b=t(e);var w=Object.keys(n).filter(function(le){return le!=="key"});m=0<w.length?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}",X[b+m]||(w=0<w.length?"{"+w.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
4
4
  let props = %s;
5
5
  <%s {...props} />
6
6
  React keys must be passed directly to JSX without using spread:
7
7
  let props = %s;
8
- <%s key={someKey} {...props} />`,d,m,w,m),q[m+d]=!0)}if(m=null,u!==void 0&&(a(u),m=""+u),i(n)&&(a(n.key),m=""+n.key),"key"in n){u={};for(var Y in n)Y!=="key"&&(u[Y]=n[Y])}else u=n;return m&&b(u,typeof e=="function"?e.displayName||e.name||"Unknown":e),f(e,m,u,r(),A,M)}function S(e){T(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===V&&(e._payload.status==="fulfilled"?T(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function T(e){return typeof e=="object"&&e!==null&&e.$$typeof===y}var g=_,y=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),v=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),P=Symbol.for("react.context"),ne=Symbol.for("react.forward_ref"),oe=Symbol.for("react.suspense"),ae=Symbol.for("react.suspense_list"),se=Symbol.for("react.memo"),V=Symbol.for("react.lazy"),ce=Symbol.for("react.activity"),ue=Symbol.for("react.client.reference"),$=g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L=Object.prototype.hasOwnProperty,le=Array.isArray,I=console.createTask?console.createTask:function(){return null};g={react_stack_bottom_frame:function(e){return e()}};var z,W={},J=g.react_stack_bottom_frame.bind(g,o)(),U=I(s(o)),q={};x.Fragment=p,x.jsx=function(e,n,u){var d=1e4>$.recentlyCreatedOwnerStacks++;return l(e,n,u,!1,d?Error("react-stack-top-frame"):J,d?I(s(e)):U)},x.jsxs=function(e,n,u){var d=1e4>$.recentlyCreatedOwnerStacks++;return l(e,n,u,!0,d?Error("react-stack-top-frame"):J,d?I(s(e)):U)}})()),x}var B;function Se(){return B||(B=1,process.env.NODE_ENV==="production"?j.exports=pe():j.exports=Ee()),j.exports}var _e=Se();const ee=_.createContext({stateVocab:{},setStateVocab:()=>{}});function Re(){return _.useContext(ee)}const Te=t=>{const{children:c,verbose:a}=t,[s,r]=_.useState({});return a&&ve(s),_e.jsx(ee.Provider,{value:{stateVocab:s,setStateVocab:r},children:c})},N=(t,c)=>a=>{const s={...a};return de(s,t,c),s},F=(t,c)=>te(t)??c,H=t=>{const{serialized:c,defaultValue:a,superDefaultValue:s,deserialize:r}=t;if(c===null){const o=F(a,s);return typeof o>"u"?void 0:o}return r(c)},ye=t=>typeof t=="function",ge=t=>typeof t=="function",te=t=>ge(t)?t():t,he=typeof window>"u";function ke(t={}){const{serialize:c=JSON.stringify,deserialize:a=JSON.parse}=t,s=t.defaultValue,r=t.bidirectional,o=he?void 0:te(t.storage);return{[K]:!0,[D]:!1,[C]:"",useState(i,b){b??={};const R=be(b.onSet??(()=>{}),b.delayedSet,[]),f=Re(),l=this[C],S=this[D],[T,g]=_.useState(!S);_.useEffect(()=>g(!0),[]);const y=_.useMemo(()=>{if(!T||!o)return;const E=o.getItem(l);return H({serialized:E,defaultValue:i,superDefaultValue:s,deserialize:a})},[l,T]),k=_.useMemo(()=>fe(f.stateVocab,l,y??F(i,s)),[f.stateVocab,y,l]);_.useEffect(()=>{!o||typeof y>"u"||f.setStateVocab(N(l,y))},[y]),_.useEffect(()=>{if(!b.bidirectional&&!r)return;const E=v=>{if(v.key!==l)return;const h=v.newValue,P=H({serialized:h,defaultValue:i,superDefaultValue:s,deserialize:a});f.setStateVocab(N(l,P)),R(P,p.current),p.current=P};return window.addEventListener("storage",E),()=>window.removeEventListener("storage",E)},[l,b.bidirectional,r]);const p=_.useRef(k);return[k,function(v){const h=ye(v)?v(p.current):v;f.setStateVocab(N(l,h)),R(h,p.current),o&&o.setItem(l,c(h)),p.current=h},function(){const v=F(i,s);if(typeof v>"u"){o?.removeItem(l);return}f.setStateVocab(N(l,v)),R(v,p.current),p.current=v,o&&o.setItem(l,c(v))}]},toString(){return this[C]}}}const Z=new WeakMap,Q=new WeakMap;function re(t,c){c??={};const{path:a="",ssr:s}=c;let r=Z.get(t);r||(r=new Map,Z.set(t,r));const o=r.get(a);if(o)return o;const i=new Proxy(t,{get(b,R){const f=b[R],l=a?`${a}.${String(R)}`:String(R);if(f&&typeof f=="object"&&K in f){const S=f;let T=Q.get(S);T||(T=new Map,Q.set(S,T));const g=T.get(l);if(g)return g;const y=Reflect.ownKeys(S).filter(E=>typeof S[E]=="function"),k=Object.fromEntries(y.map(E=>[E,(...v)=>S[E].call({...S,[C]:l,[D]:s},...v)])),p={...S,...k};return T.set(l,p),p}return f&&typeof f=="object"?re(f,{path:l,ssr:s}):f}});return r.set(a,i),i}function we(t,c){return re(t,c)}exports.StorageProvider=Te;exports.defineState=ke;exports.setupStorage=we;
8
+ <%s key={someKey} {...props} />`,m,b,w,b),X[b+m]=!0)}if(b=null,i!==void 0&&(o(i),b=""+i),u(n)&&(o(n.key),b=""+n.key),"key"in n){i={};for(var L in n)L!=="key"&&(i[L]=n[L])}else i=n;return b&&l(i,typeof e=="function"?e.displayName||e.name||"Unknown":e),d(e,b,i,r(),j,F)}function p(e){R(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===M&&(e._payload.status==="fulfilled"?R(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function R(e){return typeof e=="object"&&e!==null&&e.$$typeof===T}var y=S,T=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),E=Symbol.for("react.fragment"),g=Symbol.for("react.strict_mode"),P=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),h=Symbol.for("react.context"),I=Symbol.for("react.forward_ref"),x=Symbol.for("react.suspense"),oe=Symbol.for("react.suspense_list"),ae=Symbol.for("react.memo"),M=Symbol.for("react.lazy"),se=Symbol.for("react.activity"),ce=Symbol.for("react.client.reference"),Y=y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,W=Object.prototype.hasOwnProperty,ue=Array.isArray,D=console.createTask?console.createTask:function(){return null};y={react_stack_bottom_frame:function(e){return e()}};var J,U={},q=y.react_stack_bottom_frame.bind(y,c)(),G=D(a(c)),X={};A.Fragment=E,A.jsx=function(e,n,i){var m=1e4>Y.recentlyCreatedOwnerStacks++;return f(e,n,i,!1,m?Error("react-stack-top-frame"):q,m?D(a(e)):G)},A.jsxs=function(e,n,i){var m=1e4>Y.recentlyCreatedOwnerStacks++;return f(e,n,i,!0,m?Error("react-stack-top-frame"):q,m?D(a(e)):G)}})()),A}var Z;function Se(){return Z||(Z=1,process.env.NODE_ENV==="production"?V.exports=ve():V.exports=Ee()),V.exports}var pe=Se();const re=S.createContext({stateVocab:{},setStateVocab:()=>{}});function _e(){return S.useContext(re)}const Re=t=>{const{children:s,verbose:o}=t,[a,r]=S.useState({});return o&&be(a),pe.jsx(re.Provider,{value:{stateVocab:a,setStateVocab:r},children:s})},N=(t,s)=>o=>{const a={...o};return fe(a,t,s),a},Q=t=>{const{serialized:s,defaultValue:o,superDefaultValue:a,deserialize:r}=t;if(s===null){const c=$(o)??a;return typeof c>"u"?void 0:c}return r(s)},Te=t=>typeof t=="function",ye=t=>typeof t=="function",$=t=>ye(t)?t():t,ge=typeof window>"u";function he(t={}){const{serialize:s=JSON.stringify,deserialize:o=JSON.parse}=t,a=t.defaultValue,r=t.bidirectional,c=t.autoSet,u=ge?void 0:$(t.storage);return{[te]:!0,[z]:!1,[C]:"",useState(l){l??={};const _=me(l.onSet??(()=>{}),l.delayedSet,[]),d=_e(),f=this[C],p=this[z],[R,y]=S.useState(!p);S.useEffect(()=>y(!0),[]);const T=S.useMemo(()=>{if(!R||!u)return;const v=u.getItem(f);return Q({defaultValue:l.defaultValue,serialized:v,superDefaultValue:a,deserialize:o})},[f,R]),k=S.useMemo(()=>ie(d.stateVocab,f,T??$(l.defaultValue)??a),[d.stateVocab,T,f]);S.useEffect(()=>{!u||typeof T>"u"||d.setStateVocab(N(f,T))},[T]),S.useEffect(()=>{if(!l.bidirectional&&!r)return;const v=h=>{if(h.key!==f)return;const I=h.newValue,x=Q({defaultValue:l.defaultValue,superDefaultValue:a,serialized:I,deserialize:o});d.setStateVocab(N(f,x)),_(x,E.current),E.current=x};return window.addEventListener("storage",v),()=>window.removeEventListener("storage",v)},[f,l.bidirectional,r]);const E=S.useRef(k),g=v=>{const h=Te(v)?v(E.current):v;d.setStateVocab(N(f,h)),_(h,E.current),u&&u.setItem(f,s(h)),E.current=h},P=()=>{const v=$(l.defaultValue)??a;if(typeof v>"u"){u?.removeItem(f);return}d.setStateVocab(N(f,v)),_(v,E.current),E.current=v,u&&u.setItem(f,s(v))};return S.useEffect(()=>{(l.autoSet||c)&&g(k)},[]),[k,g,P]},toString(){return this[C]}}}const K=new WeakMap,ee=new WeakMap;function ne(t,s){s??={};const{path:o="",ssr:a}=s;let r=K.get(t);r||(r=new Map,K.set(t,r));const c=r.get(o);if(c)return c;const u=new Proxy(t,{get(l,_){const d=l[_],f=o?`${o}.${String(_)}`:String(_);if(d&&typeof d=="object"&&te in d){const p=d;let R=ee.get(p);R||(R=new Map,ee.set(p,R));const y=R.get(f);if(y)return y;const T=Reflect.ownKeys(p).filter(g=>typeof p[g]=="function"),k=Object.fromEntries(T.map(g=>[g,(...P)=>p[g].call({...p,[C]:f,[z]:a},...P)])),E={...p,...k};return R.set(f,E),E}return d&&typeof d=="object"?ne(d,{path:f,ssr:a}):d}});return r.set(o,u),u}function ke(t,s){return ne(t,s)}exports.StorageProvider=Re;exports.defineState=he;exports.setupStorage=ke;
@@ -1,121 +1,121 @@
1
- import me, { useMemo as F, createContext as be, useState as ee, useContext as ve, useEffect as D, useRef as pe } from "react";
2
- const te = Symbol("state-def"), N = Symbol("state-path"), M = Symbol("state-ssr-support");
3
- function Ee(t, c, a) {
4
- if (!c)
1
+ import de, { useMemo as z, createContext as me, useState as re, useContext as be, useEffect as V, useRef as ve } from "react";
2
+ const ne = Symbol("state-def"), C = Symbol("state-path"), W = Symbol("state-ssr-support");
3
+ function Ee(t, s, o) {
4
+ if (!s)
5
5
  return t;
6
- const s = c.split(".");
6
+ const a = s.split(".");
7
7
  let r = t;
8
- for (const o of s)
9
- if (r !== null && typeof r == "object" && o in r)
10
- r = r[o];
8
+ for (const c of a)
9
+ if (r !== null && typeof r == "object" && c in r)
10
+ r = r[c];
11
11
  else
12
- return a;
13
- return r === void 0 ? a : r;
12
+ return o;
13
+ return r === void 0 ? o : r;
14
14
  }
15
- function _e(t, c, a) {
16
- const s = c.replace(/\[(\d+)\]/g, ".$1").split(".");
15
+ function pe(t, s, o) {
16
+ const a = s.replace(/\[(\d+)\]/g, ".$1").split(".");
17
17
  let r = t;
18
- for (let o = 0; o < s.length - 1; o++) {
19
- const i = s[o], b = s[o + 1];
20
- (r[i] === void 0 || r[i] === null) && (r[i] = /^\d+$/.test(b) ? [] : {}), r = r[i];
18
+ for (let c = 0; c < a.length - 1; c++) {
19
+ const u = a[c], l = a[c + 1];
20
+ (r[u] === void 0 || r[u] === null) && (r[u] = /^\d+$/.test(l) ? [] : {}), r = r[u];
21
21
  }
22
- return r[s[s.length - 1]] = a, t;
22
+ return r[a[a.length - 1]] = o, t;
23
23
  }
24
- function Se(t, c = 0) {
25
- let a;
26
- return function(...s) {
27
- a !== void 0 && clearTimeout(a), a = setTimeout(() => {
28
- a = void 0, t.apply(this, s);
29
- }, c);
24
+ function _e(t, s = 0) {
25
+ let o;
26
+ return function(...a) {
27
+ o !== void 0 && clearTimeout(o), o = setTimeout(() => {
28
+ o = void 0, t.apply(this, a);
29
+ }, s);
30
30
  };
31
31
  }
32
- function Re(t, c, a = []) {
33
- return F(
34
- () => Se(t, c),
32
+ function Se(t, s, o = []) {
33
+ return z(
34
+ () => _e(t, s),
35
35
  // eslint-disable-next-line react-hooks/exhaustive-deps
36
- a
36
+ o
37
37
  );
38
38
  }
39
- function Te(t) {
40
- const c = JSON.stringify(t, null, 2).split(`
41
- `), a = [], s = [];
42
- for (const r of c) {
43
- const o = r.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);
44
- if (o) {
45
- const [, i, b, S, f] = o;
46
- a.push(`${i}%c"${b}"%c${S}%c${f}`), s.push(
39
+ function Re(t) {
40
+ const s = JSON.stringify(t, null, 2).split(`
41
+ `), o = [], a = [];
42
+ for (const r of s) {
43
+ const c = r.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);
44
+ if (c) {
45
+ const [, u, l, _, d] = c;
46
+ o.push(`${u}%c"${l}"%c${_}%c${d}`), a.push(
47
47
  "color: #9cdcfe; font-weight: bold",
48
48
  "color: #cccccc",
49
49
  "color: #ce9178"
50
50
  );
51
51
  } else
52
- a.push(`%c${r}`), s.push("color: #cccccc");
52
+ o.push(`%c${r}`), a.push("color: #cccccc");
53
53
  }
54
- console.log(a.join(`
55
- `), ...s, t);
54
+ console.log(o.join(`
55
+ `), ...a, t);
56
56
  }
57
- var A = { exports: {} }, P = {};
58
- var X;
59
- function ye() {
60
- if (X) return P;
61
- X = 1;
62
- var t = Symbol.for("react.transitional.element"), c = Symbol.for("react.fragment");
63
- function a(s, r, o) {
64
- var i = null;
65
- if (o !== void 0 && (i = "" + o), r.key !== void 0 && (i = "" + r.key), "key" in r) {
66
- o = {};
67
- for (var b in r)
68
- b !== "key" && (o[b] = r[b]);
69
- } else o = r;
70
- return r = o.ref, {
57
+ var j = { exports: {} }, x = {};
58
+ var H;
59
+ function Te() {
60
+ if (H) return x;
61
+ H = 1;
62
+ var t = Symbol.for("react.transitional.element"), s = Symbol.for("react.fragment");
63
+ function o(a, r, c) {
64
+ var u = null;
65
+ if (c !== void 0 && (u = "" + c), r.key !== void 0 && (u = "" + r.key), "key" in r) {
66
+ c = {};
67
+ for (var l in r)
68
+ l !== "key" && (c[l] = r[l]);
69
+ } else c = r;
70
+ return r = c.ref, {
71
71
  $$typeof: t,
72
- type: s,
73
- key: i,
72
+ type: a,
73
+ key: u,
74
74
  ref: r !== void 0 ? r : null,
75
- props: o
75
+ props: c
76
76
  };
77
77
  }
78
- return P.Fragment = c, P.jsx = a, P.jsxs = a, P;
78
+ return x.Fragment = s, x.jsx = o, x.jsxs = o, x;
79
79
  }
80
- var x = {};
81
- var B;
82
- function ge() {
83
- return B || (B = 1, process.env.NODE_ENV !== "production" && (function() {
80
+ var A = {};
81
+ var Z;
82
+ function ye() {
83
+ return Z || (Z = 1, process.env.NODE_ENV !== "production" && (function() {
84
84
  function t(e) {
85
85
  if (e == null) return null;
86
86
  if (typeof e == "function")
87
- return e.$$typeof === ie ? null : e.displayName || e.name || null;
87
+ return e.$$typeof === le ? null : e.displayName || e.name || null;
88
88
  if (typeof e == "string") return e;
89
89
  switch (e) {
90
- case p:
90
+ case E:
91
91
  return "Fragment";
92
- case v:
92
+ case w:
93
93
  return "Profiler";
94
- case E:
94
+ case y:
95
95
  return "StrictMode";
96
- case se:
96
+ case P:
97
97
  return "Suspense";
98
- case ce:
98
+ case se:
99
99
  return "SuspenseList";
100
- case le:
100
+ case ue:
101
101
  return "Activity";
102
102
  }
103
103
  if (typeof e == "object")
104
104
  switch (typeof e.tag == "number" && console.error(
105
105
  "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
106
106
  ), e.$$typeof) {
107
- case h:
107
+ case g:
108
108
  return "Portal";
109
- case w:
109
+ case h:
110
110
  return e.displayName || "Context";
111
- case g:
111
+ case v:
112
112
  return (e._context.displayName || "Context") + ".Consumer";
113
- case ae:
113
+ case I:
114
114
  var n = e.render;
115
115
  return e = e.displayName, e || (e = n.displayName || n.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
116
- case ue:
116
+ case ce:
117
117
  return n = e.displayName || null, n !== null ? n : t(e.type) || "Memo";
118
- case C:
118
+ case Y:
119
119
  n = e._payload, e = e._init;
120
120
  try {
121
121
  return t(e(n));
@@ -124,29 +124,29 @@ function ge() {
124
124
  }
125
125
  return null;
126
126
  }
127
- function c(e) {
127
+ function s(e) {
128
128
  return "" + e;
129
129
  }
130
- function a(e) {
130
+ function o(e) {
131
131
  try {
132
- c(e);
132
+ s(e);
133
133
  var n = !1;
134
134
  } catch {
135
135
  n = !0;
136
136
  }
137
137
  if (n) {
138
138
  n = console;
139
- var u = n.error, d = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
140
- return u.call(
139
+ var i = n.error, m = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
140
+ return i.call(
141
141
  n,
142
142
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
143
- d
144
- ), c(e);
143
+ m
144
+ ), s(e);
145
145
  }
146
146
  }
147
- function s(e) {
148
- if (e === p) return "<>";
149
- if (typeof e == "object" && e !== null && e.$$typeof === C)
147
+ function a(e) {
148
+ if (e === E) return "<>";
149
+ if (typeof e == "object" && e !== null && e.$$typeof === Y)
150
150
  return "<...>";
151
151
  try {
152
152
  var n = t(e);
@@ -156,48 +156,48 @@ function ge() {
156
156
  }
157
157
  }
158
158
  function r() {
159
- var e = V.A;
159
+ var e = D.A;
160
160
  return e === null ? null : e.getOwner();
161
161
  }
162
- function o() {
162
+ function c() {
163
163
  return Error("react-stack-top-frame");
164
164
  }
165
- function i(e) {
166
- if (z.call(e, "key")) {
165
+ function u(e) {
166
+ if (J.call(e, "key")) {
167
167
  var n = Object.getOwnPropertyDescriptor(e, "key").get;
168
168
  if (n && n.isReactWarning) return !1;
169
169
  }
170
170
  return e.key !== void 0;
171
171
  }
172
- function b(e, n) {
173
- function u() {
174
- W || (W = !0, console.error(
172
+ function l(e, n) {
173
+ function i() {
174
+ U || (U = !0, console.error(
175
175
  "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
176
176
  n
177
177
  ));
178
178
  }
179
- u.isReactWarning = !0, Object.defineProperty(e, "key", {
180
- get: u,
179
+ i.isReactWarning = !0, Object.defineProperty(e, "key", {
180
+ get: i,
181
181
  configurable: !0
182
182
  });
183
183
  }
184
- function S() {
184
+ function _() {
185
185
  var e = t(this.type);
186
- return J[e] || (J[e] = !0, console.error(
186
+ return q[e] || (q[e] = !0, console.error(
187
187
  "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
188
188
  )), e = this.props.ref, e !== void 0 ? e : null;
189
189
  }
190
- function f(e, n, u, d, O, I) {
191
- var m = u.ref;
190
+ function d(e, n, i, m, O, M) {
191
+ var b = i.ref;
192
192
  return e = {
193
- $$typeof: T,
193
+ $$typeof: R,
194
194
  type: e,
195
195
  key: n,
196
- props: u,
197
- _owner: d
198
- }, (m !== void 0 ? m : null) !== null ? Object.defineProperty(e, "ref", {
196
+ props: i,
197
+ _owner: m
198
+ }, (b !== void 0 ? b : null) !== null ? Object.defineProperty(e, "ref", {
199
199
  enumerable: !1,
200
- get: S
200
+ get: _
201
201
  }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
202
202
  configurable: !1,
203
203
  enumerable: !1,
@@ -217,274 +217,276 @@ function ge() {
217
217
  configurable: !1,
218
218
  enumerable: !1,
219
219
  writable: !0,
220
- value: I
220
+ value: M
221
221
  }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
222
222
  }
223
- function l(e, n, u, d, O, I) {
224
- var m = n.children;
225
- if (m !== void 0)
226
- if (d)
227
- if (fe(m)) {
228
- for (d = 0; d < m.length; d++)
229
- _(m[d]);
230
- Object.freeze && Object.freeze(m);
223
+ function f(e, n, i, m, O, M) {
224
+ var b = n.children;
225
+ if (b !== void 0)
226
+ if (m)
227
+ if (ie(b)) {
228
+ for (m = 0; m < b.length; m++)
229
+ p(b[m]);
230
+ Object.freeze && Object.freeze(b);
231
231
  } else
232
232
  console.error(
233
233
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
234
234
  );
235
- else _(m);
236
- if (z.call(n, "key")) {
237
- m = t(e);
238
- var k = Object.keys(n).filter(function(de) {
239
- return de !== "key";
235
+ else p(b);
236
+ if (J.call(n, "key")) {
237
+ b = t(e);
238
+ var k = Object.keys(n).filter(function(fe) {
239
+ return fe !== "key";
240
240
  });
241
- d = 0 < k.length ? "{key: someKey, " + k.join(": ..., ") + ": ...}" : "{key: someKey}", G[m + d] || (k = 0 < k.length ? "{" + k.join(": ..., ") + ": ...}" : "{}", console.error(
241
+ m = 0 < k.length ? "{key: someKey, " + k.join(": ..., ") + ": ...}" : "{key: someKey}", B[b + m] || (k = 0 < k.length ? "{" + k.join(": ..., ") + ": ...}" : "{}", console.error(
242
242
  `A props object containing a "key" prop is being spread into JSX:
243
243
  let props = %s;
244
244
  <%s {...props} />
245
245
  React keys must be passed directly to JSX without using spread:
246
246
  let props = %s;
247
247
  <%s key={someKey} {...props} />`,
248
- d,
249
248
  m,
249
+ b,
250
250
  k,
251
- m
252
- ), G[m + d] = !0);
251
+ b
252
+ ), B[b + m] = !0);
253
253
  }
254
- if (m = null, u !== void 0 && (a(u), m = "" + u), i(n) && (a(n.key), m = "" + n.key), "key" in n) {
255
- u = {};
256
- for (var Y in n)
257
- Y !== "key" && (u[Y] = n[Y]);
258
- } else u = n;
259
- return m && b(
260
- u,
254
+ if (b = null, i !== void 0 && (o(i), b = "" + i), u(n) && (o(n.key), b = "" + n.key), "key" in n) {
255
+ i = {};
256
+ for (var L in n)
257
+ L !== "key" && (i[L] = n[L]);
258
+ } else i = n;
259
+ return b && l(
260
+ i,
261
261
  typeof e == "function" ? e.displayName || e.name || "Unknown" : e
262
- ), f(
262
+ ), d(
263
263
  e,
264
- m,
265
- u,
264
+ b,
265
+ i,
266
266
  r(),
267
267
  O,
268
- I
268
+ M
269
269
  );
270
270
  }
271
- function _(e) {
272
- R(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === C && (e._payload.status === "fulfilled" ? R(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
271
+ function p(e) {
272
+ S(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === Y && (e._payload.status === "fulfilled" ? S(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
273
273
  }
274
- function R(e) {
275
- return typeof e == "object" && e !== null && e.$$typeof === T;
274
+ function S(e) {
275
+ return typeof e == "object" && e !== null && e.$$typeof === R;
276
276
  }
277
- var y = me, T = Symbol.for("react.transitional.element"), h = Symbol.for("react.portal"), p = Symbol.for("react.fragment"), E = Symbol.for("react.strict_mode"), v = Symbol.for("react.profiler"), g = Symbol.for("react.consumer"), w = Symbol.for("react.context"), ae = Symbol.for("react.forward_ref"), se = Symbol.for("react.suspense"), ce = Symbol.for("react.suspense_list"), ue = Symbol.for("react.memo"), C = Symbol.for("react.lazy"), le = Symbol.for("react.activity"), ie = Symbol.for("react.client.reference"), V = y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, z = Object.prototype.hasOwnProperty, fe = Array.isArray, $ = console.createTask ? console.createTask : function() {
277
+ var T = de, R = Symbol.for("react.transitional.element"), g = Symbol.for("react.portal"), E = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), w = Symbol.for("react.profiler"), v = Symbol.for("react.consumer"), h = Symbol.for("react.context"), I = Symbol.for("react.forward_ref"), P = Symbol.for("react.suspense"), se = Symbol.for("react.suspense_list"), ce = Symbol.for("react.memo"), Y = Symbol.for("react.lazy"), ue = Symbol.for("react.activity"), le = Symbol.for("react.client.reference"), D = T.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, J = Object.prototype.hasOwnProperty, ie = Array.isArray, F = console.createTask ? console.createTask : function() {
278
278
  return null;
279
279
  };
280
- y = {
280
+ T = {
281
281
  react_stack_bottom_frame: function(e) {
282
282
  return e();
283
283
  }
284
284
  };
285
- var W, J = {}, U = y.react_stack_bottom_frame.bind(
286
- y,
287
- o
288
- )(), q = $(s(o)), G = {};
289
- x.Fragment = p, x.jsx = function(e, n, u) {
290
- var d = 1e4 > V.recentlyCreatedOwnerStacks++;
291
- return l(
285
+ var U, q = {}, G = T.react_stack_bottom_frame.bind(
286
+ T,
287
+ c
288
+ )(), X = F(a(c)), B = {};
289
+ A.Fragment = E, A.jsx = function(e, n, i) {
290
+ var m = 1e4 > D.recentlyCreatedOwnerStacks++;
291
+ return f(
292
292
  e,
293
293
  n,
294
- u,
294
+ i,
295
295
  !1,
296
- d ? Error("react-stack-top-frame") : U,
297
- d ? $(s(e)) : q
296
+ m ? Error("react-stack-top-frame") : G,
297
+ m ? F(a(e)) : X
298
298
  );
299
- }, x.jsxs = function(e, n, u) {
300
- var d = 1e4 > V.recentlyCreatedOwnerStacks++;
301
- return l(
299
+ }, A.jsxs = function(e, n, i) {
300
+ var m = 1e4 > D.recentlyCreatedOwnerStacks++;
301
+ return f(
302
302
  e,
303
303
  n,
304
- u,
304
+ i,
305
305
  !0,
306
- d ? Error("react-stack-top-frame") : U,
307
- d ? $(s(e)) : q
306
+ m ? Error("react-stack-top-frame") : G,
307
+ m ? F(a(e)) : X
308
308
  );
309
309
  };
310
- })()), x;
310
+ })()), A;
311
311
  }
312
- var H;
312
+ var Q;
313
313
  function he() {
314
- return H || (H = 1, process.env.NODE_ENV === "production" ? A.exports = ye() : A.exports = ge()), A.exports;
314
+ return Q || (Q = 1, process.env.NODE_ENV === "production" ? j.exports = Te() : j.exports = ye()), j.exports;
315
315
  }
316
- var ke = he();
317
- const re = be({
316
+ var ge = he();
317
+ const oe = me({
318
318
  stateVocab: {},
319
319
  setStateVocab: () => {
320
320
  }
321
321
  });
322
- function we() {
323
- return ve(re);
322
+ function ke() {
323
+ return be(oe);
324
324
  }
325
- const je = (t) => {
326
- const { children: c, verbose: a } = t, [s, r] = ee({});
327
- return a && Te(s), /* @__PURE__ */ ke.jsx(re.Provider, { value: { stateVocab: s, setStateVocab: r }, children: c });
328
- }, j = (t, c) => (a) => {
329
- const s = { ...a };
330
- return _e(s, t, c), s;
331
- }, L = (t, c) => ne(t) ?? c, Z = (t) => {
332
- const { serialized: c, defaultValue: a, superDefaultValue: s, deserialize: r } = t;
333
- if (c === null) {
334
- const o = L(a, s);
335
- return typeof o > "u" ? void 0 : o;
325
+ const Oe = (t) => {
326
+ const { children: s, verbose: o } = t, [a, r] = re({});
327
+ return o && Re(a), /* @__PURE__ */ ge.jsx(oe.Provider, { value: { stateVocab: a, setStateVocab: r }, children: s });
328
+ }, N = (t, s) => (o) => {
329
+ const a = { ...o };
330
+ return pe(a, t, s), a;
331
+ }, K = (t) => {
332
+ const { serialized: s, defaultValue: o, superDefaultValue: a, deserialize: r } = t;
333
+ if (s === null) {
334
+ const c = $(o) ?? a;
335
+ return typeof c > "u" ? void 0 : c;
336
336
  }
337
- return r(c);
338
- }, Pe = (t) => typeof t == "function", xe = (t) => typeof t == "function", ne = (t) => xe(t) ? t() : t, Oe = typeof window > "u";
339
- function Ne(t = {}) {
337
+ return r(s);
338
+ }, we = (t) => typeof t == "function", Pe = (t) => typeof t == "function", $ = (t) => Pe(t) ? t() : t, xe = typeof window > "u";
339
+ function Ve(t = {}) {
340
340
  const {
341
- serialize: c = JSON.stringify,
342
- deserialize: a = JSON.parse
343
- } = t, s = t.defaultValue, r = t.bidirectional, o = Oe ? void 0 : ne(t.storage);
341
+ serialize: s = JSON.stringify,
342
+ deserialize: o = JSON.parse
343
+ } = t, a = t.defaultValue, r = t.bidirectional, c = t.autoSet, u = xe ? void 0 : $(t.storage);
344
344
  return {
345
- [te]: !0,
345
+ [ne]: !0,
346
346
  // marks this object as a leaf in the router tree
347
- [M]: !1,
347
+ [W]: !1,
348
348
  // placeholder; injected at runtime by injectPaths()
349
- [N]: "",
349
+ [C]: "",
350
350
  // placeholder; injected at runtime by injectPaths()
351
- useState(i, b) {
352
- b ??= {};
353
- const S = Re(
354
- b.onSet ?? (() => {
351
+ useState(l) {
352
+ l ??= {};
353
+ const _ = Se(
354
+ l.onSet ?? (() => {
355
355
  }),
356
- b.delayedSet,
356
+ l.delayedSet,
357
357
  []
358
- ), f = we(), l = this[N], _ = this[M], [R, y] = ee(!_);
359
- D(() => y(!0), []);
360
- const T = F(
358
+ ), d = ke(), f = this[C], p = this[W], [S, T] = re(!p);
359
+ V(() => T(!0), []);
360
+ const R = z(
361
361
  () => {
362
- if (!R || !o)
362
+ if (!S || !u)
363
363
  return;
364
- const E = o.getItem(l);
365
- return Z({
366
- serialized: E,
367
- defaultValue: i,
368
- superDefaultValue: s,
369
- deserialize: a
364
+ const v = u.getItem(f);
365
+ return K({
366
+ defaultValue: l.defaultValue,
367
+ serialized: v,
368
+ superDefaultValue: a,
369
+ deserialize: o
370
370
  });
371
371
  },
372
372
  // eslint-disable-next-line react-hooks/exhaustive-deps
373
- [l, R]
374
- ), h = F(
373
+ [f, S]
374
+ ), g = z(
375
375
  () => Ee(
376
- f.stateVocab,
377
- l,
378
- T ?? L(i, s)
376
+ d.stateVocab,
377
+ f,
378
+ R ?? $(l.defaultValue) ?? a
379
379
  ),
380
380
  // eslint-disable-next-line react-hooks/exhaustive-deps
381
381
  [
382
- f.stateVocab,
383
- T,
384
- l
382
+ d.stateVocab,
383
+ R,
384
+ f
385
385
  ]
386
386
  );
387
- D(
387
+ V(
388
388
  () => {
389
- !o || typeof T > "u" || f.setStateVocab(j(l, T));
389
+ !u || typeof R > "u" || d.setStateVocab(N(f, R));
390
390
  },
391
391
  // eslint-disable-next-line react-hooks/exhaustive-deps
392
- [T]
393
- ), D(() => {
394
- if (!b.bidirectional && !r)
392
+ [R]
393
+ ), V(() => {
394
+ if (!l.bidirectional && !r)
395
395
  return;
396
- const E = (v) => {
397
- if (v.key !== l)
396
+ const v = (h) => {
397
+ if (h.key !== f)
398
398
  return;
399
- const g = v.newValue, w = Z({
400
- serialized: g,
401
- defaultValue: i,
402
- superDefaultValue: s,
403
- deserialize: a
399
+ const I = h.newValue, P = K({
400
+ defaultValue: l.defaultValue,
401
+ superDefaultValue: a,
402
+ serialized: I,
403
+ deserialize: o
404
404
  });
405
- f.setStateVocab(j(l, w)), S(w, p.current), p.current = w;
405
+ d.setStateVocab(N(f, P)), _(P, E.current), E.current = P;
406
406
  };
407
- return window.addEventListener("storage", E), () => window.removeEventListener("storage", E);
407
+ return window.addEventListener("storage", v), () => window.removeEventListener("storage", v);
408
408
  }, [
409
- l,
410
- b.bidirectional,
409
+ f,
410
+ l.bidirectional,
411
411
  r
412
412
  ]);
413
- const p = pe(h);
414
- return [
415
- h,
416
- function(v) {
417
- const g = Pe(v) ? v(p.current) : v;
418
- f.setStateVocab(j(l, g)), S(g, p.current), o && o.setItem(l, c(g)), p.current = g;
419
- },
420
- function() {
421
- const v = L(i, s);
422
- if (typeof v > "u") {
423
- o?.removeItem(l);
424
- return;
425
- }
426
- f.setStateVocab(j(l, v)), S(v, p.current), p.current = v, o && o.setItem(l, c(v));
413
+ const E = ve(g), y = (v) => {
414
+ const h = we(v) ? v(E.current) : v;
415
+ d.setStateVocab(N(f, h)), _(h, E.current), u && u.setItem(f, s(h)), E.current = h;
416
+ }, w = () => {
417
+ const v = $(l.defaultValue) ?? a;
418
+ if (typeof v > "u") {
419
+ u?.removeItem(f);
420
+ return;
427
421
  }
422
+ d.setStateVocab(N(f, v)), _(v, E.current), E.current = v, u && u.setItem(f, s(v));
423
+ };
424
+ return V(() => {
425
+ (l.autoSet || c) && y(g);
426
+ }, []), [
427
+ g,
428
+ y,
429
+ w
428
430
  ];
429
431
  },
430
432
  /** Returns the fully qualified job name (dot-separated path). */
431
433
  toString() {
432
- return this[N];
434
+ return this[C];
433
435
  }
434
436
  };
435
437
  }
436
- const Q = /* @__PURE__ */ new WeakMap(), K = /* @__PURE__ */ new WeakMap();
437
- function oe(t, c) {
438
- c ??= {};
438
+ const ee = /* @__PURE__ */ new WeakMap(), te = /* @__PURE__ */ new WeakMap();
439
+ function ae(t, s) {
440
+ s ??= {};
439
441
  const {
440
- path: a = "",
441
- ssr: s
442
- } = c;
443
- let r = Q.get(t);
444
- r || (r = /* @__PURE__ */ new Map(), Q.set(t, r));
445
- const o = r.get(a);
446
- if (o)
447
- return o;
448
- const i = new Proxy(t, {
449
- get(b, S) {
450
- const f = b[S], l = a ? `${a}.${String(S)}` : String(S);
451
- if (f && typeof f == "object" && te in f) {
452
- const _ = f;
453
- let R = K.get(_);
454
- R || (R = /* @__PURE__ */ new Map(), K.set(_, R));
455
- const y = R.get(l);
456
- if (y)
457
- return y;
458
- const T = Reflect.ownKeys(_).filter(
459
- (E) => typeof _[E] == "function"
460
- ), h = Object.fromEntries(
461
- T.map((E) => [
462
- E,
463
- (...v) => _[E].call(
442
+ path: o = "",
443
+ ssr: a
444
+ } = s;
445
+ let r = ee.get(t);
446
+ r || (r = /* @__PURE__ */ new Map(), ee.set(t, r));
447
+ const c = r.get(o);
448
+ if (c)
449
+ return c;
450
+ const u = new Proxy(t, {
451
+ get(l, _) {
452
+ const d = l[_], f = o ? `${o}.${String(_)}` : String(_);
453
+ if (d && typeof d == "object" && ne in d) {
454
+ const p = d;
455
+ let S = te.get(p);
456
+ S || (S = /* @__PURE__ */ new Map(), te.set(p, S));
457
+ const T = S.get(f);
458
+ if (T)
459
+ return T;
460
+ const R = Reflect.ownKeys(p).filter(
461
+ (y) => typeof p[y] == "function"
462
+ ), g = Object.fromEntries(
463
+ R.map((y) => [
464
+ y,
465
+ (...w) => p[y].call(
464
466
  {
465
- ..._,
466
- [N]: l,
467
- [M]: s
467
+ ...p,
468
+ [C]: f,
469
+ [W]: a
468
470
  },
469
- ...v
471
+ ...w
470
472
  )
471
473
  ])
472
- ), p = { ..._, ...h };
473
- return R.set(l, p), p;
474
+ ), E = { ...p, ...g };
475
+ return S.set(f, E), E;
474
476
  }
475
- return f && typeof f == "object" ? oe(f, {
476
- path: l,
477
- ssr: s
478
- }) : f;
477
+ return d && typeof d == "object" ? ae(d, {
478
+ path: f,
479
+ ssr: a
480
+ }) : d;
479
481
  }
480
482
  });
481
- return r.set(a, i), i;
483
+ return r.set(o, u), u;
482
484
  }
483
- function Ce(t, c) {
484
- return oe(t, c);
485
+ function je(t, s) {
486
+ return ae(t, s);
485
487
  }
486
488
  export {
487
- je as StorageProvider,
488
- Ne as defineState,
489
- Ce as setupStorage
489
+ Oe as StorageProvider,
490
+ Ve as defineState,
491
+ je as setupStorage
490
492
  };
@@ -4,6 +4,7 @@ export declare function defineState<T>(definitionOptions?: {
4
4
  storage?: ValueOrFactory<Storage>;
5
5
  defaultValue?: T;
6
6
  bidirectional?: true;
7
+ autoSet?: true;
7
8
  serialize?: (v: T) => string;
8
9
  deserialize?: (v: string) => T;
9
10
  }): {
@@ -13,9 +14,11 @@ export declare function defineState<T>(definitionOptions?: {
13
14
  useState<D = T>(this: {
14
15
  [STATE_PATH]: string;
15
16
  [STATE_SSR_SUPPORT]: boolean;
16
- }, defaultValue?: ValueOrFactory<D>, options?: {
17
+ }, options?: {
18
+ defaultValue?: ValueOrFactory<D>;
17
19
  delayedSet?: number;
18
20
  bidirectional?: true;
21
+ autoSet?: true;
19
22
  onSet?(nextValue: NoInfer<D>, prevValue: NoInfer<D>): void;
20
23
  }): readonly [D, (nextValue: ValueOrTransformer<D>) => void, () => void];
21
24
  /** Returns the fully qualified job name (dot-separated path). */
@@ -3,7 +3,6 @@ import type { ValueOrTransformer, Transformer, ValueOrFactory } from "./types";
3
3
  export declare const embed: <D>(statePath: string, value: D) => (vocab: Vocab<D>) => {
4
4
  [x: string]: D;
5
5
  };
6
- export declare const genDefaultValue: <V>(defaultValue: ValueOrFactory<V>, superDefaltValue: unknown) => V;
7
6
  export declare const genStoredValue: <V>(options: {
8
7
  serialized: string | null;
9
8
  defaultValue: ValueOrFactory<V>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yakocloud/state-vocab",
3
- "version": "2.1.3",
3
+ "version": "2.2.1",
4
4
  "main": "dist/state-vocab.cjs.js",
5
5
  "module": "dist/state-vocab.es.js",
6
6
  "types": "dist/types/index.d.ts",