@pivanov/utils 1.0.0 → 1.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/README.md CHANGED
@@ -58,7 +58,7 @@ import { deepClone, isEqual, busDispatch, useEventBus } from '@pivanov/utils/too
58
58
  | `tools/deepClone` | Rich deep clone (prototypes, getters/setters, symbols, Buffers, TypedArrays, circular refs) |
59
59
  | `tools/isEqual` | Deep equality with cycle detection; compares RegExp, Error, TypedArrays, ArrayBuffer |
60
60
  | `tools/dom` | `isBrowser`, `checkVisibility`, `isInViewport`, `setStyleProperties`, `calculateRenderedTextWidth` |
61
- | `tools/cache-api` | Typed wrapper over the browser Cache API, with TTL support |
61
+ | `cache` | Cache Storage helpers: JSON metadata with optional TTL, plus raw `Request`/`Response` caching. Shipped as a standalone `@pivanov/utils/cache` entry point |
62
62
  | `tools/eventBus` | `busDispatch`, `busSubscribe`, `busOnce`, `useEventBus` - typed topics, optional error handler |
63
63
  | `types` | `TDict`, `TObjType`, `DeepPartial`, `DeepReadonly`, `Mutable`, `Prettify` |
64
64
 
@@ -113,7 +113,7 @@ See the [Typed Events guide](https://pivanov.github.io/pivanov-utils/guides/type
113
113
  import {
114
114
  storageSetItemWithTTL,
115
115
  storageGetItemWithTTL,
116
- } from '@pivanov/utils/tools';
116
+ } from '@pivanov/utils/cache';
117
117
 
118
118
  await storageSetItemWithTTL('app', 'token', 'abc123', 10 * 60 * 1000);
119
119
 
@@ -121,6 +121,41 @@ const token = await storageGetItemWithTTL<string>('app', 'token');
121
121
  // null if missing or expired; expired entries are deleted on read
122
122
  ```
123
123
 
124
+ ### Raw response caching in a service worker
125
+
126
+ `@pivanov/utils/cache` is built as its own bundle with no React, no event bus and
127
+ no DOM helpers, so a service worker can import it without dragging the rest of
128
+ the package in. Alongside the JSON helpers it exposes a raw layer that stores a
129
+ `Response` byte for byte, preserving body, status and headers.
130
+
131
+ ```ts
132
+ import {
133
+ cacheDelete,
134
+ cacheMatchResponse,
135
+ cacheNames,
136
+ cachePutResponse,
137
+ } from '@pivanov/utils/cache';
138
+
139
+ const CACHE = 'assets-v3';
140
+
141
+ self.addEventListener('fetch', (event: FetchEvent) => {
142
+ event.respondWith((async () => {
143
+ const hit = await cacheMatchResponse(CACHE, event.request);
144
+ if (hit) {
145
+ return hit;
146
+ }
147
+
148
+ const response = await fetch(event.request);
149
+ await cachePutResponse(CACHE, event.request, response); // caches a clone
150
+ return response; // still readable
151
+ })());
152
+ });
153
+
154
+ // Revision cleanup
155
+ const outdated = (await cacheNames()).filter((name) => name !== CACHE);
156
+ await Promise.all(outdated.map(cacheDelete));
157
+ ```
158
+
124
159
  ### Deep clone that actually preserves shape
125
160
 
126
161
  ```ts
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:G,getOwnPropertyNames:I,getOwnPropertyDescriptor:J}=Object,K=Object.prototype.hasOwnProperty;var H=new WeakMap,L=(q)=>{var B=H.get(q),D;if(B)return B;if(B=G({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function")I(q).map((F)=>!K.call(B,F)&&G(B,F,{get:()=>q[F],enumerable:!(D=J(q,F))||D.enumerable}));return H.set(q,B),B};var N=(q,B)=>{for(var D in B)G(q,D,{get:B[D],enumerable:!0,configurable:!0,set:(F)=>B[D]=()=>F})};var d={};N(d,{isUndefined:()=>W,isString:()=>R,isSet:()=>C,isRegExp:()=>j,isRecord:()=>V,isPromise:()=>z,isPrimitive:()=>P,isObject:()=>U,isNumber:()=>Q,isNull:()=>X,isNil:()=>Y,isMap:()=>A,isFunction:()=>T,isError:()=>x,isEmpty:()=>b,isDefined:()=>Z,isDate:()=>$,isBoolean:()=>O,isArray:()=>_});module.exports=L(d);var O=(q)=>{return typeof q==="boolean"},Q=(q)=>{return typeof q==="number"},R=(q)=>{return typeof q==="string"},T=(q)=>{return typeof q==="function"},U=(q)=>{if(q===null||typeof q!=="object")return!1;let B=Object.getPrototypeOf(q);return B===Object.prototype||B===null},V=(q)=>{return typeof q==="object"&&q!==null},W=(q)=>{return q===void 0},X=(q)=>{return q===null},Y=(q)=>{return q===null||q===void 0},Z=(q)=>{return q!==void 0},_=(q)=>{return Array.isArray(q)},$=(q)=>{return q instanceof Date},j=(q)=>{return q instanceof RegExp},x=(q)=>{return q instanceof Error},z=(q)=>{return q!==null&&(typeof q==="object"||typeof q==="function")&&typeof q.then==="function"},A=(q)=>{return q instanceof Map},C=(q)=>{return q instanceof Set},P=(q)=>{if(q===null||q===void 0)return!0;let B=typeof q;return B==="string"||B==="number"||B==="boolean"||B==="bigint"||B==="symbol"},b=(q)=>{if(q===null||q===void 0)return!0;if(typeof q==="string"||Array.isArray(q))return q.length===0;if(q instanceof Map||q instanceof Set)return q.size===0;if(typeof q==="object")return Object.keys(q).length===0;return!1};
7
+ var{defineProperty:G,getOwnPropertyNames:I,getOwnPropertyDescriptor:J}=Object,K=Object.prototype.hasOwnProperty;function L(q){return this[q]}var N=(q)=>{var B=(H??=new WeakMap).get(q),D;if(B)return B;if(B=G({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function"){for(var F of I(q))if(!K.call(B,F))G(B,F,{get:L.bind(q,F),enumerable:!(D=J(q,F))||D.enumerable})}return H.set(q,B),B},H;var O=(q)=>q;function Q(q,B){this[q]=O.bind(null,B)}var R=(q,B)=>{for(var D in B)G(q,D,{get:B[D],enumerable:!0,configurable:!0,set:Q.bind(B,D)})};var M={};R(M,{isUndefined:()=>Z,isString:()=>V,isSet:()=>d,isRegExp:()=>A,isRecord:()=>Y,isPromise:()=>P,isPrimitive:()=>f,isObject:()=>X,isNumber:()=>U,isNull:()=>_,isNil:()=>$,isMap:()=>b,isFunction:()=>W,isError:()=>C,isEmpty:()=>k,isDefined:()=>j,isDate:()=>z,isBoolean:()=>T,isArray:()=>x});module.exports=N(M);var T=(q)=>{return typeof q==="boolean"},U=(q)=>{return typeof q==="number"},V=(q)=>{return typeof q==="string"},W=(q)=>{return typeof q==="function"},X=(q)=>{if(q===null||typeof q!=="object")return!1;let B=Object.getPrototypeOf(q);return B===Object.prototype||B===null},Y=(q)=>{return typeof q==="object"&&q!==null},Z=(q)=>{return q===void 0},_=(q)=>{return q===null},$=(q)=>{return q===null||q===void 0},j=(q)=>{return q!==void 0},x=(q)=>{return Array.isArray(q)},z=(q)=>{return q instanceof Date},A=(q)=>{return q instanceof RegExp},C=(q)=>{return q instanceof Error},P=(q)=>{return q!==null&&(typeof q==="object"||typeof q==="function")&&typeof q.then==="function"},b=(q)=>{return q instanceof Map},d=(q)=>{return q instanceof Set},f=(q)=>{if(q===null||q===void 0)return!0;let B=typeof q;return B==="string"||B==="number"||B==="boolean"||B==="bigint"||B==="symbol"},k=(q)=>{if(q===null||q===void 0)return!0;if(typeof q==="string"||Array.isArray(q))return q.length===0;if(q instanceof Map||q instanceof Set)return q.size===0;if(typeof q==="object")return Object.keys(q).length===0;return!1};
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * @pivanov/utils v1.0.1
3
+ * (c) 2024-present Pavel Ivanov
4
+ * Released under the MIT License.
5
+ * https://github.com/pivanov/utils
6
+ */
7
+ var{defineProperty:Q,getOwnPropertyNames:G,getOwnPropertyDescriptor:M}=Object,S=Object.prototype.hasOwnProperty;function U(b){return this[b]}var $=(b)=>{var d=(Y??=new WeakMap).get(b),w;if(d)return d;if(d=Q({},"__esModule",{value:!0}),b&&typeof b==="object"||typeof b==="function"){for(var R of G(b))if(!S.call(d,R))Q(d,R,{get:U.bind(b,R),enumerable:!(w=M(b,R))||w.enumerable})}return Y.set(b,d),d},Y;var L=(b)=>b;function B(b,d){this[b]=L.bind(null,d)}var I=(b,d)=>{for(var w in d)Q(b,w,{get:d[w],enumerable:!0,configurable:!0,set:B.bind(d,w)})};var N={};I(N,{stringifyBigIntValues:()=>Z,storageSetItemWithTTL:()=>p,storageSetItem:()=>_,storageRemoveItem:()=>E,storageGetItemWithTTL:()=>q,storageGetItem:()=>D,storageGetAllKeys:()=>u,storageExists:()=>l,storageClearBySuffix:()=>k,storageClearByPrefixOrSuffix:()=>X,storageClearByPrefix:()=>C,storageClear:()=>o,storageCalculateSize:()=>r,isCacheStorageSupported:()=>W,cacheResponseKeys:()=>z,cachePutResponse:()=>V,cacheNames:()=>v,cacheMatchResponse:()=>f,cacheHasResponse:()=>x,cacheExists:()=>K,cacheDeleteResponse:()=>g,cacheDelete:()=>i,cacheClear:()=>P});module.exports=$(N);var W=()=>{return typeof caches<"u"};var O=()=>{if(!W())throw Error("[@pivanov/utils/cache] Cache Storage is not available in this environment.");return caches},A=(b)=>{return O().open(b)},F=(b)=>{if(b.startsWith("http://")||b.startsWith("https://"))return b;return`https://cache.internal/${b}`};var V=async(b,d,w)=>{if(w.bodyUsed)throw TypeError("[@pivanov/utils/cache] cachePutResponse received a Response whose body has already been consumed.");await(await A(b)).put(d,w.clone())},f=async(b,d,w)=>{return(await A(b)).match(d,w)},g=async(b,d,w)=>{return(await A(b)).delete(d,w)},x=async(b,d,w)=>{return await(await A(b)).match(d,w)!==void 0},z=async(b)=>{return(await(await A(b)).keys()).map((R)=>R.url)},P=async(b)=>{let d=await A(b),w=await d.keys();await Promise.all(w.map((R)=>d.delete(R)))},v=async()=>{return O().keys()},K=async(b)=>{return O().has(b)},i=async(b)=>{return O().delete(b)};var Z=(b,d)=>{return typeof d==="bigint"?d.toString():d},_=async(b,d,w)=>{let R=await A(b),T=JSON.stringify(w,Z),J=new Response(T,{headers:{"Content-Type":"application/json"}}),j=F(d);await R.put(new Request(j),J)},D=async(b,d)=>{let w=await A(b),R=F(d),T=await w.match(new Request(R));if(!T)return null;let J=await T.text();return JSON.parse(J)},n=(b)=>{return typeof b==="object"&&b!==null&&b.__ttl===!0&&typeof b.exp==="number"},p=async(b,d,w,R)=>{let T={__ttl:!0,v:w,exp:Date.now()+R};await _(b,d,T)},q=async(b,d)=>{let w=await D(b,d);if(!n(w))return null;if(Date.now()>=w.exp)return await E(b,d),null;return w.v},E=async(b,d)=>{let w=await A(b),R=F(d);return w.delete(new Request(R))},o=async(b)=>{let d=await A(b),w=await d.keys();for(let R of w)await d.delete(R)},X=async(b,d,w=!0)=>{let R=await A(b),T=await R.keys();for(let J of T){let j=J.url.split("/"),H=j[j.length-1]||"";if(w&&H.startsWith(d)||!w&&H.endsWith(d))await R.delete(J)}},C=async(b,d)=>{await X(b,d,!0)},k=async(b,d)=>{await X(b,d,!1)},l=async(b,d)=>{let w=await A(b),R=F(d);return await w.match(new Request(R))!==void 0},u=async(b)=>{return(await(await A(b)).keys()).map((R)=>{let T=R.url.split("/");return T[T.length-1]||""})},r=async(b,d)=>{let w=await A(b);if(d){let J=F(d),j=await w.match(new Request(J));if(j)return(await j.clone().arrayBuffer()).byteLength;return 0}let R=await w.keys(),T=0;for(let J of R){let j=await w.match(J);if(j){let H=await j.clone().arrayBuffer();T+=H.byteLength}}return T};
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:x,getOwnPropertyNames:WQ,getOwnPropertyDescriptor:BQ}=Object,HQ=Object.prototype.hasOwnProperty;var n=new WeakMap,K=(J)=>{var Q=n.get(J),X;if(Q)return Q;if(Q=x({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")WQ(J).map((Y)=>!HQ.call(Q,Y)&&x(Q,Y,{get:()=>J[Y],enumerable:!(X=BQ(J,Y))||X.enumerable}));return n.set(J,Q),Q};var P=(J,Q)=>{for(var X in Q)x(J,X,{get:Q[X],enumerable:!0,configurable:!0,set:(Y)=>Q[X]=()=>Y})};var OQ={};P(OQ,{isUndefined:()=>e,isString:()=>s,isSet:()=>FJ,isRegExp:()=>$J,isRecord:()=>t,isPromise:()=>UJ,isPrimitive:()=>WJ,isObject:()=>V,isNumber:()=>r,isNull:()=>JJ,isNil:()=>QJ,isMap:()=>_J,isFunction:()=>a,isError:()=>GJ,isEmpty:()=>BJ,isDefined:()=>XJ,isDate:()=>ZJ,isBoolean:()=>i,isArray:()=>YJ});module.exports=K(OQ);var i=(J)=>{return typeof J==="boolean"},r=(J)=>{return typeof J==="number"},s=(J)=>{return typeof J==="string"},a=(J)=>{return typeof J==="function"},V=(J)=>{if(J===null||typeof J!=="object")return!1;let Q=Object.getPrototypeOf(J);return Q===Object.prototype||Q===null},t=(J)=>{return typeof J==="object"&&J!==null},e=(J)=>{return J===void 0},JJ=(J)=>{return J===null},QJ=(J)=>{return J===null||J===void 0},XJ=(J)=>{return J!==void 0},YJ=(J)=>{return Array.isArray(J)},ZJ=(J)=>{return J instanceof Date},$J=(J)=>{return J instanceof RegExp},GJ=(J)=>{return J instanceof Error},UJ=(J)=>{return J!==null&&(typeof J==="object"||typeof J==="function")&&typeof J.then==="function"},_J=(J)=>{return J instanceof Map},FJ=(J)=>{return J instanceof Set},WJ=(J)=>{if(J===null||J===void 0)return!0;let Q=typeof J;return Q==="string"||Q==="number"||Q==="boolean"||Q==="bigint"||Q==="symbol"},BJ=(J)=>{if(J===null||J===void 0)return!0;if(typeof J==="string"||Array.isArray(J))return J.length===0;if(J instanceof Map||J instanceof Set)return J.size===0;if(typeof J==="object")return Object.keys(J).length===0;return!1};var RQ={};P(RQ,{pickBy:()=>f,pick:()=>OJ,omitBy:()=>RJ,omit:()=>HJ,merge:()=>PJ,mapValues:()=>IJ,mapKeys:()=>TJ,keysOf:()=>AJ,invert:()=>zJ,hasOwn:()=>MJ,groupBy:()=>qJ,fromEntries:()=>SJ,entriesOf:()=>KJ,deepMerge:()=>C});module.exports=K(RQ);var HJ=(J,Q)=>{let X={...J};for(let Y of Q)delete X[Y];return X},OJ=(J,Q)=>{let X={};for(let Y of Q)if(Y in J)X[Y]=J[Y];return X},f=(J,Q)=>{let X={};for(let Y of Object.keys(J))if(Q(J[Y],Y))X[Y]=J[Y];return X},RJ=(J,Q)=>{return f(J,(X,Y)=>!Q(X,Y))},IJ=(J,Q)=>{let X={};for(let Y of Object.keys(J))X[Y]=Q(J[Y],Y);return X},TJ=(J,Q)=>{let X={};for(let Y of Object.keys(J))X[Q(J[Y],Y)]=J[Y];return X},qJ=(J,Q)=>{let X={};return J.forEach((Y,Z)=>{let U=Q(Y,Z);if(X[U])X[U].push(Y);else X[U]=[Y]}),X},zJ=(J)=>{let Q={};for(let X of Object.keys(J))Q[J[X]]=X;return Q},MJ=(J,Q)=>{return Object.hasOwn(J,Q)},AJ=(J)=>{return Object.keys(J)},KJ=(J)=>{return Object.entries(J)},SJ=(J)=>{return Object.fromEntries(J)},PJ=(J,...Q)=>{return Object.assign({},J,...Q)},C=(J,...Q)=>{let X={...J};for(let Y of Q){if(Y===void 0)continue;for(let Z of Object.keys(Y)){let U=Y[Z],_=X[Z];if(V(U))X[Z]=C(V(_)?_:{},U);else X[Z]=U}}return X};var IQ={};P(IQ,{timeout:()=>EJ,sleep:()=>g,retry:()=>VJ,parallelLimit:()=>NJ,defer:()=>LJ});module.exports=K(IQ);var g=(J,Q)=>{return new Promise((X,Y)=>{if(Q?.aborted){Y(Q.reason);return}let Z=setTimeout(()=>{Q?.removeEventListener("abort",U),X()},J),U=()=>{clearTimeout(Z),Y(Q?.reason)};Q?.addEventListener("abort",U,{once:!0})})},EJ=(J,Q,X)=>{return new Promise((Y,Z)=>{let U=setTimeout(()=>{Z(X??Error(`Operation timed out after ${Q}ms`))},Q);J.then((_)=>{clearTimeout(U),Y(_)},(_)=>{clearTimeout(U),Z(_)})})},VJ=async(J,Q={})=>{let{attempts:X=3,backoff:Y=0,signal:Z,shouldRetry:U}=Q,_;for(let H=1;H<=X;H++){if(Z?.aborted)throw Z.reason;try{return await J(H)}catch(z){if(_=z,H>=X)break;if(U&&!U(z,H))break;let S=typeof Y==="function"?Y(H):Y;if(S>0)await g(S,Z)}}throw _},LJ=()=>{let J,Q;return{promise:new Promise((Y,Z)=>{J=Y,Q=Z}),resolve:J,reject:Q}},NJ=async(J,Q,X)=>{if(Q<1)throw Error("parallelLimit: concurrency must be >= 1");let Y=Array(J.length),Z=0,U=async()=>{while(!0){let H=Z++;if(H>=J.length)return;Y[H]=await X(J[H],H)}},_=Array.from({length:Math.min(Q,J.length)},U);return await Promise.all(_),Y};var qQ={};P(qQ,{words:()=>yJ,uncapitalize:()=>mJ,truncate:()=>hJ,titleCase:()=>gJ,snakeCase:()=>CJ,slugify:()=>dJ,pascalCase:()=>wJ,lines:()=>jJ,kebabCase:()=>fJ,escapeRegExp:()=>pJ,escapeHtml:()=>kJ,capitalizeFirstLetter:()=>xJ,capitalize:()=>vJ,camelCase:()=>DJ});module.exports=K(qQ);var DJ=(J)=>{return J.trim().toLowerCase().replace(/^[-_\s]+/,"").replace(/[-_\s]+(.)?/g,(Q,X)=>X?X.toUpperCase():"")},wJ=(J)=>{return J.split(/(?=[0-9])|(?<=[0-9])|[^a-zA-Z0-9]+/g).filter(Boolean).map((Q)=>Q.toLowerCase()).map((Q)=>`${Q.charAt(0).toUpperCase()}${Q.slice(1)}`).join("")},xJ=(J)=>J.charAt(0).toUpperCase()+J.slice(1),fJ=(J)=>{if(J==null)return J;return J.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z])([A-Z][a-z])/g,"$1-$2").replace(/[-_\s]+/g,"-").toLowerCase().replace(/^-+|-+$/g,"").trim()},CJ=(J)=>{if(J==null)return J;return J.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").replace(/[-_\s]+/g,"_").toLowerCase().replace(/^_+|_+$/g,"").trim()},gJ=(J)=>{return J.normalize("NFKD").replace(/[^\w\s-]/g," ").split(/[-_\s]+/).filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")},dJ=(J)=>{return J.normalize("NFKD").toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[-\s_]+/g,"-").replace(/^-+|-+$/g,"")},vJ=(J)=>{return J.charAt(0).toUpperCase()+J.slice(1)},mJ=(J)=>{return J.charAt(0).toLowerCase()+J.slice(1)},hJ=(J,Q,X="…")=>{if(J.length<=Q)return J;if(Q<=X.length)return X.slice(0,Q);return J.slice(0,Q-X.length)+X},TQ={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},kJ=(J)=>{return J.replace(/[&<>"']/g,(Q)=>TQ[Q])},pJ=(J)=>{return J.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},yJ=(J)=>{return J.split(/[-_\s]+/).filter(Boolean)},jJ=(J)=>{return J.split(/\r\n|\r|\n/)};var SQ={};P(SQ,{useEventBus:()=>UQ,stringifyBigIntValues:()=>d,storageSetItemWithTTL:()=>uJ,storageSetItem:()=>v,storageRemoveItem:()=>h,storageGetItemWithTTL:()=>bJ,storageGetItem:()=>m,storageGetAllKeys:()=>iJ,storageExists:()=>nJ,storageClearBySuffix:()=>oJ,storageClearByPrefixOrSuffix:()=>w,storageClearByPrefix:()=>lJ,storageClear:()=>cJ,storageCalculateSize:()=>rJ,setStyleProperties:()=>tJ,isInViewport:()=>QQ,isEqual:()=>FQ,isBrowser:()=>aJ,deepClone:()=>sJ,checkVisibility:()=>eJ,calculateRenderedTextWidth:()=>XQ,busSubscribe:()=>N,busOnce:()=>$Q,busDispatch:()=>ZQ,__resetTextMeasurementCache:()=>JQ});module.exports=K(SQ);var d=(J,Q)=>{return typeof Q==="bigint"?Q.toString():Q},L=(J)=>{if(J.startsWith("http://")||J.startsWith("https://"))return J;return`https://cache.internal/${J}`},v=async(J,Q,X)=>{let Y=await caches.open(J),Z=JSON.stringify(X,d),U=new Response(Z,{headers:{"Content-Type":"application/json"}}),_=L(Q);await Y.put(new Request(_),U)},m=async(J,Q)=>{let X=await caches.open(J),Y=L(Q),Z=await X.match(new Request(Y));if(!Z)return null;let U=await Z.text();return JSON.parse(U)},zQ=(J)=>{return typeof J==="object"&&J!==null&&J.__ttl===!0&&typeof J.exp==="number"},uJ=async(J,Q,X,Y)=>{let Z={__ttl:!0,v:X,exp:Date.now()+Y};await v(J,Q,Z)},bJ=async(J,Q)=>{let X=await m(J,Q);if(!zQ(X))return null;if(Date.now()>=X.exp)return await h(J,Q),null;return X.v},h=async(J,Q)=>{let X=await caches.open(J),Y=L(Q);return X.delete(new Request(Y))},cJ=async(J)=>{let Q=await caches.open(J),X=await Q.keys();for(let Y of X)await Q.delete(Y)},w=async(J,Q,X=!0)=>{let Y=await caches.open(J),Z=await Y.keys();for(let U of Z){let _=U.url.split("/"),H=_[_.length-1]||"";if(X&&H.startsWith(Q)||!X&&H.endsWith(Q))await Y.delete(U)}},lJ=async(J,Q)=>{await w(J,Q,!0)},oJ=async(J,Q)=>{await w(J,Q,!1)},nJ=async(J,Q)=>{let X=await caches.open(J),Y=L(Q);return await X.match(new Request(Y))!==void 0},iJ=async(J)=>{return(await(await caches.open(J)).keys()).map((Y)=>{let Z=Y.url.split("/");return Z[Z.length-1]||""})},rJ=async(J,Q)=>{let X=await caches.open(J);if(Q){let U=L(Q),_=await X.match(new Request(U));if(_)return(await _.clone().arrayBuffer()).byteLength;return 0}let Y=await X.keys(),Z=0;for(let U of Y){let _=await X.match(U);if(_){let H=await _.clone().arrayBuffer();Z+=H.byteLength}}return Z};var sJ=(J)=>{return B(J,new WeakMap)},B=(J,Q)=>{if(J===null||typeof J!=="object")return J;let X=Q.get(J);if(X)return X;if(Array.isArray(J)){let $=J.length;if($<32){let G=Array($);Q.set(J,G);for(let W=0;W<$;W++)if(W in J)G[W]=B(J[W],Q);return G}let F=Array($);if(Q.set(J,F),Object.keys(J).length===$){let G=0,W=$%8,R=$-W;while(G<R)F[G]=B(J[G],Q),F[G+1]=B(J[G+1],Q),F[G+2]=B(J[G+2],Q),F[G+3]=B(J[G+3],Q),F[G+4]=B(J[G+4],Q),F[G+5]=B(J[G+5],Q),F[G+6]=B(J[G+6],Q),F[G+7]=B(J[G+7],Q),G+=8;while(G<$)F[G]=B(J[G],Q),G++}else for(let G=0;G<$;G++)if(G in J)F[G]=B(J[G],Q);return F}if(J instanceof Date||J instanceof RegExp)return new J.constructor(J);if(typeof Buffer<"u")try{if(Buffer.isBuffer(J))return Buffer.from(J)}catch($){if($ instanceof Error)throw $}if(ArrayBuffer.isView(J)){let $=J.constructor;if("buffer"in J){let G=J,W=G.buffer.slice(G.byteOffset,G.byteOffset+G.byteLength);return new $(W)}return new $(new ArrayBuffer(J.byteLength))}if(J instanceof ArrayBuffer)return J.slice(0);if(J&&typeof J==="object"&&"buffer"in J&&"byteLength"in J){let $=J;if(typeof Buffer>"u"){let G=new Uint8Array($.buffer,$.byteOffset||0,$.byteLength),W=new Uint8Array(G.length);return W.set(G),W}return{buffer:$.buffer instanceof ArrayBuffer?$.buffer.slice(0):new ArrayBuffer($.byteLength),byteLength:$.byteLength,byteOffset:$.byteOffset||0,length:$.length||$.byteLength,BYTES_PER_ELEMENT:$.BYTES_PER_ELEMENT||1}}if(J instanceof Set){let $=new Set;Q.set(J,$);let F=Array.from(J),G=F.length;for(let W=0;W<G;W++)$.add(B(F[W],Q));return $}if(J instanceof Map){let $=new Map;Q.set(J,$);let F=Array.from(J),G=F.length;for(let W=0;W<G;W++){let[R,M]=F[W];$.set(R,B(M,Q))}return $}if(Object.getPrototypeOf(J)===Object.prototype){let $={};Q.set(J,$);let F=Object.getOwnPropertySymbols(J),G=F.length;if(G>0)for(let O=0;O<G;O++){let I=F[O],T=Object.getOwnPropertyDescriptor(J,I);if(T?.enumerable)Object.defineProperty($,I,T)}let W=Object.getOwnPropertyDescriptors(J),R=Object.keys(J),M=R.length,p=!1;for(let O=0;O<M;O++){let I=W[R[O]];if(I.get||I.set){p=!0;break}}if(p)for(let O=0;O<M;O++){let I=R[O],T=W[I];if(T.enumerable)if(T.get||T.set)Object.defineProperty($,I,T);else{let A=B(T.value,Q);Object.defineProperty($,I,{...T,value:A})}}else{let O=0,I=M%8,T=M-I;while(O<T){let A=R[O],y=R[O+1],j=R[O+2],u=R[O+3],b=R[O+4],c=R[O+5],l=R[O+6],o=R[O+7],q=J;$[A]=B(q[A],Q),$[y]=B(q[y],Q),$[j]=B(q[j],Q),$[u]=B(q[u],Q),$[b]=B(q[b],Q),$[c]=B(q[c],Q),$[l]=B(q[l],Q),$[o]=B(q[o],Q),O+=8}while(O<M){let A=R[O++];$[A]=B(J[A],Q)}}return $}let Y=Object.getPrototypeOf(J),Z=Object.create(Y);Q.set(J,Z);let U=Object.getOwnPropertyDescriptors(J),_=Object.keys(U),H=_.length;for(let $=0;$<H;$++){let F=_[$],G=U[F];if(!G.enumerable)continue;if(G.get||G.set)Object.defineProperty(Z,F,G);else{let W=B(G.value,Q);Object.defineProperty(Z,F,{...G,value:W})}}let z=Object.getOwnPropertySymbols(J),S=z.length;for(let $=0;$<S;$++){let F=z[$],G=Object.getOwnPropertyDescriptor(J,F);if(!G?.enumerable)continue;Object.defineProperty(Z,F,G)}return Z};var aJ=()=>{return typeof window<"u"&&typeof document<"u"},tJ=(J,Q)=>{if(!J)return;for(let[X,Y]of Object.entries(Q))J.style.setProperty(X,Y)},eJ=(J,Q={})=>{let{checkViewport:X=!0,checkDisplay:Y=!0,checkVisibility:Z=!0,checkOpacity:U=!0}=Q;if(!J.isConnected)return!1;if(Y||Z||U){let _=window.getComputedStyle(J);if(Y&&_.display==="none")return!1;if(Z&&_.visibility!==""&&_.visibility!=="visible")return!1;if(U&&_.opacity!==""){let H=Number.parseFloat(_.opacity);if(!Number.isNaN(H)&&H===0)return!1}}if(X){let _=J.getBoundingClientRect();if(_.width!==0||_.height!==0){let H=window.innerHeight||document.documentElement.clientHeight,z=window.innerWidth||document.documentElement.clientWidth,S=_.bottom<=0||_.top>=H,$=_.right<=0||_.left>=z;if(S||$)return!1}}return!0};var k,E,MQ=()=>{if(E!==void 0)return E;if(typeof document>"u")return E=null,null;return k=document.createElement("canvas"),E=k.getContext("2d"),E},JQ=()=>{k=void 0,E=void 0},QQ=(J,Q={})=>{let{vertical:X=!0,horizontal:Y=!0}=Q,Z=J.getBoundingClientRect();if(Z.width===0&&Z.height===0)return!0;let U=window.innerHeight||document.documentElement.clientHeight,_=window.innerWidth||document.documentElement.clientWidth;if(X&&(Z.bottom<=0||Z.top>=U))return!1;if(Y&&(Z.right<=0||Z.left>=_))return!1;return!0},XQ=(J,Q,X=!1,Y='Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"')=>{let Z=MQ();if(!Z)return 0;let U=X?J.toUpperCase():J;return Z.font=`${Q}px ${Y}`,Z.measureText(U).width};var AQ=(J,Q="\uD83D\uDE80")=>{let X=0,Y=J+Q;for(let Z=0;Z<Y.length;Z++){let U=Y.charCodeAt(Z);X=(X<<5)-X+U,X|=0}return(X>>>0).toString(16)},YQ=(J)=>{return`${AQ(J)}::${J}`},KQ=(J,Q)=>{return(X)=>{if(!(X instanceof CustomEvent))return;try{J(X.detail)}catch(Y){if(Q)Q(Y);else console.error("Event listener error:",Y)}}},ZQ=(J,Q)=>{if(!J)return;let X=YQ(J);window.dispatchEvent(new CustomEvent(X,{detail:Q,bubbles:!0,cancelable:!1}))},N=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=KQ(Q,X.onError),Z=YQ(J);return window.addEventListener(Z,Y),()=>window.removeEventListener(Z,Y)},$Q=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=N(J,(Z)=>{Y(),Q(Z)},X);return Y};var GQ=require("react");var UQ=(J,Q,X=[])=>{GQ.useEffect(()=>{if(!J||typeof Q!=="function")return;return N(J,Q)},[J,Q,...X])};var FQ=(J,Q)=>{return D(J,Q,new WeakMap)},D=(J,Q,X)=>{if(Object.is(J,Q))return!0;if(J instanceof Date&&Q instanceof Date)return J.getTime()===Q.getTime();if(J instanceof RegExp&&Q instanceof RegExp)return J.source===Q.source&&J.flags===Q.flags;if(J instanceof Error&&Q instanceof Error)return J.name===Q.name&&J.message===Q.message;if(J instanceof ArrayBuffer&&Q instanceof ArrayBuffer){if(J.byteLength!==Q.byteLength)return!1;return _Q(new Uint8Array(J),new Uint8Array(Q))}if(ArrayBuffer.isView(J)&&ArrayBuffer.isView(Q)){if(J.constructor!==Q.constructor)return!1;if(J.byteLength!==Q.byteLength)return!1;let Y=new Uint8Array(J.buffer,J.byteOffset,J.byteLength),Z=new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength);return _Q(Y,Z)}if(typeof J==="object"&&J!==null&&typeof Q==="object"&&Q!==null){let Y=X.get(J);if(Y?.has(Q))return!0;if(Y)Y.add(Q);else X.set(J,new WeakSet([Q]))}if(Array.isArray(J)&&Array.isArray(Q)){if(J.length!==Q.length)return!1;for(let Y=0;Y<J.length;Y++)if(!D(J[Y],Q[Y],X))return!1;return!0}if(J instanceof Set&&Q instanceof Set){if(J.size!==Q.size)return!1;let Y=Array.from(Q);for(let Z of J){let U=Y.findIndex((_)=>D(Z,_,X));if(U===-1)return!1;Y.splice(U,1)}return!0}if(J instanceof Map&&Q instanceof Map){if(J.size!==Q.size)return!1;for(let[Y,Z]of J)if(!Q.has(Y)||!D(Z,Q.get(Y),X))return!1;return!0}if(J!==null&&typeof J==="object"&&Q!==null&&typeof Q==="object"){let Y=J,Z=Q,U=Object.keys(Y);if(U.length!==Object.keys(Z).length)return!1;for(let _ of U)if(!D(Y[_],Z[_],X))return!1;return!0}return!1},_Q=(J,Q)=>{for(let X=0;X<J.length;X++)if(J[X]!==Q[X])return!1;return!0};var PQ={};module.exports=K(PQ);var EQ={};P(EQ,{words:()=>yJ,useEventBus:()=>UQ,uncapitalize:()=>mJ,truncate:()=>hJ,titleCase:()=>gJ,timeout:()=>EJ,stringifyBigIntValues:()=>d,storageSetItemWithTTL:()=>uJ,storageSetItem:()=>v,storageRemoveItem:()=>h,storageGetItemWithTTL:()=>bJ,storageGetItem:()=>m,storageGetAllKeys:()=>iJ,storageExists:()=>nJ,storageClearBySuffix:()=>oJ,storageClearByPrefixOrSuffix:()=>w,storageClearByPrefix:()=>lJ,storageClear:()=>cJ,storageCalculateSize:()=>rJ,snakeCase:()=>CJ,slugify:()=>dJ,sleep:()=>g,setStyleProperties:()=>tJ,retry:()=>VJ,pickBy:()=>f,pick:()=>OJ,pascalCase:()=>wJ,parallelLimit:()=>NJ,omitBy:()=>RJ,omit:()=>HJ,merge:()=>PJ,mapValues:()=>IJ,mapKeys:()=>TJ,lines:()=>jJ,keysOf:()=>AJ,kebabCase:()=>fJ,isUndefined:()=>e,isString:()=>s,isSet:()=>FJ,isRegExp:()=>$J,isRecord:()=>t,isPromise:()=>UJ,isPrimitive:()=>WJ,isObject:()=>V,isNumber:()=>r,isNull:()=>JJ,isNil:()=>QJ,isMap:()=>_J,isInViewport:()=>QQ,isFunction:()=>a,isError:()=>GJ,isEqual:()=>FQ,isEmpty:()=>BJ,isDefined:()=>XJ,isDate:()=>ZJ,isBrowser:()=>aJ,isBoolean:()=>i,isArray:()=>YJ,invert:()=>zJ,hasOwn:()=>MJ,groupBy:()=>qJ,fromEntries:()=>SJ,escapeRegExp:()=>pJ,escapeHtml:()=>kJ,entriesOf:()=>KJ,defer:()=>LJ,deepMerge:()=>C,deepClone:()=>sJ,checkVisibility:()=>eJ,capitalizeFirstLetter:()=>xJ,capitalize:()=>vJ,camelCase:()=>DJ,calculateRenderedTextWidth:()=>XQ,busSubscribe:()=>N,busOnce:()=>$Q,busDispatch:()=>ZQ,__resetTextMeasurementCache:()=>JQ});module.exports=K(EQ);
7
+ var{defineProperty:g,getOwnPropertyNames:PQ,getOwnPropertyDescriptor:EQ}=Object,VQ=Object.prototype.hasOwnProperty;function qQ(J){return this[J]}var P=(J)=>{var Q=(s??=new WeakMap).get(J),X;if(Q)return Q;if(Q=g({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function"){for(var Y of PQ(J))if(!VQ.call(Q,Y))g(Q,Y,{get:qQ.bind(J,Y),enumerable:!(X=EQ(J,Y))||X.enumerable})}return s.set(J,Q),Q},s;var LQ=(J)=>J;function DQ(J,Q){this[J]=LQ.bind(null,Q)}var V=(J,Q)=>{for(var X in Q)g(J,X,{get:Q[X],enumerable:!0,configurable:!0,set:DQ.bind(Q,X)})};var wQ={};V(wQ,{isUndefined:()=>XJ,isString:()=>e,isSet:()=>HJ,isRegExp:()=>FJ,isRecord:()=>QJ,isPromise:()=>WJ,isPrimitive:()=>OJ,isObject:()=>D,isNumber:()=>a,isNull:()=>YJ,isNil:()=>ZJ,isMap:()=>BJ,isFunction:()=>JJ,isError:()=>UJ,isEmpty:()=>IJ,isDefined:()=>GJ,isDate:()=>_J,isBoolean:()=>t,isArray:()=>$J});module.exports=P(wQ);var t=(J)=>{return typeof J==="boolean"},a=(J)=>{return typeof J==="number"},e=(J)=>{return typeof J==="string"},JJ=(J)=>{return typeof J==="function"},D=(J)=>{if(J===null||typeof J!=="object")return!1;let Q=Object.getPrototypeOf(J);return Q===Object.prototype||Q===null},QJ=(J)=>{return typeof J==="object"&&J!==null},XJ=(J)=>{return J===void 0},YJ=(J)=>{return J===null},ZJ=(J)=>{return J===null||J===void 0},GJ=(J)=>{return J!==void 0},$J=(J)=>{return Array.isArray(J)},_J=(J)=>{return J instanceof Date},FJ=(J)=>{return J instanceof RegExp},UJ=(J)=>{return J instanceof Error},WJ=(J)=>{return J!==null&&(typeof J==="object"||typeof J==="function")&&typeof J.then==="function"},BJ=(J)=>{return J instanceof Map},HJ=(J)=>{return J instanceof Set},OJ=(J)=>{if(J===null||J===void 0)return!0;let Q=typeof J;return Q==="string"||Q==="number"||Q==="boolean"||Q==="bigint"||Q==="symbol"},IJ=(J)=>{if(J===null||J===void 0)return!0;if(typeof J==="string"||Array.isArray(J))return J.length===0;if(J instanceof Map||J instanceof Set)return J.size===0;if(typeof J==="object")return Object.keys(J).length===0;return!1};var xQ={};V(xQ,{pickBy:()=>d,pick:()=>TJ,omitBy:()=>MJ,omit:()=>RJ,merge:()=>LJ,mapValues:()=>zJ,mapKeys:()=>AJ,keysOf:()=>EJ,invert:()=>KJ,hasOwn:()=>PJ,groupBy:()=>SJ,fromEntries:()=>qJ,entriesOf:()=>VJ,deepMerge:()=>v});module.exports=P(xQ);var RJ=(J,Q)=>{let X={...J};for(let Y of Q)delete X[Y];return X},TJ=(J,Q)=>{let X={};for(let Y of Q)if(Y in J)X[Y]=J[Y];return X},d=(J,Q)=>{let X={};for(let Y of Object.keys(J))if(Q(J[Y],Y))X[Y]=J[Y];return X},MJ=(J,Q)=>{return d(J,(X,Y)=>!Q(X,Y))},zJ=(J,Q)=>{let X={};for(let Y of Object.keys(J))X[Y]=Q(J[Y],Y);return X},AJ=(J,Q)=>{let X={};for(let Y of Object.keys(J))X[Q(J[Y],Y)]=J[Y];return X},SJ=(J,Q)=>{let X={};return J.forEach((Y,Z)=>{let _=Q(Y,Z);if(X[_])X[_].push(Y);else X[_]=[Y]}),X},KJ=(J)=>{let Q={};for(let X of Object.keys(J))Q[J[X]]=X;return Q},PJ=(J,Q)=>{return Object.hasOwn(J,Q)},EJ=(J)=>{return Object.keys(J)},VJ=(J)=>{return Object.entries(J)},qJ=(J)=>{return Object.fromEntries(J)},LJ=(J,...Q)=>{return Object.assign({},J,...Q)},v=(J,...Q)=>{let X={...J};for(let Y of Q){if(Y===void 0)continue;for(let Z of Object.keys(Y)){let _=Y[Z],F=X[Z];if(D(_))X[Z]=v(D(F)?F:{},_);else X[Z]=_}}return X};var NQ={};V(NQ,{timeout:()=>DJ,sleep:()=>k,retry:()=>wJ,parallelLimit:()=>NJ,defer:()=>xJ});module.exports=P(NQ);var k=(J,Q)=>{return new Promise((X,Y)=>{if(Q?.aborted){Y(Q.reason);return}let Z=setTimeout(()=>{Q?.removeEventListener("abort",_),X()},J),_=()=>{clearTimeout(Z),Y(Q?.reason)};Q?.addEventListener("abort",_,{once:!0})})},DJ=(J,Q,X)=>{return new Promise((Y,Z)=>{let _=setTimeout(()=>{Z(X??Error(`Operation timed out after ${Q}ms`))},Q);J.then((F)=>{clearTimeout(_),Y(F)},(F)=>{clearTimeout(_),Z(F)})})},wJ=async(J,Q={})=>{let{attempts:X=3,backoff:Y=0,signal:Z,shouldRetry:_}=Q,F;for(let H=1;H<=X;H++){if(Z?.aborted)throw Z.reason;try{return await J(H)}catch(A){if(F=A,H>=X)break;if(_&&!_(A,H))break;let E=typeof Y==="function"?Y(H):Y;if(E>0)await k(E,Z)}}throw F},xJ=()=>{let J,Q;return{promise:new Promise((Y,Z)=>{J=Y,Q=Z}),resolve:J,reject:Q}},NJ=async(J,Q,X)=>{if(Q<1)throw Error("parallelLimit: concurrency must be >= 1");let Y=Array(J.length),Z=0,_=async()=>{while(!0){let H=Z++;if(H>=J.length)return;Y[H]=await X(J[H],H)}},F=Array.from({length:Math.min(Q,J.length)},_);return await Promise.all(F),Y};var CQ={};V(CQ,{words:()=>bJ,uncapitalize:()=>yJ,truncate:()=>jJ,titleCase:()=>kJ,snakeCase:()=>vJ,slugify:()=>mJ,pascalCase:()=>CJ,lines:()=>lJ,kebabCase:()=>dJ,escapeRegExp:()=>uJ,escapeHtml:()=>pJ,capitalizeFirstLetter:()=>gJ,capitalize:()=>hJ,camelCase:()=>fJ});module.exports=P(CQ);var fJ=(J)=>{return J.trim().toLowerCase().replace(/^[-_\s]+/,"").replace(/[-_\s]+(.)?/g,(Q,X)=>X?X.toUpperCase():"")},CJ=(J)=>{return J.split(/(?=[0-9])|(?<=[0-9])|[^a-zA-Z0-9]+/g).filter(Boolean).map((Q)=>Q.toLowerCase()).map((Q)=>`${Q.charAt(0).toUpperCase()}${Q.slice(1)}`).join("")},gJ=(J)=>J.charAt(0).toUpperCase()+J.slice(1),dJ=(J)=>{if(J==null)return J;return J.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z])([A-Z][a-z])/g,"$1-$2").replace(/[-_\s]+/g,"-").toLowerCase().replace(/^-+|-+$/g,"").trim()},vJ=(J)=>{if(J==null)return J;return J.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").replace(/[-_\s]+/g,"_").toLowerCase().replace(/^_+|_+$/g,"").trim()},kJ=(J)=>{return J.normalize("NFKD").replace(/[^\w\s-]/g," ").split(/[-_\s]+/).filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")},mJ=(J)=>{return J.normalize("NFKD").toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[-\s_]+/g,"-").replace(/^-+|-+$/g,"")},hJ=(J)=>{return J.charAt(0).toUpperCase()+J.slice(1)},yJ=(J)=>{return J.charAt(0).toLowerCase()+J.slice(1)},jJ=(J,Q,X="…")=>{if(J.length<=Q)return J;if(Q<=X.length)return X.slice(0,Q);return J.slice(0,Q-X.length)+X},fQ={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},pJ=(J)=>{return J.replace(/[&<>"']/g,(Q)=>fQ[Q])},uJ=(J)=>{return J.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},bJ=(J)=>{return J.split(/[-_\s]+/).filter(Boolean)},lJ=(J)=>{return J.split(/\r\n|\r|\n/)};var mQ={};V(mQ,{useEventBus:()=>AQ,stringifyBigIntValues:()=>m,storageSetItemWithTTL:()=>JQ,storageSetItem:()=>h,storageRemoveItem:()=>j,storageGetItemWithTTL:()=>QQ,storageGetItem:()=>y,storageGetAllKeys:()=>$Q,storageExists:()=>GQ,storageClearBySuffix:()=>ZQ,storageClearByPrefixOrSuffix:()=>C,storageClearByPrefix:()=>YQ,storageClear:()=>XQ,storageCalculateSize:()=>_Q,setStyleProperties:()=>WQ,isInViewport:()=>OQ,isEqual:()=>KQ,isCacheStorageSupported:()=>f,isBrowser:()=>UQ,deepClone:()=>FQ,checkVisibility:()=>BQ,calculateRenderedTextWidth:()=>IQ,cacheResponseKeys:()=>rJ,cachePutResponse:()=>cJ,cacheNames:()=>tJ,cacheMatchResponse:()=>nJ,cacheHasResponse:()=>oJ,cacheExists:()=>aJ,cacheDeleteResponse:()=>iJ,cacheDelete:()=>eJ,cacheClear:()=>sJ,busSubscribe:()=>x,busOnce:()=>MQ,busDispatch:()=>TQ,__resetTextMeasurementCache:()=>HQ});module.exports=P(mQ);var f=()=>{return typeof caches<"u"};var w=()=>{if(!f())throw Error("[@pivanov/utils/cache] Cache Storage is not available in this environment.");return caches},R=(J)=>{return w().open(J)},q=(J)=>{if(J.startsWith("http://")||J.startsWith("https://"))return J;return`https://cache.internal/${J}`};var cJ=async(J,Q,X)=>{if(X.bodyUsed)throw TypeError("[@pivanov/utils/cache] cachePutResponse received a Response whose body has already been consumed.");await(await R(J)).put(Q,X.clone())},nJ=async(J,Q,X)=>{return(await R(J)).match(Q,X)},iJ=async(J,Q,X)=>{return(await R(J)).delete(Q,X)},oJ=async(J,Q,X)=>{return await(await R(J)).match(Q,X)!==void 0},rJ=async(J)=>{return(await(await R(J)).keys()).map((Y)=>Y.url)},sJ=async(J)=>{let Q=await R(J),X=await Q.keys();await Promise.all(X.map((Y)=>Q.delete(Y)))},tJ=async()=>{return w().keys()},aJ=async(J)=>{return w().has(J)},eJ=async(J)=>{return w().delete(J)};var m=(J,Q)=>{return typeof Q==="bigint"?Q.toString():Q},h=async(J,Q,X)=>{let Y=await R(J),Z=JSON.stringify(X,m),_=new Response(Z,{headers:{"Content-Type":"application/json"}}),F=q(Q);await Y.put(new Request(F),_)},y=async(J,Q)=>{let X=await R(J),Y=q(Q),Z=await X.match(new Request(Y));if(!Z)return null;let _=await Z.text();return JSON.parse(_)},gQ=(J)=>{return typeof J==="object"&&J!==null&&J.__ttl===!0&&typeof J.exp==="number"},JQ=async(J,Q,X,Y)=>{let Z={__ttl:!0,v:X,exp:Date.now()+Y};await h(J,Q,Z)},QQ=async(J,Q)=>{let X=await y(J,Q);if(!gQ(X))return null;if(Date.now()>=X.exp)return await j(J,Q),null;return X.v},j=async(J,Q)=>{let X=await R(J),Y=q(Q);return X.delete(new Request(Y))},XQ=async(J)=>{let Q=await R(J),X=await Q.keys();for(let Y of X)await Q.delete(Y)},C=async(J,Q,X=!0)=>{let Y=await R(J),Z=await Y.keys();for(let _ of Z){let F=_.url.split("/"),H=F[F.length-1]||"";if(X&&H.startsWith(Q)||!X&&H.endsWith(Q))await Y.delete(_)}},YQ=async(J,Q)=>{await C(J,Q,!0)},ZQ=async(J,Q)=>{await C(J,Q,!1)},GQ=async(J,Q)=>{let X=await R(J),Y=q(Q);return await X.match(new Request(Y))!==void 0},$Q=async(J)=>{return(await(await R(J)).keys()).map((Y)=>{let Z=Y.url.split("/");return Z[Z.length-1]||""})},_Q=async(J,Q)=>{let X=await R(J);if(Q){let _=q(Q),F=await X.match(new Request(_));if(F)return(await F.clone().arrayBuffer()).byteLength;return 0}let Y=await X.keys(),Z=0;for(let _ of Y){let F=await X.match(_);if(F){let H=await F.clone().arrayBuffer();Z+=H.byteLength}}return Z};var FQ=(J)=>{return B(J,new WeakMap)},B=(J,Q)=>{if(J===null||typeof J!=="object")return J;let X=Q.get(J);if(X)return X;if(Array.isArray(J)){let G=J.length;if(G<32){let $=Array(G);Q.set(J,$);for(let W=0;W<G;W++)if(W in J)$[W]=B(J[W],Q);return $}let U=Array(G);if(Q.set(J,U),Object.keys(J).length===G){let $=0,W=G%8,I=G-W;while($<I)U[$]=B(J[$],Q),U[$+1]=B(J[$+1],Q),U[$+2]=B(J[$+2],Q),U[$+3]=B(J[$+3],Q),U[$+4]=B(J[$+4],Q),U[$+5]=B(J[$+5],Q),U[$+6]=B(J[$+6],Q),U[$+7]=B(J[$+7],Q),$+=8;while($<G)U[$]=B(J[$],Q),$++}else for(let $=0;$<G;$++)if($ in J)U[$]=B(J[$],Q);return U}if(J instanceof Date||J instanceof RegExp)return new J.constructor(J);if(typeof Buffer<"u")try{if(Buffer.isBuffer(J))return Buffer.from(J)}catch(G){if(G instanceof Error)throw G}if(ArrayBuffer.isView(J)){let G=J.constructor;if("buffer"in J){let $=J,W=$.buffer.slice($.byteOffset,$.byteOffset+$.byteLength);return new G(W)}return new G(new ArrayBuffer(J.byteLength))}if(J instanceof ArrayBuffer)return J.slice(0);if(J&&typeof J==="object"&&"buffer"in J&&"byteLength"in J){let G=J;if(typeof Buffer>"u"){let $=new Uint8Array(G.buffer,G.byteOffset||0,G.byteLength),W=new Uint8Array($.length);return W.set($),W}return{buffer:G.buffer instanceof ArrayBuffer?G.buffer.slice(0):new ArrayBuffer(G.byteLength),byteLength:G.byteLength,byteOffset:G.byteOffset||0,length:G.length||G.byteLength,BYTES_PER_ELEMENT:G.BYTES_PER_ELEMENT||1}}if(J instanceof Set){let G=new Set;Q.set(J,G);let U=Array.from(J),$=U.length;for(let W=0;W<$;W++)G.add(B(U[W],Q));return G}if(J instanceof Map){let G=new Map;Q.set(J,G);let U=Array.from(J),$=U.length;for(let W=0;W<$;W++){let[I,S]=U[W];G.set(I,B(S,Q))}return G}if(Object.getPrototypeOf(J)===Object.prototype){let G={};Q.set(J,G);let U=Object.getOwnPropertySymbols(J),$=U.length;if($>0)for(let O=0;O<$;O++){let T=U[O],M=Object.getOwnPropertyDescriptor(J,T);if(M?.enumerable)Object.defineProperty(G,T,M)}let W=Object.getOwnPropertyDescriptors(J),I=Object.keys(J),S=I.length,u=!1;for(let O=0;O<S;O++){let T=W[I[O]];if(T.get||T.set){u=!0;break}}if(u)for(let O=0;O<S;O++){let T=I[O],M=W[T];if(M.enumerable)if(M.get||M.set)Object.defineProperty(G,T,M);else{let K=B(M.value,Q);Object.defineProperty(G,T,{...M,value:K})}}else{let O=0,T=S%8,M=S-T;while(O<M){let K=I[O],b=I[O+1],l=I[O+2],c=I[O+3],n=I[O+4],i=I[O+5],o=I[O+6],r=I[O+7],z=J;G[K]=B(z[K],Q),G[b]=B(z[b],Q),G[l]=B(z[l],Q),G[c]=B(z[c],Q),G[n]=B(z[n],Q),G[i]=B(z[i],Q),G[o]=B(z[o],Q),G[r]=B(z[r],Q),O+=8}while(O<S){let K=I[O++];G[K]=B(J[K],Q)}}return G}let Y=Object.getPrototypeOf(J),Z=Object.create(Y);Q.set(J,Z);let _=Object.getOwnPropertyDescriptors(J),F=Object.keys(_),H=F.length;for(let G=0;G<H;G++){let U=F[G],$=_[U];if(!$.enumerable)continue;if($.get||$.set)Object.defineProperty(Z,U,$);else{let W=B($.value,Q);Object.defineProperty(Z,U,{...$,value:W})}}let A=Object.getOwnPropertySymbols(J),E=A.length;for(let G=0;G<E;G++){let U=A[G],$=Object.getOwnPropertyDescriptor(J,U);if(!$?.enumerable)continue;Object.defineProperty(Z,U,$)}return Z};var UQ=()=>{return typeof window<"u"&&typeof document<"u"},WQ=(J,Q)=>{if(!J)return;for(let[X,Y]of Object.entries(Q))J.style.setProperty(X,Y)},BQ=(J,Q={})=>{let{checkViewport:X=!0,checkDisplay:Y=!0,checkVisibility:Z=!0,checkOpacity:_=!0}=Q;if(!J.isConnected)return!1;if(Y||Z||_){let F=window.getComputedStyle(J);if(Y&&F.display==="none")return!1;if(Z&&F.visibility!==""&&F.visibility!=="visible")return!1;if(_&&F.opacity!==""){let H=Number.parseFloat(F.opacity);if(!Number.isNaN(H)&&H===0)return!1}}if(X){let F=J.getBoundingClientRect();if(F.width!==0||F.height!==0){let H=window.innerHeight||document.documentElement.clientHeight,A=window.innerWidth||document.documentElement.clientWidth,E=F.bottom<=0||F.top>=H,G=F.right<=0||F.left>=A;if(E||G)return!1}}return!0};var p,L,dQ=()=>{if(L!==void 0)return L;if(typeof document>"u")return L=null,null;return p=document.createElement("canvas"),L=p.getContext("2d"),L},HQ=()=>{p=void 0,L=void 0},OQ=(J,Q={})=>{let{vertical:X=!0,horizontal:Y=!0}=Q,Z=J.getBoundingClientRect();if(Z.width===0&&Z.height===0)return!0;let _=window.innerHeight||document.documentElement.clientHeight,F=window.innerWidth||document.documentElement.clientWidth;if(X&&(Z.bottom<=0||Z.top>=_))return!1;if(Y&&(Z.right<=0||Z.left>=F))return!1;return!0},IQ=(J,Q,X=!1,Y='Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"')=>{let Z=dQ();if(!Z)return 0;let _=X?J.toUpperCase():J;return Z.font=`${Q}px ${Y}`,Z.measureText(_).width};var vQ=(J,Q="\uD83D\uDE80")=>{let X=0,Y=J+Q;for(let Z=0;Z<Y.length;Z++){let _=Y.charCodeAt(Z);X=(X<<5)-X+_,X|=0}return(X>>>0).toString(16)},RQ=(J)=>{return`${vQ(J)}::${J}`},kQ=(J,Q)=>{return(X)=>{if(!(X instanceof CustomEvent))return;try{J(X.detail)}catch(Y){if(Q)Q(Y);else console.error("Event listener error:",Y)}}},TQ=(J,Q)=>{if(!J)return;let X=RQ(J);window.dispatchEvent(new CustomEvent(X,{detail:Q,bubbles:!0,cancelable:!1}))},x=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=kQ(Q,X.onError),Z=RQ(J);return window.addEventListener(Z,Y),()=>window.removeEventListener(Z,Y)},MQ=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=x(J,(Z)=>{Y(),Q(Z)},X);return Y};var zQ=require("react");var AQ=(J,Q,X=[])=>{zQ.useEffect(()=>{if(!J||typeof Q!=="function")return;return x(J,Q)},[J,Q,...X])};var KQ=(J,Q)=>{return N(J,Q,new WeakMap)},N=(J,Q,X)=>{if(Object.is(J,Q))return!0;if(J instanceof Date&&Q instanceof Date)return J.getTime()===Q.getTime();if(J instanceof RegExp&&Q instanceof RegExp)return J.source===Q.source&&J.flags===Q.flags;if(J instanceof Error&&Q instanceof Error)return J.name===Q.name&&J.message===Q.message;if(J instanceof ArrayBuffer&&Q instanceof ArrayBuffer){if(J.byteLength!==Q.byteLength)return!1;return SQ(new Uint8Array(J),new Uint8Array(Q))}if(ArrayBuffer.isView(J)&&ArrayBuffer.isView(Q)){if(J.constructor!==Q.constructor)return!1;if(J.byteLength!==Q.byteLength)return!1;let Y=new Uint8Array(J.buffer,J.byteOffset,J.byteLength),Z=new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength);return SQ(Y,Z)}if(typeof J==="object"&&J!==null&&typeof Q==="object"&&Q!==null){let Y=X.get(J);if(Y?.has(Q))return!0;if(Y)Y.add(Q);else X.set(J,new WeakSet([Q]))}if(Array.isArray(J)&&Array.isArray(Q)){if(J.length!==Q.length)return!1;for(let Y=0;Y<J.length;Y++)if(!N(J[Y],Q[Y],X))return!1;return!0}if(J instanceof Set&&Q instanceof Set){if(J.size!==Q.size)return!1;let Y=Array.from(Q);for(let Z of J){let _=Y.findIndex((F)=>N(Z,F,X));if(_===-1)return!1;Y.splice(_,1)}return!0}if(J instanceof Map&&Q instanceof Map){if(J.size!==Q.size)return!1;for(let[Y,Z]of J)if(!Q.has(Y)||!N(Z,Q.get(Y),X))return!1;return!0}if(J!==null&&typeof J==="object"&&Q!==null&&typeof Q==="object"){let Y=J,Z=Q,_=Object.keys(Y);if(_.length!==Object.keys(Z).length)return!1;for(let F of _)if(!N(Y[F],Z[F],X))return!1;return!0}return!1},SQ=(J,Q)=>{for(let X=0;X<J.length;X++)if(J[X]!==Q[X])return!1;return!0};var hQ={};module.exports=P(hQ);var yQ={};V(yQ,{words:()=>bJ,useEventBus:()=>AQ,uncapitalize:()=>yJ,truncate:()=>jJ,titleCase:()=>kJ,timeout:()=>DJ,stringifyBigIntValues:()=>m,storageSetItemWithTTL:()=>JQ,storageSetItem:()=>h,storageRemoveItem:()=>j,storageGetItemWithTTL:()=>QQ,storageGetItem:()=>y,storageGetAllKeys:()=>$Q,storageExists:()=>GQ,storageClearBySuffix:()=>ZQ,storageClearByPrefixOrSuffix:()=>C,storageClearByPrefix:()=>YQ,storageClear:()=>XQ,storageCalculateSize:()=>_Q,snakeCase:()=>vJ,slugify:()=>mJ,sleep:()=>k,setStyleProperties:()=>WQ,retry:()=>wJ,pickBy:()=>d,pick:()=>TJ,pascalCase:()=>CJ,parallelLimit:()=>NJ,omitBy:()=>MJ,omit:()=>RJ,merge:()=>LJ,mapValues:()=>zJ,mapKeys:()=>AJ,lines:()=>lJ,keysOf:()=>EJ,kebabCase:()=>dJ,isUndefined:()=>XJ,isString:()=>e,isSet:()=>HJ,isRegExp:()=>FJ,isRecord:()=>QJ,isPromise:()=>WJ,isPrimitive:()=>OJ,isObject:()=>D,isNumber:()=>a,isNull:()=>YJ,isNil:()=>ZJ,isMap:()=>BJ,isInViewport:()=>OQ,isFunction:()=>JJ,isError:()=>UJ,isEqual:()=>KQ,isEmpty:()=>IJ,isDefined:()=>GJ,isDate:()=>_J,isCacheStorageSupported:()=>f,isBrowser:()=>UQ,isBoolean:()=>t,isArray:()=>$J,invert:()=>KJ,hasOwn:()=>PJ,groupBy:()=>SJ,fromEntries:()=>qJ,escapeRegExp:()=>uJ,escapeHtml:()=>pJ,entriesOf:()=>VJ,defer:()=>xJ,deepMerge:()=>v,deepClone:()=>FQ,checkVisibility:()=>BQ,capitalizeFirstLetter:()=>gJ,capitalize:()=>hJ,camelCase:()=>fJ,calculateRenderedTextWidth:()=>IQ,cacheResponseKeys:()=>rJ,cachePutResponse:()=>cJ,cacheNames:()=>tJ,cacheMatchResponse:()=>nJ,cacheHasResponse:()=>oJ,cacheExists:()=>aJ,cacheDeleteResponse:()=>iJ,cacheDelete:()=>eJ,cacheClear:()=>sJ,busSubscribe:()=>x,busOnce:()=>MQ,busDispatch:()=>TQ,__resetTextMeasurementCache:()=>HQ});module.exports=P(yQ);
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:L,getOwnPropertyNames:Z,getOwnPropertyDescriptor:_}=Object,$=Object.prototype.hasOwnProperty;var T=new WeakMap,U=(q)=>{var F=T.get(q),G;if(F)return F;if(F=L({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function")Z(q).map((H)=>!$.call(F,H)&&L(F,H,{get:()=>q[H],enumerable:!(G=_(q,H))||G.enumerable}));return T.set(q,F),F};var W=(q,F)=>{for(var G in F)L(q,G,{get:F[G],enumerable:!0,configurable:!0,set:(H)=>F[G]=()=>H})};var g={};W(g,{isUndefined:()=>N,isString:()=>B,isSet:()=>V,isRegExp:()=>w,isRecord:()=>D,isPromise:()=>M,isPrimitive:()=>h,isObject:()=>K,isNumber:()=>A,isNull:()=>P,isNil:()=>R,isMap:()=>E,isFunction:()=>C,isError:()=>x,isEmpty:()=>d,isDefined:()=>f,isDate:()=>S,isBoolean:()=>z,isArray:()=>O});module.exports=U(g);var z=(q)=>{return typeof q==="boolean"},A=(q)=>{return typeof q==="number"},B=(q)=>{return typeof q==="string"},C=(q)=>{return typeof q==="function"},K=(q)=>{if(q===null||typeof q!=="object")return!1;let F=Object.getPrototypeOf(q);return F===Object.prototype||F===null},D=(q)=>{return typeof q==="object"&&q!==null},N=(q)=>{return q===void 0},P=(q)=>{return q===null},R=(q)=>{return q===null||q===void 0},f=(q)=>{return q!==void 0},O=(q)=>{return Array.isArray(q)},S=(q)=>{return q instanceof Date},w=(q)=>{return q instanceof RegExp},x=(q)=>{return q instanceof Error},M=(q)=>{return q!==null&&(typeof q==="object"||typeof q==="function")&&typeof q.then==="function"},E=(q)=>{return q instanceof Map},V=(q)=>{return q instanceof Set},h=(q)=>{if(q===null||q===void 0)return!0;let F=typeof q;return F==="string"||F==="number"||F==="boolean"||F==="bigint"||F==="symbol"},d=(q)=>{if(q===null||q===void 0)return!0;if(typeof q==="string"||Array.isArray(q))return q.length===0;if(q instanceof Map||q instanceof Set)return q.size===0;if(typeof q==="object")return Object.keys(q).length===0;return!1};var v={};W(v,{pickBy:()=>X,pick:()=>n,omitBy:()=>p,omit:()=>m,merge:()=>r,mapValues:()=>k,mapKeys:()=>i,keysOf:()=>c,invert:()=>y,hasOwn:()=>b,groupBy:()=>j,fromEntries:()=>s,entriesOf:()=>o,deepMerge:()=>Y});module.exports=U(v);var m=(q,F)=>{let G={...q};for(let H of F)delete G[H];return G},n=(q,F)=>{let G={};for(let H of F)if(H in q)G[H]=q[H];return G},X=(q,F)=>{let G={};for(let H of Object.keys(q))if(F(q[H],H))G[H]=q[H];return G},p=(q,F)=>{return X(q,(G,H)=>!F(G,H))},k=(q,F)=>{let G={};for(let H of Object.keys(q))G[H]=F(q[H],H);return G},i=(q,F)=>{let G={};for(let H of Object.keys(q))G[F(q[H],H)]=q[H];return G},j=(q,F)=>{let G={};return q.forEach((H,J)=>{let I=F(H,J);if(G[I])G[I].push(H);else G[I]=[H]}),G},y=(q)=>{let F={};for(let G of Object.keys(q))F[q[G]]=G;return F},b=(q,F)=>{return Object.hasOwn(q,F)},c=(q)=>{return Object.keys(q)},o=(q)=>{return Object.entries(q)},s=(q)=>{return Object.fromEntries(q)},r=(q,...F)=>{return Object.assign({},q,...F)},Y=(q,...F)=>{let G={...q};for(let H of F){if(H===void 0)continue;for(let J of Object.keys(H)){let I=H[J],Q=G[J];if(K(I))G[J]=Y(K(Q)?Q:{},I);else G[J]=I}}return G};
7
+ var{defineProperty:L,getOwnPropertyNames:Z,getOwnPropertyDescriptor:_}=Object,$=Object.prototype.hasOwnProperty;function z(q){return this[q]}var U=(q)=>{var F=(T??=new WeakMap).get(q),G;if(F)return F;if(F=L({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function"){for(var H of Z(q))if(!$.call(F,H))L(F,H,{get:z.bind(q,H),enumerable:!(G=_(q,H))||G.enumerable})}return T.set(q,F),F},T;var A=(q)=>q;function B(q,F){this[q]=A.bind(null,F)}var W=(q,F)=>{for(var G in F)L(q,G,{get:F[G],enumerable:!0,configurable:!0,set:B.bind(F,G)})};var p={};W(p,{isUndefined:()=>f,isString:()=>N,isSet:()=>g,isRegExp:()=>E,isRecord:()=>R,isPromise:()=>h,isPrimitive:()=>m,isObject:()=>K,isNumber:()=>D,isNull:()=>O,isNil:()=>S,isMap:()=>d,isFunction:()=>P,isError:()=>V,isEmpty:()=>n,isDefined:()=>w,isDate:()=>M,isBoolean:()=>C,isArray:()=>x});module.exports=U(p);var C=(q)=>{return typeof q==="boolean"},D=(q)=>{return typeof q==="number"},N=(q)=>{return typeof q==="string"},P=(q)=>{return typeof q==="function"},K=(q)=>{if(q===null||typeof q!=="object")return!1;let F=Object.getPrototypeOf(q);return F===Object.prototype||F===null},R=(q)=>{return typeof q==="object"&&q!==null},f=(q)=>{return q===void 0},O=(q)=>{return q===null},S=(q)=>{return q===null||q===void 0},w=(q)=>{return q!==void 0},x=(q)=>{return Array.isArray(q)},M=(q)=>{return q instanceof Date},E=(q)=>{return q instanceof RegExp},V=(q)=>{return q instanceof Error},h=(q)=>{return q!==null&&(typeof q==="object"||typeof q==="function")&&typeof q.then==="function"},d=(q)=>{return q instanceof Map},g=(q)=>{return q instanceof Set},m=(q)=>{if(q===null||q===void 0)return!0;let F=typeof q;return F==="string"||F==="number"||F==="boolean"||F==="bigint"||F==="symbol"},n=(q)=>{if(q===null||q===void 0)return!0;if(typeof q==="string"||Array.isArray(q))return q.length===0;if(q instanceof Map||q instanceof Set)return q.size===0;if(typeof q==="object")return Object.keys(q).length===0;return!1};var u={};W(u,{pickBy:()=>X,pick:()=>i,omitBy:()=>j,omit:()=>k,merge:()=>a,mapValues:()=>y,mapKeys:()=>b,keysOf:()=>r,invert:()=>o,hasOwn:()=>s,groupBy:()=>c,fromEntries:()=>l,entriesOf:()=>v,deepMerge:()=>Y});module.exports=U(u);var k=(q,F)=>{let G={...q};for(let H of F)delete G[H];return G},i=(q,F)=>{let G={};for(let H of F)if(H in q)G[H]=q[H];return G},X=(q,F)=>{let G={};for(let H of Object.keys(q))if(F(q[H],H))G[H]=q[H];return G},j=(q,F)=>{return X(q,(G,H)=>!F(G,H))},y=(q,F)=>{let G={};for(let H of Object.keys(q))G[H]=F(q[H],H);return G},b=(q,F)=>{let G={};for(let H of Object.keys(q))G[F(q[H],H)]=q[H];return G},c=(q,F)=>{let G={};return q.forEach((H,J)=>{let I=F(H,J);if(G[I])G[I].push(H);else G[I]=[H]}),G},o=(q)=>{let F={};for(let G of Object.keys(q))F[q[G]]=G;return F},s=(q,F)=>{return Object.hasOwn(q,F)},r=(q)=>{return Object.keys(q)},v=(q)=>{return Object.entries(q)},l=(q)=>{return Object.fromEntries(q)},a=(q,...F)=>{return Object.assign({},q,...F)},Y=(q,...F)=>{let G={...q};for(let H of F){if(H===void 0)continue;for(let J of Object.keys(H)){let I=H[J],Q=G[J];if(K(I))G[J]=Y(K(Q)?Q:{},I);else G[J]=I}}return G};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:J,getOwnPropertyNames:Q,getOwnPropertyDescriptor:S}=Object,T=Object.prototype.hasOwnProperty;var O=new WeakMap,U=(z)=>{var q=O.get(z),C;if(q)return q;if(q=J({},"__esModule",{value:!0}),z&&typeof z==="object"||typeof z==="function")Q(z).map((B)=>!T.call(q,B)&&J(q,B,{get:()=>z[B],enumerable:!(C=S(z,B))||C.enumerable}));return O.set(z,q),q};var V=(z,q)=>{for(var C in q)J(z,C,{get:q[C],enumerable:!0,configurable:!0,set:(B)=>q[C]=()=>B})};var _={};V(_,{timeout:()=>W,sleep:()=>P,retry:()=>X,parallelLimit:()=>Z,defer:()=>Y});module.exports=U(_);var P=(z,q)=>{return new Promise((C,B)=>{if(q?.aborted){B(q.reason);return}let D=setTimeout(()=>{q?.removeEventListener("abort",G),C()},z),G=()=>{clearTimeout(D),B(q?.reason)};q?.addEventListener("abort",G,{once:!0})})},W=(z,q,C)=>{return new Promise((B,D)=>{let G=setTimeout(()=>{D(C??Error(`Operation timed out after ${q}ms`))},q);z.then((H)=>{clearTimeout(G),B(H)},(H)=>{clearTimeout(G),D(H)})})},X=async(z,q={})=>{let{attempts:C=3,backoff:B=0,signal:D,shouldRetry:G}=q,H;for(let F=1;F<=C;F++){if(D?.aborted)throw D.reason;try{return await z(F)}catch(K){if(H=K,F>=C)break;if(G&&!G(K,F))break;let N=typeof B==="function"?B(F):B;if(N>0)await P(N,D)}}throw H},Y=()=>{let z,q;return{promise:new Promise((B,D)=>{z=B,q=D}),resolve:z,reject:q}},Z=async(z,q,C)=>{if(q<1)throw Error("parallelLimit: concurrency must be >= 1");let B=Array(z.length),D=0,G=async()=>{while(!0){let F=D++;if(F>=z.length)return;B[F]=await C(z[F],F)}},H=Array.from({length:Math.min(q,z.length)},G);return await Promise.all(H),B};
7
+ var{defineProperty:J,getOwnPropertyNames:Q,getOwnPropertyDescriptor:S}=Object,T=Object.prototype.hasOwnProperty;function U(q){return this[q]}var V=(q)=>{var z=(O??=new WeakMap).get(q),C;if(z)return z;if(z=J({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function"){for(var B of Q(q))if(!T.call(z,B))J(z,B,{get:U.bind(q,B),enumerable:!(C=S(q,B))||C.enumerable})}return O.set(q,z),z},O;var W=(q)=>q;function X(q,z){this[q]=W.bind(null,z)}var Y=(q,z)=>{for(var C in z)J(q,C,{get:z[C],enumerable:!0,configurable:!0,set:X.bind(z,C)})};var M={};Y(M,{timeout:()=>Z,sleep:()=>P,retry:()=>_,parallelLimit:()=>L,defer:()=>$});module.exports=V(M);var P=(q,z)=>{return new Promise((C,B)=>{if(z?.aborted){B(z.reason);return}let D=setTimeout(()=>{z?.removeEventListener("abort",G),C()},q),G=()=>{clearTimeout(D),B(z?.reason)};z?.addEventListener("abort",G,{once:!0})})},Z=(q,z,C)=>{return new Promise((B,D)=>{let G=setTimeout(()=>{D(C??Error(`Operation timed out after ${z}ms`))},z);q.then((H)=>{clearTimeout(G),B(H)},(H)=>{clearTimeout(G),D(H)})})},_=async(q,z={})=>{let{attempts:C=3,backoff:B=0,signal:D,shouldRetry:G}=z,H;for(let F=1;F<=C;F++){if(D?.aborted)throw D.reason;try{return await q(F)}catch(K){if(H=K,F>=C)break;if(G&&!G(K,F))break;let N=typeof B==="function"?B(F):B;if(N>0)await P(N,D)}}throw H},$=()=>{let q,z;return{promise:new Promise((B,D)=>{q=B,z=D}),resolve:q,reject:z}},L=async(q,z,C)=>{if(z<1)throw Error("parallelLimit: concurrency must be >= 1");let B=Array(q.length),D=0,G=async()=>{while(!0){let F=D++;if(F>=q.length)return;B[F]=await C(q[F],F)}},H=Array.from({length:Math.min(z,q.length)},G);return await Promise.all(H),B};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:u,getOwnPropertyNames:z,getOwnPropertyDescriptor:B}=Object,D=Object.prototype.hasOwnProperty;var v=new WeakMap,F=(d)=>{var f=v.get(d),j;if(f)return f;if(f=u({},"__esModule",{value:!0}),d&&typeof d==="object"||typeof d==="function")z(d).map((q)=>!D.call(f,q)&&u(f,q,{get:()=>d[q],enumerable:!(j=B(d,q))||j.enumerable}));return v.set(d,f),f};var G=(d,f)=>{for(var j in f)u(d,j,{get:f[j],enumerable:!0,configurable:!0,set:(q)=>f[j]=()=>q})};var o={};G(o,{words:()=>$,uncapitalize:()=>V,truncate:()=>W,titleCase:()=>Q,snakeCase:()=>O,slugify:()=>R,pascalCase:()=>J,lines:()=>k,kebabCase:()=>N,escapeRegExp:()=>Z,escapeHtml:()=>Y,capitalizeFirstLetter:()=>K,capitalize:()=>U,camelCase:()=>I});module.exports=F(o);var I=(d)=>{return d.trim().toLowerCase().replace(/^[-_\s]+/,"").replace(/[-_\s]+(.)?/g,(f,j)=>j?j.toUpperCase():"")},J=(d)=>{return d.split(/(?=[0-9])|(?<=[0-9])|[^a-zA-Z0-9]+/g).filter(Boolean).map((f)=>f.toLowerCase()).map((f)=>`${f.charAt(0).toUpperCase()}${f.slice(1)}`).join("")},K=(d)=>d.charAt(0).toUpperCase()+d.slice(1),N=(d)=>{if(d==null)return d;return d.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z])([A-Z][a-z])/g,"$1-$2").replace(/[-_\s]+/g,"-").toLowerCase().replace(/^-+|-+$/g,"").trim()},O=(d)=>{if(d==null)return d;return d.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").replace(/[-_\s]+/g,"_").toLowerCase().replace(/^_+|_+$/g,"").trim()},Q=(d)=>{return d.normalize("NFKD").replace(/[^\w\s-]/g," ").split(/[-_\s]+/).filter(Boolean).map((f)=>f.charAt(0).toUpperCase()+f.slice(1).toLowerCase()).join(" ")},R=(d)=>{return d.normalize("NFKD").toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[-\s_]+/g,"-").replace(/^-+|-+$/g,"")},U=(d)=>{return d.charAt(0).toUpperCase()+d.slice(1)},V=(d)=>{return d.charAt(0).toLowerCase()+d.slice(1)},W=(d,f,j="…")=>{if(d.length<=f)return d;if(f<=j.length)return j.slice(0,f);return d.slice(0,f-j.length)+j},X={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Y=(d)=>{return d.replace(/[&<>"']/g,(f)=>X[f])},Z=(d)=>{return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},$=(d)=>{return d.split(/[-_\s]+/).filter(Boolean)},k=(d)=>{return d.split(/\r\n|\r|\n/)};
7
+ var{defineProperty:u,getOwnPropertyNames:z,getOwnPropertyDescriptor:B}=Object,D=Object.prototype.hasOwnProperty;function F(d){return this[d]}var G=(d)=>{var f=(v??=new WeakMap).get(d),j;if(f)return f;if(f=u({},"__esModule",{value:!0}),d&&typeof d==="object"||typeof d==="function"){for(var q of z(d))if(!D.call(f,q))u(f,q,{get:F.bind(d,q),enumerable:!(j=B(d,q))||j.enumerable})}return v.set(d,f),f},v;var I=(d)=>d;function J(d,f){this[d]=I.bind(null,f)}var K=(d,f)=>{for(var j in f)u(d,j,{get:f[j],enumerable:!0,configurable:!0,set:J.bind(f,j)})};var H={};K(H,{words:()=>y,uncapitalize:()=>Y,truncate:()=>Z,titleCase:()=>V,snakeCase:()=>U,slugify:()=>W,pascalCase:()=>O,lines:()=>C,kebabCase:()=>R,escapeRegExp:()=>o,escapeHtml:()=>k,capitalizeFirstLetter:()=>Q,capitalize:()=>X,camelCase:()=>N});module.exports=G(H);var N=(d)=>{return d.trim().toLowerCase().replace(/^[-_\s]+/,"").replace(/[-_\s]+(.)?/g,(f,j)=>j?j.toUpperCase():"")},O=(d)=>{return d.split(/(?=[0-9])|(?<=[0-9])|[^a-zA-Z0-9]+/g).filter(Boolean).map((f)=>f.toLowerCase()).map((f)=>`${f.charAt(0).toUpperCase()}${f.slice(1)}`).join("")},Q=(d)=>d.charAt(0).toUpperCase()+d.slice(1),R=(d)=>{if(d==null)return d;return d.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z])([A-Z][a-z])/g,"$1-$2").replace(/[-_\s]+/g,"-").toLowerCase().replace(/^-+|-+$/g,"").trim()},U=(d)=>{if(d==null)return d;return d.normalize("NFKD").replace(/\p{Diacritic}/gu,"").replace(/[^\w\s-]/g," ").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").replace(/[-_\s]+/g,"_").toLowerCase().replace(/^_+|_+$/g,"").trim()},V=(d)=>{return d.normalize("NFKD").replace(/[^\w\s-]/g," ").split(/[-_\s]+/).filter(Boolean).map((f)=>f.charAt(0).toUpperCase()+f.slice(1).toLowerCase()).join(" ")},W=(d)=>{return d.normalize("NFKD").toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[-\s_]+/g,"-").replace(/^-+|-+$/g,"")},X=(d)=>{return d.charAt(0).toUpperCase()+d.slice(1)},Y=(d)=>{return d.charAt(0).toLowerCase()+d.slice(1)},Z=(d,f,j="…")=>{if(d.length<=f)return d;if(f<=j.length)return j.slice(0,f);return d.slice(0,f-j.length)+j},$={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},k=(d)=>{return d.replace(/[&<>"']/g,(f)=>$[f])},o=(d)=>{return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},y=(d)=>{return d.split(/[-_\s]+/).filter(Boolean)},C=(d)=>{return d.split(/\r\n|\r|\n/)};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:V,getOwnPropertyNames:c,getOwnPropertyDescriptor:r}=Object,n=Object.prototype.hasOwnProperty;var u=new WeakMap,o=(J)=>{var Q=u.get(J),X;if(Q)return Q;if(Q=V({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")c(J).map((Y)=>!n.call(Q,Y)&&V(Q,Y,{get:()=>J[Y],enumerable:!(X=r(J,Y))||X.enumerable}));return u.set(J,Q),Q};var i=(J,Q)=>{for(var X in Q)V(J,X,{get:Q[X],enumerable:!0,configurable:!0,set:(Y)=>Q[X]=()=>Y})};var TJ={};i(TJ,{useEventBus:()=>EJ,stringifyBigIntValues:()=>k,storageSetItemWithTTL:()=>s,storageSetItem:()=>p,storageRemoveItem:()=>y,storageGetItemWithTTL:()=>a,storageGetItem:()=>h,storageGetAllKeys:()=>YJ,storageExists:()=>XJ,storageClearBySuffix:()=>QJ,storageClearByPrefixOrSuffix:()=>w,storageClearByPrefix:()=>JJ,storageClear:()=>e,storageCalculateSize:()=>ZJ,setStyleProperties:()=>GJ,isInViewport:()=>MJ,isEqual:()=>IJ,isBrowser:()=>$J,deepClone:()=>_J,checkVisibility:()=>FJ,calculateRenderedTextWidth:()=>RJ,busSubscribe:()=>K,busOnce:()=>HJ,busDispatch:()=>AJ,__resetTextMeasurementCache:()=>BJ});module.exports=o(TJ);var k=(J,Q)=>{return typeof Q==="bigint"?Q.toString():Q},P=(J)=>{if(J.startsWith("http://")||J.startsWith("https://"))return J;return`https://cache.internal/${J}`},p=async(J,Q,X)=>{let Y=await caches.open(J),$=JSON.stringify(X,k),U=new Response($,{headers:{"Content-Type":"application/json"}}),G=P(Q);await Y.put(new Request(G),U)},h=async(J,Q)=>{let X=await caches.open(J),Y=P(Q),$=await X.match(new Request(Y));if(!$)return null;let U=await $.text();return JSON.parse(U)},t=(J)=>{return typeof J==="object"&&J!==null&&J.__ttl===!0&&typeof J.exp==="number"},s=async(J,Q,X,Y)=>{let $={__ttl:!0,v:X,exp:Date.now()+Y};await p(J,Q,$)},a=async(J,Q)=>{let X=await h(J,Q);if(!t(X))return null;if(Date.now()>=X.exp)return await y(J,Q),null;return X.v},y=async(J,Q)=>{let X=await caches.open(J),Y=P(Q);return X.delete(new Request(Y))},e=async(J)=>{let Q=await caches.open(J),X=await Q.keys();for(let Y of X)await Q.delete(Y)},w=async(J,Q,X=!0)=>{let Y=await caches.open(J),$=await Y.keys();for(let U of $){let G=U.url.split("/"),W=G[G.length-1]||"";if(X&&W.startsWith(Q)||!X&&W.endsWith(Q))await Y.delete(U)}},JJ=async(J,Q)=>{await w(J,Q,!0)},QJ=async(J,Q)=>{await w(J,Q,!1)},XJ=async(J,Q)=>{let X=await caches.open(J),Y=P(Q);return await X.match(new Request(Y))!==void 0},YJ=async(J)=>{return(await(await caches.open(J)).keys()).map((Y)=>{let $=Y.url.split("/");return $[$.length-1]||""})},ZJ=async(J,Q)=>{let X=await caches.open(J);if(Q){let U=P(Q),G=await X.match(new Request(U));if(G)return(await G.clone().arrayBuffer()).byteLength;return 0}let Y=await X.keys(),$=0;for(let U of Y){let G=await X.match(U);if(G){let W=await G.clone().arrayBuffer();$+=W.byteLength}}return $};var _J=(J)=>{return M(J,new WeakMap)},M=(J,Q)=>{if(J===null||typeof J!=="object")return J;let X=Q.get(J);if(X)return X;if(Array.isArray(J)){let Z=J.length;if(Z<32){let _=Array(Z);Q.set(J,_);for(let B=0;B<Z;B++)if(B in J)_[B]=M(J[B],Q);return _}let F=Array(Z);if(Q.set(J,F),Object.keys(J).length===Z){let _=0,B=Z%8,O=Z-B;while(_<O)F[_]=M(J[_],Q),F[_+1]=M(J[_+1],Q),F[_+2]=M(J[_+2],Q),F[_+3]=M(J[_+3],Q),F[_+4]=M(J[_+4],Q),F[_+5]=M(J[_+5],Q),F[_+6]=M(J[_+6],Q),F[_+7]=M(J[_+7],Q),_+=8;while(_<Z)F[_]=M(J[_],Q),_++}else for(let _=0;_<Z;_++)if(_ in J)F[_]=M(J[_],Q);return F}if(J instanceof Date||J instanceof RegExp)return new J.constructor(J);if(typeof Buffer<"u")try{if(Buffer.isBuffer(J))return Buffer.from(J)}catch(Z){if(Z instanceof Error)throw Z}if(ArrayBuffer.isView(J)){let Z=J.constructor;if("buffer"in J){let _=J,B=_.buffer.slice(_.byteOffset,_.byteOffset+_.byteLength);return new Z(B)}return new Z(new ArrayBuffer(J.byteLength))}if(J instanceof ArrayBuffer)return J.slice(0);if(J&&typeof J==="object"&&"buffer"in J&&"byteLength"in J){let Z=J;if(typeof Buffer>"u"){let _=new Uint8Array(Z.buffer,Z.byteOffset||0,Z.byteLength),B=new Uint8Array(_.length);return B.set(_),B}return{buffer:Z.buffer instanceof ArrayBuffer?Z.buffer.slice(0):new ArrayBuffer(Z.byteLength),byteLength:Z.byteLength,byteOffset:Z.byteOffset||0,length:Z.length||Z.byteLength,BYTES_PER_ELEMENT:Z.BYTES_PER_ELEMENT||1}}if(J instanceof Set){let Z=new Set;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let B=0;B<_;B++)Z.add(M(F[B],Q));return Z}if(J instanceof Map){let Z=new Map;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let B=0;B<_;B++){let[O,I]=F[B];Z.set(O,M(I,Q))}return Z}if(Object.getPrototypeOf(J)===Object.prototype){let Z={};Q.set(J,Z);let F=Object.getOwnPropertySymbols(J),_=F.length;if(_>0)for(let R=0;R<_;R++){let A=F[R],H=Object.getOwnPropertyDescriptor(J,A);if(H?.enumerable)Object.defineProperty(Z,A,H)}let B=Object.getOwnPropertyDescriptors(J),O=Object.keys(J),I=O.length,N=!1;for(let R=0;R<I;R++){let A=B[O[R]];if(A.get||A.set){N=!0;break}}if(N)for(let R=0;R<I;R++){let A=O[R],H=B[A];if(H.enumerable)if(H.get||H.set)Object.defineProperty(Z,A,H);else{let T=M(H.value,Q);Object.defineProperty(Z,A,{...H,value:T})}}else{let R=0,A=I%8,H=I-A;while(R<H){let T=O[R],x=O[R+1],f=O[R+2],v=O[R+3],g=O[R+4],C=O[R+5],m=O[R+6],d=O[R+7],E=J;Z[T]=M(E[T],Q),Z[x]=M(E[x],Q),Z[f]=M(E[f],Q),Z[v]=M(E[v],Q),Z[g]=M(E[g],Q),Z[C]=M(E[C],Q),Z[m]=M(E[m],Q),Z[d]=M(E[d],Q),R+=8}while(R<I){let T=O[R++];Z[T]=M(J[T],Q)}}return Z}let Y=Object.getPrototypeOf(J),$=Object.create(Y);Q.set(J,$);let U=Object.getOwnPropertyDescriptors(J),G=Object.keys(U),W=G.length;for(let Z=0;Z<W;Z++){let F=G[Z],_=U[F];if(!_.enumerable)continue;if(_.get||_.set)Object.defineProperty($,F,_);else{let B=M(_.value,Q);Object.defineProperty($,F,{..._,value:B})}}let q=Object.getOwnPropertySymbols(J),L=q.length;for(let Z=0;Z<L;Z++){let F=q[Z],_=Object.getOwnPropertyDescriptor(J,F);if(!_?.enumerable)continue;Object.defineProperty($,F,_)}return $};var $J=()=>{return typeof window<"u"&&typeof document<"u"},GJ=(J,Q)=>{if(!J)return;for(let[X,Y]of Object.entries(Q))J.style.setProperty(X,Y)},FJ=(J,Q={})=>{let{checkViewport:X=!0,checkDisplay:Y=!0,checkVisibility:$=!0,checkOpacity:U=!0}=Q;if(!J.isConnected)return!1;if(Y||$||U){let G=window.getComputedStyle(J);if(Y&&G.display==="none")return!1;if($&&G.visibility!==""&&G.visibility!=="visible")return!1;if(U&&G.opacity!==""){let W=Number.parseFloat(G.opacity);if(!Number.isNaN(W)&&W===0)return!1}}if(X){let G=J.getBoundingClientRect();if(G.width!==0||G.height!==0){let W=window.innerHeight||document.documentElement.clientHeight,q=window.innerWidth||document.documentElement.clientWidth,L=G.bottom<=0||G.top>=W,Z=G.right<=0||G.left>=q;if(L||Z)return!1}}return!0};var D,z,UJ=()=>{if(z!==void 0)return z;if(typeof document>"u")return z=null,null;return D=document.createElement("canvas"),z=D.getContext("2d"),z},BJ=()=>{D=void 0,z=void 0},MJ=(J,Q={})=>{let{vertical:X=!0,horizontal:Y=!0}=Q,$=J.getBoundingClientRect();if($.width===0&&$.height===0)return!0;let U=window.innerHeight||document.documentElement.clientHeight,G=window.innerWidth||document.documentElement.clientWidth;if(X&&($.bottom<=0||$.top>=U))return!1;if(Y&&($.right<=0||$.left>=G))return!1;return!0},RJ=(J,Q,X=!1,Y='Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"')=>{let $=UJ();if(!$)return 0;let U=X?J.toUpperCase():J;return $.font=`${Q}px ${Y}`,$.measureText(U).width};var OJ=(J,Q="\uD83D\uDE80")=>{let X=0,Y=J+Q;for(let $=0;$<Y.length;$++){let U=Y.charCodeAt($);X=(X<<5)-X+U,X|=0}return(X>>>0).toString(16)},j=(J)=>{return`${OJ(J)}::${J}`},WJ=(J,Q)=>{return(X)=>{if(!(X instanceof CustomEvent))return;try{J(X.detail)}catch(Y){if(Q)Q(Y);else console.error("Event listener error:",Y)}}},AJ=(J,Q)=>{if(!J)return;let X=j(J);window.dispatchEvent(new CustomEvent(X,{detail:Q,bubbles:!0,cancelable:!1}))},K=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=WJ(Q,X.onError),$=j(J);return window.addEventListener($,Y),()=>window.removeEventListener($,Y)},HJ=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=K(J,($)=>{Y(),Q($)},X);return Y};var l=require("react");var EJ=(J,Q,X=[])=>{l.useEffect(()=>{if(!J||typeof Q!=="function")return;return K(J,Q)},[J,Q,...X])};var IJ=(J,Q)=>{return S(J,Q,new WeakMap)},S=(J,Q,X)=>{if(Object.is(J,Q))return!0;if(J instanceof Date&&Q instanceof Date)return J.getTime()===Q.getTime();if(J instanceof RegExp&&Q instanceof RegExp)return J.source===Q.source&&J.flags===Q.flags;if(J instanceof Error&&Q instanceof Error)return J.name===Q.name&&J.message===Q.message;if(J instanceof ArrayBuffer&&Q instanceof ArrayBuffer){if(J.byteLength!==Q.byteLength)return!1;return b(new Uint8Array(J),new Uint8Array(Q))}if(ArrayBuffer.isView(J)&&ArrayBuffer.isView(Q)){if(J.constructor!==Q.constructor)return!1;if(J.byteLength!==Q.byteLength)return!1;let Y=new Uint8Array(J.buffer,J.byteOffset,J.byteLength),$=new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength);return b(Y,$)}if(typeof J==="object"&&J!==null&&typeof Q==="object"&&Q!==null){let Y=X.get(J);if(Y?.has(Q))return!0;if(Y)Y.add(Q);else X.set(J,new WeakSet([Q]))}if(Array.isArray(J)&&Array.isArray(Q)){if(J.length!==Q.length)return!1;for(let Y=0;Y<J.length;Y++)if(!S(J[Y],Q[Y],X))return!1;return!0}if(J instanceof Set&&Q instanceof Set){if(J.size!==Q.size)return!1;let Y=Array.from(Q);for(let $ of J){let U=Y.findIndex((G)=>S($,G,X));if(U===-1)return!1;Y.splice(U,1)}return!0}if(J instanceof Map&&Q instanceof Map){if(J.size!==Q.size)return!1;for(let[Y,$]of J)if(!Q.has(Y)||!S($,Q.get(Y),X))return!1;return!0}if(J!==null&&typeof J==="object"&&Q!==null&&typeof Q==="object"){let Y=J,$=Q,U=Object.keys(Y);if(U.length!==Object.keys($).length)return!1;for(let G of U)if(!S(Y[G],$[G],X))return!1;return!0}return!1},b=(J,Q)=>{for(let X=0;X<J.length;X++)if(J[X]!==Q[X])return!1;return!0};
7
+ var{defineProperty:D,getOwnPropertyNames:n,getOwnPropertyDescriptor:o}=Object,t=Object.prototype.hasOwnProperty;function s(J){return this[J]}var a=(J)=>{var Q=(j??=new WeakMap).get(J),X;if(Q)return Q;if(Q=D({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function"){for(var Y of n(J))if(!t.call(Q,Y))D(Q,Y,{get:s.bind(J,Y),enumerable:!(X=o(J,Y))||X.enumerable})}return j.set(J,Q),Q},j;var e=(J)=>J;function JJ(J,Q){this[J]=e.bind(null,Q)}var QJ=(J,Q)=>{for(var X in Q)D(J,X,{get:Q[X],enumerable:!0,configurable:!0,set:JJ.bind(Q,X)})};var CJ={};QJ(CJ,{useEventBus:()=>vJ,stringifyBigIntValues:()=>p,storageSetItemWithTTL:()=>AJ,storageSetItem:()=>h,storageRemoveItem:()=>b,storageGetItemWithTTL:()=>OJ,storageGetItem:()=>l,storageGetAllKeys:()=>EJ,storageExists:()=>IJ,storageClearBySuffix:()=>HJ,storageClearByPrefixOrSuffix:()=>f,storageClearByPrefix:()=>WJ,storageClear:()=>RJ,storageCalculateSize:()=>SJ,setStyleProperties:()=>zJ,isInViewport:()=>wJ,isEqual:()=>gJ,isCacheStorageSupported:()=>x,isBrowser:()=>PJ,deepClone:()=>TJ,checkVisibility:()=>KJ,calculateRenderedTextWidth:()=>qJ,cacheResponseKeys:()=>GJ,cachePutResponse:()=>XJ,cacheNames:()=>FJ,cacheMatchResponse:()=>YJ,cacheHasResponse:()=>_J,cacheExists:()=>BJ,cacheDeleteResponse:()=>ZJ,cacheDelete:()=>UJ,cacheClear:()=>$J,busSubscribe:()=>w,busOnce:()=>NJ,busDispatch:()=>fJ,__resetTextMeasurementCache:()=>LJ});module.exports=a(CJ);var x=()=>{return typeof caches<"u"};var K=()=>{if(!x())throw Error("[@pivanov/utils/cache] Cache Storage is not available in this environment.");return caches},R=(J)=>{return K().open(J)},P=(J)=>{if(J.startsWith("http://")||J.startsWith("https://"))return J;return`https://cache.internal/${J}`};var XJ=async(J,Q,X)=>{if(X.bodyUsed)throw TypeError("[@pivanov/utils/cache] cachePutResponse received a Response whose body has already been consumed.");await(await R(J)).put(Q,X.clone())},YJ=async(J,Q,X)=>{return(await R(J)).match(Q,X)},ZJ=async(J,Q,X)=>{return(await R(J)).delete(Q,X)},_J=async(J,Q,X)=>{return await(await R(J)).match(Q,X)!==void 0},GJ=async(J)=>{return(await(await R(J)).keys()).map((Y)=>Y.url)},$J=async(J)=>{let Q=await R(J),X=await Q.keys();await Promise.all(X.map((Y)=>Q.delete(Y)))},FJ=async()=>{return K().keys()},BJ=async(J)=>{return K().has(J)},UJ=async(J)=>{return K().delete(J)};var p=(J,Q)=>{return typeof Q==="bigint"?Q.toString():Q},h=async(J,Q,X)=>{let Y=await R(J),G=JSON.stringify(X,p),B=new Response(G,{headers:{"Content-Type":"application/json"}}),$=P(Q);await Y.put(new Request($),B)},l=async(J,Q)=>{let X=await R(J),Y=P(Q),G=await X.match(new Request(Y));if(!G)return null;let B=await G.text();return JSON.parse(B)},MJ=(J)=>{return typeof J==="object"&&J!==null&&J.__ttl===!0&&typeof J.exp==="number"},AJ=async(J,Q,X,Y)=>{let G={__ttl:!0,v:X,exp:Date.now()+Y};await h(J,Q,G)},OJ=async(J,Q)=>{let X=await l(J,Q);if(!MJ(X))return null;if(Date.now()>=X.exp)return await b(J,Q),null;return X.v},b=async(J,Q)=>{let X=await R(J),Y=P(Q);return X.delete(new Request(Y))},RJ=async(J)=>{let Q=await R(J),X=await Q.keys();for(let Y of X)await Q.delete(Y)},f=async(J,Q,X=!0)=>{let Y=await R(J),G=await Y.keys();for(let B of G){let $=B.url.split("/"),W=$[$.length-1]||"";if(X&&W.startsWith(Q)||!X&&W.endsWith(Q))await Y.delete(B)}},WJ=async(J,Q)=>{await f(J,Q,!0)},HJ=async(J,Q)=>{await f(J,Q,!1)},IJ=async(J,Q)=>{let X=await R(J),Y=P(Q);return await X.match(new Request(Y))!==void 0},EJ=async(J)=>{return(await(await R(J)).keys()).map((Y)=>{let G=Y.url.split("/");return G[G.length-1]||""})},SJ=async(J,Q)=>{let X=await R(J);if(Q){let B=P(Q),$=await X.match(new Request(B));if($)return(await $.clone().arrayBuffer()).byteLength;return 0}let Y=await X.keys(),G=0;for(let B of Y){let $=await X.match(B);if($){let W=await $.clone().arrayBuffer();G+=W.byteLength}}return G};var TJ=(J)=>{return M(J,new WeakMap)},M=(J,Q)=>{if(J===null||typeof J!=="object")return J;let X=Q.get(J);if(X)return X;if(Array.isArray(J)){let Z=J.length;if(Z<32){let _=Array(Z);Q.set(J,_);for(let U=0;U<Z;U++)if(U in J)_[U]=M(J[U],Q);return _}let F=Array(Z);if(Q.set(J,F),Object.keys(J).length===Z){let _=0,U=Z%8,O=Z-U;while(_<O)F[_]=M(J[_],Q),F[_+1]=M(J[_+1],Q),F[_+2]=M(J[_+2],Q),F[_+3]=M(J[_+3],Q),F[_+4]=M(J[_+4],Q),F[_+5]=M(J[_+5],Q),F[_+6]=M(J[_+6],Q),F[_+7]=M(J[_+7],Q),_+=8;while(_<Z)F[_]=M(J[_],Q),_++}else for(let _=0;_<Z;_++)if(_ in J)F[_]=M(J[_],Q);return F}if(J instanceof Date||J instanceof RegExp)return new J.constructor(J);if(typeof Buffer<"u")try{if(Buffer.isBuffer(J))return Buffer.from(J)}catch(Z){if(Z instanceof Error)throw Z}if(ArrayBuffer.isView(J)){let Z=J.constructor;if("buffer"in J){let _=J,U=_.buffer.slice(_.byteOffset,_.byteOffset+_.byteLength);return new Z(U)}return new Z(new ArrayBuffer(J.byteLength))}if(J instanceof ArrayBuffer)return J.slice(0);if(J&&typeof J==="object"&&"buffer"in J&&"byteLength"in J){let Z=J;if(typeof Buffer>"u"){let _=new Uint8Array(Z.buffer,Z.byteOffset||0,Z.byteLength),U=new Uint8Array(_.length);return U.set(_),U}return{buffer:Z.buffer instanceof ArrayBuffer?Z.buffer.slice(0):new ArrayBuffer(Z.byteLength),byteLength:Z.byteLength,byteOffset:Z.byteOffset||0,length:Z.length||Z.byteLength,BYTES_PER_ELEMENT:Z.BYTES_PER_ELEMENT||1}}if(J instanceof Set){let Z=new Set;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let U=0;U<_;U++)Z.add(M(F[U],Q));return Z}if(J instanceof Map){let Z=new Map;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let U=0;U<_;U++){let[O,S]=F[U];Z.set(O,M(S,Q))}return Z}if(Object.getPrototypeOf(J)===Object.prototype){let Z={};Q.set(J,Z);let F=Object.getOwnPropertySymbols(J),_=F.length;if(_>0)for(let A=0;A<_;A++){let H=F[A],I=Object.getOwnPropertyDescriptor(J,H);if(I?.enumerable)Object.defineProperty(Z,H,I)}let U=Object.getOwnPropertyDescriptors(J),O=Object.keys(J),S=O.length,v=!1;for(let A=0;A<S;A++){let H=U[O[A]];if(H.get||H.set){v=!0;break}}if(v)for(let A=0;A<S;A++){let H=O[A],I=U[H];if(I.enumerable)if(I.get||I.set)Object.defineProperty(Z,H,I);else{let T=M(I.value,Q);Object.defineProperty(Z,H,{...I,value:T})}}else{let A=0,H=S%8,I=S-H;while(A<I){let T=O[A],g=O[A+1],C=O[A+2],d=O[A+3],m=O[A+4],u=O[A+5],k=O[A+6],y=O[A+7],E=J;Z[T]=M(E[T],Q),Z[g]=M(E[g],Q),Z[C]=M(E[C],Q),Z[d]=M(E[d],Q),Z[m]=M(E[m],Q),Z[u]=M(E[u],Q),Z[k]=M(E[k],Q),Z[y]=M(E[y],Q),A+=8}while(A<S){let T=O[A++];Z[T]=M(J[T],Q)}}return Z}let Y=Object.getPrototypeOf(J),G=Object.create(Y);Q.set(J,G);let B=Object.getOwnPropertyDescriptors(J),$=Object.keys(B),W=$.length;for(let Z=0;Z<W;Z++){let F=$[Z],_=B[F];if(!_.enumerable)continue;if(_.get||_.set)Object.defineProperty(G,F,_);else{let U=M(_.value,Q);Object.defineProperty(G,F,{..._,value:U})}}let L=Object.getOwnPropertySymbols(J),q=L.length;for(let Z=0;Z<q;Z++){let F=L[Z],_=Object.getOwnPropertyDescriptor(J,F);if(!_?.enumerable)continue;Object.defineProperty(G,F,_)}return G};var PJ=()=>{return typeof window<"u"&&typeof document<"u"},zJ=(J,Q)=>{if(!J)return;for(let[X,Y]of Object.entries(Q))J.style.setProperty(X,Y)},KJ=(J,Q={})=>{let{checkViewport:X=!0,checkDisplay:Y=!0,checkVisibility:G=!0,checkOpacity:B=!0}=Q;if(!J.isConnected)return!1;if(Y||G||B){let $=window.getComputedStyle(J);if(Y&&$.display==="none")return!1;if(G&&$.visibility!==""&&$.visibility!=="visible")return!1;if(B&&$.opacity!==""){let W=Number.parseFloat($.opacity);if(!Number.isNaN(W)&&W===0)return!1}}if(X){let $=J.getBoundingClientRect();if($.width!==0||$.height!==0){let W=window.innerHeight||document.documentElement.clientHeight,L=window.innerWidth||document.documentElement.clientWidth,q=$.bottom<=0||$.top>=W,Z=$.right<=0||$.left>=L;if(q||Z)return!1}}return!0};var N,z,VJ=()=>{if(z!==void 0)return z;if(typeof document>"u")return z=null,null;return N=document.createElement("canvas"),z=N.getContext("2d"),z},LJ=()=>{N=void 0,z=void 0},wJ=(J,Q={})=>{let{vertical:X=!0,horizontal:Y=!0}=Q,G=J.getBoundingClientRect();if(G.width===0&&G.height===0)return!0;let B=window.innerHeight||document.documentElement.clientHeight,$=window.innerWidth||document.documentElement.clientWidth;if(X&&(G.bottom<=0||G.top>=B))return!1;if(Y&&(G.right<=0||G.left>=$))return!1;return!0},qJ=(J,Q,X=!1,Y='Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"')=>{let G=VJ();if(!G)return 0;let B=X?J.toUpperCase():J;return G.font=`${Q}px ${Y}`,G.measureText(B).width};var DJ=(J,Q="\uD83D\uDE80")=>{let X=0,Y=J+Q;for(let G=0;G<Y.length;G++){let B=Y.charCodeAt(G);X=(X<<5)-X+B,X|=0}return(X>>>0).toString(16)},c=(J)=>{return`${DJ(J)}::${J}`},xJ=(J,Q)=>{return(X)=>{if(!(X instanceof CustomEvent))return;try{J(X.detail)}catch(Y){if(Q)Q(Y);else console.error("Event listener error:",Y)}}},fJ=(J,Q)=>{if(!J)return;let X=c(J);window.dispatchEvent(new CustomEvent(X,{detail:Q,bubbles:!0,cancelable:!1}))},w=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=xJ(Q,X.onError),G=c(J);return window.addEventListener(G,Y),()=>window.removeEventListener(G,Y)},NJ=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=w(J,(G)=>{Y(),Q(G)},X);return Y};var i=require("react");var vJ=(J,Q,X=[])=>{i.useEffect(()=>{if(!J||typeof Q!=="function")return;return w(J,Q)},[J,Q,...X])};var gJ=(J,Q)=>{return V(J,Q,new WeakMap)},V=(J,Q,X)=>{if(Object.is(J,Q))return!0;if(J instanceof Date&&Q instanceof Date)return J.getTime()===Q.getTime();if(J instanceof RegExp&&Q instanceof RegExp)return J.source===Q.source&&J.flags===Q.flags;if(J instanceof Error&&Q instanceof Error)return J.name===Q.name&&J.message===Q.message;if(J instanceof ArrayBuffer&&Q instanceof ArrayBuffer){if(J.byteLength!==Q.byteLength)return!1;return r(new Uint8Array(J),new Uint8Array(Q))}if(ArrayBuffer.isView(J)&&ArrayBuffer.isView(Q)){if(J.constructor!==Q.constructor)return!1;if(J.byteLength!==Q.byteLength)return!1;let Y=new Uint8Array(J.buffer,J.byteOffset,J.byteLength),G=new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength);return r(Y,G)}if(typeof J==="object"&&J!==null&&typeof Q==="object"&&Q!==null){let Y=X.get(J);if(Y?.has(Q))return!0;if(Y)Y.add(Q);else X.set(J,new WeakSet([Q]))}if(Array.isArray(J)&&Array.isArray(Q)){if(J.length!==Q.length)return!1;for(let Y=0;Y<J.length;Y++)if(!V(J[Y],Q[Y],X))return!1;return!0}if(J instanceof Set&&Q instanceof Set){if(J.size!==Q.size)return!1;let Y=Array.from(Q);for(let G of J){let B=Y.findIndex(($)=>V(G,$,X));if(B===-1)return!1;Y.splice(B,1)}return!0}if(J instanceof Map&&Q instanceof Map){if(J.size!==Q.size)return!1;for(let[Y,G]of J)if(!Q.has(Y)||!V(G,Q.get(Y),X))return!1;return!0}if(J!==null&&typeof J==="object"&&Q!==null&&typeof Q==="object"){let Y=J,G=Q,B=Object.keys(Y);if(B.length!==Object.keys(G).length)return!1;for(let $ of B)if(!V(Y[$],G[$],X))return!1;return!0}return!1},r=(J,Q)=>{for(let X=0;X<J.length;X++)if(J[X]!==Q[X])return!1;return!0};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- var{defineProperty:H,getOwnPropertyNames:K,getOwnPropertyDescriptor:L}=Object,M=Object.prototype.hasOwnProperty;var J=new WeakMap,N=(q)=>{var k=J.get(q),z;if(k)return k;if(k=H({},"__esModule",{value:!0}),q&&typeof q==="object"||typeof q==="function")K(q).map((G)=>!M.call(k,G)&&H(k,G,{get:()=>q[G],enumerable:!(z=L(q,G))||z.enumerable}));return J.set(q,k),k};var Q=(q,k)=>{for(var z in k)H(q,z,{get:k[z],enumerable:!0,configurable:!0,set:(G)=>k[z]=()=>G})};var O={};module.exports=N(O);
7
+ var{defineProperty:H,getOwnPropertyNames:K,getOwnPropertyDescriptor:L}=Object,M=Object.prototype.hasOwnProperty;function N(k){return this[k]}var O=(k)=>{var q=(J??=new WeakMap).get(k),z;if(q)return q;if(q=H({},"__esModule",{value:!0}),k&&typeof k==="object"||typeof k==="function"){for(var G of K(k))if(!M.call(q,G))H(q,G,{get:N.bind(k,G),enumerable:!(z=L(k,G))||z.enumerable})}return J.set(k,q),q},J;var Q=(k)=>k;function R(k,q){this[k]=Q.bind(null,q)}var T=(k,q)=>{for(var z in q)H(k,z,{get:q[z],enumerable:!0,configurable:!0,set:R.bind(q,z)})};var S={};module.exports=O(S);
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{A as m,B as n,C as o,D as p,E as q,F as r,G as s,o as a,p as b,q as c,r as d,s as e,t as f,u as g,v as h,w as i,x as j,y as k,z as l}from"../chunk-5nmphgya.js";export{g as isUndefined,c as isString,q as isSet,m as isRegExp,f as isRecord,o as isPromise,r as isPrimitive,e as isObject,b as isNumber,h as isNull,i as isNil,p as isMap,d as isFunction,n as isError,s as isEmpty,j as isDefined,l as isDate,a as isBoolean,k as isArray};
7
+ import{A as m,B as n,C as o,D as p,E as q,F as r,G as s,o as a,p as b,q as c,r as d,s as e,t as f,u as g,v as h,w as i,x as j,y as k,z as l}from"../chunk-vtcj34cd.js";export{g as isUndefined,c as isString,q as isSet,m as isRegExp,f as isRecord,o as isPromise,r as isPrimitive,e as isObject,b as isNumber,h as isNull,i as isNil,p as isMap,d as isFunction,n as isError,s as isEmpty,j as isDefined,l as isDate,a as isBoolean,k as isArray};
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * @pivanov/utils v1.0.1
3
+ * (c) 2024-present Pavel Ivanov
4
+ * Released under the MIT License.
5
+ * https://github.com/pivanov/utils
6
+ */
7
+ var Q=()=>{return typeof caches<"u"};var O=()=>{if(!Q())throw Error("[@pivanov/utils/cache] Cache Storage is not available in this environment.");return caches},A=(b)=>{return O().open(b)},F=(b)=>{if(b.startsWith("http://")||b.startsWith("https://"))return b;return`https://cache.internal/${b}`};var U=async(b,d,w)=>{if(w.bodyUsed)throw TypeError("[@pivanov/utils/cache] cachePutResponse received a Response whose body has already been consumed.");await(await A(b)).put(d,w.clone())},$=async(b,d,w)=>{return(await A(b)).match(d,w)},L=async(b,d,w)=>{return(await A(b)).delete(d,w)},B=async(b,d,w)=>{return await(await A(b)).match(d,w)!==void 0},I=async(b)=>{return(await(await A(b)).keys()).map((R)=>R.url)},V=async(b)=>{let d=await A(b),w=await d.keys();await Promise.all(w.map((R)=>d.delete(R)))},f=async()=>{return O().keys()},g=async(b)=>{return O().has(b)},x=async(b)=>{return O().delete(b)};var X=(b,d)=>{return typeof d==="bigint"?d.toString():d},Y=async(b,d,w)=>{let R=await A(b),T=JSON.stringify(w,X),J=new Response(T,{headers:{"Content-Type":"application/json"}}),j=F(d);await R.put(new Request(j),J)},Z=async(b,d)=>{let w=await A(b),R=F(d),T=await w.match(new Request(R));if(!T)return null;let J=await T.text();return JSON.parse(J)},_=(b)=>{return typeof b==="object"&&b!==null&&b.__ttl===!0&&typeof b.exp==="number"},v=async(b,d,w,R)=>{let T={__ttl:!0,v:w,exp:Date.now()+R};await Y(b,d,T)},K=async(b,d)=>{let w=await Z(b,d);if(!_(w))return null;if(Date.now()>=w.exp)return await D(b,d),null;return w.v},D=async(b,d)=>{let w=await A(b),R=F(d);return w.delete(new Request(R))},i=async(b)=>{let d=await A(b),w=await d.keys();for(let R of w)await d.delete(R)},W=async(b,d,w=!0)=>{let R=await A(b),T=await R.keys();for(let J of T){let j=J.url.split("/"),H=j[j.length-1]||"";if(w&&H.startsWith(d)||!w&&H.endsWith(d))await R.delete(J)}},n=async(b,d)=>{await W(b,d,!0)},p=async(b,d)=>{await W(b,d,!1)},q=async(b,d)=>{let w=await A(b),R=F(d);return await w.match(new Request(R))!==void 0},o=async(b)=>{return(await(await A(b)).keys()).map((R)=>{let T=R.url.split("/");return T[T.length-1]||""})},C=async(b,d)=>{let w=await A(b);if(d){let J=F(d),j=await w.match(new Request(J));if(j)return(await j.clone().arrayBuffer()).byteLength;return 0}let R=await w.keys(),T=0;for(let J of R){let j=await w.match(J);if(j){let H=await j.clone().arrayBuffer();T+=H.byteLength}}return T};export{X as stringifyBigIntValues,v as storageSetItemWithTTL,Y as storageSetItem,D as storageRemoveItem,K as storageGetItemWithTTL,Z as storageGetItem,o as storageGetAllKeys,q as storageExists,p as storageClearBySuffix,W as storageClearByPrefixOrSuffix,n as storageClearByPrefix,i as storageClear,C as storageCalculateSize,Q as isCacheStorageSupported,I as cacheResponseKeys,U as cachePutResponse,f as cacheNames,$ as cacheMatchResponse,B as cacheHasResponse,g as cacheExists,L as cacheDeleteResponse,x as cacheDelete,V as cacheClear};
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{s as F}from"./chunk-5nmphgya.js";var K=(f,A)=>{let q={...f};for(let z of A)delete q[z];return q},L=(f,A)=>{let q={};for(let z of A)if(z in f)q[z]=f[z];return q},H=(f,A)=>{let q={};for(let z of Object.keys(f))if(A(f[z],z))q[z]=f[z];return q},P=(f,A)=>{return H(f,(q,z)=>!A(q,z))},Q=(f,A)=>{let q={};for(let z of Object.keys(f))q[z]=A(f[z],z);return q},S=(f,A)=>{let q={};for(let z of Object.keys(f))q[A(f[z],z)]=f[z];return q},T=(f,A)=>{let q={};return f.forEach((z,E)=>{let C=A(z,E);if(q[C])q[C].push(z);else q[C]=[z]}),q},U=(f)=>{let A={};for(let q of Object.keys(f))A[f[q]]=q;return A},W=(f,A)=>{return Object.hasOwn(f,A)},X=(f)=>{return Object.keys(f)},Y=(f)=>{return Object.entries(f)},Z=(f)=>{return Object.fromEntries(f)},_=(f,...A)=>{return Object.assign({},f,...A)},I=(f,...A)=>{let q={...f};for(let z of A){if(z===void 0)continue;for(let E of Object.keys(z)){let C=z[E],G=q[E];if(F(C))q[E]=I(F(G)?G:{},C);else q[E]=C}}return q};
7
+ import{s as F}from"./chunk-vtcj34cd.js";var K=(f,A)=>{let q={...f};for(let z of A)delete q[z];return q},L=(f,A)=>{let q={};for(let z of A)if(z in f)q[z]=f[z];return q},H=(f,A)=>{let q={};for(let z of Object.keys(f))if(A(f[z],z))q[z]=f[z];return q},P=(f,A)=>{return H(f,(q,z)=>!A(q,z))},Q=(f,A)=>{let q={};for(let z of Object.keys(f))q[z]=A(f[z],z);return q},S=(f,A)=>{let q={};for(let z of Object.keys(f))q[A(f[z],z)]=f[z];return q},T=(f,A)=>{let q={};return f.forEach((z,E)=>{let C=A(z,E);if(q[C])q[C].push(z);else q[C]=[z]}),q},U=(f)=>{let A={};for(let q of Object.keys(f))A[f[q]]=q;return A},W=(f,A)=>{return Object.hasOwn(f,A)},X=(f)=>{return Object.keys(f)},Y=(f)=>{return Object.entries(f)},Z=(f)=>{return Object.fromEntries(f)},_=(f,...A)=>{return Object.assign({},f,...A)},I=(f,...A)=>{let q={...f};for(let z of A){if(z===void 0)continue;for(let E of Object.keys(z)){let C=z[E],G=q[E];if(F(C))q[E]=I(F(G)?G:{},C);else q[E]=C}}return q};
8
8
  export{K as a,L as b,H as c,P as d,Q as e,S as f,T as g,U as h,W as i,X as j,Y as k,Z as l,_ as m,I as n};
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * @pivanov/utils v1.0.1
3
+ * (c) 2024-present Pavel Ivanov
4
+ * Released under the MIT License.
5
+ * https://github.com/pivanov/utils
6
+ */
7
+ var u=()=>{return typeof caches<"u"};var K=()=>{if(!u())throw Error("[@pivanov/utils/cache] Cache Storage is not available in this environment.");return caches},R=(J)=>{return K().open(J)},P=(J)=>{if(J.startsWith("http://")||J.startsWith("https://"))return J;return`https://cache.internal/${J}`};var JJ=async(J,Q,X)=>{if(X.bodyUsed)throw TypeError("[@pivanov/utils/cache] cachePutResponse received a Response whose body has already been consumed.");await(await R(J)).put(Q,X.clone())},QJ=async(J,Q,X)=>{return(await R(J)).match(Q,X)},XJ=async(J,Q,X)=>{return(await R(J)).delete(Q,X)},YJ=async(J,Q,X)=>{return await(await R(J)).match(Q,X)!==void 0},ZJ=async(J)=>{return(await(await R(J)).keys()).map((Y)=>Y.url)},_J=async(J)=>{let Q=await R(J),X=await Q.keys();await Promise.all(X.map((Y)=>Q.delete(Y)))},GJ=async()=>{return K().keys()},$J=async(J)=>{return K().has(J)},FJ=async(J)=>{return K().delete(J)};var p=(J,Q)=>{return typeof Q==="bigint"?Q.toString():Q},h=async(J,Q,X)=>{let Y=await R(J),G=JSON.stringify(X,p),B=new Response(G,{headers:{"Content-Type":"application/json"}}),$=P(Q);await Y.put(new Request($),B)},l=async(J,Q)=>{let X=await R(J),Y=P(Q),G=await X.match(new Request(Y));if(!G)return null;let B=await G.text();return JSON.parse(B)},b=(J)=>{return typeof J==="object"&&J!==null&&J.__ttl===!0&&typeof J.exp==="number"},MJ=async(J,Q,X,Y)=>{let G={__ttl:!0,v:X,exp:Date.now()+Y};await h(J,Q,G)},AJ=async(J,Q)=>{let X=await l(J,Q);if(!b(X))return null;if(Date.now()>=X.exp)return await c(J,Q),null;return X.v},c=async(J,Q)=>{let X=await R(J),Y=P(Q);return X.delete(new Request(Y))},OJ=async(J)=>{let Q=await R(J),X=await Q.keys();for(let Y of X)await Q.delete(Y)},k=async(J,Q,X=!0)=>{let Y=await R(J),G=await Y.keys();for(let B of G){let $=B.url.split("/"),W=$[$.length-1]||"";if(X&&W.startsWith(Q)||!X&&W.endsWith(Q))await Y.delete(B)}},RJ=async(J,Q)=>{await k(J,Q,!0)},WJ=async(J,Q)=>{await k(J,Q,!1)},HJ=async(J,Q)=>{let X=await R(J),Y=P(Q);return await X.match(new Request(Y))!==void 0},IJ=async(J)=>{return(await(await R(J)).keys()).map((Y)=>{let G=Y.url.split("/");return G[G.length-1]||""})},EJ=async(J,Q)=>{let X=await R(J);if(Q){let B=P(Q),$=await X.match(new Request(B));if($)return(await $.clone().arrayBuffer()).byteLength;return 0}let Y=await X.keys(),G=0;for(let B of Y){let $=await X.match(B);if($){let W=await $.clone().arrayBuffer();G+=W.byteLength}}return G};var TJ=(J)=>{return M(J,new WeakMap)},M=(J,Q)=>{if(J===null||typeof J!=="object")return J;let X=Q.get(J);if(X)return X;if(Array.isArray(J)){let Z=J.length;if(Z<32){let _=Array(Z);Q.set(J,_);for(let U=0;U<Z;U++)if(U in J)_[U]=M(J[U],Q);return _}let F=Array(Z);if(Q.set(J,F),Object.keys(J).length===Z){let _=0,U=Z%8,O=Z-U;while(_<O)F[_]=M(J[_],Q),F[_+1]=M(J[_+1],Q),F[_+2]=M(J[_+2],Q),F[_+3]=M(J[_+3],Q),F[_+4]=M(J[_+4],Q),F[_+5]=M(J[_+5],Q),F[_+6]=M(J[_+6],Q),F[_+7]=M(J[_+7],Q),_+=8;while(_<Z)F[_]=M(J[_],Q),_++}else for(let _=0;_<Z;_++)if(_ in J)F[_]=M(J[_],Q);return F}if(J instanceof Date||J instanceof RegExp)return new J.constructor(J);if(typeof Buffer<"u")try{if(Buffer.isBuffer(J))return Buffer.from(J)}catch(Z){if(Z instanceof Error)throw Z}if(ArrayBuffer.isView(J)){let Z=J.constructor;if("buffer"in J){let _=J,U=_.buffer.slice(_.byteOffset,_.byteOffset+_.byteLength);return new Z(U)}return new Z(new ArrayBuffer(J.byteLength))}if(J instanceof ArrayBuffer)return J.slice(0);if(J&&typeof J==="object"&&"buffer"in J&&"byteLength"in J){let Z=J;if(typeof Buffer>"u"){let _=new Uint8Array(Z.buffer,Z.byteOffset||0,Z.byteLength),U=new Uint8Array(_.length);return U.set(_),U}return{buffer:Z.buffer instanceof ArrayBuffer?Z.buffer.slice(0):new ArrayBuffer(Z.byteLength),byteLength:Z.byteLength,byteOffset:Z.byteOffset||0,length:Z.length||Z.byteLength,BYTES_PER_ELEMENT:Z.BYTES_PER_ELEMENT||1}}if(J instanceof Set){let Z=new Set;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let U=0;U<_;U++)Z.add(M(F[U],Q));return Z}if(J instanceof Map){let Z=new Map;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let U=0;U<_;U++){let[O,S]=F[U];Z.set(O,M(S,Q))}return Z}if(Object.getPrototypeOf(J)===Object.prototype){let Z={};Q.set(J,Z);let F=Object.getOwnPropertySymbols(J),_=F.length;if(_>0)for(let A=0;A<_;A++){let H=F[A],I=Object.getOwnPropertyDescriptor(J,H);if(I?.enumerable)Object.defineProperty(Z,H,I)}let U=Object.getOwnPropertyDescriptors(J),O=Object.keys(J),S=O.length,x=!1;for(let A=0;A<S;A++){let H=U[O[A]];if(H.get||H.set){x=!0;break}}if(x)for(let A=0;A<S;A++){let H=O[A],I=U[H];if(I.enumerable)if(I.get||I.set)Object.defineProperty(Z,H,I);else{let T=M(I.value,Q);Object.defineProperty(Z,H,{...I,value:T})}}else{let A=0,H=S%8,I=S-H;while(A<I){let T=O[A],f=O[A+1],N=O[A+2],v=O[A+3],g=O[A+4],C=O[A+5],d=O[A+6],m=O[A+7],E=J;Z[T]=M(E[T],Q),Z[f]=M(E[f],Q),Z[N]=M(E[N],Q),Z[v]=M(E[v],Q),Z[g]=M(E[g],Q),Z[C]=M(E[C],Q),Z[d]=M(E[d],Q),Z[m]=M(E[m],Q),A+=8}while(A<S){let T=O[A++];Z[T]=M(J[T],Q)}}return Z}let Y=Object.getPrototypeOf(J),G=Object.create(Y);Q.set(J,G);let B=Object.getOwnPropertyDescriptors(J),$=Object.keys(B),W=$.length;for(let Z=0;Z<W;Z++){let F=$[Z],_=B[F];if(!_.enumerable)continue;if(_.get||_.set)Object.defineProperty(G,F,_);else{let U=M(_.value,Q);Object.defineProperty(G,F,{..._,value:U})}}let L=Object.getOwnPropertySymbols(J),w=L.length;for(let Z=0;Z<w;Z++){let F=L[Z],_=Object.getOwnPropertyDescriptor(J,F);if(!_?.enumerable)continue;Object.defineProperty(G,F,_)}return G};var zJ=()=>{return typeof window<"u"&&typeof document<"u"},KJ=(J,Q)=>{if(!J)return;for(let[X,Y]of Object.entries(Q))J.style.setProperty(X,Y)},VJ=(J,Q={})=>{let{checkViewport:X=!0,checkDisplay:Y=!0,checkVisibility:G=!0,checkOpacity:B=!0}=Q;if(!J.isConnected)return!1;if(Y||G||B){let $=window.getComputedStyle(J);if(Y&&$.display==="none")return!1;if(G&&$.visibility!==""&&$.visibility!=="visible")return!1;if(B&&$.opacity!==""){let W=Number.parseFloat($.opacity);if(!Number.isNaN(W)&&W===0)return!1}}if(X){let $=J.getBoundingClientRect();if($.width!==0||$.height!==0){let W=window.innerHeight||document.documentElement.clientHeight,L=window.innerWidth||document.documentElement.clientWidth,w=$.bottom<=0||$.top>=W,Z=$.right<=0||$.left>=L;if(w||Z)return!1}}return!0};var q,z,i=()=>{if(z!==void 0)return z;if(typeof document>"u")return z=null,null;return q=document.createElement("canvas"),z=q.getContext("2d"),z},LJ=()=>{q=void 0,z=void 0},wJ=(J,Q={})=>{let{vertical:X=!0,horizontal:Y=!0}=Q,G=J.getBoundingClientRect();if(G.width===0&&G.height===0)return!0;let B=window.innerHeight||document.documentElement.clientHeight,$=window.innerWidth||document.documentElement.clientWidth;if(X&&(G.bottom<=0||G.top>=B))return!1;if(Y&&(G.right<=0||G.left>=$))return!1;return!0},qJ=(J,Q,X=!1,Y='Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"')=>{let G=i();if(!G)return 0;let B=X?J.toUpperCase():J;return G.font=`${Q}px ${Y}`,G.measureText(B).width};var r=(J,Q="\uD83D\uDE80")=>{let X=0,Y=J+Q;for(let G=0;G<Y.length;G++){let B=Y.charCodeAt(G);X=(X<<5)-X+B,X|=0}return(X>>>0).toString(16)},y=(J)=>{return`${r(J)}::${J}`},n=(J,Q)=>{return(X)=>{if(!(X instanceof CustomEvent))return;try{J(X.detail)}catch(Y){if(Q)Q(Y);else console.error("Event listener error:",Y)}}},xJ=(J,Q)=>{if(!J)return;let X=y(J);window.dispatchEvent(new CustomEvent(X,{detail:Q,bubbles:!0,cancelable:!1}))},D=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=n(Q,X.onError),G=y(J);return window.addEventListener(G,Y),()=>window.removeEventListener(G,Y)},fJ=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=D(J,(G)=>{Y(),Q(G)},X);return Y};import{useEffect as o}from"react";var CJ=(J,Q,X=[])=>{o(()=>{if(!J||typeof Q!=="function")return;return D(J,Q)},[J,Q,...X])};var mJ=(J,Q)=>{return V(J,Q,new WeakMap)},V=(J,Q,X)=>{if(Object.is(J,Q))return!0;if(J instanceof Date&&Q instanceof Date)return J.getTime()===Q.getTime();if(J instanceof RegExp&&Q instanceof RegExp)return J.source===Q.source&&J.flags===Q.flags;if(J instanceof Error&&Q instanceof Error)return J.name===Q.name&&J.message===Q.message;if(J instanceof ArrayBuffer&&Q instanceof ArrayBuffer){if(J.byteLength!==Q.byteLength)return!1;return j(new Uint8Array(J),new Uint8Array(Q))}if(ArrayBuffer.isView(J)&&ArrayBuffer.isView(Q)){if(J.constructor!==Q.constructor)return!1;if(J.byteLength!==Q.byteLength)return!1;let Y=new Uint8Array(J.buffer,J.byteOffset,J.byteLength),G=new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength);return j(Y,G)}if(typeof J==="object"&&J!==null&&typeof Q==="object"&&Q!==null){let Y=X.get(J);if(Y?.has(Q))return!0;if(Y)Y.add(Q);else X.set(J,new WeakSet([Q]))}if(Array.isArray(J)&&Array.isArray(Q)){if(J.length!==Q.length)return!1;for(let Y=0;Y<J.length;Y++)if(!V(J[Y],Q[Y],X))return!1;return!0}if(J instanceof Set&&Q instanceof Set){if(J.size!==Q.size)return!1;let Y=Array.from(Q);for(let G of J){let B=Y.findIndex(($)=>V(G,$,X));if(B===-1)return!1;Y.splice(B,1)}return!0}if(J instanceof Map&&Q instanceof Map){if(J.size!==Q.size)return!1;for(let[Y,G]of J)if(!Q.has(Y)||!V(G,Q.get(Y),X))return!1;return!0}if(J!==null&&typeof J==="object"&&Q!==null&&typeof Q==="object"){let Y=J,G=Q,B=Object.keys(Y);if(B.length!==Object.keys(G).length)return!1;for(let $ of B)if(!V(Y[$],G[$],X))return!1;return!0}return!1},j=(J,Q)=>{for(let X=0;X<J.length;X++)if(J[X]!==Q[X])return!1;return!0};export{u as _,JJ as $,QJ as aa,XJ as ba,YJ as ca,ZJ as da,_J as ea,GJ as fa,$J as ga,FJ as ha,p as ia,h as ja,l as ka,MJ as la,AJ as ma,c as na,OJ as oa,k as pa,RJ as qa,WJ as ra,HJ as sa,IJ as ta,EJ as ua,TJ as va,zJ as wa,KJ as xa,VJ as ya,LJ as za,wJ as Aa,qJ as Ba,xJ as Ca,D as Da,fJ as Ea,CJ as Fa,mJ as Ga};
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{a as A,b as B,c as C,d as D,e as E,f as F,g as G,h as H,i as I,j as J,k as K,l as L,m as M,n as N}from"./chunk-bqewq152.js";import{A as q,B as s,C as u,D as v,E as w,F as y,G as z,o as x,p as a,q as b,r as c,s as d,t as g,u as h,v as i,w as j,x as k,y as l,z as n}from"./chunk-5nmphgya.js";import{H as O,I as P,J as Q,K as R,L as S}from"./chunk-tdt3f0jc.js";import{M as T,N as U,O as V,P as W,Q as X,R as Y,S as Z,T as _,U as $,V as oo,W as ro,X as eo,Y as fo,Z as mo}from"./chunk-hksj0qca.js";import{$ as to,_ as po,aa as xo,ba as ao,ca as bo,da as co,ea as go,fa as ho,ga as io,ha as jo,ia as ko,ja as lo,ka as no,la as qo,ma as so,na as uo,oa as vo,pa as wo,qa as yo,ra as zo,sa as Ao,ta as Bo,ua as Co,va as Do,wa as Eo}from"./chunk-1rn730je.js";import"./chunk-f1nddzrj.js";export{fo as words,Do as useEventBus,$ as uncapitalize,oo as truncate,Y as titleCase,P as timeout,po as stringifyBigIntValues,ao as storageSetItemWithTTL,to as storageSetItem,co as storageRemoveItem,bo as storageGetItemWithTTL,xo as storageGetItem,lo as storageGetAllKeys,ko as storageExists,jo as storageClearBySuffix,ho as storageClearByPrefixOrSuffix,io as storageClearByPrefix,go as storageClear,no as storageCalculateSize,X as snakeCase,Z as slugify,O as sleep,uo as setStyleProperties,Q as retry,C as pickBy,B as pick,U as pascalCase,S as parallelLimit,D as omitBy,A as omit,M as merge,E as mapValues,F as mapKeys,mo as lines,J as keysOf,W as kebabCase,h as isUndefined,b as isString,w as isSet,q as isRegExp,g as isRecord,u as isPromise,y as isPrimitive,d as isObject,a as isNumber,i as isNull,j as isNil,v as isMap,yo as isInViewport,c as isFunction,s as isError,Eo as isEqual,z as isEmpty,k as isDefined,n as isDate,so as isBrowser,x as isBoolean,l as isArray,H as invert,I as hasOwn,G as groupBy,L as fromEntries,eo as escapeRegExp,ro as escapeHtml,K as entriesOf,R as defer,N as deepMerge,qo as deepClone,vo as checkVisibility,V as capitalizeFirstLetter,_ as capitalize,T as camelCase,zo as calculateRenderedTextWidth,Bo as busSubscribe,Co as busOnce,Ao as busDispatch,wo as __resetTextMeasurementCache};
7
+ import{a as A,b as B,c as C,d as D,e as E,f as F,g as G,h as H,i as I,j as J,k as K,l as L,m as M,n as N}from"./chunk-m1ymbxy0.js";import{A as q,B as s,C as u,D as v,E as w,F as y,G as z,o as x,p as a,q as b,r as c,s as d,t as g,u as h,v as i,w as j,x as k,y as l,z as n}from"./chunk-vtcj34cd.js";import{H as O,I as P,J as Q,K as R,L as S}from"./chunk-3ymwkv74.js";import{M as T,N as U,O as V,P as W,Q as X,R as Y,S as Z,T as _,U as $,V as oo,W as ro,X as eo,Y as fo,Z as mo}from"./chunk-m7vtwv05.js";import{$ as to,Aa as Io,Ba as Jo,Ca as Ko,Da as Lo,Ea as Mo,Fa as No,Ga as Oo,_ as po,aa as xo,ba as ao,ca as bo,da as co,ea as go,fa as ho,ga as io,ha as jo,ia as ko,ja as lo,ka as no,la as qo,ma as so,na as uo,oa as vo,pa as wo,qa as yo,ra as zo,sa as Ao,ta as Bo,ua as Co,va as Do,wa as Eo,xa as Fo,ya as Go,za as Ho}from"./chunk-y84wjyfx.js";import"./chunk-jtvcg9xg.js";export{fo as words,No as useEventBus,$ as uncapitalize,oo as truncate,Y as titleCase,P as timeout,ko as stringifyBigIntValues,qo as storageSetItemWithTTL,lo as storageSetItem,uo as storageRemoveItem,so as storageGetItemWithTTL,no as storageGetItem,Bo as storageGetAllKeys,Ao as storageExists,zo as storageClearBySuffix,wo as storageClearByPrefixOrSuffix,yo as storageClearByPrefix,vo as storageClear,Co as storageCalculateSize,X as snakeCase,Z as slugify,O as sleep,Fo as setStyleProperties,Q as retry,C as pickBy,B as pick,U as pascalCase,S as parallelLimit,D as omitBy,A as omit,M as merge,E as mapValues,F as mapKeys,mo as lines,J as keysOf,W as kebabCase,h as isUndefined,b as isString,w as isSet,q as isRegExp,g as isRecord,u as isPromise,y as isPrimitive,d as isObject,a as isNumber,i as isNull,j as isNil,v as isMap,Io as isInViewport,c as isFunction,s as isError,Oo as isEqual,z as isEmpty,k as isDefined,n as isDate,po as isCacheStorageSupported,Eo as isBrowser,x as isBoolean,l as isArray,H as invert,I as hasOwn,G as groupBy,L as fromEntries,eo as escapeRegExp,ro as escapeHtml,K as entriesOf,R as defer,N as deepMerge,Do as deepClone,Go as checkVisibility,V as capitalizeFirstLetter,_ as capitalize,T as camelCase,Jo as calculateRenderedTextWidth,co as cacheResponseKeys,to as cachePutResponse,ho as cacheNames,xo as cacheMatchResponse,bo as cacheHasResponse,io as cacheExists,ao as cacheDeleteResponse,jo as cacheDelete,go as cacheClear,Lo as busSubscribe,Mo as busOnce,Ko as busDispatch,Ho as __resetTextMeasurementCache};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n}from"../chunk-bqewq152.js";import"../chunk-5nmphgya.js";export{c as pickBy,b as pick,d as omitBy,a as omit,m as merge,e as mapValues,f as mapKeys,j as keysOf,h as invert,i as hasOwn,g as groupBy,l as fromEntries,k as entriesOf,n as deepMerge};
7
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n}from"../chunk-m1ymbxy0.js";import"../chunk-vtcj34cd.js";export{c as pickBy,b as pick,d as omitBy,a as omit,m as merge,e as mapValues,f as mapKeys,j as keysOf,h as invert,i as hasOwn,g as groupBy,l as fromEntries,k as entriesOf,n as deepMerge};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{H as a,I as b,J as c,K as d,L as e}from"../chunk-tdt3f0jc.js";export{b as timeout,a as sleep,c as retry,e as parallelLimit,d as defer};
7
+ import{H as a,I as b,J as c,K as d,L as e}from"../chunk-3ymwkv74.js";export{b as timeout,a as sleep,c as retry,e as parallelLimit,d as defer};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{M as a,N as b,O as c,P as d,Q as e,R as f,S as g,T as h,U as i,V as j,W as k,X as l,Y as m,Z as n}from"../chunk-hksj0qca.js";export{m as words,i as uncapitalize,j as truncate,f as titleCase,e as snakeCase,g as slugify,b as pascalCase,n as lines,d as kebabCase,l as escapeRegExp,k as escapeHtml,c as capitalizeFirstLetter,h as capitalize,a as camelCase};
7
+ import{M as a,N as b,O as c,P as d,Q as e,R as f,S as g,T as h,U as i,V as j,W as k,X as l,Y as m,Z as n}from"../chunk-m7vtwv05.js";export{m as words,i as uncapitalize,j as truncate,f as titleCase,e as snakeCase,g as slugify,b as pascalCase,n as lines,d as kebabCase,l as escapeRegExp,k as escapeHtml,c as capitalizeFirstLetter,h as capitalize,a as camelCase};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import{$ as b,_ as a,aa as c,ba as d,ca as e,da as f,ea as g,fa as h,ga as i,ha as j,ia as k,ja as l,ka as m,la as n,ma as o,na as p,oa as q,pa as r,qa as s,ra as t,sa as u,ta as v,ua as w,va as x,wa as y}from"../chunk-1rn730je.js";export{x as useEventBus,a as stringifyBigIntValues,d as storageSetItemWithTTL,b as storageSetItem,f as storageRemoveItem,e as storageGetItemWithTTL,c as storageGetItem,l as storageGetAllKeys,k as storageExists,j as storageClearBySuffix,h as storageClearByPrefixOrSuffix,i as storageClearByPrefix,g as storageClear,m as storageCalculateSize,p as setStyleProperties,s as isInViewport,y as isEqual,o as isBrowser,n as deepClone,q as checkVisibility,t as calculateRenderedTextWidth,v as busSubscribe,w as busOnce,u as busDispatch,r as __resetTextMeasurementCache};
7
+ import{$ as b,Aa as C,Ba as D,Ca as E,Da as F,Ea as G,Fa as H,Ga as I,_ as a,aa as c,ba as d,ca as e,da as f,ea as g,fa as h,ga as i,ha as j,ia as k,ja as l,ka as m,la as n,ma as o,na as p,oa as q,pa as r,qa as s,ra as t,sa as u,ta as v,ua as w,va as x,wa as y,xa as z,ya as A,za as B}from"../chunk-y84wjyfx.js";export{H as useEventBus,k as stringifyBigIntValues,n as storageSetItemWithTTL,l as storageSetItem,p as storageRemoveItem,o as storageGetItemWithTTL,m as storageGetItem,v as storageGetAllKeys,u as storageExists,t as storageClearBySuffix,r as storageClearByPrefixOrSuffix,s as storageClearByPrefix,q as storageClear,w as storageCalculateSize,z as setStyleProperties,C as isInViewport,I as isEqual,a as isCacheStorageSupported,y as isBrowser,x as deepClone,A as checkVisibility,D as calculateRenderedTextWidth,f as cacheResponseKeys,b as cachePutResponse,h as cacheNames,c as cacheMatchResponse,e as cacheHasResponse,i as cacheExists,d as cacheDeleteResponse,j as cacheDelete,g as cacheClear,F as busSubscribe,G as busOnce,E as busDispatch,B as __resetTextMeasurementCache};
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @pivanov/utils v1.0.0
2
+ * @pivanov/utils v1.0.1
3
3
  * (c) 2024-present Pavel Ivanov
4
4
  * Released under the MIT License.
5
5
  * https://github.com/pivanov/utils
6
6
  */
7
- import"../chunk-f1nddzrj.js";
7
+ import"../chunk-jtvcg9xg.js";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Service-worker-safe Cache Storage helpers.
3
+ *
4
+ * This entry point (`@pivanov/utils/cache`) is self-contained on purpose: it
5
+ * pulls in no React, no event bus, no DOM helpers and no shared barrel, so it
6
+ * can be imported from a service worker without dragging the rest of the
7
+ * package along.
8
+ *
9
+ * Two layers are available:
10
+ * - `storage*` for JSON metadata, with optional TTL envelopes.
11
+ * - `cache*Response` and friends for raw `Request`/`Response` traffic, where
12
+ * the body, status and headers survive untouched.
13
+ */
14
+ export * from "./response";
15
+ export * from "./storage";
16
+ export * from "./support";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns the ambient `CacheStorage`, throwing a descriptive error when the
3
+ * runtime does not provide one.
4
+ */
5
+ export declare const getCacheStorage: () => CacheStorage;
6
+ /** Opens (or creates) a named cache. */
7
+ export declare const openCache: (cacheName: string) => Promise<Cache>;
8
+ /**
9
+ * Normalizes a metadata key into an absolute URL. Keys that already look like
10
+ * URLs are passed through untouched, so callers may address real resources.
11
+ */
12
+ export declare const createCacheKey: (key: string) => string;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Anything the Cache Storage API accepts as a request key: an absolute URL
3
+ * string, a `URL`, or a `Request`.
4
+ */
5
+ export type CacheRequestKey = RequestInfo | URL;
6
+ /**
7
+ * Stores a raw `Response` under `request`, byte for byte.
8
+ *
9
+ * Unlike {@link storageSetItem}, nothing is serialized: the body, status and
10
+ * headers are preserved exactly, which is what a service worker needs when it
11
+ * caches JavaScript, CSS, images or fonts.
12
+ *
13
+ * The response is cached as a **clone**, so the caller's `response` stays
14
+ * readable afterwards and can still be returned to the page.
15
+ *
16
+ * @throws {TypeError} When `response.bodyUsed` is already `true`, since a
17
+ * consumed body cannot be cloned.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const response = await fetch('/assets/app.abc123.js');
22
+ * await cachePutResponse('assets-v1', '/assets/app.abc123.js', response);
23
+ * return response; // still readable
24
+ * ```
25
+ */
26
+ export declare const cachePutResponse: (cacheName: string, request: CacheRequestKey, response: Response) => Promise<void>;
27
+ /**
28
+ * Reads a raw `Response` back out of the cache, or `undefined` on a miss.
29
+ *
30
+ * The returned response is a fresh, unread `Response` each time, so callers may
31
+ * consume its body without affecting the cached entry.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const hit = await cacheMatchResponse('assets-v1', '/assets/app.abc123.js');
36
+ * if (hit) {
37
+ * return hit;
38
+ * }
39
+ * ```
40
+ */
41
+ export declare const cacheMatchResponse: (cacheName: string, request: CacheRequestKey, options?: CacheQueryOptions) => Promise<Response | undefined>;
42
+ /**
43
+ * Deletes a single cached response. Returns `true` when an entry was removed.
44
+ */
45
+ export declare const cacheDeleteResponse: (cacheName: string, request: CacheRequestKey, options?: CacheQueryOptions) => Promise<boolean>;
46
+ /**
47
+ * Reports whether a response is cached under `request`, without reading its
48
+ * body.
49
+ */
50
+ export declare const cacheHasResponse: (cacheName: string, request: CacheRequestKey, options?: CacheQueryOptions) => Promise<boolean>;
51
+ /**
52
+ * Lists the request URLs currently stored in a cache.
53
+ *
54
+ * Each entry can be handed straight back to {@link cacheMatchResponse} or
55
+ * {@link cacheDeleteResponse}, which makes this the building block for
56
+ * revision cleanup.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const stale = (await cacheResponseKeys('assets-v1')).filter((url) => !url.includes(revision));
61
+ * await Promise.all(stale.map((url) => cacheDeleteResponse('assets-v1', url)));
62
+ * ```
63
+ */
64
+ export declare const cacheResponseKeys: (cacheName: string) => Promise<string[]>;
65
+ /**
66
+ * Removes every entry from a cache while keeping the cache itself.
67
+ *
68
+ * Use {@link cacheDelete} to drop the cache entirely.
69
+ */
70
+ export declare const cacheClear: (cacheName: string) => Promise<void>;
71
+ /**
72
+ * Lists the names of every cache in the current origin's Cache Storage.
73
+ */
74
+ export declare const cacheNames: () => Promise<string[]>;
75
+ /**
76
+ * Reports whether a cache with this name exists, without creating it.
77
+ *
78
+ * Note that {@link cacheMatchResponse} and friends open the cache on demand, so
79
+ * prefer this check when the mere existence of the cache is the signal.
80
+ */
81
+ export declare const cacheExists: (cacheName: string) => Promise<boolean>;
82
+ /**
83
+ * Deletes an entire cache. Returns `true` when a cache was removed.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const outdated = (await cacheNames()).filter((name) => name !== `assets-${revision}`);
88
+ * await Promise.all(outdated.map(cacheDelete));
89
+ * ```
90
+ */
91
+ export declare const cacheDelete: (cacheName: string) => Promise<boolean>;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Reports whether the Cache Storage API is reachable in the current realm.
3
+ *
4
+ * Use it to guard cache access during SSR, in Node, or in any runtime that does
5
+ * not expose `caches`.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * if (isCacheStorageSupported()) {
10
+ * await cacheClear('assets-v1');
11
+ * }
12
+ * ```
13
+ */
14
+ export declare const isCacheStorageSupported: () => boolean;
@@ -1,4 +1,4 @@
1
- export * from "./cache-api";
1
+ export * from "../cache";
2
2
  export * from "./deepClone";
3
3
  export * from "./dom";
4
4
  export * from "./eventBus";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pivanov/utils",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A focused collection of TypeScript utilities for modern web development",
5
5
  "type": "module",
6
6
  "repository": {
@@ -22,8 +22,11 @@
22
22
  "docs:dev": "bun x vitepress dev docs",
23
23
  "docs:build": "bun x vitepress build docs",
24
24
  "docs:preview": "bun x vitepress preview docs",
25
- "prepublishOnly": "bun run build",
26
- "publish": "npm publish --access public"
25
+ "bench": "bun run bench/index.ts",
26
+ "prepublishOnly": "bun run build && bun run verify:dist",
27
+ "publish": "npm publish --access public",
28
+ "verify:dist": "bun run scripts/verify-dist.ts",
29
+ "verify": "bun run lint && bun run typecheck && bun test && bun run build && bun run verify:dist"
27
30
  },
28
31
  "author": {
29
32
  "name": "Pavel Ivanov",
@@ -58,6 +61,11 @@
58
61
  "import": "./dist/esm/assertion/index.js",
59
62
  "require": "./dist/cjs/assertion/index.js"
60
63
  },
64
+ "./cache": {
65
+ "types": "./dist/types/cache/index.d.ts",
66
+ "import": "./dist/esm/cache/index.js",
67
+ "require": "./dist/cjs/cache/index.js"
68
+ },
61
69
  "./object": {
62
70
  "types": "./dist/types/object/index.d.ts",
63
71
  "import": "./dist/esm/object/index.js",
@@ -106,6 +114,7 @@
106
114
  "@types/bun": "^1.1.14",
107
115
  "@types/react": "^18.3.12",
108
116
  "@types/react-dom": "^18.3.1",
117
+ "mitata": "^1.0.34",
109
118
  "react": "^18.3.1",
110
119
  "react-dom": "^18.3.1",
111
120
  "typescript": "^5.7.2",
@@ -1,7 +0,0 @@
1
- /*!
2
- * @pivanov/utils v1.0.0
3
- * (c) 2024-present Pavel Ivanov
4
- * Released under the MIT License.
5
- * https://github.com/pivanov/utils
6
- */
7
- var k=(J,Q)=>{return typeof Q==="bigint"?Q.toString():Q},P=(J)=>{if(J.startsWith("http://")||J.startsWith("https://"))return J;return`https://cache.internal/${J}`},p=async(J,Q,X)=>{let Y=await caches.open(J),$=JSON.stringify(X,k),U=new Response($,{headers:{"Content-Type":"application/json"}}),G=P(Q);await Y.put(new Request(G),U)},h=async(J,Q)=>{let X=await caches.open(J),Y=P(Q),$=await X.match(new Request(Y));if(!$)return null;let U=await $.text();return JSON.parse(U)},y=(J)=>{return typeof J==="object"&&J!==null&&J.__ttl===!0&&typeof J.exp==="number"},n=async(J,Q,X,Y)=>{let $={__ttl:!0,v:X,exp:Date.now()+Y};await p(J,Q,$)},o=async(J,Q)=>{let X=await h(J,Q);if(!y(X))return null;if(Date.now()>=X.exp)return await j(J,Q),null;return X.v},j=async(J,Q)=>{let X=await caches.open(J),Y=P(Q);return X.delete(new Request(Y))},i=async(J)=>{let Q=await caches.open(J),X=await Q.keys();for(let Y of X)await Q.delete(Y)},m=async(J,Q,X=!0)=>{let Y=await caches.open(J),$=await Y.keys();for(let U of $){let G=U.url.split("/"),W=G[G.length-1]||"";if(X&&W.startsWith(Q)||!X&&W.endsWith(Q))await Y.delete(U)}},t=async(J,Q)=>{await m(J,Q,!0)},s=async(J,Q)=>{await m(J,Q,!1)},a=async(J,Q)=>{let X=await caches.open(J),Y=P(Q);return await X.match(new Request(Y))!==void 0},e=async(J)=>{return(await(await caches.open(J)).keys()).map((Y)=>{let $=Y.url.split("/");return $[$.length-1]||""})},JJ=async(J,Q)=>{let X=await caches.open(J);if(Q){let U=P(Q),G=await X.match(new Request(U));if(G)return(await G.clone().arrayBuffer()).byteLength;return 0}let Y=await X.keys(),$=0;for(let U of Y){let G=await X.match(U);if(G){let W=await G.clone().arrayBuffer();$+=W.byteLength}}return $};var XJ=(J)=>{return M(J,new WeakMap)},M=(J,Q)=>{if(J===null||typeof J!=="object")return J;let X=Q.get(J);if(X)return X;if(Array.isArray(J)){let Z=J.length;if(Z<32){let _=Array(Z);Q.set(J,_);for(let B=0;B<Z;B++)if(B in J)_[B]=M(J[B],Q);return _}let F=Array(Z);if(Q.set(J,F),Object.keys(J).length===Z){let _=0,B=Z%8,O=Z-B;while(_<O)F[_]=M(J[_],Q),F[_+1]=M(J[_+1],Q),F[_+2]=M(J[_+2],Q),F[_+3]=M(J[_+3],Q),F[_+4]=M(J[_+4],Q),F[_+5]=M(J[_+5],Q),F[_+6]=M(J[_+6],Q),F[_+7]=M(J[_+7],Q),_+=8;while(_<Z)F[_]=M(J[_],Q),_++}else for(let _=0;_<Z;_++)if(_ in J)F[_]=M(J[_],Q);return F}if(J instanceof Date||J instanceof RegExp)return new J.constructor(J);if(typeof Buffer<"u")try{if(Buffer.isBuffer(J))return Buffer.from(J)}catch(Z){if(Z instanceof Error)throw Z}if(ArrayBuffer.isView(J)){let Z=J.constructor;if("buffer"in J){let _=J,B=_.buffer.slice(_.byteOffset,_.byteOffset+_.byteLength);return new Z(B)}return new Z(new ArrayBuffer(J.byteLength))}if(J instanceof ArrayBuffer)return J.slice(0);if(J&&typeof J==="object"&&"buffer"in J&&"byteLength"in J){let Z=J;if(typeof Buffer>"u"){let _=new Uint8Array(Z.buffer,Z.byteOffset||0,Z.byteLength),B=new Uint8Array(_.length);return B.set(_),B}return{buffer:Z.buffer instanceof ArrayBuffer?Z.buffer.slice(0):new ArrayBuffer(Z.byteLength),byteLength:Z.byteLength,byteOffset:Z.byteOffset||0,length:Z.length||Z.byteLength,BYTES_PER_ELEMENT:Z.BYTES_PER_ELEMENT||1}}if(J instanceof Set){let Z=new Set;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let B=0;B<_;B++)Z.add(M(F[B],Q));return Z}if(J instanceof Map){let Z=new Map;Q.set(J,Z);let F=Array.from(J),_=F.length;for(let B=0;B<_;B++){let[O,I]=F[B];Z.set(O,M(I,Q))}return Z}if(Object.getPrototypeOf(J)===Object.prototype){let Z={};Q.set(J,Z);let F=Object.getOwnPropertySymbols(J),_=F.length;if(_>0)for(let R=0;R<_;R++){let A=F[R],H=Object.getOwnPropertyDescriptor(J,A);if(H?.enumerable)Object.defineProperty(Z,A,H)}let B=Object.getOwnPropertyDescriptors(J),O=Object.keys(J),I=O.length,w=!1;for(let R=0;R<I;R++){let A=B[O[R]];if(A.get||A.set){w=!0;break}}if(w)for(let R=0;R<I;R++){let A=O[R],H=B[A];if(H.enumerable)if(H.get||H.set)Object.defineProperty(Z,A,H);else{let T=M(H.value,Q);Object.defineProperty(Z,A,{...H,value:T})}}else{let R=0,A=I%8,H=I-A;while(R<H){let T=O[R],D=O[R+1],N=O[R+2],x=O[R+3],f=O[R+4],v=O[R+5],g=O[R+6],C=O[R+7],E=J;Z[T]=M(E[T],Q),Z[D]=M(E[D],Q),Z[N]=M(E[N],Q),Z[x]=M(E[x],Q),Z[f]=M(E[f],Q),Z[v]=M(E[v],Q),Z[g]=M(E[g],Q),Z[C]=M(E[C],Q),R+=8}while(R<I){let T=O[R++];Z[T]=M(J[T],Q)}}return Z}let Y=Object.getPrototypeOf(J),$=Object.create(Y);Q.set(J,$);let U=Object.getOwnPropertyDescriptors(J),G=Object.keys(U),W=G.length;for(let Z=0;Z<W;Z++){let F=G[Z],_=U[F];if(!_.enumerable)continue;if(_.get||_.set)Object.defineProperty($,F,_);else{let B=M(_.value,Q);Object.defineProperty($,F,{..._,value:B})}}let q=Object.getOwnPropertySymbols(J),K=q.length;for(let Z=0;Z<K;Z++){let F=q[Z],_=Object.getOwnPropertyDescriptor(J,F);if(!_?.enumerable)continue;Object.defineProperty($,F,_)}return $};var ZJ=()=>{return typeof window<"u"&&typeof document<"u"},_J=(J,Q)=>{if(!J)return;for(let[X,Y]of Object.entries(Q))J.style.setProperty(X,Y)},$J=(J,Q={})=>{let{checkViewport:X=!0,checkDisplay:Y=!0,checkVisibility:$=!0,checkOpacity:U=!0}=Q;if(!J.isConnected)return!1;if(Y||$||U){let G=window.getComputedStyle(J);if(Y&&G.display==="none")return!1;if($&&G.visibility!==""&&G.visibility!=="visible")return!1;if(U&&G.opacity!==""){let W=Number.parseFloat(G.opacity);if(!Number.isNaN(W)&&W===0)return!1}}if(X){let G=J.getBoundingClientRect();if(G.width!==0||G.height!==0){let W=window.innerHeight||document.documentElement.clientHeight,q=window.innerWidth||document.documentElement.clientWidth,K=G.bottom<=0||G.top>=W,Z=G.right<=0||G.left>=q;if(K||Z)return!1}}return!0};var L,z,l=()=>{if(z!==void 0)return z;if(typeof document>"u")return z=null,null;return L=document.createElement("canvas"),z=L.getContext("2d"),z},GJ=()=>{L=void 0,z=void 0},FJ=(J,Q={})=>{let{vertical:X=!0,horizontal:Y=!0}=Q,$=J.getBoundingClientRect();if($.width===0&&$.height===0)return!0;let U=window.innerHeight||document.documentElement.clientHeight,G=window.innerWidth||document.documentElement.clientWidth;if(X&&($.bottom<=0||$.top>=U))return!1;if(Y&&($.right<=0||$.left>=G))return!1;return!0},UJ=(J,Q,X=!1,Y='Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"')=>{let $=l();if(!$)return 0;let U=X?J.toUpperCase():J;return $.font=`${Q}px ${Y}`,$.measureText(U).width};var b=(J,Q="\uD83D\uDE80")=>{let X=0,Y=J+Q;for(let $=0;$<Y.length;$++){let U=Y.charCodeAt($);X=(X<<5)-X+U,X|=0}return(X>>>0).toString(16)},d=(J)=>{return`${b(J)}::${J}`},c=(J,Q)=>{return(X)=>{if(!(X instanceof CustomEvent))return;try{J(X.detail)}catch(Y){if(Q)Q(Y);else console.error("Event listener error:",Y)}}},MJ=(J,Q)=>{if(!J)return;let X=d(J);window.dispatchEvent(new CustomEvent(X,{detail:Q,bubbles:!0,cancelable:!1}))},V=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=c(Q,X.onError),$=d(J);return window.addEventListener($,Y),()=>window.removeEventListener($,Y)},RJ=(J,Q,X={})=>{if(!J||typeof Q!=="function")return()=>{};let Y=V(J,($)=>{Y(),Q($)},X);return Y};import{useEffect as r}from"react";var HJ=(J,Q,X=[])=>{r(()=>{if(!J||typeof Q!=="function")return;return V(J,Q)},[J,Q,...X])};var IJ=(J,Q)=>{return S(J,Q,new WeakMap)},S=(J,Q,X)=>{if(Object.is(J,Q))return!0;if(J instanceof Date&&Q instanceof Date)return J.getTime()===Q.getTime();if(J instanceof RegExp&&Q instanceof RegExp)return J.source===Q.source&&J.flags===Q.flags;if(J instanceof Error&&Q instanceof Error)return J.name===Q.name&&J.message===Q.message;if(J instanceof ArrayBuffer&&Q instanceof ArrayBuffer){if(J.byteLength!==Q.byteLength)return!1;return u(new Uint8Array(J),new Uint8Array(Q))}if(ArrayBuffer.isView(J)&&ArrayBuffer.isView(Q)){if(J.constructor!==Q.constructor)return!1;if(J.byteLength!==Q.byteLength)return!1;let Y=new Uint8Array(J.buffer,J.byteOffset,J.byteLength),$=new Uint8Array(Q.buffer,Q.byteOffset,Q.byteLength);return u(Y,$)}if(typeof J==="object"&&J!==null&&typeof Q==="object"&&Q!==null){let Y=X.get(J);if(Y?.has(Q))return!0;if(Y)Y.add(Q);else X.set(J,new WeakSet([Q]))}if(Array.isArray(J)&&Array.isArray(Q)){if(J.length!==Q.length)return!1;for(let Y=0;Y<J.length;Y++)if(!S(J[Y],Q[Y],X))return!1;return!0}if(J instanceof Set&&Q instanceof Set){if(J.size!==Q.size)return!1;let Y=Array.from(Q);for(let $ of J){let U=Y.findIndex((G)=>S($,G,X));if(U===-1)return!1;Y.splice(U,1)}return!0}if(J instanceof Map&&Q instanceof Map){if(J.size!==Q.size)return!1;for(let[Y,$]of J)if(!Q.has(Y)||!S($,Q.get(Y),X))return!1;return!0}if(J!==null&&typeof J==="object"&&Q!==null&&typeof Q==="object"){let Y=J,$=Q,U=Object.keys(Y);if(U.length!==Object.keys($).length)return!1;for(let G of U)if(!S(Y[G],$[G],X))return!1;return!0}return!1},u=(J,Q)=>{for(let X=0;X<J.length;X++)if(J[X]!==Q[X])return!1;return!0};export{k as _,p as $,h as aa,n as ba,o as ca,j as da,i as ea,m as fa,t as ga,s as ha,a as ia,e as ja,JJ as ka,XJ as la,ZJ as ma,_J as na,$J as oa,GJ as pa,FJ as qa,UJ as ra,MJ as sa,V as ta,RJ as ua,HJ as va,IJ as wa};