@sohanemon/utils 7.1.6 → 7.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.cts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +1 -1
- package/dist/{functions-BdMSbEDn.cjs → functions-CFH1X14n.cjs} +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.cts +46 -20
- package/dist/hooks/index.d.ts +46 -20
- package/dist/hooks/index.js +1 -1
- package/dist/hooks-DsHgLYqS.js +1 -0
- package/dist/hooks-OQY4yTNc.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/package.json +2 -2
- package/dist/hooks-CsB2Qbsu.cjs +0 -1
- package/dist/hooks-Drh8epTw.js +0 -1
package/README.md
CHANGED
|
@@ -159,7 +159,25 @@ const { data, isLoading } = useAsync(async (signal) => {
|
|
|
159
159
|
|
|
160
160
|
const [value, setValue] = useLocalStorage('key', { count: 0 });
|
|
161
161
|
|
|
162
|
+
// Media Query - Boolean check
|
|
162
163
|
const isMobile = useMediaQuery('sm');
|
|
164
|
+
const isDark = useMediaQuery('(prefers-color-scheme: dark)');
|
|
165
|
+
|
|
166
|
+
// Media Query - Responsive value mapper (mobile-first)
|
|
167
|
+
const fontSize = useMediaQuery({
|
|
168
|
+
DEFAULT: 'text-sm',
|
|
169
|
+
sm: 'text-base',
|
|
170
|
+
lg: 'text-xl'
|
|
171
|
+
});
|
|
172
|
+
// Returns 'text-xl' on large screens, 'text-base' on small, 'text-sm' otherwise
|
|
173
|
+
|
|
174
|
+
const columns = useMediaQuery({
|
|
175
|
+
DEFAULT: 1,
|
|
176
|
+
sm: 2,
|
|
177
|
+
lg: 3,
|
|
178
|
+
xl: 4
|
|
179
|
+
});
|
|
180
|
+
// Returns 4 columns on xl, 3 on lg, 2 on sm, 1 otherwise
|
|
163
181
|
|
|
164
182
|
const { isCopied, copy } = useCopyToClipboard();
|
|
165
183
|
|
|
@@ -379,8 +397,12 @@ useIsomorphicEffect: typeof React.useLayoutEffect | typeof React.useEffect
|
|
|
379
397
|
|
|
380
398
|
#### UI & Interaction
|
|
381
399
|
```typescript
|
|
400
|
+
// Boolean check
|
|
382
401
|
useMediaQuery(tailwindBreakpoint: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | `(${string})`): boolean
|
|
383
402
|
|
|
403
|
+
// Responsive value mapper
|
|
404
|
+
useMediaQuery<T>(map: { DEFAULT: T } & Partial<Record<'sm' | 'md' | 'lg' | 'xl' | '2xl', T>>): T
|
|
405
|
+
|
|
384
406
|
useClickOutside(callback: () => void): React.RefObject<HTMLDivElement>
|
|
385
407
|
|
|
386
408
|
useCopyToClipboard(options?: { timeout?: number }): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../hooks-
|
|
1
|
+
"use client";const e=require(`../hooks-OQY4yTNc.cjs`),t=require(`../functions-CFH1X14n.cjs`);let n=require(`react`);n=e.A(n);let r=require(`react/jsx-runtime`),i=require(`@iconify/react`);function a({className:i,html:a,sanitize:o=!1,executeScripts:s=!0,...c}){let l=n.useRef([]),u=n.useRef(null);e.k(()=>{if(l.current.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),l.current=[],!(!s||!a))try{let e=document.createElement(`div`);e.innerHTML=a,e.querySelectorAll(`script`).forEach(e=>{let t=document.createElement(`script`);e.textContent&&(t.textContent=e.textContent),Array.from(e.attributes).forEach(e=>{t.setAttribute(e.name,e.value)}),t.onerror=e=>{console.error(`Script injection error:`,e)},document.body.appendChild(t),l.current.push(t)})}catch(e){console.error(`HTML injection error:`,e)}},[a,s]),n.useEffect(()=>()=>{l.current.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)})},[]);let d=n.useMemo(()=>{if(!a)return``;if(o){let e=document.createElement(`div`);e.innerHTML=a,e.querySelectorAll(`script`).forEach(e=>e.remove());let t=[`onclick`,`onload`,`onerror`,`onmouseover`];return e.querySelectorAll(`*`).forEach(e=>{t.forEach(t=>{e.hasAttribute(t)&&e.removeAttribute(t)})}),e.innerHTML}return a},[a,o]);return a?(0,r.jsx)(`div`,{ref:u,className:t.r(i),dangerouslySetInnerHTML:{__html:d},...c}):null}function o({breakpoint:t,as:i=`div`,fallback:a=n.Fragment,className:o,classNameFallback:s,...c}){let l=e.T(t.split(`-`).pop())===t.startsWith(`max`),u=l?a:i,d=l?s:o;return u===n.Fragment?(0,r.jsx)(u,{ref:c.ref,children:c.children},c.key):(0,r.jsx)(u,{className:d,...c})}const s=[`bottom-left`,`bottom-right`,`top-right`,`top-left`],c=({side:t,offset:i=2,unit:a=`rem`})=>{let[o,c]=n.useState(t??`bottom-left`),l=e.T({DEFAULT:`xs`,sm:`sm`,md:`md`,lg:`lg`,xl:`xl`,"2xl":`2xl`}),[u,d]=n.useState(typeof window<`u`?window.innerWidth:0);n.useEffect(()=>{if(typeof window>`u`)return;let e=()=>d(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let f=l===`2xl`&&u>=1792?a===`rem`?`${(u/16).toFixed(1)}rem`:`${u}${a}`:l,p={"bottom-left":{bottom:`${i}${a}`,left:`${i}${a}`},"bottom-right":{bottom:`${i}${a}`,right:`${i}${a}`},"top-right":{top:`${i}${a}`,right:`${i}${a}`},"top-left":{top:`${i}${a}`,left:`${i}${a}`}};return(0,r.jsx)(`button`,{type:`button`,onClick:()=>{c(s[(s.indexOf(o)+1)%s.length])},style:{position:`fixed`,zIndex:50,display:`grid`,height:`2.5rem`,minWidth:`2.5rem`,borderRadius:`30px`,placeContent:`center`,backgroundColor:`#2d3748`,fontFamily:`Courier New, Courier, monospace`,fontSize:`1rem`,color:`#ffffff`,border:`2px solid #4a5568`,boxShadow:`0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)`,padding:`0.5rem`,transition:`all 0.2s ease-in-out`,...p[o]},children:f})};function l(){return e.k(()=>{let e=document.body;if(!e)return;let t=e=>{let t=getComputedStyle(e);if(t.overflow===`hidden`&&t.overflowY===`hidden`&&t.overflowX===`hidden`)return!1;let n=(t.overflowY===`auto`||t.overflowY===`scroll`)&&e.scrollHeight>e.clientHeight,r=(t.overflowX===`auto`||t.overflowX===`scroll`)&&e.scrollWidth>e.clientWidth;return n||r},n=e=>{t(e)?e.dataset.scrollable=`true`:delete e.dataset.scrollable},r=e=>{n(e);for(let t=0;t<e.children.length;t++){let n=e.children[t];r(n)}};requestIdleCallback(()=>r(e));let i=new MutationObserver(e=>{for(let t of e)t.type===`childList`?t.addedNodes.forEach(e=>{e instanceof HTMLElement&&r(e)}):t.type===`attributes`&&t.target instanceof HTMLElement&&n(t.target)});return i.observe(e,{subtree:!0,childList:!0,attributes:!0,attributeFilter:[`style`,`class`]}),()=>i.disconnect()},[]),null}exports.HtmlInjector=a,Object.defineProperty(exports,`Iconify`,{enumerable:!0,get:function(){return i.Icon}}),exports.MediaWrapper=o,exports.ResponsiveIndicator=c,exports.TailwindIndicator=c,exports.ScrollTracker=e.C,exports.ScrollableMarker=l;
|
|
@@ -117,7 +117,7 @@ interface ResponsiveIndicatorProps {
|
|
|
117
117
|
side?: Side;
|
|
118
118
|
/** Offset from the corner in the specified unit. Defaults to 2. */
|
|
119
119
|
offset?: number;
|
|
120
|
-
/** Unit for the offset. Defaults to '
|
|
120
|
+
/** Unit for the offset. Defaults to 'rem'. */
|
|
121
121
|
unit?: 'px' | 'rem';
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
@@ -117,7 +117,7 @@ interface ResponsiveIndicatorProps {
|
|
|
117
117
|
side?: Side;
|
|
118
118
|
/** Offset from the corner in the specified unit. Defaults to 2. */
|
|
119
119
|
offset?: number;
|
|
120
|
-
/** Unit for the offset. Defaults to '
|
|
120
|
+
/** Unit for the offset. Defaults to 'rem'. */
|
|
121
121
|
unit?: 'px' | 'rem';
|
|
122
122
|
}
|
|
123
123
|
/**
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{
|
|
1
|
+
"use client";import{r as e}from"../functions-NBY7C4F1.js";import{C as t,T as n,k as r}from"../hooks-DsHgLYqS.js";import*as i from"react";import{jsx as a}from"react/jsx-runtime";import{Icon as o}from"@iconify/react";function s({className:t,html:n,sanitize:o=!1,executeScripts:s=!0,...c}){let l=i.useRef([]),u=i.useRef(null);r(()=>{if(l.current.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),l.current=[],!(!s||!n))try{let e=document.createElement(`div`);e.innerHTML=n,e.querySelectorAll(`script`).forEach(e=>{let t=document.createElement(`script`);e.textContent&&(t.textContent=e.textContent),Array.from(e.attributes).forEach(e=>{t.setAttribute(e.name,e.value)}),t.onerror=e=>{console.error(`Script injection error:`,e)},document.body.appendChild(t),l.current.push(t)})}catch(e){console.error(`HTML injection error:`,e)}},[n,s]),i.useEffect(()=>()=>{l.current.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)})},[]);let d=i.useMemo(()=>{if(!n)return``;if(o){let e=document.createElement(`div`);e.innerHTML=n,e.querySelectorAll(`script`).forEach(e=>e.remove());let t=[`onclick`,`onload`,`onerror`,`onmouseover`];return e.querySelectorAll(`*`).forEach(e=>{t.forEach(t=>{e.hasAttribute(t)&&e.removeAttribute(t)})}),e.innerHTML}return n},[n,o]);return n?a(`div`,{ref:u,className:e(t),dangerouslySetInnerHTML:{__html:d},...c}):null}function c({breakpoint:e,as:t=`div`,fallback:r=i.Fragment,className:o,classNameFallback:s,...c}){let l=n(e.split(`-`).pop())===e.startsWith(`max`),u=l?r:t,d=l?s:o;return u===i.Fragment?a(u,{ref:c.ref,children:c.children},c.key):a(u,{className:d,...c})}const l=[`bottom-left`,`bottom-right`,`top-right`,`top-left`],u=({side:e,offset:t=2,unit:r=`rem`})=>{let[o,s]=i.useState(e??`bottom-left`),c=n({DEFAULT:`xs`,sm:`sm`,md:`md`,lg:`lg`,xl:`xl`,"2xl":`2xl`}),[u,d]=i.useState(typeof window<`u`?window.innerWidth:0);i.useEffect(()=>{if(typeof window>`u`)return;let e=()=>d(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let f=c===`2xl`&&u>=1792?r===`rem`?`${(u/16).toFixed(1)}rem`:`${u}${r}`:c;return a(`button`,{type:`button`,onClick:()=>{s(l[(l.indexOf(o)+1)%l.length])},style:{position:`fixed`,zIndex:50,display:`grid`,height:`2.5rem`,minWidth:`2.5rem`,borderRadius:`30px`,placeContent:`center`,backgroundColor:`#2d3748`,fontFamily:`Courier New, Courier, monospace`,fontSize:`1rem`,color:`#ffffff`,border:`2px solid #4a5568`,boxShadow:`0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)`,padding:`0.5rem`,transition:`all 0.2s ease-in-out`,...{"bottom-left":{bottom:`${t}${r}`,left:`${t}${r}`},"bottom-right":{bottom:`${t}${r}`,right:`${t}${r}`},"top-right":{top:`${t}${r}`,right:`${t}${r}`},"top-left":{top:`${t}${r}`,left:`${t}${r}`}}[o]},children:f})};function d(){return r(()=>{let e=document.body;if(!e)return;let t=e=>{let t=getComputedStyle(e);if(t.overflow===`hidden`&&t.overflowY===`hidden`&&t.overflowX===`hidden`)return!1;let n=(t.overflowY===`auto`||t.overflowY===`scroll`)&&e.scrollHeight>e.clientHeight,r=(t.overflowX===`auto`||t.overflowX===`scroll`)&&e.scrollWidth>e.clientWidth;return n||r},n=e=>{t(e)?e.dataset.scrollable=`true`:delete e.dataset.scrollable},r=e=>{n(e);for(let t=0;t<e.children.length;t++){let n=e.children[t];r(n)}};requestIdleCallback(()=>r(e));let i=new MutationObserver(e=>{for(let t of e)t.type===`childList`?t.addedNodes.forEach(e=>{e instanceof HTMLElement&&r(e)}):t.type===`attributes`&&t.target instanceof HTMLElement&&n(t.target)});return i.observe(e,{subtree:!0,childList:!0,attributes:!0,attributeFilter:[`style`,`class`]}),()=>i.disconnect()},[]),null}export{s as HtmlInjector,o as Iconify,c as MediaWrapper,u as ResponsiveIndicator,u as TailwindIndicator,t as ScrollTracker,d as ScrollableMarker};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`./hooks-
|
|
1
|
+
const e=require(`./hooks-OQY4yTNc.cjs`);let t=require(`clsx`),n=require(`tailwind-merge`);const r=(e,t,n,r=`/`)=>{let i=``;if(n){let e=new Date;e.setTime(e.getTime()+n*24*60*60*1e3),i=`; expires=${e.toUTCString()}`}document.cookie=`${e}=${t||``}${i}; path=${r}`},i=(e,t=`/`)=>{document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=${t}`},a=e=>document.cookie.split(`; `).some(t=>t.startsWith(`${e}=`)),o=e=>({value:document.cookie.split(`; `).find(t=>t.startsWith(`${e}=`))?.split(`=`)[1]});function s(...e){return(0,n.twMerge)((0,t.clsx)(e))}function c(e,t){return console.warn(`isNavActive is deprecated. Use isLinkActive instead.`),RegExp(`^/?${e}(/|$)`).test(t)}function l({path:e,currentPath:t,locales:n=[`en`,`es`,`de`,`zh`,`bn`,`fr`,`it`,`nl`],exact:r=!0}){let i=RegExp(`^/?(${n.join(`|`)})/`),a=e=>e.replace(i,``).replace(/^\/+|\/+$/g,``),o=a(e),s=a(t);return r?o===s:s.startsWith(o)}function u(e){let t=e;return e.includes(`/public/`)&&(t=e.replace(`/public/`,`/`)),t.trim()}const d=(e,t)=>{let n;if(typeof e==`string`)n=document.querySelector(e);else if(e.current)n=e.current;else return;n&&n.scrollTo({top:t===`top`?0:n.scrollHeight-n.clientHeight,behavior:`smooth`})},f=(e,t=()=>{})=>{typeof window>`u`||!navigator.clipboard?.writeText||e&&navigator.clipboard.writeText(e).then(t)},p=typeof window>`u`,m=e=>p?Buffer.from(e).toString(`base64`):window.btoa(e),h=(...e)=>t=>{for(let n of e)n&&(typeof n==`function`?n(t):n.current=t)};function g(e,t){let n=document.getElementById(e);n&&(n.scrollIntoView({behavior:`smooth`,block:`start`,...t}),window.history.pushState(null,``,`#${e}`))}function _(e){let t=`
|
|
2
2
|
self.onmessage = async (e) => {
|
|
3
3
|
try {
|
|
4
4
|
const fn = ${e.toString()};
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../hooks-
|
|
1
|
+
"use client";const e=require(`../hooks-OQY4yTNc.cjs`);require(`../functions-CFH1X14n.cjs`),exports.BREAKPOINTS=e.w,exports.useAction=e.D,exports.useAsync=e.E,exports.useClickOutside=e.t,exports.useCopyToClipboard=e.n,exports.useDebounce=e.r,exports.useDomCalculation=e.i,exports.useEffectOnce=e.a,exports.useHeightCalculation=e.o,exports.useIntersection=e.s,exports.useIsAtTop=e.c,exports.useIsClient=e.l,exports.useIsScrolling=e.u,exports.useIsomorphicEffect=e.d,exports.useLocalStorage=e.f,exports.useLockScroll=e.p,exports.useMediaQuery=e.T,exports.useQuerySelector=e.m,exports.useSchedule=e.O,exports.useScheduledEffect=e.k,exports.useScrollTracker=e.S,exports.useSessionStorage=e.h,exports.useTimeout=e.g,exports.useUpdateEffect=e._,exports.useUrlParams=e.v,exports.useWindowEvent=e.y,exports.useWorker=e.b,exports.useWorkerEffect=e.x;
|
package/dist/hooks/index.d.cts
CHANGED
|
@@ -90,6 +90,51 @@ interface UseAsyncReturn<TData, TError extends Error = Error> {
|
|
|
90
90
|
*/
|
|
91
91
|
declare function useAsync<TData, TError extends Error = Error>(asyncFn: (signal: AbortSignal) => Promise<TData>, options?: UseAsyncOptions<TData, TError>): UseAsyncReturn<TData, TError>;
|
|
92
92
|
//#endregion
|
|
93
|
+
//#region src/hooks/media-query.d.ts
|
|
94
|
+
/**
|
|
95
|
+
* Breakpoint widths matching Tailwind CSS defaults
|
|
96
|
+
* @see https://tailwindcss.com/docs/responsive-design
|
|
97
|
+
*/
|
|
98
|
+
declare const BREAKPOINTS: {
|
|
99
|
+
readonly sm: 640;
|
|
100
|
+
readonly md: 768;
|
|
101
|
+
readonly lg: 1024;
|
|
102
|
+
readonly xl: 1280;
|
|
103
|
+
readonly '2xl': 1536;
|
|
104
|
+
};
|
|
105
|
+
type Breakpoint = keyof typeof BREAKPOINTS | `max-${keyof typeof BREAKPOINTS}`;
|
|
106
|
+
type MediaQueryMap<T> = {
|
|
107
|
+
DEFAULT: T;
|
|
108
|
+
} & Partial<Record<Breakpoint, T>>;
|
|
109
|
+
/**
|
|
110
|
+
* React hook for responsive design with CSS media queries.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* // Boolean check for a single breakpoint
|
|
114
|
+
* const isMobile = useMediaQuery('max-md');
|
|
115
|
+
* const isDesktop = useMediaQuery('lg');
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* // Range queries (AND logic) - check multiple conditions
|
|
119
|
+
* // True when viewport is between md and lg (768px - 1023px)
|
|
120
|
+
* const isTablet = useMediaQuery(['md', 'max-lg']);
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* // Custom media queries
|
|
124
|
+
* const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
|
125
|
+
* const isReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)');
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* // Responsive values with breakpoint map
|
|
129
|
+
* const columns = useMediaQuery({
|
|
130
|
+
* DEFAULT: 1, // < 640px
|
|
131
|
+
* sm: 2, // 640px+
|
|
132
|
+
* lg: 4, // 1024px+
|
|
133
|
+
* });
|
|
134
|
+
*/
|
|
135
|
+
declare function useMediaQuery<T>(map: MediaQueryMap<T>): T;
|
|
136
|
+
declare function useMediaQuery(query: Breakpoint | `(${string})` | (Breakpoint | `(${string})`)[]): boolean;
|
|
137
|
+
//#endregion
|
|
93
138
|
//#region src/hooks/schedule.d.ts
|
|
94
139
|
/**
|
|
95
140
|
* useSchedule — run non-urgent work later, without blocking UI.
|
|
@@ -253,25 +298,6 @@ declare function useWorkerEffect(effect: () => void | (() => void), deps?: React
|
|
|
253
298
|
* ```
|
|
254
299
|
*/
|
|
255
300
|
declare const useClickOutside: (callback?: () => void) => React.RefObject<HTMLDivElement | null>;
|
|
256
|
-
/**
|
|
257
|
-
* Hook to match a media query based on Tailwind CSS breakpoints or custom queries.
|
|
258
|
-
* @param tailwindBreakpoint - The Tailwind breakpoint or custom query string.
|
|
259
|
-
* @returns A boolean indicating whether the media query matches.
|
|
260
|
-
*
|
|
261
|
-
* @example
|
|
262
|
-
* ```tsx
|
|
263
|
-
* const isMobile = useMediaQuery('md'); // false on screens >= 768px
|
|
264
|
-
* const isLarge = useMediaQuery('lg'); // true on screens >= 1024px
|
|
265
|
-
* const isDark = useMediaQuery('(prefers-color-scheme: dark)');
|
|
266
|
-
*
|
|
267
|
-
* return (
|
|
268
|
-
* <div className={isMobile ? 'mobile-layout' : 'desktop-layout'}>
|
|
269
|
-
* Content
|
|
270
|
-
* </div>
|
|
271
|
-
* );
|
|
272
|
-
* ```
|
|
273
|
-
*/
|
|
274
|
-
declare function useMediaQuery(tailwindBreakpoint: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | `(${string})`): boolean;
|
|
275
301
|
/**
|
|
276
302
|
* Runs an effect only once when the component mounts.
|
|
277
303
|
* @param effect - The effect callback function.
|
|
@@ -691,4 +717,4 @@ declare const useIntersection: ({
|
|
|
691
717
|
isIntersecting: boolean;
|
|
692
718
|
};
|
|
693
719
|
//#endregion
|
|
694
|
-
export { useAction, useAsync, useClickOutside, useCopyToClipboard, useDebounce, useDomCalculation, useEffectOnce, useHeightCalculation, useIntersection, useIsAtTop, useIsClient, useIsScrolling, useIsomorphicEffect, useLocalStorage, useLockScroll, useMediaQuery, useQuerySelector, useSchedule, useScheduledEffect, useScrollTracker, useSessionStorage, useTimeout, useUpdateEffect, useUrlParams, useWindowEvent, useWorker, useWorkerEffect };
|
|
720
|
+
export { BREAKPOINTS, type MediaQueryMap, useAction, useAsync, useClickOutside, useCopyToClipboard, useDebounce, useDomCalculation, useEffectOnce, useHeightCalculation, useIntersection, useIsAtTop, useIsClient, useIsScrolling, useIsomorphicEffect, useLocalStorage, useLockScroll, useMediaQuery, useQuerySelector, useSchedule, useScheduledEffect, useScrollTracker, useSessionStorage, useTimeout, useUpdateEffect, useUrlParams, useWindowEvent, useWorker, useWorkerEffect };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -90,6 +90,51 @@ interface UseAsyncReturn<TData, TError extends Error = Error> {
|
|
|
90
90
|
*/
|
|
91
91
|
declare function useAsync<TData, TError extends Error = Error>(asyncFn: (signal: AbortSignal) => Promise<TData>, options?: UseAsyncOptions<TData, TError>): UseAsyncReturn<TData, TError>;
|
|
92
92
|
//#endregion
|
|
93
|
+
//#region src/hooks/media-query.d.ts
|
|
94
|
+
/**
|
|
95
|
+
* Breakpoint widths matching Tailwind CSS defaults
|
|
96
|
+
* @see https://tailwindcss.com/docs/responsive-design
|
|
97
|
+
*/
|
|
98
|
+
declare const BREAKPOINTS: {
|
|
99
|
+
readonly sm: 640;
|
|
100
|
+
readonly md: 768;
|
|
101
|
+
readonly lg: 1024;
|
|
102
|
+
readonly xl: 1280;
|
|
103
|
+
readonly '2xl': 1536;
|
|
104
|
+
};
|
|
105
|
+
type Breakpoint = keyof typeof BREAKPOINTS | `max-${keyof typeof BREAKPOINTS}`;
|
|
106
|
+
type MediaQueryMap<T> = {
|
|
107
|
+
DEFAULT: T;
|
|
108
|
+
} & Partial<Record<Breakpoint, T>>;
|
|
109
|
+
/**
|
|
110
|
+
* React hook for responsive design with CSS media queries.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* // Boolean check for a single breakpoint
|
|
114
|
+
* const isMobile = useMediaQuery('max-md');
|
|
115
|
+
* const isDesktop = useMediaQuery('lg');
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* // Range queries (AND logic) - check multiple conditions
|
|
119
|
+
* // True when viewport is between md and lg (768px - 1023px)
|
|
120
|
+
* const isTablet = useMediaQuery(['md', 'max-lg']);
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* // Custom media queries
|
|
124
|
+
* const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
|
125
|
+
* const isReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)');
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* // Responsive values with breakpoint map
|
|
129
|
+
* const columns = useMediaQuery({
|
|
130
|
+
* DEFAULT: 1, // < 640px
|
|
131
|
+
* sm: 2, // 640px+
|
|
132
|
+
* lg: 4, // 1024px+
|
|
133
|
+
* });
|
|
134
|
+
*/
|
|
135
|
+
declare function useMediaQuery<T>(map: MediaQueryMap<T>): T;
|
|
136
|
+
declare function useMediaQuery(query: Breakpoint | `(${string})` | (Breakpoint | `(${string})`)[]): boolean;
|
|
137
|
+
//#endregion
|
|
93
138
|
//#region src/hooks/schedule.d.ts
|
|
94
139
|
/**
|
|
95
140
|
* useSchedule — run non-urgent work later, without blocking UI.
|
|
@@ -253,25 +298,6 @@ declare function useWorkerEffect(effect: () => void | (() => void), deps?: React
|
|
|
253
298
|
* ```
|
|
254
299
|
*/
|
|
255
300
|
declare const useClickOutside: (callback?: () => void) => React.RefObject<HTMLDivElement | null>;
|
|
256
|
-
/**
|
|
257
|
-
* Hook to match a media query based on Tailwind CSS breakpoints or custom queries.
|
|
258
|
-
* @param tailwindBreakpoint - The Tailwind breakpoint or custom query string.
|
|
259
|
-
* @returns A boolean indicating whether the media query matches.
|
|
260
|
-
*
|
|
261
|
-
* @example
|
|
262
|
-
* ```tsx
|
|
263
|
-
* const isMobile = useMediaQuery('md'); // false on screens >= 768px
|
|
264
|
-
* const isLarge = useMediaQuery('lg'); // true on screens >= 1024px
|
|
265
|
-
* const isDark = useMediaQuery('(prefers-color-scheme: dark)');
|
|
266
|
-
*
|
|
267
|
-
* return (
|
|
268
|
-
* <div className={isMobile ? 'mobile-layout' : 'desktop-layout'}>
|
|
269
|
-
* Content
|
|
270
|
-
* </div>
|
|
271
|
-
* );
|
|
272
|
-
* ```
|
|
273
|
-
*/
|
|
274
|
-
declare function useMediaQuery(tailwindBreakpoint: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | `(${string})`): boolean;
|
|
275
301
|
/**
|
|
276
302
|
* Runs an effect only once when the component mounts.
|
|
277
303
|
* @param effect - The effect callback function.
|
|
@@ -691,4 +717,4 @@ declare const useIntersection: ({
|
|
|
691
717
|
isIntersecting: boolean;
|
|
692
718
|
};
|
|
693
719
|
//#endregion
|
|
694
|
-
export { useAction, useAsync, useClickOutside, useCopyToClipboard, useDebounce, useDomCalculation, useEffectOnce, useHeightCalculation, useIntersection, useIsAtTop, useIsClient, useIsScrolling, useIsomorphicEffect, useLocalStorage, useLockScroll, useMediaQuery, useQuerySelector, useSchedule, useScheduledEffect, useScrollTracker, useSessionStorage, useTimeout, useUpdateEffect, useUrlParams, useWindowEvent, useWorker, useWorkerEffect };
|
|
720
|
+
export { BREAKPOINTS, type MediaQueryMap, useAction, useAsync, useClickOutside, useCopyToClipboard, useDebounce, useDomCalculation, useEffectOnce, useHeightCalculation, useIntersection, useIsAtTop, useIsClient, useIsScrolling, useIsomorphicEffect, useLocalStorage, useLockScroll, useMediaQuery, useQuerySelector, useSchedule, useScheduledEffect, useScrollTracker, useSessionStorage, useTimeout, useUpdateEffect, useUrlParams, useWindowEvent, useWorker, useWorkerEffect };
|
package/dist/hooks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import"../functions-NBY7C4F1.js";import{
|
|
1
|
+
"use client";import"../functions-NBY7C4F1.js";import{D as e,E as t,O as n,S as r,T as i,_ as a,a as o,b as s,c,d as l,f as u,g as d,h as f,i as p,k as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C,v as w,w as T,x as E,y as D}from"../hooks-DsHgLYqS.js";export{T as BREAKPOINTS,e as useAction,t as useAsync,S as useClickOutside,_ as useCopyToClipboard,b as useDebounce,p as useDomCalculation,o as useEffectOnce,v as useHeightCalculation,x as useIntersection,c as useIsAtTop,h as useIsClient,C as useIsScrolling,l as useIsomorphicEffect,u as useLocalStorage,y as useLockScroll,i as useMediaQuery,g as useQuerySelector,n as useSchedule,m as useScheduledEffect,r as useScrollTracker,f as useSessionStorage,d as useTimeout,a as useUpdateEffect,w as useUrlParams,D as useWindowEvent,s as useWorker,E as useWorkerEffect};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,i as t,t as n}from"./functions-NBY7C4F1.js";import{schedule as r}from"@ts-utilities/core";import*as i from"react";import{Slot as a}from"@radix-ui/react-slot";import{jsx as o}from"react/jsx-runtime";function s(e={}){let{timeout:t=1e4}=e;return i.useCallback(e=>{let n=()=>{try{i.startTransition(()=>{e()})}catch(e){console.log(`⚡[schedule.tsx] Failed: `,e)}};`requestIdleCallback`in window?requestIdleCallback(n,{timeout:t}):r(n)},[t])}function c(e,t=[],n={}){let r=s(n);i.useEffect(()=>{let t;return r(()=>{t=e()}),()=>{typeof t==`function`&&t?.()}},[r,...t])}const l=(e,t)=>{let[n,r]=i.useState(`idle`),[a,o]=i.useState(null),[s,l]=i.useState(null),[u,d]=i.useState(void 0),[f,p]=i.useTransition(),m=n===`idle`,h=n===`loading`||f,g=n===`success`,_=n===`error`,v=i.useCallback(e=>{o(e),r(`success`),t?.onSuccess?.(e),t?.onSettled?.()},[t]),y=i.useCallback(e=>{l(e),r(`error`),t?.onError?.(e),t?.onSettled?.()},[t]),b=i.useCallback(t=>{d(t),r(`loading`),l(null),p(()=>{e(t).then(v).catch(y)})},[e,v,y]);return{execute:b,executeAsync:i.useCallback(t=>new Promise((n,i)=>{d(t),r(`loading`),l(null),p(()=>{e(t).then(e=>{v(e),n(e)}).catch(e=>{y(e),i(e)})})}),[e,v,y]),reset:i.useCallback(()=>{r(`idle`),o(null),l(null),d(void 0)},[]),useExecute:e=>{c(()=>{b(e)},[])},data:a,error:s,input:u,isIdle:m,isLoading:h,isSuccess:g,isError:_}};function u(e,t={}){let{mode:n=`manual`,deps:r,onSuccess:a,onError:o,onSettled:s}=t,[c,l]=i.useState(void 0),[u,d]=i.useState(void 0),[f,p]=i.useState(`idle`),m=i.useRef(null),h=i.useCallback(a||(()=>{}),[a]),g=i.useCallback(o||(()=>{}),[o]),_=i.useCallback(s||(()=>{}),[s]),v=i.useCallback(async()=>{m.current&&m.current.abort(),m.current=new AbortController;let t=m.current.signal;p(`pending`),d(void 0);try{let n=await e(t);return t.aborted||(l(n),p(`success`),await h(n),await _(n,void 0)),n}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;let n=e instanceof Error?e:Error(String(e)),r=n;throw t.aborted||(d(r),p(`error`),await g(r),await _(void 0,r)),n}},[e,h,g,_]);return i.useEffect(()=>{n===`auto`&&!r&&v()},[e,n,v,r]),i.useEffect(()=>{r&&n===`auto`&&v()},r||[]),i.useEffect(()=>()=>{m.current&&m.current.abort()},[]),{data:c,error:u,status:f,isIdle:f===`idle`,isPending:f===`pending`,isSuccess:f===`success`,isError:f===`error`,execute:v}}const d={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},f=[`2xl`,`xl`,`lg`,`md`,`sm`,`max-2xl`,`max-xl`,`max-lg`,`max-md`,`max-sm`],p=e=>typeof e==`object`&&!!e&&`DEFAULT`in e,m=e=>e.startsWith(`max-`)?`(max-width: ${d[e.slice(4)]-1}px)`:`(min-width: ${d[e]}px)`;function h(t){if(p(t)){let n=i.useMemo(()=>{let e=Object.keys(t).filter(e=>e!==`DEFAULT`&&t[e]!==void 0);return f.filter(t=>e.includes(t)).map(e=>({key:e,query:m(e),value:t[e]}))},[...Object.keys(t).map(e=>t[e])]),[r,a]=i.useState(()=>{if(e)return t.DEFAULT;for(let{query:e,value:t}of n)if(window.matchMedia(e).matches)return t;return t.DEFAULT}),o=i.useRef(n);return o.current=n,i.useEffect(()=>{if(typeof window>`u`)return;let e=()=>{for(let{query:e,value:t}of o.current)if(window.matchMedia(e).matches){a(t);return}a(t.DEFAULT)},n=o.current.map(({query:t})=>{let n=window.matchMedia(t);return n.addEventListener(`change`,e),n});return e(),()=>{for(let t of n)t.removeEventListener(`change`,e)}},[t.DEFAULT,n]),r}let n=Array.isArray(t)?t:[t],r=i.useMemo(()=>n.map(e=>e.startsWith(`(`)?e:m(e)),[n]),[a,o]=i.useState(()=>typeof window>`u`?!1:r.every(e=>window.matchMedia(e).matches));return c(()=>{if(typeof window>`u`)return;let e=()=>{o(r.every(e=>window.matchMedia(e).matches))},t=r.map(t=>{let n=window.matchMedia(t);return n.addEventListener(`change`,e),n});return e(),()=>{for(let n of t)n.removeEventListener(`change`,e)}},[r]),a}const g=i.createContext(null),_=({children:e})=>{let t=i.useRef(null);return o(g.Provider,{value:t,children:o(a,{ref:t,children:e})})},v=({threshold:e=300,container:t}={})=>{let n=i.useContext(g),[r,a]=i.useState({scrolledPast:!1,direction:`forward`}),o=i.useRef(0),s=t=>{let n=t>o.current?`forward`:`backward`;a({scrolledPast:t>e,direction:n}),o.current=t};return c(()=>{let e=null;typeof t==`string`?e=document.querySelector(t):t?.current?e=t.current:n?.current&&(e=n.current);let r=e||window,i=e?`scrollTop`:`scrollY`,a=()=>{let e=r[i];s(e)};return r.addEventListener(`scroll`,a),a(),()=>r.removeEventListener(`scroll`,a)},[t,n,e]),r};function y(e){let[t,r]=i.useState(void 0),[a,o]=i.useState(null),[s,c]=i.useState(!1),l=i.useMemo(()=>n(e),[]);return{execute:i.useCallback((...e)=>{(async()=>{c(!0),o(null);try{r(await l(...e))}catch(e){o(e instanceof Error?e:Error(String(e)))}finally{c(!1)}})()},[l]),data:t,error:a,isLoading:s}}function b(e,t=[]){let{execute:n}=y(e);i.useEffect(()=>{n()},[n,...t])}const x=(e=()=>alert(`clicked outside`))=>{let t=i.useRef(null),n=n=>{t.current&&!t.current.contains(n.target)&&e()};return i.useEffect(()=>(document.addEventListener(`mousedown`,n),document.addEventListener(`touchstart`,n),()=>{document.removeEventListener(`mousedown`,n),document.removeEventListener(`touchstart`,n)})),t};function S(e){i.useEffect(e,[])}function C(e,t){let n=i.useRef(!0);i.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function w(e,t=500){let[n,r]=i.useState(e);return i.useEffect(()=>{let n=setTimeout(()=>r(e),t);return()=>{clearTimeout(n)}},[e,t]),n}const T=typeof window<`u`?i.useLayoutEffect:i.useEffect;function E(e,t=1e3){let n=i.useRef(e);c(()=>{n.current=e},[e]),i.useEffect(()=>{if(!t&&t!==0)return;let e=setTimeout(()=>n.current(),t);return()=>clearTimeout(e)},[t])}function D(e,t,n){i.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const O=(e,t)=>{let[n,r]=i.useState(t);return i.useEffect(()=>{let t=sessionStorage.getItem(e);t&&r(JSON.parse(t))},[e]),[n,i.useCallback(t=>{r(n=>{let r=typeof t==`function`?t(n):t;return sessionStorage.setItem(e,JSON.stringify(r)),r})},[e])]},k=(e,t)=>{let[n,r]=i.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return C(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},A=(e,t)=>{let[n,r]=i.useState(t);return i.useEffect(()=>{let t=new URLSearchParams(window.location.search).get(e);t!==null&&r(t)},[e]),[n,t=>{let n=new URLSearchParams(window.location.search);n.set(e,String(t)),window.history.pushState({},``,`${window.location.pathname}?${n}`),r(t)}]},j=e=>{let[t,n]=i.useState(null),r=i.useRef(null);return i.useEffect(()=>{let t=null;if(typeof e==`string`?t=document.querySelector(e):e?.current&&(t=e.current),!t)return;r.current!==t&&(r.current=t,n(t));let i=new ResizeObserver(()=>{r.current!==t&&(r.current=t,n(t))});return i.observe(t),()=>{i.disconnect()}},[e]),t};function M(){let[e,t]=i.useState(!1);return i.useEffect(()=>{t(!0)},[]),e}function N(){i.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function P({timeout:e=2e3}){let[n,r]=i.useState(!1);return{isCopied:n,copy:n=>{t(n,()=>{r(!0),setTimeout(()=>{r(!1)},e)})}}}const F=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:r=!1})=>{let[a,o]=i.useState(500),s=()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0);o(n?window.innerHeight-r-t:r+t)};return i.useEffect(()=>{if(s(),r){if(typeof r==`string`){let e=document.getElementById(r),t=new ResizeObserver(e=>{for(let t of e)s()});return e&&t.observe(e),()=>t?.disconnect()}return window.addEventListener(`resize`,s),()=>window.removeEventListener(`resize`,s)}},[]),a},I=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:r=!1,onChange:a})=>{let[o,s]=i.useState({height:500,width:500}),c=i.useCallback(()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0),i=e.reduce((e,t)=>e+(document.getElementById(t)?.clientWidth||0),0),o=n?window.innerHeight-r-t:r+t,c=n?window.innerWidth-i-t:i+t;s(e=>e.height===o&&e.width===c?e:{height:o,width:c}),a?.({blocksWidth:i,blocksHeight:r,remainingWidth:c,remainingHeight:o})},[e,t,n,a]);return i.useEffect(()=>{c();let t=[];if(e.length>0){let n=new MutationObserver(t=>{let n=!1;for(let r of t){for(let t of Array.from(r.addedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break;for(let t of Array.from(r.removedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break}n&&c()});n.observe(document.body,{childList:!0,subtree:!0}),t.push(()=>n.disconnect())}if(r)if(typeof r==`string`){let e=document.getElementById(r);if(e){let n=new ResizeObserver(c);n.observe(e),t.push(()=>n.unobserve(e)),t.push(()=>n.disconnect())}}else window.addEventListener(`resize`,c),t.push(()=>window.removeEventListener(`resize`,c));return()=>{for(let e of t)e()}},[c,r,e.join(`,`)]),o},L=()=>{let[e,t]=i.useState(!1),n=i.useRef(null),r=i.useRef(null);return S(()=>{let e=r.current;if(!e)return;let i=()=>{t(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{t(!1)},150)};return i(),e.addEventListener(`scroll`,i),()=>{e.removeEventListener(`scroll`,i),n.current&&clearTimeout(n.current)}}),{isScrolling:e,scrollableContainerRef:r}},R=({offset:e}={})=>{let[t,n]=i.useState(!0),r=i.useRef(null);return S(()=>{let t=r.current;if(!t)return;let i=()=>{n(!(t.scrollTop>(e??10)))};return i(),t.addEventListener(`scroll`,i),()=>{t.removeEventListener(`scroll`,i)}}),{scrollableContainerRef:r,isAtTop:t}},z=({threshold:e=.1,root:t=null,rootMargin:n,onInteractionStart:r,onInteractionEnd:a}={})=>{let[o,s]=i.useState(!1),c=i.useRef(null);return i.useEffect(()=>{if(!c.current)return;let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting?o||(r?.(),s(!0)):o&&(a?.(),s(!1))},{threshold:e,root:t,...n&&{rootMargin:n}});return i.observe(c.current),()=>{i.disconnect()}},[e,t,n,r,a,o]),{ref:c,isIntersecting:o}};export{_ as C,l as D,u as E,s as O,v as S,h as T,C as _,S as a,y as b,R as c,T as d,k as f,E as g,O as h,I as i,c as k,M as l,j as m,P as n,F as o,N as p,w as r,z as s,x as t,L as u,A as v,d as w,b as x,D as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./functions-CFH1X14n.cjs`);let l=require(`@ts-utilities/core`),u=require(`react`);u=s(u);let d=require(`@radix-ui/react-slot`),f=require(`react/jsx-runtime`);function p(e={}){let{timeout:t=1e4}=e;return u.useCallback(e=>{let n=()=>{try{u.startTransition(()=>{e()})}catch(e){console.log(`⚡[schedule.tsx] Failed: `,e)}};`requestIdleCallback`in window?requestIdleCallback(n,{timeout:t}):(0,l.schedule)(n)},[t])}function m(e,t=[],n={}){let r=p(n);u.useEffect(()=>{let t;return r(()=>{t=e()}),()=>{typeof t==`function`&&t?.()}},[r,...t])}const h=(e,t)=>{let[n,r]=u.useState(`idle`),[i,a]=u.useState(null),[o,s]=u.useState(null),[c,l]=u.useState(void 0),[d,f]=u.useTransition(),p=n===`idle`,h=n===`loading`||d,g=n===`success`,_=n===`error`,v=u.useCallback(e=>{a(e),r(`success`),t?.onSuccess?.(e),t?.onSettled?.()},[t]),y=u.useCallback(e=>{s(e),r(`error`),t?.onError?.(e),t?.onSettled?.()},[t]),b=u.useCallback(t=>{l(t),r(`loading`),s(null),f(()=>{e(t).then(v).catch(y)})},[e,v,y]);return{execute:b,executeAsync:u.useCallback(t=>new Promise((n,i)=>{l(t),r(`loading`),s(null),f(()=>{e(t).then(e=>{v(e),n(e)}).catch(e=>{y(e),i(e)})})}),[e,v,y]),reset:u.useCallback(()=>{r(`idle`),a(null),s(null),l(void 0)},[]),useExecute:e=>{m(()=>{b(e)},[])},data:i,error:o,input:c,isIdle:p,isLoading:h,isSuccess:g,isError:_}};function g(e,t={}){let{mode:n=`manual`,deps:r,onSuccess:i,onError:a,onSettled:o}=t,[s,c]=u.useState(void 0),[l,d]=u.useState(void 0),[f,p]=u.useState(`idle`),m=u.useRef(null),h=u.useCallback(i||(()=>{}),[i]),g=u.useCallback(a||(()=>{}),[a]),_=u.useCallback(o||(()=>{}),[o]),v=u.useCallback(async()=>{m.current&&m.current.abort(),m.current=new AbortController;let t=m.current.signal;p(`pending`),d(void 0);try{let n=await e(t);return t.aborted||(c(n),p(`success`),await h(n),await _(n,void 0)),n}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;let n=e instanceof Error?e:Error(String(e)),r=n;throw t.aborted||(d(r),p(`error`),await g(r),await _(void 0,r)),n}},[e,h,g,_]);return u.useEffect(()=>{n===`auto`&&!r&&v()},[e,n,v,r]),u.useEffect(()=>{r&&n===`auto`&&v()},r||[]),u.useEffect(()=>()=>{m.current&&m.current.abort()},[]),{data:s,error:l,status:f,isIdle:f===`idle`,isPending:f===`pending`,isSuccess:f===`success`,isError:f===`error`,execute:v}}const _={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},v=[`2xl`,`xl`,`lg`,`md`,`sm`,`max-2xl`,`max-xl`,`max-lg`,`max-md`,`max-sm`],y=e=>typeof e==`object`&&!!e&&`DEFAULT`in e,b=e=>e.startsWith(`max-`)?`(max-width: ${_[e.slice(4)]-1}px)`:`(min-width: ${_[e]}px)`;function x(e){if(y(e)){let t=u.useMemo(()=>{let t=Object.keys(e).filter(t=>t!==`DEFAULT`&&e[t]!==void 0);return v.filter(e=>t.includes(e)).map(t=>({key:t,query:b(t),value:e[t]}))},[...Object.keys(e).map(t=>e[t])]),[n,r]=u.useState(()=>{if(c.c)return e.DEFAULT;for(let{query:e,value:n}of t)if(window.matchMedia(e).matches)return n;return e.DEFAULT}),i=u.useRef(t);return i.current=t,u.useEffect(()=>{if(typeof window>`u`)return;let t=()=>{for(let{query:e,value:t}of i.current)if(window.matchMedia(e).matches){r(t);return}r(e.DEFAULT)},n=i.current.map(({query:e})=>{let n=window.matchMedia(e);return n.addEventListener(`change`,t),n});return t(),()=>{for(let e of n)e.removeEventListener(`change`,t)}},[e.DEFAULT,t]),n}let t=Array.isArray(e)?e:[e],n=u.useMemo(()=>t.map(e=>e.startsWith(`(`)?e:b(e)),[t]),[r,i]=u.useState(()=>typeof window>`u`?!1:n.every(e=>window.matchMedia(e).matches));return m(()=>{if(typeof window>`u`)return;let e=()=>{i(n.every(e=>window.matchMedia(e).matches))},t=n.map(t=>{let n=window.matchMedia(t);return n.addEventListener(`change`,e),n});return e(),()=>{for(let n of t)n.removeEventListener(`change`,e)}},[n]),r}const S=u.createContext(null),C=({children:e})=>{let t=u.useRef(null);return(0,f.jsx)(S.Provider,{value:t,children:(0,f.jsx)(d.Slot,{ref:t,children:e})})},w=({threshold:e=300,container:t}={})=>{let n=u.useContext(S),[r,i]=u.useState({scrolledPast:!1,direction:`forward`}),a=u.useRef(0),o=t=>{let n=t>a.current?`forward`:`backward`;i({scrolledPast:t>e,direction:n}),a.current=t};return m(()=>{let e=null;typeof t==`string`?e=document.querySelector(t):t?.current?e=t.current:n?.current&&(e=n.current);let r=e||window,i=e?`scrollTop`:`scrollY`,a=()=>{let e=r[i];o(e)};return r.addEventListener(`scroll`,a),a(),()=>r.removeEventListener(`scroll`,a)},[t,n,e]),r};function T(e){let[t,n]=u.useState(void 0),[r,i]=u.useState(null),[a,o]=u.useState(!1),s=u.useMemo(()=>c.t(e),[]);return{execute:u.useCallback((...e)=>{(async()=>{o(!0),i(null);try{n(await s(...e))}catch(e){i(e instanceof Error?e:Error(String(e)))}finally{o(!1)}})()},[s]),data:t,error:r,isLoading:a}}function E(e,t=[]){let{execute:n}=T(e);u.useEffect(()=>{n()},[n,...t])}const D=(e=()=>alert(`clicked outside`))=>{let t=u.useRef(null),n=n=>{t.current&&!t.current.contains(n.target)&&e()};return u.useEffect(()=>(document.addEventListener(`mousedown`,n),document.addEventListener(`touchstart`,n),()=>{document.removeEventListener(`mousedown`,n),document.removeEventListener(`touchstart`,n)})),t};function O(e){u.useEffect(e,[])}function k(e,t){let n=u.useRef(!0);u.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function A(e,t=500){let[n,r]=u.useState(e);return u.useEffect(()=>{let n=setTimeout(()=>r(e),t);return()=>{clearTimeout(n)}},[e,t]),n}const j=typeof window<`u`?u.useLayoutEffect:u.useEffect;function M(e,t=1e3){let n=u.useRef(e);m(()=>{n.current=e},[e]),u.useEffect(()=>{if(!t&&t!==0)return;let e=setTimeout(()=>n.current(),t);return()=>clearTimeout(e)},[t])}function N(e,t,n){u.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const P=(e,t)=>{let[n,r]=u.useState(t);return u.useEffect(()=>{let t=sessionStorage.getItem(e);t&&r(JSON.parse(t))},[e]),[n,u.useCallback(t=>{r(n=>{let r=typeof t==`function`?t(n):t;return sessionStorage.setItem(e,JSON.stringify(r)),r})},[e])]},F=(e,t)=>{let[n,r]=u.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return k(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},I=(e,t)=>{let[n,r]=u.useState(t);return u.useEffect(()=>{let t=new URLSearchParams(window.location.search).get(e);t!==null&&r(t)},[e]),[n,t=>{let n=new URLSearchParams(window.location.search);n.set(e,String(t)),window.history.pushState({},``,`${window.location.pathname}?${n}`),r(t)}]},L=e=>{let[t,n]=u.useState(null),r=u.useRef(null);return u.useEffect(()=>{let t=null;if(typeof e==`string`?t=document.querySelector(e):e?.current&&(t=e.current),!t)return;r.current!==t&&(r.current=t,n(t));let i=new ResizeObserver(()=>{r.current!==t&&(r.current=t,n(t))});return i.observe(t),()=>{i.disconnect()}},[e]),t};function R(){let[e,t]=u.useState(!1);return u.useEffect(()=>{t(!0)},[]),e}function z(){u.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function B({timeout:e=2e3}){let[t,n]=u.useState(!1);return{isCopied:t,copy:t=>{c.i(t,()=>{n(!0),setTimeout(()=>{n(!1)},e)})}}}const V=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:r=!1})=>{let[i,a]=u.useState(500),o=()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0);a(n?window.innerHeight-r-t:r+t)};return u.useEffect(()=>{if(o(),r){if(typeof r==`string`){let e=document.getElementById(r),t=new ResizeObserver(e=>{for(let t of e)o()});return e&&t.observe(e),()=>t?.disconnect()}return window.addEventListener(`resize`,o),()=>window.removeEventListener(`resize`,o)}},[]),i},H=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:r=!1,onChange:i})=>{let[a,o]=u.useState({height:500,width:500}),s=u.useCallback(()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0),a=e.reduce((e,t)=>e+(document.getElementById(t)?.clientWidth||0),0),s=n?window.innerHeight-r-t:r+t,c=n?window.innerWidth-a-t:a+t;o(e=>e.height===s&&e.width===c?e:{height:s,width:c}),i?.({blocksWidth:a,blocksHeight:r,remainingWidth:c,remainingHeight:s})},[e,t,n,i]);return u.useEffect(()=>{s();let t=[];if(e.length>0){let n=new MutationObserver(t=>{let n=!1;for(let r of t){for(let t of Array.from(r.addedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break;for(let t of Array.from(r.removedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break}n&&s()});n.observe(document.body,{childList:!0,subtree:!0}),t.push(()=>n.disconnect())}if(r)if(typeof r==`string`){let e=document.getElementById(r);if(e){let n=new ResizeObserver(s);n.observe(e),t.push(()=>n.unobserve(e)),t.push(()=>n.disconnect())}}else window.addEventListener(`resize`,s),t.push(()=>window.removeEventListener(`resize`,s));return()=>{for(let e of t)e()}},[s,r,e.join(`,`)]),a},U=()=>{let[e,t]=u.useState(!1),n=u.useRef(null),r=u.useRef(null);return O(()=>{let e=r.current;if(!e)return;let i=()=>{t(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{t(!1)},150)};return i(),e.addEventListener(`scroll`,i),()=>{e.removeEventListener(`scroll`,i),n.current&&clearTimeout(n.current)}}),{isScrolling:e,scrollableContainerRef:r}},W=({offset:e}={})=>{let[t,n]=u.useState(!0),r=u.useRef(null);return O(()=>{let t=r.current;if(!t)return;let i=()=>{n(!(t.scrollTop>(e??10)))};return i(),t.addEventListener(`scroll`,i),()=>{t.removeEventListener(`scroll`,i)}}),{scrollableContainerRef:r,isAtTop:t}},G=({threshold:e=.1,root:t=null,rootMargin:n,onInteractionStart:r,onInteractionEnd:i}={})=>{let[a,o]=u.useState(!1),s=u.useRef(null);return u.useEffect(()=>{if(!s.current)return;let c=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting?a||(r?.(),o(!0)):a&&(i?.(),o(!1))},{threshold:e,root:t,...n&&{rootMargin:n}});return c.observe(s.current),()=>{c.disconnect()}},[e,t,n,r,i,a]),{ref:s,isIntersecting:a}};Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return N}});
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./functions-
|
|
1
|
+
const e=require(`./functions-CFH1X14n.cjs`);exports.cleanSrc=e.n,exports.cn=e.r,exports.copyToClipboard=e.i,exports.deleteClientSideCookie=e.f,exports.getClientSideCookie=e.p,exports.goToClientSideHash=e.a,exports.hasClientSideCookie=e.m,exports.isLinkActive=e.o,exports.isNavActive=e.s,exports.isSSR=e.c,exports.mergeRefs=e.l,exports.scrollTo=e.u,exports.setClientSideCookie=e.h,exports.svgToBase64=e.d,exports.workerize=e.t;var t=require(`@ts-utilities/core`);Object.keys(t).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sohanemon/utils",
|
|
3
|
-
"version": "7.1
|
|
3
|
+
"version": "7.2.1",
|
|
4
4
|
"author": "Sohan Emon <sohanemon@outlook.com>",
|
|
5
5
|
"description": "",
|
|
6
6
|
"type": "module",
|
|
@@ -98,6 +98,6 @@
|
|
|
98
98
|
"access": "public"
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {
|
|
101
|
-
"@ts-utilities/core": "^1.3.
|
|
101
|
+
"@ts-utilities/core": "^1.3.6"
|
|
102
102
|
}
|
|
103
103
|
}
|
package/dist/hooks-CsB2Qbsu.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./functions-BdMSbEDn.cjs`);let l=require(`@ts-utilities/core`),u=require(`react`);u=s(u);let d=require(`@radix-ui/react-slot`),f=require(`react/jsx-runtime`);function p(e={}){let{timeout:t=1e4}=e;return u.useCallback(e=>{let n=()=>{try{u.startTransition(()=>{e()})}catch(e){console.log(`⚡[schedule.tsx] Failed: `,e)}};`requestIdleCallback`in window?requestIdleCallback(n,{timeout:t}):(0,l.schedule)(n)},[t])}function m(e,t=[],n={}){let r=p(n);u.useEffect(()=>{let t;return r(()=>{t=e()}),()=>{typeof t==`function`&&t?.()}},[r,...t])}const h=(e,t)=>{let[n,r]=u.useState(`idle`),[i,a]=u.useState(null),[o,s]=u.useState(null),[c,l]=u.useState(void 0),[d,f]=u.useTransition(),p=n===`idle`,h=n===`loading`||d,g=n===`success`,_=n===`error`,v=u.useCallback(e=>{a(e),r(`success`),t?.onSuccess?.(e),t?.onSettled?.()},[t]),y=u.useCallback(e=>{s(e),r(`error`),t?.onError?.(e),t?.onSettled?.()},[t]),b=u.useCallback(t=>{l(t),r(`loading`),s(null),f(()=>{e(t).then(v).catch(y)})},[e,v,y]);return{execute:b,executeAsync:u.useCallback(t=>new Promise((n,i)=>{l(t),r(`loading`),s(null),f(()=>{e(t).then(e=>{v(e),n(e)}).catch(e=>{y(e),i(e)})})}),[e,v,y]),reset:u.useCallback(()=>{r(`idle`),a(null),s(null),l(void 0)},[]),useExecute:e=>{m(()=>{b(e)},[])},data:i,error:o,input:c,isIdle:p,isLoading:h,isSuccess:g,isError:_}};function g(e,t={}){let{mode:n=`manual`,deps:r,onSuccess:i,onError:a,onSettled:o}=t,[s,c]=u.useState(void 0),[l,d]=u.useState(void 0),[f,p]=u.useState(`idle`),m=u.useRef(null),h=u.useCallback(i||(()=>{}),[i]),g=u.useCallback(a||(()=>{}),[a]),_=u.useCallback(o||(()=>{}),[o]),v=u.useCallback(async()=>{m.current&&m.current.abort(),m.current=new AbortController;let t=m.current.signal;p(`pending`),d(void 0);try{let n=await e(t);return t.aborted||(c(n),p(`success`),await h(n),await _(n,void 0)),n}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;let n=e instanceof Error?e:Error(String(e)),r=n;throw t.aborted||(d(r),p(`error`),await g(r),await _(void 0,r)),n}},[e,h,g,_]);return u.useEffect(()=>{n===`auto`&&!r&&v()},[e,n,v,r]),u.useEffect(()=>{r&&n===`auto`&&v()},r||[]),u.useEffect(()=>()=>{m.current&&m.current.abort()},[]),{data:s,error:l,status:f,isIdle:f===`idle`,isPending:f===`pending`,isSuccess:f===`success`,isError:f===`error`,execute:v}}const _=u.createContext(null),v=({children:e})=>{let t=u.useRef(null);return(0,f.jsx)(_.Provider,{value:t,children:(0,f.jsx)(d.Slot,{ref:t,children:e})})},y=({threshold:e=300,container:t}={})=>{let n=u.useContext(_),[r,i]=u.useState({scrolledPast:!1,direction:`forward`}),a=u.useRef(0),o=t=>{let n=t>a.current?`forward`:`backward`;i({scrolledPast:t>e,direction:n}),a.current=t};return m(()=>{let e=null;typeof t==`string`?e=document.querySelector(t):t?.current?e=t.current:n?.current&&(e=n.current);let r=e||window,i=e?`scrollTop`:`scrollY`,a=()=>{let e=r[i];o(e)};return r.addEventListener(`scroll`,a),a(),()=>r.removeEventListener(`scroll`,a)},[t,n,e]),r};function b(e){let[t,n]=u.useState(void 0),[r,i]=u.useState(null),[a,o]=u.useState(!1),s=u.useMemo(()=>c.t(e),[]);return{execute:u.useCallback((...e)=>{(async()=>{o(!0),i(null);try{n(await s(...e))}catch(e){i(e instanceof Error?e:Error(String(e)))}finally{o(!1)}})()},[s]),data:t,error:r,isLoading:a}}function x(e,t=[]){let{execute:n}=b(e);u.useEffect(()=>{n()},[n,...t])}const S=(e=()=>alert(`clicked outside`))=>{let t=u.useRef(null),n=n=>{t.current&&!t.current.contains(n.target)&&e()};return u.useEffect(()=>(document.addEventListener(`mousedown`,n),document.addEventListener(`touchstart`,n),()=>{document.removeEventListener(`mousedown`,n),document.removeEventListener(`touchstart`,n)})),t};function C(e){let t=u.useMemo(()=>{switch(e){case`sm`:return`(min-width: 640px)`;case`md`:return`(min-width: 768px)`;case`lg`:return`(min-width: 1024px)`;case`xl`:return`(min-width: 1280px)`;case`2xl`:return`(min-width: 1536px)`;default:return e}},[e]),n=e=>typeof window<`u`?window.matchMedia(e).matches:!1,[r,i]=u.useState(n(t)),a=()=>{i(n(t))};return m(()=>{let e=window.matchMedia(t);return a(),e.addEventListener(`change`,a),()=>{e.removeEventListener(`change`,a)}},[t]),r}function w(e){u.useEffect(e,[])}function T(e,t){let n=u.useRef(!0);u.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function E(e,t=500){let[n,r]=u.useState(e);return u.useEffect(()=>{let n=setTimeout(()=>r(e),t);return()=>{clearTimeout(n)}},[e,t]),n}const D=typeof window<`u`?u.useLayoutEffect:u.useEffect;function O(e,t=1e3){let n=u.useRef(e);m(()=>{n.current=e},[e]),u.useEffect(()=>{if(!t&&t!==0)return;let e=setTimeout(()=>n.current(),t);return()=>clearTimeout(e)},[t])}function k(e,t,n){u.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const A=(e,t)=>{let[n,r]=u.useState(t);return u.useEffect(()=>{let t=sessionStorage.getItem(e);t&&r(JSON.parse(t))},[e]),[n,u.useCallback(t=>{r(n=>{let r=typeof t==`function`?t(n):t;return sessionStorage.setItem(e,JSON.stringify(r)),r})},[e])]},j=(e,t)=>{let[n,r]=u.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return T(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},M=(e,t)=>{let[n,r]=u.useState(t);return u.useEffect(()=>{let t=new URLSearchParams(window.location.search).get(e);t!==null&&r(t)},[e]),[n,t=>{let n=new URLSearchParams(window.location.search);n.set(e,String(t)),window.history.pushState({},``,`${window.location.pathname}?${n}`),r(t)}]},N=e=>{let[t,n]=u.useState(null),r=u.useRef(null);return u.useEffect(()=>{let t=null;if(typeof e==`string`?t=document.querySelector(e):e?.current&&(t=e.current),!t)return;r.current!==t&&(r.current=t,n(t));let i=new ResizeObserver(()=>{r.current!==t&&(r.current=t,n(t))});return i.observe(t),()=>{i.disconnect()}},[e]),t};function P(){let[e,t]=u.useState(!1);return u.useEffect(()=>{t(!0)},[]),e}function F(){u.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function I({timeout:e=2e3}){let[t,n]=u.useState(!1);return{isCopied:t,copy:t=>{c.i(t,()=>{n(!0),setTimeout(()=>{n(!1)},e)})}}}const L=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:r=!1})=>{let[i,a]=u.useState(500),o=()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0);a(n?window.innerHeight-r-t:r+t)};return u.useEffect(()=>{if(o(),r){if(typeof r==`string`){let e=document.getElementById(r),t=new ResizeObserver(e=>{for(let t of e)o()});return e&&t.observe(e),()=>t?.disconnect()}return window.addEventListener(`resize`,o),()=>window.removeEventListener(`resize`,o)}},[]),i},R=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:r=!1,onChange:i})=>{let[a,o]=u.useState({height:500,width:500}),s=u.useCallback(()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0),a=e.reduce((e,t)=>e+(document.getElementById(t)?.clientWidth||0),0),s=n?window.innerHeight-r-t:r+t,c=n?window.innerWidth-a-t:a+t;o(e=>e.height===s&&e.width===c?e:{height:s,width:c}),i?.({blocksWidth:a,blocksHeight:r,remainingWidth:c,remainingHeight:s})},[e,t,n,i]);return u.useEffect(()=>{s();let t=[];if(e.length>0){let n=new MutationObserver(t=>{let n=!1;for(let r of t){for(let t of Array.from(r.addedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break;for(let t of Array.from(r.removedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break}n&&s()});n.observe(document.body,{childList:!0,subtree:!0}),t.push(()=>n.disconnect())}if(r)if(typeof r==`string`){let e=document.getElementById(r);if(e){let n=new ResizeObserver(s);n.observe(e),t.push(()=>n.unobserve(e)),t.push(()=>n.disconnect())}}else window.addEventListener(`resize`,s),t.push(()=>window.removeEventListener(`resize`,s));return()=>{for(let e of t)e()}},[s,r,e.join(`,`)]),a},z=()=>{let[e,t]=u.useState(!1),n=u.useRef(null),r=u.useRef(null);return w(()=>{let e=r.current;if(!e)return;let i=()=>{t(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{t(!1)},150)};return i(),e.addEventListener(`scroll`,i),()=>{e.removeEventListener(`scroll`,i),n.current&&clearTimeout(n.current)}}),{isScrolling:e,scrollableContainerRef:r}},B=({offset:e}={})=>{let[t,n]=u.useState(!0),r=u.useRef(null);return w(()=>{let t=r.current;if(!t)return;let i=()=>{n(!(t.scrollTop>(e??10)))};return i(),t.addEventListener(`scroll`,i),()=>{t.removeEventListener(`scroll`,i)}}),{scrollableContainerRef:r,isAtTop:t}},V=({threshold:e=.1,root:t=null,rootMargin:n,onInteractionStart:r,onInteractionEnd:i}={})=>{let[a,o]=u.useState(!1),s=u.useRef(null);return u.useEffect(()=>{if(!s.current)return;let c=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting?a||(r?.(),o(!0)):a&&(i?.(),o(!1))},{threshold:e,root:t,...n&&{rootMargin:n}});return c.observe(s.current),()=>{c.disconnect()}},[e,t,n,r,i,a]),{ref:s,isIntersecting:a}};Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return M}});
|
package/dist/hooks-Drh8epTw.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./functions-NBY7C4F1.js";import{schedule as n}from"@ts-utilities/core";import*as r from"react";import{Slot as i}from"@radix-ui/react-slot";import{jsx as a}from"react/jsx-runtime";function o(e={}){let{timeout:t=1e4}=e;return r.useCallback(e=>{let i=()=>{try{r.startTransition(()=>{e()})}catch(e){console.log(`⚡[schedule.tsx] Failed: `,e)}};`requestIdleCallback`in window?requestIdleCallback(i,{timeout:t}):n(i)},[t])}function s(e,t=[],n={}){let i=o(n);r.useEffect(()=>{let t;return i(()=>{t=e()}),()=>{typeof t==`function`&&t?.()}},[i,...t])}const c=(e,t)=>{let[n,i]=r.useState(`idle`),[a,o]=r.useState(null),[c,l]=r.useState(null),[u,d]=r.useState(void 0),[f,p]=r.useTransition(),m=n===`idle`,h=n===`loading`||f,g=n===`success`,_=n===`error`,v=r.useCallback(e=>{o(e),i(`success`),t?.onSuccess?.(e),t?.onSettled?.()},[t]),y=r.useCallback(e=>{l(e),i(`error`),t?.onError?.(e),t?.onSettled?.()},[t]),b=r.useCallback(t=>{d(t),i(`loading`),l(null),p(()=>{e(t).then(v).catch(y)})},[e,v,y]);return{execute:b,executeAsync:r.useCallback(t=>new Promise((n,r)=>{d(t),i(`loading`),l(null),p(()=>{e(t).then(e=>{v(e),n(e)}).catch(e=>{y(e),r(e)})})}),[e,v,y]),reset:r.useCallback(()=>{i(`idle`),o(null),l(null),d(void 0)},[]),useExecute:e=>{s(()=>{b(e)},[])},data:a,error:c,input:u,isIdle:m,isLoading:h,isSuccess:g,isError:_}};function l(e,t={}){let{mode:n=`manual`,deps:i,onSuccess:a,onError:o,onSettled:s}=t,[c,l]=r.useState(void 0),[u,d]=r.useState(void 0),[f,p]=r.useState(`idle`),m=r.useRef(null),h=r.useCallback(a||(()=>{}),[a]),g=r.useCallback(o||(()=>{}),[o]),_=r.useCallback(s||(()=>{}),[s]),v=r.useCallback(async()=>{m.current&&m.current.abort(),m.current=new AbortController;let t=m.current.signal;p(`pending`),d(void 0);try{let n=await e(t);return t.aborted||(l(n),p(`success`),await h(n),await _(n,void 0)),n}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;let n=e instanceof Error?e:Error(String(e)),r=n;throw t.aborted||(d(r),p(`error`),await g(r),await _(void 0,r)),n}},[e,h,g,_]);return r.useEffect(()=>{n===`auto`&&!i&&v()},[e,n,v,i]),r.useEffect(()=>{i&&n===`auto`&&v()},i||[]),r.useEffect(()=>()=>{m.current&&m.current.abort()},[]),{data:c,error:u,status:f,isIdle:f===`idle`,isPending:f===`pending`,isSuccess:f===`success`,isError:f===`error`,execute:v}}const u=r.createContext(null),d=({children:e})=>{let t=r.useRef(null);return a(u.Provider,{value:t,children:a(i,{ref:t,children:e})})},f=({threshold:e=300,container:t}={})=>{let n=r.useContext(u),[i,a]=r.useState({scrolledPast:!1,direction:`forward`}),o=r.useRef(0),c=t=>{let n=t>o.current?`forward`:`backward`;a({scrolledPast:t>e,direction:n}),o.current=t};return s(()=>{let e=null;typeof t==`string`?e=document.querySelector(t):t?.current?e=t.current:n?.current&&(e=n.current);let r=e||window,i=e?`scrollTop`:`scrollY`,a=()=>{let e=r[i];c(e)};return r.addEventListener(`scroll`,a),a(),()=>r.removeEventListener(`scroll`,a)},[t,n,e]),i};function p(e){let[n,i]=r.useState(void 0),[a,o]=r.useState(null),[s,c]=r.useState(!1),l=r.useMemo(()=>t(e),[]);return{execute:r.useCallback((...e)=>{(async()=>{c(!0),o(null);try{i(await l(...e))}catch(e){o(e instanceof Error?e:Error(String(e)))}finally{c(!1)}})()},[l]),data:n,error:a,isLoading:s}}function m(e,t=[]){let{execute:n}=p(e);r.useEffect(()=>{n()},[n,...t])}const h=(e=()=>alert(`clicked outside`))=>{let t=r.useRef(null),n=n=>{t.current&&!t.current.contains(n.target)&&e()};return r.useEffect(()=>(document.addEventListener(`mousedown`,n),document.addEventListener(`touchstart`,n),()=>{document.removeEventListener(`mousedown`,n),document.removeEventListener(`touchstart`,n)})),t};function g(e){let t=r.useMemo(()=>{switch(e){case`sm`:return`(min-width: 640px)`;case`md`:return`(min-width: 768px)`;case`lg`:return`(min-width: 1024px)`;case`xl`:return`(min-width: 1280px)`;case`2xl`:return`(min-width: 1536px)`;default:return e}},[e]),n=e=>typeof window<`u`?window.matchMedia(e).matches:!1,[i,a]=r.useState(n(t)),o=()=>{a(n(t))};return s(()=>{let e=window.matchMedia(t);return o(),e.addEventListener(`change`,o),()=>{e.removeEventListener(`change`,o)}},[t]),i}function _(e){r.useEffect(e,[])}function v(e,t){let n=r.useRef(!0);r.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function y(e,t=500){let[n,i]=r.useState(e);return r.useEffect(()=>{let n=setTimeout(()=>i(e),t);return()=>{clearTimeout(n)}},[e,t]),n}const b=typeof window<`u`?r.useLayoutEffect:r.useEffect;function x(e,t=1e3){let n=r.useRef(e);s(()=>{n.current=e},[e]),r.useEffect(()=>{if(!t&&t!==0)return;let e=setTimeout(()=>n.current(),t);return()=>clearTimeout(e)},[t])}function S(e,t,n){r.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const C=(e,t)=>{let[n,i]=r.useState(t);return r.useEffect(()=>{let t=sessionStorage.getItem(e);t&&i(JSON.parse(t))},[e]),[n,r.useCallback(t=>{i(n=>{let r=typeof t==`function`?t(n):t;return sessionStorage.setItem(e,JSON.stringify(r)),r})},[e])]},w=(e,t)=>{let[n,i]=r.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return v(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,i]},T=(e,t)=>{let[n,i]=r.useState(t);return r.useEffect(()=>{let t=new URLSearchParams(window.location.search).get(e);t!==null&&i(t)},[e]),[n,t=>{let n=new URLSearchParams(window.location.search);n.set(e,String(t)),window.history.pushState({},``,`${window.location.pathname}?${n}`),i(t)}]},E=e=>{let[t,n]=r.useState(null),i=r.useRef(null);return r.useEffect(()=>{let t=null;if(typeof e==`string`?t=document.querySelector(e):e?.current&&(t=e.current),!t)return;i.current!==t&&(i.current=t,n(t));let r=new ResizeObserver(()=>{i.current!==t&&(i.current=t,n(t))});return r.observe(t),()=>{r.disconnect()}},[e]),t};function D(){let[e,t]=r.useState(!1);return r.useEffect(()=>{t(!0)},[]),e}function O(){r.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function k({timeout:t=2e3}){let[n,i]=r.useState(!1);return{isCopied:n,copy:n=>{e(n,()=>{i(!0),setTimeout(()=>{i(!1)},t)})}}}const A=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:i=!1})=>{let[a,o]=r.useState(500),s=()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0);o(n?window.innerHeight-r-t:r+t)};return r.useEffect(()=>{if(s(),i){if(typeof i==`string`){let e=document.getElementById(i),t=new ResizeObserver(e=>{for(let t of e)s()});return e&&t.observe(e),()=>t?.disconnect()}return window.addEventListener(`resize`,s),()=>window.removeEventListener(`resize`,s)}},[]),a},j=({blockIds:e=[],margin:t=0,substract:n=!0,dynamic:i=!1,onChange:a})=>{let[o,s]=r.useState({height:500,width:500}),c=r.useCallback(()=>{let r=e.reduce((e,t)=>e+(document.getElementById(t)?.clientHeight||0),0),i=e.reduce((e,t)=>e+(document.getElementById(t)?.clientWidth||0),0),o=n?window.innerHeight-r-t:r+t,c=n?window.innerWidth-i-t:i+t;s(e=>e.height===o&&e.width===c?e:{height:o,width:c}),a?.({blocksWidth:i,blocksHeight:r,remainingWidth:c,remainingHeight:o})},[e,t,n,a]);return r.useEffect(()=>{c();let t=[];if(e.length>0){let n=new MutationObserver(t=>{let n=!1;for(let r of t){for(let t of Array.from(r.addedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break;for(let t of Array.from(r.removedNodes))if(t instanceof Element&&(e.includes(t.id)||e.some(e=>t.querySelector(`#${CSS.escape(e)}`)))){n=!0;break}if(n)break}n&&c()});n.observe(document.body,{childList:!0,subtree:!0}),t.push(()=>n.disconnect())}if(i)if(typeof i==`string`){let e=document.getElementById(i);if(e){let n=new ResizeObserver(c);n.observe(e),t.push(()=>n.unobserve(e)),t.push(()=>n.disconnect())}}else window.addEventListener(`resize`,c),t.push(()=>window.removeEventListener(`resize`,c));return()=>{for(let e of t)e()}},[c,i,e.join(`,`)]),o},M=()=>{let[e,t]=r.useState(!1),n=r.useRef(null),i=r.useRef(null);return _(()=>{let e=i.current;if(!e)return;let r=()=>{t(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{t(!1)},150)};return r(),e.addEventListener(`scroll`,r),()=>{e.removeEventListener(`scroll`,r),n.current&&clearTimeout(n.current)}}),{isScrolling:e,scrollableContainerRef:i}},N=({offset:e}={})=>{let[t,n]=r.useState(!0),i=r.useRef(null);return _(()=>{let t=i.current;if(!t)return;let r=()=>{n(!(t.scrollTop>(e??10)))};return r(),t.addEventListener(`scroll`,r),()=>{t.removeEventListener(`scroll`,r)}}),{scrollableContainerRef:i,isAtTop:t}},P=({threshold:e=.1,root:t=null,rootMargin:n,onInteractionStart:i,onInteractionEnd:a}={})=>{let[o,s]=r.useState(!1),c=r.useRef(null);return r.useEffect(()=>{if(!c.current)return;let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting?o||(i?.(),s(!0)):o&&(a?.(),s(!1))},{threshold:e,root:t,...n&&{rootMargin:n}});return r.observe(c.current),()=>{r.disconnect()}},[e,t,n,i,a,o]),{ref:c,isIntersecting:o}};export{f as C,o as D,c as E,s as O,m as S,l as T,x as _,_ as a,S as b,N as c,b as d,w as f,C as g,E as h,j as i,D as l,g as m,k as n,A as o,O as p,y as r,P as s,h as t,M as u,v,d as w,p as x,T as y};
|