@sohanemon/utils 7.3.3 → 7.3.5
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 +85 -49
- package/dist/components/index.d.ts +85 -49
- package/dist/components/index.js +1 -1
- package/dist/{functions-Dp2CwvmB.cjs → functions-WGuz-y7g.cjs} +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.cts +2 -1
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks-D0fKQIlM.cjs +1 -0
- package/dist/hooks-ZozXuKsa.js +1 -0
- package/dist/in-view-BMBLMPcI.d.cts +48 -0
- package/dist/in-view-pRyp3oML.d.ts +48 -0
- package/dist/index.cjs +1 -1
- package/package.json +1 -1
- package/dist/hooks-B_cSW9vB.cjs +0 -1
- package/dist/hooks-CCFEDyEO.js +0 -1
package/README.md
CHANGED
|
@@ -432,6 +432,20 @@ useIntersection(options?: UseIntersectionOptions): {
|
|
|
432
432
|
isIntersecting: boolean;
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
+
useInView<T extends Element = Element>(params: {
|
|
436
|
+
ref: React.RefObject<T | null>;
|
|
437
|
+
rootMargin?: string;
|
|
438
|
+
once?: boolean;
|
|
439
|
+
}): boolean
|
|
440
|
+
|
|
441
|
+
useViewEffect<T extends Element = Element>(params: {
|
|
442
|
+
ref: React.RefObject<T | null>;
|
|
443
|
+
event: 'in' | 'out';
|
|
444
|
+
callback: () => void;
|
|
445
|
+
rootMargin?: string;
|
|
446
|
+
once?: boolean;
|
|
447
|
+
}): void
|
|
448
|
+
|
|
435
449
|
useIsScrolling(): {
|
|
436
450
|
isScrolling: boolean;
|
|
437
451
|
scrollableContainerRef: React.RefObject<HTMLElement>;
|
|
@@ -503,6 +517,14 @@ Portal: React.Component<{
|
|
|
503
517
|
children: React.ReactNode;
|
|
504
518
|
container: `#${string}` | `.${string}` | `[${string}]` | React.RefObject<HTMLElement>;
|
|
505
519
|
}>
|
|
520
|
+
|
|
521
|
+
RenderInView: React.Component<{
|
|
522
|
+
children: React.ReactNode;
|
|
523
|
+
fallback?: React.ReactNode;
|
|
524
|
+
mode?: 'persist' | 'unmount';
|
|
525
|
+
preserveSpace?: boolean;
|
|
526
|
+
options?: InViewOptions;
|
|
527
|
+
}>
|
|
506
528
|
```
|
|
507
529
|
|
|
508
530
|
### Types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../hooks-
|
|
1
|
+
"use client";const e=require(`../hooks-D0fKQIlM.cjs`),t=require(`../functions-WGuz-y7g.cjs`);let n=require(`react`);n=e.N(n);let r=require(`@radix-ui/react-slot`),i=require(`react/jsx-runtime`),a=require(`@iconify/react`),o=require(`react-dom`);function s({selector:e,children:t}){let a=(0,n.useRef)(null),[o,s]=(0,n.useState)(!1),[c,l]=(0,n.useState)({hasClosest:!1,closestElement:null});return(0,n.useLayoutEffect)(()=>{if(a.current){let t=a.current.closest(e);l({hasClosest:t!==null,closestElement:t})}s(!0)},[e]),o?(0,i.jsx)(r.Slot,{ref:a,children:t(c)}):(0,i.jsx)(`span`,{ref:a})}function c({className:r,html:a,sanitize:o=!1,executeScripts:s=!0,...c}){let l=n.useRef([]),u=n.useRef(null);e.M(()=>{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,i.jsx)(`div`,{ref:u,className:t.r(r),dangerouslySetInnerHTML:{__html:d},...c}):null}function l({breakpoint:t,as:r=`div`,fallback:a=n.Fragment,className:o,classNameFallback:s,...c}){let l=e.T(t.split(`-`).pop())===t.startsWith(`max`),u=l?a:r,d=l?s:o;return u===n.Fragment?(0,i.jsx)(u,{ref:c.ref,children:c.children},c.key):(0,i.jsx)(u,{className:d,...c})}function u({delay:e=0,fallback:t=null,children:r}){let[a,o]=(0,n.useState)(e===0?`mounted`:`pending`),s=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(e!==0)return s.current=setTimeout(()=>o(`mounted`),e),()=>{s.current&&clearTimeout(s.current)}},[e]),a===`pending`?(0,i.jsx)(i.Fragment,{children:t}):(0,i.jsx)(i.Fragment,{children:r})}function d({children:e,container:t}){let r=(0,n.useRef)(null),[i,a]=(0,n.useState)(!1);return(0,n.useLayoutEffect)(()=>{t?r.current=typeof t==`string`?document.querySelector(t):t.current:r.current=document.body,a(!0)},[]),!i||!r.current?null:(0,o.createPortal)(e,r.current)}function f({children:t,fallback:r=null,mode:a=`persist`,preserveSpace:o=!1,options:s={}}){let c=(0,n.useRef)(null),l=(0,n.useRef)(null),u=(0,n.useRef)(null),[d,f]=(0,n.useState)(!1),[p,m]=(0,n.useState)(!1),[h,g]=(0,n.useState)(null);e.E(c,e=>{f(e),e&&!p&&m(!0)},s),(0,n.useLayoutEffect)(()=>{if(!o||!l.current||u.current!==null)return;let e=l.current.getBoundingClientRect().height;e>0&&(u.current=e,g(e))});let _=a===`unmount`?d:p,v=o&&h!==null?(0,i.jsx)(`span`,{"aria-hidden":!0,style:{display:`block`,height:h,contain:`strict`}}):r;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{ref:c,"aria-hidden":!0,style:{display:`block`,width:0,height:0,overflow:`hidden`,contain:`strict`}}),_?(0,i.jsx)(`span`,{ref:l,style:{display:`contents`},children:t}):v]})}const p=[`bottom-left`,`bottom-right`,`top-right`,`top-left`],m=({side:t,offset:r=2,unit:a=`rem`})=>{let[o,s]=n.useState(t??`bottom-left`),c=e.T({DEFAULT:`xs`,sm:`sm`,md:`md`,lg:`lg`,xl:`xl`,"2xl":`2xl`}),[l,u]=n.useState(typeof window<`u`?window.innerWidth:0);n.useEffect(()=>{if(typeof window>`u`)return;let e=()=>u(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let d=c===`2xl`&&l>=1792?a===`rem`?`${(l/16).toFixed(1)}rem`:`${l}${a}`:c,f={"bottom-left":{bottom:`${r}${a}`,left:`${r}${a}`},"bottom-right":{bottom:`${r}${a}`,right:`${r}${a}`},"top-right":{top:`${r}${a}`,right:`${r}${a}`},"top-left":{top:`${r}${a}`,left:`${r}${a}`}};return(0,i.jsx)(`button`,{type:`button`,onClick:()=>{s(p[(p.indexOf(o)+1)%p.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`,...f[o]},children:d})};function h(){return e.M(()=>{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`in window?window.requestIdleCallback(()=>r(e)):setTimeout(()=>r(e),0);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=c,Object.defineProperty(exports,`Iconify`,{enumerable:!0,get:function(){return a.Icon}}),exports.MediaWrapper=l,exports.MountAfter=u,exports.Portal=d,exports.RenderInView=f,exports.ResponsiveIndicator=m,exports.TailwindIndicator=m,exports.ScrollTracker=e.C,exports.ScrollableMarker=h,exports.WithClosest=s;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as InViewOptions } from "../in-view-BMBLMPcI.cjs";
|
|
1
2
|
import { Icon as Iconify } from "@iconify/react";
|
|
2
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
4
|
import * as React$1 from "react";
|
|
@@ -154,6 +155,54 @@ declare function MediaWrapper({
|
|
|
154
155
|
...props
|
|
155
156
|
}: MediaWrapperProps): react_jsx_runtime0.JSX.Element;
|
|
156
157
|
//#endregion
|
|
158
|
+
//#region src/components/mount-after.d.ts
|
|
159
|
+
/**
|
|
160
|
+
* Props for the <MountAfter> component.
|
|
161
|
+
*/
|
|
162
|
+
interface MountAfterProps {
|
|
163
|
+
/**
|
|
164
|
+
* Delay in milliseconds before mounting children.
|
|
165
|
+
* @default 0
|
|
166
|
+
*/
|
|
167
|
+
delay?: number;
|
|
168
|
+
/**
|
|
169
|
+
* Content shown while in pending (pre-mount) state.
|
|
170
|
+
* @default null
|
|
171
|
+
*/
|
|
172
|
+
fallback?: React.ReactNode;
|
|
173
|
+
/** Content rendered after delay elapses. */
|
|
174
|
+
children: React.ReactNode;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Delays rendering of children by a configurable timeout.
|
|
178
|
+
*
|
|
179
|
+
* Useful for preventing content flash, coordinating staggered
|
|
180
|
+
* animations, or deferring render-heavy trees until after
|
|
181
|
+
* the initial paint. When `delay` is 0 (default), children
|
|
182
|
+
* mount immediately with no pending state.
|
|
183
|
+
*
|
|
184
|
+
* @param props - The component props
|
|
185
|
+
* @returns The fallback during the pending state, then children once mounted
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```tsx
|
|
189
|
+
* // Mount immediately (no delay)
|
|
190
|
+
* <MountAfter>
|
|
191
|
+
* <ExpensiveComponent />
|
|
192
|
+
* </MountAfter>
|
|
193
|
+
*
|
|
194
|
+
* // Mount after 500ms with a loading indicator
|
|
195
|
+
* <MountAfter delay={500} fallback={<Spinner />}>
|
|
196
|
+
* <ExpensiveComponent />
|
|
197
|
+
* </MountAfter>
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
declare function MountAfter({
|
|
201
|
+
delay,
|
|
202
|
+
fallback,
|
|
203
|
+
children
|
|
204
|
+
}: MountAfterProps): react_jsx_runtime0.JSX.Element;
|
|
205
|
+
//#endregion
|
|
157
206
|
//#region src/components/portal.d.ts
|
|
158
207
|
/**
|
|
159
208
|
* Renders children into a DOM element at the specified container.
|
|
@@ -193,6 +242,41 @@ declare function Portal({
|
|
|
193
242
|
container
|
|
194
243
|
}: PortalProps): React$1.ReactPortal | null;
|
|
195
244
|
//#endregion
|
|
245
|
+
//#region src/components/render-in-view.d.ts
|
|
246
|
+
type RenderInViewMode = 'persist' | 'unmount';
|
|
247
|
+
interface RenderInViewProps {
|
|
248
|
+
children: React.ReactNode;
|
|
249
|
+
fallback?: React.ReactNode;
|
|
250
|
+
/**
|
|
251
|
+
* - `"persist"` — once mounted, stays mounted (default)
|
|
252
|
+
* - `"unmount"` — unmounts when scrolled out of view
|
|
253
|
+
* @default "persist"
|
|
254
|
+
*/
|
|
255
|
+
mode?: RenderInViewMode;
|
|
256
|
+
/**
|
|
257
|
+
* Reserves measured height before mounting to prevent layout shift.
|
|
258
|
+
* @default false
|
|
259
|
+
*/
|
|
260
|
+
preserveSpace?: boolean;
|
|
261
|
+
options?: InViewOptions;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Renders children only when the sentinel enters the viewport.
|
|
265
|
+
* Uses a zero-size sentinel so it never wraps or affects layout.
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* <RenderInView options={{ rootMargin: '200px 0px' }}>
|
|
269
|
+
* <HeavyComponent />
|
|
270
|
+
* </RenderInView>
|
|
271
|
+
*/
|
|
272
|
+
declare function RenderInView({
|
|
273
|
+
children,
|
|
274
|
+
fallback,
|
|
275
|
+
mode,
|
|
276
|
+
preserveSpace,
|
|
277
|
+
options
|
|
278
|
+
}: RenderInViewProps): react_jsx_runtime0.JSX.Element;
|
|
279
|
+
//#endregion
|
|
196
280
|
//#region src/components/responsive-indicator.d.ts
|
|
197
281
|
type Side = 'bottom-left' | 'bottom-right' | 'top-right' | 'top-left';
|
|
198
282
|
/**
|
|
@@ -277,52 +361,4 @@ declare const ScrollTracker: ({
|
|
|
277
361
|
*/
|
|
278
362
|
declare function ScrollableMarker(): null;
|
|
279
363
|
//#endregion
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Props for the <MountAfter> component.
|
|
283
|
-
*/
|
|
284
|
-
interface MountAfterProps {
|
|
285
|
-
/**
|
|
286
|
-
* Delay in milliseconds before mounting children.
|
|
287
|
-
* @default 0
|
|
288
|
-
*/
|
|
289
|
-
delay?: number;
|
|
290
|
-
/**
|
|
291
|
-
* Content shown while in pending (pre-mount) state.
|
|
292
|
-
* @default null
|
|
293
|
-
*/
|
|
294
|
-
fallback?: React.ReactNode;
|
|
295
|
-
/** Content rendered after delay elapses. */
|
|
296
|
-
children: React.ReactNode;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Delays rendering of children by a configurable timeout.
|
|
300
|
-
*
|
|
301
|
-
* Useful for preventing content flash, coordinating staggered
|
|
302
|
-
* animations, or deferring render-heavy trees until after
|
|
303
|
-
* the initial paint. When `delay` is 0 (default), children
|
|
304
|
-
* mount immediately with no pending state.
|
|
305
|
-
*
|
|
306
|
-
* @param props - The component props
|
|
307
|
-
* @returns The fallback during the pending state, then children once mounted
|
|
308
|
-
*
|
|
309
|
-
* @example
|
|
310
|
-
* ```tsx
|
|
311
|
-
* // Mount immediately (no delay)
|
|
312
|
-
* <MountAfter>
|
|
313
|
-
* <ExpensiveComponent />
|
|
314
|
-
* </MountAfter>
|
|
315
|
-
*
|
|
316
|
-
* // Mount after 500ms with a loading indicator
|
|
317
|
-
* <MountAfter delay={500} fallback={<Spinner />}>
|
|
318
|
-
* <ExpensiveComponent />
|
|
319
|
-
* </MountAfter>
|
|
320
|
-
* ```
|
|
321
|
-
*/
|
|
322
|
-
declare function MountAfter({
|
|
323
|
-
delay,
|
|
324
|
-
fallback,
|
|
325
|
-
children
|
|
326
|
-
}: MountAfterProps): react_jsx_runtime0.JSX.Element;
|
|
327
|
-
//#endregion
|
|
328
|
-
export { HtmlInjector, Iconify, MediaWrapper, MountAfter, Portal, ResponsiveIndicator, ResponsiveIndicator as TailwindIndicator, ScrollTracker, ScrollableMarker, WithClosest };
|
|
364
|
+
export { HtmlInjector, Iconify, MediaWrapper, MountAfter, Portal, RenderInView, ResponsiveIndicator, ResponsiveIndicator as TailwindIndicator, ScrollTracker, ScrollableMarker, WithClosest };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as InViewOptions } from "../in-view-pRyp3oML.js";
|
|
1
2
|
import * as React$1 from "react";
|
|
2
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
4
|
import { Icon as Iconify } from "@iconify/react";
|
|
@@ -154,6 +155,54 @@ declare function MediaWrapper({
|
|
|
154
155
|
...props
|
|
155
156
|
}: MediaWrapperProps): react_jsx_runtime0.JSX.Element;
|
|
156
157
|
//#endregion
|
|
158
|
+
//#region src/components/mount-after.d.ts
|
|
159
|
+
/**
|
|
160
|
+
* Props for the <MountAfter> component.
|
|
161
|
+
*/
|
|
162
|
+
interface MountAfterProps {
|
|
163
|
+
/**
|
|
164
|
+
* Delay in milliseconds before mounting children.
|
|
165
|
+
* @default 0
|
|
166
|
+
*/
|
|
167
|
+
delay?: number;
|
|
168
|
+
/**
|
|
169
|
+
* Content shown while in pending (pre-mount) state.
|
|
170
|
+
* @default null
|
|
171
|
+
*/
|
|
172
|
+
fallback?: React.ReactNode;
|
|
173
|
+
/** Content rendered after delay elapses. */
|
|
174
|
+
children: React.ReactNode;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Delays rendering of children by a configurable timeout.
|
|
178
|
+
*
|
|
179
|
+
* Useful for preventing content flash, coordinating staggered
|
|
180
|
+
* animations, or deferring render-heavy trees until after
|
|
181
|
+
* the initial paint. When `delay` is 0 (default), children
|
|
182
|
+
* mount immediately with no pending state.
|
|
183
|
+
*
|
|
184
|
+
* @param props - The component props
|
|
185
|
+
* @returns The fallback during the pending state, then children once mounted
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```tsx
|
|
189
|
+
* // Mount immediately (no delay)
|
|
190
|
+
* <MountAfter>
|
|
191
|
+
* <ExpensiveComponent />
|
|
192
|
+
* </MountAfter>
|
|
193
|
+
*
|
|
194
|
+
* // Mount after 500ms with a loading indicator
|
|
195
|
+
* <MountAfter delay={500} fallback={<Spinner />}>
|
|
196
|
+
* <ExpensiveComponent />
|
|
197
|
+
* </MountAfter>
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
declare function MountAfter({
|
|
201
|
+
delay,
|
|
202
|
+
fallback,
|
|
203
|
+
children
|
|
204
|
+
}: MountAfterProps): react_jsx_runtime0.JSX.Element;
|
|
205
|
+
//#endregion
|
|
157
206
|
//#region src/components/portal.d.ts
|
|
158
207
|
/**
|
|
159
208
|
* Renders children into a DOM element at the specified container.
|
|
@@ -193,6 +242,41 @@ declare function Portal({
|
|
|
193
242
|
container
|
|
194
243
|
}: PortalProps): React$1.ReactPortal | null;
|
|
195
244
|
//#endregion
|
|
245
|
+
//#region src/components/render-in-view.d.ts
|
|
246
|
+
type RenderInViewMode = 'persist' | 'unmount';
|
|
247
|
+
interface RenderInViewProps {
|
|
248
|
+
children: React.ReactNode;
|
|
249
|
+
fallback?: React.ReactNode;
|
|
250
|
+
/**
|
|
251
|
+
* - `"persist"` — once mounted, stays mounted (default)
|
|
252
|
+
* - `"unmount"` — unmounts when scrolled out of view
|
|
253
|
+
* @default "persist"
|
|
254
|
+
*/
|
|
255
|
+
mode?: RenderInViewMode;
|
|
256
|
+
/**
|
|
257
|
+
* Reserves measured height before mounting to prevent layout shift.
|
|
258
|
+
* @default false
|
|
259
|
+
*/
|
|
260
|
+
preserveSpace?: boolean;
|
|
261
|
+
options?: InViewOptions;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Renders children only when the sentinel enters the viewport.
|
|
265
|
+
* Uses a zero-size sentinel so it never wraps or affects layout.
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* <RenderInView options={{ rootMargin: '200px 0px' }}>
|
|
269
|
+
* <HeavyComponent />
|
|
270
|
+
* </RenderInView>
|
|
271
|
+
*/
|
|
272
|
+
declare function RenderInView({
|
|
273
|
+
children,
|
|
274
|
+
fallback,
|
|
275
|
+
mode,
|
|
276
|
+
preserveSpace,
|
|
277
|
+
options
|
|
278
|
+
}: RenderInViewProps): react_jsx_runtime0.JSX.Element;
|
|
279
|
+
//#endregion
|
|
196
280
|
//#region src/components/responsive-indicator.d.ts
|
|
197
281
|
type Side = 'bottom-left' | 'bottom-right' | 'top-right' | 'top-left';
|
|
198
282
|
/**
|
|
@@ -277,52 +361,4 @@ declare const ScrollTracker: ({
|
|
|
277
361
|
*/
|
|
278
362
|
declare function ScrollableMarker(): null;
|
|
279
363
|
//#endregion
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Props for the <MountAfter> component.
|
|
283
|
-
*/
|
|
284
|
-
interface MountAfterProps {
|
|
285
|
-
/**
|
|
286
|
-
* Delay in milliseconds before mounting children.
|
|
287
|
-
* @default 0
|
|
288
|
-
*/
|
|
289
|
-
delay?: number;
|
|
290
|
-
/**
|
|
291
|
-
* Content shown while in pending (pre-mount) state.
|
|
292
|
-
* @default null
|
|
293
|
-
*/
|
|
294
|
-
fallback?: React.ReactNode;
|
|
295
|
-
/** Content rendered after delay elapses. */
|
|
296
|
-
children: React.ReactNode;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Delays rendering of children by a configurable timeout.
|
|
300
|
-
*
|
|
301
|
-
* Useful for preventing content flash, coordinating staggered
|
|
302
|
-
* animations, or deferring render-heavy trees until after
|
|
303
|
-
* the initial paint. When `delay` is 0 (default), children
|
|
304
|
-
* mount immediately with no pending state.
|
|
305
|
-
*
|
|
306
|
-
* @param props - The component props
|
|
307
|
-
* @returns The fallback during the pending state, then children once mounted
|
|
308
|
-
*
|
|
309
|
-
* @example
|
|
310
|
-
* ```tsx
|
|
311
|
-
* // Mount immediately (no delay)
|
|
312
|
-
* <MountAfter>
|
|
313
|
-
* <ExpensiveComponent />
|
|
314
|
-
* </MountAfter>
|
|
315
|
-
*
|
|
316
|
-
* // Mount after 500ms with a loading indicator
|
|
317
|
-
* <MountAfter delay={500} fallback={<Spinner />}>
|
|
318
|
-
* <ExpensiveComponent />
|
|
319
|
-
* </MountAfter>
|
|
320
|
-
* ```
|
|
321
|
-
*/
|
|
322
|
-
declare function MountAfter({
|
|
323
|
-
delay,
|
|
324
|
-
fallback,
|
|
325
|
-
children
|
|
326
|
-
}: MountAfterProps): react_jsx_runtime0.JSX.Element;
|
|
327
|
-
//#endregion
|
|
328
|
-
export { HtmlInjector, Iconify, MediaWrapper, MountAfter, Portal, ResponsiveIndicator, ResponsiveIndicator as TailwindIndicator, ScrollTracker, ScrollableMarker, WithClosest };
|
|
364
|
+
export { HtmlInjector, Iconify, MediaWrapper, MountAfter, Portal, RenderInView, ResponsiveIndicator, ResponsiveIndicator as TailwindIndicator, ScrollTracker, ScrollableMarker, WithClosest };
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{r as e}from"../functions-CTMT4m8K.js";import{C as t,
|
|
1
|
+
"use client";import{r as e}from"../functions-CTMT4m8K.js";import{C as t,E as n,M as r,T as i}from"../hooks-ZozXuKsa.js";import*as a from"react";import{useEffect as o,useLayoutEffect as s,useRef as c,useState as l}from"react";import{Slot as u}from"@radix-ui/react-slot";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import{Icon as m}from"@iconify/react";import{createPortal as h}from"react-dom";function g({selector:e,children:t}){let n=c(null),[r,i]=l(!1),[a,o]=l({hasClosest:!1,closestElement:null});return s(()=>{if(n.current){let t=n.current.closest(e);o({hasClosest:t!==null,closestElement:t})}i(!0)},[e]),r?f(u,{ref:n,children:t(a)}):f(`span`,{ref:n})}function _({className:t,html:n,sanitize:i=!1,executeScripts:o=!0,...s}){let c=a.useRef([]),l=a.useRef(null);r(()=>{if(c.current.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)}),c.current=[],!(!o||!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),c.current.push(t)})}catch(e){console.error(`HTML injection error:`,e)}},[n,o]),a.useEffect(()=>()=>{c.current.forEach(e=>{e.parentNode&&e.parentNode.removeChild(e)})},[]);let u=a.useMemo(()=>{if(!n)return``;if(i){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,i]);return n?f(`div`,{ref:l,className:e(t),dangerouslySetInnerHTML:{__html:u},...s}):null}function v({breakpoint:e,as:t=`div`,fallback:n=a.Fragment,className:r,classNameFallback:o,...s}){let c=i(e.split(`-`).pop())===e.startsWith(`max`),l=c?n:t,u=c?o:r;return l===a.Fragment?f(l,{ref:s.ref,children:s.children},s.key):f(l,{className:u,...s})}function y({delay:e=0,fallback:t=null,children:n}){let[r,i]=l(e===0?`mounted`:`pending`),a=c(null);return o(()=>{if(e!==0)return a.current=setTimeout(()=>i(`mounted`),e),()=>{a.current&&clearTimeout(a.current)}},[e]),r===`pending`?f(d,{children:t}):f(d,{children:n})}function b({children:e,container:t}){let n=c(null),[r,i]=l(!1);return s(()=>{t?n.current=typeof t==`string`?document.querySelector(t):t.current:n.current=document.body,i(!0)},[]),!r||!n.current?null:h(e,n.current)}function x({children:e,fallback:t=null,mode:r=`persist`,preserveSpace:i=!1,options:a={}}){let o=c(null),u=c(null),m=c(null),[h,g]=l(!1),[_,v]=l(!1),[y,b]=l(null);n(o,e=>{g(e),e&&!_&&v(!0)},a),s(()=>{if(!i||!u.current||m.current!==null)return;let e=u.current.getBoundingClientRect().height;e>0&&(m.current=e,b(e))});let x=r===`unmount`?h:_,S=i&&y!==null?f(`span`,{"aria-hidden":!0,style:{display:`block`,height:y,contain:`strict`}}):t;return p(d,{children:[f(`span`,{ref:o,"aria-hidden":!0,style:{display:`block`,width:0,height:0,overflow:`hidden`,contain:`strict`}}),x?f(`span`,{ref:u,style:{display:`contents`},children:e}):S]})}const S=[`bottom-left`,`bottom-right`,`top-right`,`top-left`],C=({side:e,offset:t=2,unit:n=`rem`})=>{let[r,o]=a.useState(e??`bottom-left`),s=i({DEFAULT:`xs`,sm:`sm`,md:`md`,lg:`lg`,xl:`xl`,"2xl":`2xl`}),[c,l]=a.useState(typeof window<`u`?window.innerWidth:0);a.useEffect(()=>{if(typeof window>`u`)return;let e=()=>l(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let u=s===`2xl`&&c>=1792?n===`rem`?`${(c/16).toFixed(1)}rem`:`${c}${n}`:s;return f(`button`,{type:`button`,onClick:()=>{o(S[(S.indexOf(r)+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`,...{"bottom-left":{bottom:`${t}${n}`,left:`${t}${n}`},"bottom-right":{bottom:`${t}${n}`,right:`${t}${n}`},"top-right":{top:`${t}${n}`,right:`${t}${n}`},"top-left":{top:`${t}${n}`,left:`${t}${n}`}}[r]},children:u})};function w(){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`in window?window.requestIdleCallback(()=>r(e)):setTimeout(()=>r(e),0);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{_ as HtmlInjector,m as Iconify,v as MediaWrapper,y as MountAfter,b as Portal,x as RenderInView,C as ResponsiveIndicator,C as TailwindIndicator,t as ScrollTracker,w as ScrollableMarker,g as WithClosest};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`./hooks-
|
|
1
|
+
const e=require(`./hooks-D0fKQIlM.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({targetPath: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(/[?#].*$/,``).replace(i,``).replace(/^\/+|\/+$/g,``),o=a(t);if(e instanceof RegExp)return e.test(o);let s=a(e);return r?s===o:o.startsWith(s)}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-D0fKQIlM.cjs`);require(`../functions-WGuz-y7g.cjs`),exports.BREAKPOINTS=e.w,exports.createObserver=e.E,exports.useAction=e.A,exports.useAsync=e.k,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.useInView=e.D,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.j,exports.useScheduledEffect=e.M,exports.useScrollTracker=e.S,exports.useSessionStorage=e.h,exports.useTimeout=e.g,exports.useUpdateEffect=e._,exports.useUrlParams=e.v,exports.useViewEffect=e.O,exports.useWindowEvent=e.y,exports.useWorker=e.b,exports.useWorkerEffect=e.x;
|
package/dist/hooks/index.d.cts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { a as useInView, i as createObserver, n as UseInViewParams, o as useViewEffect, r as UseViewEffectParams, t as InViewOptions } from "../in-view-BMBLMPcI.cjs";
|
|
1
2
|
import * as React from "react";
|
|
2
3
|
import { ScheduleOpts, Task } from "@ts-utilities/core";
|
|
3
4
|
|
|
@@ -716,4 +717,4 @@ declare const useIntersection: ({
|
|
|
716
717
|
isIntersecting: boolean;
|
|
717
718
|
};
|
|
718
719
|
//#endregion
|
|
719
|
-
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 };
|
|
720
|
+
export { BREAKPOINTS, InViewOptions, type MediaQueryMap, UseInViewParams, UseViewEffectParams, createObserver, useAction, useAsync, useClickOutside, useCopyToClipboard, useDebounce, useDomCalculation, useEffectOnce, useHeightCalculation, useInView, useIntersection, useIsAtTop, useIsClient, useIsScrolling, useIsomorphicEffect, useLocalStorage, useLockScroll, useMediaQuery, useQuerySelector, useSchedule, useScheduledEffect, useScrollTracker, useSessionStorage, useTimeout, useUpdateEffect, useUrlParams, useViewEffect, useWindowEvent, useWorker, useWorkerEffect };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { a as useInView, i as createObserver, n as UseInViewParams, o as useViewEffect, r as UseViewEffectParams, t as InViewOptions } from "../in-view-pRyp3oML.js";
|
|
1
2
|
import { ScheduleOpts, Task } from "@ts-utilities/core";
|
|
2
3
|
import * as React from "react";
|
|
3
4
|
|
|
@@ -716,4 +717,4 @@ declare const useIntersection: ({
|
|
|
716
717
|
isIntersecting: boolean;
|
|
717
718
|
};
|
|
718
719
|
//#endregion
|
|
719
|
-
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 };
|
|
720
|
+
export { BREAKPOINTS, InViewOptions, type MediaQueryMap, UseInViewParams, UseViewEffectParams, createObserver, useAction, useAsync, useClickOutside, useCopyToClipboard, useDebounce, useDomCalculation, useEffectOnce, useHeightCalculation, useInView, useIntersection, useIsAtTop, useIsClient, useIsScrolling, useIsomorphicEffect, useLocalStorage, useLockScroll, useMediaQuery, useQuerySelector, useSchedule, useScheduledEffect, useScrollTracker, useSessionStorage, useTimeout, useUpdateEffect, useUrlParams, useViewEffect, useWindowEvent, useWorker, useWorkerEffect };
|
package/dist/hooks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import"../functions-CTMT4m8K.js";import{
|
|
1
|
+
"use client";import"../functions-CTMT4m8K.js";import{A as e,D as t,E as n,M as r,O as i,S as a,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as m,i as h,j as g,k as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A}from"../hooks-ZozXuKsa.js";export{O as BREAKPOINTS,n as createObserver,e as useAction,_ as useAsync,T as useClickOutside,b as useCopyToClipboard,C as useDebounce,h as useDomCalculation,c as useEffectOnce,x as useHeightCalculation,t as useInView,w as useIntersection,u as useIsAtTop,v as useIsClient,E as useIsScrolling,d as useIsomorphicEffect,f as useLocalStorage,S as useLockScroll,o as useMediaQuery,y as useQuerySelector,g as useSchedule,r as useScheduledEffect,a as useScrollTracker,m as useSessionStorage,p as useTimeout,s as useUpdateEffect,D as useUrlParams,i as useViewEffect,A as useWindowEvent,l as useWorker,k as useWorkerEffect};
|
|
@@ -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-WGuz-y7g.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?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}}function _(e,t,n){let{rootMargin:r=`0px`,once:i=!1}=n;(0,u.useEffect)(()=>{let n=e.current;if(!n)return;let a=new IntersectionObserver(([e])=>{if(e){let n=e.isIntersecting;t(n),n&&i&&a.disconnect()}},{rootMargin:r});return a.observe(n),()=>a.disconnect()},[r,i])}function v(e){let{ref:t,...n}=e,[r,i]=(0,u.useState)(!1);return _(t,i,n),r}function y(e){let{ref:t,event:n=`in`,callback:r,...i}=e,a=(0,u.useRef)(r);(0,u.useEffect)(()=>{a.current=r}),_(t,e=>{n===`in`&&e&&a.current(),n===`out`&&!e&&a.current()},i)}const b={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},x=[`2xl`,`xl`,`lg`,`md`,`sm`,`max-2xl`,`max-xl`,`max-lg`,`max-md`,`max-sm`],S=e=>typeof e==`object`&&!!e&&`DEFAULT`in e,C=e=>e.startsWith(`max-`)?`(max-width: ${b[e.slice(4)]-1}px)`:`(min-width: ${b[e]}px)`,w=e=>x.filter(t=>t in e).map(t=>`${t}:${String(e[t])}`).join(`,`)+`:DEFAULT:${String(e.DEFAULT)}`;function T(e){if(S(e)){let t=w(e),n=u.useMemo(()=>{let t=Object.keys(e).filter(e=>e!==`DEFAULT`);return x.filter(e=>t.includes(e)).map(t=>({bp:t,query:C(t),value:e[t]}))},[t]),r=u.useCallback(t=>{for(let e=0;e<t.length;e++)if(t[e].matches)return n[e].value;return e.DEFAULT},[n,e.DEFAULT]),[i,a]=u.useState(()=>{if(c.c)return e.DEFAULT;for(let{query:e,value:t}of n)if(window.matchMedia(e).matches)return t;return e.DEFAULT});return u.useEffect(()=>{let e=n.map(({query:e})=>window.matchMedia(e)),t=()=>a(r(e));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[n,r]),i}let t=Array.isArray(e)?e:[e],n=t.join(`||`),r=u.useMemo(()=>t.map(e=>e.startsWith(`(`)?e:C(e)),[n]),[i,a]=u.useState(()=>c.c?!1:r.every(e=>window.matchMedia(e).matches));return m(()=>{let e=r.map(e=>window.matchMedia(e)),t=()=>a(e.every(e=>e.matches));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[r]),i}const E=u.createContext(null),D=({children:e})=>{let t=u.useRef(null);return(0,f.jsx)(E.Provider,{value:t,children:(0,f.jsx)(d.Slot,{ref:t,children:e})})},O=({threshold:e=300,container:t}={})=>{let n=u.useContext(E),[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 k(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 A(e,t=[]){let{execute:n}=k(e);u.useEffect(()=>{n()},[n,...t])}const j=(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 M(e){u.useEffect(e,[])}function N(e,t){let n=u.useRef(!0);u.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function P(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 F=typeof window<`u`?u.useLayoutEffect:u.useEffect;function I(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 L(e,t,n){u.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const R=(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])]},z=(e,t)=>{let[n,r]=u.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return N(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},B=(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)}]},V=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 H(){let[e,t]=u.useState(!1);return u.useEffect(()=>{t(!0)},[]),e}function U(){u.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function W({timeout:e=2e3}){let[t,n]=u.useState(!1);return{isCopied:t,copy:t=>{c.i(t,()=>{n(!0),setTimeout(()=>{n(!1)},e)})}}}const G=({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},K=({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},q=()=>{let[e,t]=u.useState(!1),n=u.useRef(null),r=u.useRef(null);return M(()=>{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}},J=({offset:e}={})=>{let[t,n]=u.useState(!0),r=u.useRef(null);return M(()=>{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}},Y=({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 h}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return L}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,i as t,t as n}from"./functions-CTMT4m8K.js";import{schedule as r}from"@ts-utilities/core";import*as i from"react";import{useEffect as a,useRef as o,useState as s}from"react";import{Slot as c}from"@radix-ui/react-slot";import{jsx as l}from"react/jsx-runtime";function u(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?window.requestIdleCallback(n,{timeout:t}):r(n)},[t])}function d(e,t=[],n={}){let r=u(n);i.useEffect(()=>{let t;return r(()=>{t=e()}),()=>{typeof t==`function`&&t?.()}},[r,...t])}const f=(e,t)=>{let[n,r]=i.useState(`idle`),[a,o]=i.useState(null),[s,c]=i.useState(null),[l,u]=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=>{c(e),r(`error`),t?.onError?.(e),t?.onSettled?.()},[t]),b=i.useCallback(t=>{u(t),r(`loading`),c(null),p(()=>{e(t).then(v).catch(y)})},[e,v,y]);return{execute:b,executeAsync:i.useCallback(t=>new Promise((n,i)=>{u(t),r(`loading`),c(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),c(null),u(void 0)},[]),useExecute:e=>{d(()=>{b(e)},[])},data:a,error:s,input:l,isIdle:m,isLoading:h,isSuccess:g,isError:_}};function p(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}}function m(e,t,n){let{rootMargin:r=`0px`,once:i=!1}=n;a(()=>{let n=e.current;if(!n)return;let a=new IntersectionObserver(([e])=>{if(e){let n=e.isIntersecting;t(n),n&&i&&a.disconnect()}},{rootMargin:r});return a.observe(n),()=>a.disconnect()},[r,i])}function h(e){let{ref:t,...n}=e,[r,i]=s(!1);return m(t,i,n),r}function g(e){let{ref:t,event:n=`in`,callback:r,...i}=e,s=o(r);a(()=>{s.current=r}),m(t,e=>{n===`in`&&e&&s.current(),n===`out`&&!e&&s.current()},i)}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)`,x=e=>v.filter(t=>t in e).map(t=>`${t}:${String(e[t])}`).join(`,`)+`:DEFAULT:${String(e.DEFAULT)}`;function S(t){if(y(t)){let n=x(t),r=i.useMemo(()=>{let e=Object.keys(t).filter(e=>e!==`DEFAULT`);return v.filter(t=>e.includes(t)).map(e=>({bp:e,query:b(e),value:t[e]}))},[n]),a=i.useCallback(e=>{for(let t=0;t<e.length;t++)if(e[t].matches)return r[t].value;return t.DEFAULT},[r,t.DEFAULT]),[o,s]=i.useState(()=>{if(e)return t.DEFAULT;for(let{query:e,value:t}of r)if(window.matchMedia(e).matches)return t;return t.DEFAULT});return i.useEffect(()=>{let e=r.map(({query:e})=>window.matchMedia(e)),t=()=>s(a(e));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[r,a]),o}let n=Array.isArray(t)?t:[t],r=n.join(`||`),a=i.useMemo(()=>n.map(e=>e.startsWith(`(`)?e:b(e)),[r]),[o,s]=i.useState(()=>e?!1:a.every(e=>window.matchMedia(e).matches));return d(()=>{let e=a.map(e=>window.matchMedia(e)),t=()=>s(e.every(e=>e.matches));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[a]),o}const C=i.createContext(null),w=({children:e})=>{let t=i.useRef(null);return l(C.Provider,{value:t,children:l(c,{ref:t,children:e})})},T=({threshold:e=300,container:t}={})=>{let n=i.useContext(C),[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 d(()=>{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 E(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 D(e,t=[]){let{execute:n}=E(e);i.useEffect(()=>{n()},[n,...t])}const O=(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 k(e){i.useEffect(e,[])}function A(e,t){let n=i.useRef(!0);i.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function j(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 M=typeof window<`u`?i.useLayoutEffect:i.useEffect;function N(e,t=1e3){let n=i.useRef(e);d(()=>{n.current=e},[e]),i.useEffect(()=>{if(!t&&t!==0)return;let e=setTimeout(()=>n.current(),t);return()=>clearTimeout(e)},[t])}function P(e,t,n){i.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const F=(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])]},I=(e,t)=>{let[n,r]=i.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return A(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},L=(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)}]},R=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 z(){let[e,t]=i.useState(!1);return i.useEffect(()=>{t(!0)},[]),e}function B(){i.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function V({timeout:e=2e3}){let[n,r]=i.useState(!1);return{isCopied:n,copy:n=>{t(n,()=>{r(!0),setTimeout(()=>{r(!1)},e)})}}}const H=({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},U=({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},W=()=>{let[e,t]=i.useState(!1),n=i.useRef(null),r=i.useRef(null);return k(()=>{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}},G=({offset:e}={})=>{let[t,n]=i.useState(!0),r=i.useRef(null);return k(()=>{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}},K=({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{f as A,w as C,h as D,m as E,d as M,g as O,T as S,S as T,A as _,k as a,E as b,G as c,M as d,I as f,N as g,F as h,U as i,u as j,p as k,z as l,R as m,V as n,H as o,B as p,j as r,K as s,O as t,W as u,L as v,_ as w,D as x,P as y};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/hooks/in-view.d.ts
|
|
4
|
+
interface InViewOptions {
|
|
5
|
+
/**
|
|
6
|
+
* IntersectionObserver rootMargin.
|
|
7
|
+
* @example "200px 0px" — trigger 200px before entering viewport
|
|
8
|
+
* @default "0px"
|
|
9
|
+
*/
|
|
10
|
+
rootMargin?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Stop observing after first intersection.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
once?: boolean;
|
|
16
|
+
}
|
|
17
|
+
declare function createObserver(ref: RefObject<Element | null>, onIntersect: (inView: boolean) => void, options: InViewOptions): void;
|
|
18
|
+
interface UseInViewParams<T extends Element = Element> extends InViewOptions {
|
|
19
|
+
ref: RefObject<T | null>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Observes the element via the provided ref and returns whether it's in view.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const ref = useRef<HTMLDivElement>(null);
|
|
26
|
+
* const inView = useInView({ ref, once: true });
|
|
27
|
+
* <div ref={ref}>{inView ? 'visible' : 'hidden'}</div>
|
|
28
|
+
*/
|
|
29
|
+
declare function useInView<T extends Element = Element>(params: UseInViewParams<T>): boolean;
|
|
30
|
+
type ViewEvent = 'in' | 'out';
|
|
31
|
+
interface UseViewEffectParams<T extends Element = Element> extends InViewOptions {
|
|
32
|
+
ref: RefObject<T | null>;
|
|
33
|
+
/** Side effect to run on the event. */
|
|
34
|
+
callback: () => void;
|
|
35
|
+
/** `"in"` fires when entering, `"out"` fires when exiting. */
|
|
36
|
+
event?: ViewEvent;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Runs a callback when the element enters or exits the viewport.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* const ref = useRef<HTMLDivElement>(null);
|
|
43
|
+
* useViewEffect({ ref, event: 'in', callback: () => startAnimation(), once: true });
|
|
44
|
+
* <div ref={ref} />
|
|
45
|
+
*/
|
|
46
|
+
declare function useViewEffect<T extends Element = Element>(params: UseViewEffectParams<T>): void;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { useInView as a, createObserver as i, UseInViewParams as n, useViewEffect as o, UseViewEffectParams as r, InViewOptions as t };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/hooks/in-view.d.ts
|
|
4
|
+
interface InViewOptions {
|
|
5
|
+
/**
|
|
6
|
+
* IntersectionObserver rootMargin.
|
|
7
|
+
* @example "200px 0px" — trigger 200px before entering viewport
|
|
8
|
+
* @default "0px"
|
|
9
|
+
*/
|
|
10
|
+
rootMargin?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Stop observing after first intersection.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
once?: boolean;
|
|
16
|
+
}
|
|
17
|
+
declare function createObserver(ref: RefObject<Element | null>, onIntersect: (inView: boolean) => void, options: InViewOptions): void;
|
|
18
|
+
interface UseInViewParams<T extends Element = Element> extends InViewOptions {
|
|
19
|
+
ref: RefObject<T | null>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Observes the element via the provided ref and returns whether it's in view.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const ref = useRef<HTMLDivElement>(null);
|
|
26
|
+
* const inView = useInView({ ref, once: true });
|
|
27
|
+
* <div ref={ref}>{inView ? 'visible' : 'hidden'}</div>
|
|
28
|
+
*/
|
|
29
|
+
declare function useInView<T extends Element = Element>(params: UseInViewParams<T>): boolean;
|
|
30
|
+
type ViewEvent = 'in' | 'out';
|
|
31
|
+
interface UseViewEffectParams<T extends Element = Element> extends InViewOptions {
|
|
32
|
+
ref: RefObject<T | null>;
|
|
33
|
+
/** Side effect to run on the event. */
|
|
34
|
+
callback: () => void;
|
|
35
|
+
/** `"in"` fires when entering, `"out"` fires when exiting. */
|
|
36
|
+
event?: ViewEvent;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Runs a callback when the element enters or exits the viewport.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* const ref = useRef<HTMLDivElement>(null);
|
|
43
|
+
* useViewEffect({ ref, event: 'in', callback: () => startAnimation(), once: true });
|
|
44
|
+
* <div ref={ref} />
|
|
45
|
+
*/
|
|
46
|
+
declare function useViewEffect<T extends Element = Element>(params: UseViewEffectParams<T>): void;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { useInView as a, createObserver as i, UseInViewParams as n, useViewEffect as o, UseViewEffectParams as r, InViewOptions as t };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./functions-
|
|
1
|
+
const e=require(`./functions-WGuz-y7g.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
package/dist/hooks-B_cSW9vB.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-Dp2CwvmB.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?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)`,x=e=>v.filter(t=>t in e).map(t=>`${t}:${String(e[t])}`).join(`,`)+`:DEFAULT:${String(e.DEFAULT)}`;function S(e){if(y(e)){let t=x(e),n=u.useMemo(()=>{let t=Object.keys(e).filter(e=>e!==`DEFAULT`);return v.filter(e=>t.includes(e)).map(t=>({bp:t,query:b(t),value:e[t]}))},[t]),r=u.useCallback(t=>{for(let e=0;e<t.length;e++)if(t[e].matches)return n[e].value;return e.DEFAULT},[n,e.DEFAULT]),[i,a]=u.useState(()=>{if(c.c)return e.DEFAULT;for(let{query:e,value:t}of n)if(window.matchMedia(e).matches)return t;return e.DEFAULT});return u.useEffect(()=>{let e=n.map(({query:e})=>window.matchMedia(e)),t=()=>a(r(e));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[n,r]),i}let t=Array.isArray(e)?e:[e],n=t.join(`||`),r=u.useMemo(()=>t.map(e=>e.startsWith(`(`)?e:b(e)),[n]),[i,a]=u.useState(()=>c.c?!1:r.every(e=>window.matchMedia(e).matches));return m(()=>{let e=r.map(e=>window.matchMedia(e)),t=()=>a(e.every(e=>e.matches));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[r]),i}const C=u.createContext(null),w=({children:e})=>{let t=u.useRef(null);return(0,f.jsx)(C.Provider,{value:t,children:(0,f.jsx)(d.Slot,{ref:t,children:e})})},T=({threshold:e=300,container:t}={})=>{let n=u.useContext(C),[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 E(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 D(e,t=[]){let{execute:n}=E(e);u.useEffect(()=>{n()},[n,...t])}const O=(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 k(e){u.useEffect(e,[])}function A(e,t){let n=u.useRef(!0);u.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function j(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 M=typeof window<`u`?u.useLayoutEffect:u.useEffect;function N(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 P(e,t,n){u.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const F=(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])]},I=(e,t)=>{let[n,r]=u.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return A(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},L=(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)}]},R=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 z(){let[e,t]=u.useState(!1);return u.useEffect(()=>{t(!0)},[]),e}function B(){u.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function V({timeout:e=2e3}){let[t,n]=u.useState(!1);return{isCopied:t,copy:t=>{c.i(t,()=>{n(!0),setTimeout(()=>{n(!1)},e)})}}}const H=({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},U=({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},W=()=>{let[e,t]=u.useState(!1),n=u.useRef(null),r=u.useRef(null);return k(()=>{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}},G=({offset:e}={})=>{let[t,n]=u.useState(!0),r=u.useRef(null);return k(()=>{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}},K=({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 w}}),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 T}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return P}});
|
package/dist/hooks-CCFEDyEO.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t,t as n}from"./functions-CTMT4m8K.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?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)`,h=e=>f.filter(t=>t in e).map(t=>`${t}:${String(e[t])}`).join(`,`)+`:DEFAULT:${String(e.DEFAULT)}`;function g(t){if(p(t)){let n=h(t),r=i.useMemo(()=>{let e=Object.keys(t).filter(e=>e!==`DEFAULT`);return f.filter(t=>e.includes(t)).map(e=>({bp:e,query:m(e),value:t[e]}))},[n]),a=i.useCallback(e=>{for(let t=0;t<e.length;t++)if(e[t].matches)return r[t].value;return t.DEFAULT},[r,t.DEFAULT]),[o,s]=i.useState(()=>{if(e)return t.DEFAULT;for(let{query:e,value:t}of r)if(window.matchMedia(e).matches)return t;return t.DEFAULT});return i.useEffect(()=>{let e=r.map(({query:e})=>window.matchMedia(e)),t=()=>s(a(e));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[r,a]),o}let n=Array.isArray(t)?t:[t],r=n.join(`||`),a=i.useMemo(()=>n.map(e=>e.startsWith(`(`)?e:m(e)),[r]),[o,s]=i.useState(()=>e?!1:a.every(e=>window.matchMedia(e).matches));return c(()=>{let e=a.map(e=>window.matchMedia(e)),t=()=>s(e.every(e=>e.matches));for(let n of e)n.addEventListener(`change`,t);return t(),()=>{for(let n of e)n.removeEventListener(`change`,t)}},[a]),o}const _=i.createContext(null),v=({children:e})=>{let t=i.useRef(null);return o(_.Provider,{value:t,children:o(a,{ref:t,children:e})})},y=({threshold:e=300,container:t}={})=>{let n=i.useContext(_),[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 b(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 x(e,t=[]){let{execute:n}=b(e);i.useEffect(()=>{n()},[n,...t])}const S=(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 C(e){i.useEffect(e,[])}function w(e,t){let n=i.useRef(!0);i.useEffect(()=>{if(n.current)n.current=!1;else return e()},t)}function T(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 E=typeof window<`u`?i.useLayoutEffect:i.useEffect;function D(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 O(e,t,n){i.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t,n])}const k=(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])]},A=(e,t)=>{let[n,r]=i.useState(()=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}});return w(()=>{try{localStorage.setItem(e,JSON.stringify(n))}catch(t){console.error(`Error writing to localStorage key "${e}":`,t)}},[e,n]),[n,r]},j=(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)}]},M=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 N(){let[e,t]=i.useState(!1);return i.useEffect(()=>{t(!0)},[]),e}function P(){i.useLayoutEffect(()=>{let e=window.getComputedStyle(document.body).overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[])}function F({timeout:e=2e3}){let[n,r]=i.useState(!1);return{isCopied:n,copy:n=>{t(n,()=>{r(!0),setTimeout(()=>{r(!1)},e)})}}}const I=({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},L=({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},R=()=>{let[e,t]=i.useState(!1),n=i.useRef(null),r=i.useRef(null);return C(()=>{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}},z=({offset:e}={})=>{let[t,n]=i.useState(!0),r=i.useRef(null);return C(()=>{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}},B=({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{v as C,l as D,u as E,s as O,y as S,g as T,w as _,C as a,b,z as c,E as d,A as f,D as g,k as h,L as i,c as k,N as l,M as m,F as n,I as o,P as p,T as r,B as s,S as t,R as u,j as v,d as w,x,O as y};
|