@sohanemon/utils 7.3.3 → 7.3.4
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 +18 -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-BFt6Bpb5.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-C5hYyCOD.js +1 -0
- package/dist/hooks-CbZNFdxc.cjs +1 -0
- package/dist/in-view-CKQ15_tl.d.cts +40 -0
- package/dist/in-view-DJxQrkQf.d.ts +40 -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,16 @@ useIntersection(options?: UseIntersectionOptions): {
|
|
|
432
432
|
isIntersecting: boolean;
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
+
useInView<T extends Element = Element>(
|
|
436
|
+
options?: InViewOptions
|
|
437
|
+
): [React.RefObject<T | null>, boolean]
|
|
438
|
+
|
|
439
|
+
useViewEffect<T extends Element = Element>(
|
|
440
|
+
event: 'in' | 'out',
|
|
441
|
+
callback: () => void,
|
|
442
|
+
options?: InViewOptions
|
|
443
|
+
): React.RefObject<T | null>
|
|
444
|
+
|
|
435
445
|
useIsScrolling(): {
|
|
436
446
|
isScrolling: boolean;
|
|
437
447
|
scrollableContainerRef: React.RefObject<HTMLElement>;
|
|
@@ -503,6 +513,14 @@ Portal: React.Component<{
|
|
|
503
513
|
children: React.ReactNode;
|
|
504
514
|
container: `#${string}` | `.${string}` | `[${string}]` | React.RefObject<HTMLElement>;
|
|
505
515
|
}>
|
|
516
|
+
|
|
517
|
+
RenderInView: React.Component<{
|
|
518
|
+
children: React.ReactNode;
|
|
519
|
+
fallback?: React.ReactNode;
|
|
520
|
+
mode?: 'persist' | 'unmount';
|
|
521
|
+
preserveSpace?: boolean;
|
|
522
|
+
options?: InViewOptions;
|
|
523
|
+
}>
|
|
506
524
|
```
|
|
507
525
|
|
|
508
526
|
### Types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";const e=require(`../hooks-
|
|
1
|
+
"use client";const e=require(`../hooks-CbZNFdxc.cjs`),t=require(`../functions-BFt6Bpb5.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-CKQ15_tl.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-DJxQrkQf.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-C5hYyCOD.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-CbZNFdxc.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-CbZNFdxc.cjs`);require(`../functions-BFt6Bpb5.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 { i as useViewEffect, n as createObserver, r as useInView, t as InViewOptions } from "../in-view-CKQ15_tl.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, 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 { i as useViewEffect, n as createObserver, r as useInView, t as InViewOptions } from "../in-view-DJxQrkQf.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, 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-C5hYyCOD.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
|
+
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 t=o(null),[n,r]=s(!1);return m(t,r,e),[t,n]}function g(e,t,n={}){let r=o(null),i=o(t);return a(()=>{i.current=t}),m(r,t=>{e===`in`&&t&&i.current(),e===`out`&&!t&&i.current()},n),r}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 @@
|
|
|
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-BFt6Bpb5.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 t=(0,u.useRef)(null),[n,r]=(0,u.useState)(!1);return _(t,r,e),[t,n]}function y(e,t,n={}){let r=(0,u.useRef)(null),i=(0,u.useRef)(t);return(0,u.useEffect)(()=>{i.current=t}),_(r,t=>{e===`in`&&t&&i.current(),e===`out`&&!t&&i.current()},n),r}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,40 @@
|
|
|
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
|
+
/**
|
|
19
|
+
* Returns a ref and a boolean indicating whether the element is in view.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const [ref, inView] = useInView({ once: true });
|
|
23
|
+
* <div ref={ref}>{inView ? 'visible' : 'hidden'}</div>
|
|
24
|
+
*/
|
|
25
|
+
declare function useInView<T extends Element = Element>(options?: InViewOptions): [RefObject<T | null>, boolean];
|
|
26
|
+
type ViewEvent = 'in' | 'out';
|
|
27
|
+
/**
|
|
28
|
+
* Runs a callback when the element enters or exits the viewport.
|
|
29
|
+
*
|
|
30
|
+
* @param event - `"in"` fires when entering, `"out"` fires when exiting
|
|
31
|
+
* @param callback - Side effect to run on the event
|
|
32
|
+
* @param options - IntersectionObserver options
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const ref = useViewEffect('in', () => startAnimation(), { once: true });
|
|
36
|
+
* <div ref={ref} />
|
|
37
|
+
*/
|
|
38
|
+
declare function useViewEffect<T extends Element = Element>(event: ViewEvent, callback: () => void, options?: InViewOptions): RefObject<T | null>;
|
|
39
|
+
//#endregion
|
|
40
|
+
export { useViewEffect as i, createObserver as n, useInView as r, InViewOptions as t };
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
/**
|
|
19
|
+
* Returns a ref and a boolean indicating whether the element is in view.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const [ref, inView] = useInView({ once: true });
|
|
23
|
+
* <div ref={ref}>{inView ? 'visible' : 'hidden'}</div>
|
|
24
|
+
*/
|
|
25
|
+
declare function useInView<T extends Element = Element>(options?: InViewOptions): [RefObject<T | null>, boolean];
|
|
26
|
+
type ViewEvent = 'in' | 'out';
|
|
27
|
+
/**
|
|
28
|
+
* Runs a callback when the element enters or exits the viewport.
|
|
29
|
+
*
|
|
30
|
+
* @param event - `"in"` fires when entering, `"out"` fires when exiting
|
|
31
|
+
* @param callback - Side effect to run on the event
|
|
32
|
+
* @param options - IntersectionObserver options
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const ref = useViewEffect('in', () => startAnimation(), { once: true });
|
|
36
|
+
* <div ref={ref} />
|
|
37
|
+
*/
|
|
38
|
+
declare function useViewEffect<T extends Element = Element>(event: ViewEvent, callback: () => void, options?: InViewOptions): RefObject<T | null>;
|
|
39
|
+
//#endregion
|
|
40
|
+
export { useViewEffect as i, createObserver as n, useInView as r, InViewOptions as t };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./functions-
|
|
1
|
+
const e=require(`./functions-BFt6Bpb5.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};
|