@siberiacancode/reactuse 0.2.31 → 0.2.32

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.
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react");function C(u){const{value:r,initialValue:c,onChange:a}=u,e=r!==void 0,[i,f]=o.useState(c),l=o.useRef(a);l.current=a;const t=e?r:i,S=o.useCallback(n=>{const s=typeof n=="function"?n(t):n;e||f(s),l.current?.(s)},[t,e]);return[t,S,e]}exports.useControllableState=C;
2
+ //# sourceMappingURL=useControllableState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllableState.cjs","sources":["../../../../src/hooks/useControllableState/useControllableState.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\n/** The use controllable state options type */\nexport interface UseControllableStateOptions<Value> {\n /** The initial value for uncontrolled state */\n initialValue?: Value;\n /** The controlled value */\n value?: Value;\n /** The onChange callback */\n onChange?: (value: Value) => void;\n}\n\n/** The use controllable state return type */\nexport type UseControllableStateReturn<Value> = [\n /** Current value */\n value: Value,\n /** Setter function that works with both controlled and uncontrolled state */\n setValue: (nextValue: ((prevValue: Value) => Value) | Value) => void,\n /** Whether the state is controlled */\n isControlled: boolean\n];\n\n/**\n * @name useControllableState\n * @description - Hook that manages both controlled and uncontrolled state patterns\n * @category State\n * @usage medium\n *\n * @template Value The type of the state value\n * @param {Value} [options.value] The controlled value. When provided, the component becomes controlled\n * @param {Value} [options.initialValue] The initial value for uncontrolled state\n * @param {(value: Value) => void} [options.onChange] The callback function called when the state changes\n * @returns {UseControllableStateReturn<Value>} A tuple containing the current value, setter function, and controlled flag\n *\n * @example\n * const [value, setValue, isControlled] = useControllableState({ initialValue: 'initial' });\n */\nexport function useControllableState<Value>(\n options: UseControllableStateOptions<Value>\n): UseControllableStateReturn<Value> {\n const { value, initialValue, onChange } = options;\n const isControlled = value !== undefined;\n\n const [internalState, setInternalState] = useState<Value>(initialValue as Value);\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const currentValue = isControlled ? value : internalState;\n\n const setValue = useCallback(\n (nextValue: ((prevValue: Value) => Value) | Value) => {\n const resolvedValue =\n typeof nextValue === 'function'\n ? (nextValue as (prevValue: Value) => Value)(currentValue)\n : nextValue;\n\n if (!isControlled) setInternalState(resolvedValue);\n\n onChangeRef.current?.(resolvedValue);\n },\n [currentValue, isControlled]\n );\n\n return [currentValue, setValue, isControlled];\n}\n"],"names":["useControllableState","options","value","initialValue","onChange","isControlled","internalState","setInternalState","useState","onChangeRef","useRef","currentValue","setValue","useCallback","nextValue","resolvedValue"],"mappings":"yGAqCO,SAASA,EACdC,EACmC,CACnC,KAAM,CAAE,MAAAC,EAAO,aAAAC,EAAc,SAAAC,CAAA,EAAaH,EACpCI,EAAeH,IAAU,OAEzB,CAACI,EAAeC,CAAgB,EAAIC,EAAAA,SAAgBL,CAAqB,EAEzEM,EAAcC,EAAAA,OAAON,CAAQ,EACnCK,EAAY,QAAUL,EAEtB,MAAMO,EAAeN,EAAeH,EAAQI,EAEtCM,EAAWC,EAAAA,YACdC,GAAqD,CACpD,MAAMC,EACJ,OAAOD,GAAc,WAChBA,EAA0CH,CAAY,EACvDG,EAEDT,GAAcE,EAAiBQ,CAAa,EAEjDN,EAAY,UAAUM,CAAa,CAAA,EAErC,CAACJ,EAAcN,CAAY,CAAA,EAG7B,MAAO,CAACM,EAAcC,EAAUP,CAAY,CAC9C"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),H=require("../useRefState/useRefState.cjs"),j=require("../../utils/helpers/isTarget.cjs"),O=require("../../utils/helpers/getElement.cjs"),w=1,P=(...t)=>{const r=j.isTarget(t[0])?t[0]:void 0,d=r?typeof t[1]=="object"?t[1]:{onScroll:t[1]}:typeof t[0]=="object"?t[0]:{onScroll:t[0]},s=H.useRefState(),g=f.useRef(d);g.current=d;const[S,E]=f.useState(!1),l=f.useRef({x:0,y:0});return f.useEffect(()=>{if(!r&&!s.state)return;const i=(r?O.getElement(r):s.current)??window,R=n=>{E(!1),d?.onStop?.(n)},a=n=>{E(!0);const e=n.target===document?n.target.documentElement:n.target,{display:m,flexDirection:y,direction:q}=e.style,v=q==="rtl"?-1:1,c=e.scrollLeft;let o=e.scrollTop;e instanceof Document&&!o&&(o=window.document.body.scrollTop);const u=g.current?.offset,b=c*v<=(u?.left??0),p=c*v+e.clientWidth>=e.scrollWidth-(u?.right??0)-w,T=o<=(u?.top??0),h=o+e.clientHeight>=e.scrollHeight-(u?.bottom??0)-w,x=m==="flex"&&y==="column-reverse",L=m==="flex"&&y==="column-reverse",D={x:c,y:o,directions:{left:c<l.current.x,right:c>l.current.x,top:o<l.current.y,bottom:o>l.current.y},arrived:{left:L?p:b,right:L?b:p,top:x?h:T,bottom:x?T:h}};l.current={x:c,y:o},g.current?.onScroll?.(D,n)};return i.addEventListener("scroll",a),i.addEventListener("scrollend",R),()=>{i.removeEventListener("scroll",a),i.removeEventListener("scrollend",R)}},[r,s.state]),r?S:{ref:s,scrolling:S}};exports.useScroll=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),O=require("../useRefState/useRefState.cjs"),P=require("../../utils/helpers/isTarget.cjs"),V=require("../../utils/helpers/getElement.cjs"),H=1,_=(...o)=>{const c=P.isTarget(o[0])?o[0]:void 0,R=c?typeof o[1]=="object"?o[1]:{onScroll:o[1]}:typeof o[0]=="object"?o[0]:{onScroll:o[0]},g=O.useRefState(),a=d.useRef(R),u=d.useRef(null);a.current=R;const[m,y]=d.useState(!1),f=d.useRef({x:0,y:0});d.useEffect(()=>{if(!c&&!g.state)return;const e=(c?V.getElement(c):g.current)??window;u.current=e;const l=t=>{y(!1),R?.onStop?.(t)},s=t=>{y(!0);const r=t.target===document?t.target.documentElement:t.target,{display:v,flexDirection:T,direction:I}=r.style,h=I==="rtl"?-1:1,i=r.scrollLeft;let n=r.scrollTop;r instanceof Document&&!n&&(n=window.document.body.scrollTop);const S=a.current?.offset,p=i*h<=(S?.left??0),x=i*h+r.clientWidth>=r.scrollWidth-(S?.right??0)-H,L=n<=(S?.top??0),w=n+r.clientHeight>=r.scrollHeight-(S?.bottom??0)-H,q=v==="flex"&&T==="column-reverse",D=v==="flex"&&T==="column-reverse",j={x:i,y:n,directions:{left:i<f.current.x,right:i>f.current.x,top:n<f.current.y,bottom:n>f.current.y},arrived:{left:D?x:p,right:D?p:x,top:q?w:L,bottom:q?L:w}};f.current={x:i,y:n},a.current?.onScroll?.(j,t)};return e.addEventListener("scroll",s),e.addEventListener("scrollend",l),()=>{e.removeEventListener("scroll",s),e.removeEventListener("scrollend",l)}},[c,g.state]);const E=e=>{if(!u.current)return;const{behavior:l,block:s,inline:t}=e??{};u.current.scrollIntoView({behavior:l,block:s,inline:t})},b=e=>{if(!u.current)return;const{x:l,y:s,behavior:t}=e??{};u.current.scrollTo({left:l,top:s,behavior:t})};return c?{scrollIntoView:E,scrollTo:b,scrolling:m}:{ref:g,scrolling:m,scrollIntoView:E,scrollTo:b}};exports.useScroll=_;
2
2
  //# sourceMappingURL=useScroll.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScroll.cjs","sources":["../../../../src/hooks/useScroll/useScroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n\nexport interface UseScrollOptions {\n /** The on scroll callback */\n onScroll?: (params: UseScrollCallbackParams, event: Event) => void;\n\n /** The on end scroll callback */\n onStop?: (event: Event) => void;\n\n /** Offset arrived states by x pixels. */\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n}\n\nexport interface UseScrollCallbackParams {\n /** The element x position */\n x: number;\n /** The element y position */\n y: number;\n /** State of scroll arrived */\n arrived: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** State of scroll direction */\n directions: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n}\n\nexport interface UseScroll {\n (\n target?: HookTarget,\n callback?: (params: UseScrollCallbackParams, event: Event) => void\n ): boolean;\n\n (target?: HookTarget, options?: UseScrollOptions): boolean;\n\n <Target extends Element>(\n callback?: (params: UseScrollCallbackParams, event: Event) => void,\n target?: never\n ): {\n ref: StateRef<Target>;\n scrolling: boolean;\n };\n\n <Target extends Element>(\n options?: UseScrollOptions,\n target?: never\n ): {\n ref: StateRef<Target>;\n scrolling: boolean;\n };\n}\n\n/**\n * @name useScroll\n * @description - Hook that allows you to control scroll a element\n * @category Sensors\n * @usage low\n *\n * @overload\n * @template Target The target element\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {boolean} The state of scrolling\n *\n * @example\n * const scrolling = useScroll(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {boolean} The state of scrolling\n *\n * @example\n * const scrolling = useScroll(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} [target=window] The target element to scroll\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {[StateRef<Target>, boolean]} The state of scrolling\n *\n * @example\n * const { ref, scrolling } = useScroll(options);\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to scroll\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {[StateRef<Target>, boolean]} The state of scrolling\n *\n * @example\n * const { ref, scrolling } = useScroll(() => console.log('callback'));\n */\nexport const useScroll = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onScroll: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onScroll: params[0] }\n ) as UseScrollOptions | undefined;\n\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n const [scrolling, setScrolling] = useState(false);\n const scrollPositionRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = ((target ? getElement(target) : internalRef.current) as Element) ?? window;\n\n const onScrollEnd = (event: Event) => {\n setScrolling(false);\n options?.onStop?.(event);\n };\n\n const onScroll = (event: Event) => {\n setScrolling(true);\n const target = (\n event.target === document ? (event.target as Document).documentElement : event.target\n ) as HTMLElement;\n\n const { display, flexDirection, direction } = target.style;\n const directionMultiplier = direction === 'rtl' ? -1 : 1;\n\n const scrollLeft = target.scrollLeft;\n let scrollTop = target.scrollTop;\n if (target instanceof Document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\n const offset = internalOptionsRef.current?.offset;\n const left = scrollLeft * directionMultiplier <= (offset?.left ?? 0);\n const right =\n scrollLeft * directionMultiplier + target.clientWidth >=\n target.scrollWidth - (offset?.right ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n const top = scrollTop <= (offset?.top ?? 0);\n const bottom =\n scrollTop + target.clientHeight >=\n target.scrollHeight - (offset?.bottom ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\n const isColumnReverse = display === 'flex' && flexDirection === 'column-reverse';\n const isRowReverse = display === 'flex' && flexDirection === 'column-reverse';\n\n const params = {\n x: scrollLeft,\n y: scrollTop,\n directions: {\n left: scrollLeft < scrollPositionRef.current.x,\n right: scrollLeft > scrollPositionRef.current.x,\n top: scrollTop < scrollPositionRef.current.y,\n bottom: scrollTop > scrollPositionRef.current.y\n },\n arrived: {\n left: isRowReverse ? right : left,\n right: isRowReverse ? left : right,\n top: isColumnReverse ? bottom : top,\n bottom: isColumnReverse ? top : bottom\n }\n };\n\n scrollPositionRef.current = { x: scrollLeft, y: scrollTop };\n internalOptionsRef.current?.onScroll?.(params, event);\n };\n\n element.addEventListener('scroll', onScroll);\n element.addEventListener('scrollend', onScrollEnd);\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n };\n }, [target, internalRef.state]);\n\n if (target) return scrolling;\n return {\n ref: internalRef,\n scrolling\n };\n}) as UseScroll;\n"],"names":["ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","params","target","isTarget","options","internalRef","useRefState","internalOptionsRef","useRef","scrolling","setScrolling","useState","scrollPositionRef","useEffect","element","getElement","onScrollEnd","event","onScroll","display","flexDirection","direction","directionMultiplier","scrollLeft","scrollTop","offset","left","right","top","bottom","isColumnReverse","isRowReverse"],"mappings":"mPAUMA,EAAiC,EAoH1BC,EAAa,IAAIC,IAAkB,CAC9C,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EACJF,EACI,OAAOD,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,SAAUA,EAAO,CAAC,CAAA,EACtB,OAAOA,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,SAAUA,EAAO,CAAC,CAAA,EAGtBI,EAAcC,EAAAA,YAAA,EACdC,EAAqBC,EAAAA,OAAOJ,CAAO,EACzCG,EAAmB,QAAUH,EAE7B,KAAM,CAACK,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAC1CC,EAAoBJ,EAAAA,OAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAmE/C,OAjEAK,EAAAA,UAAU,IAAM,CACd,GAAI,CAACX,GAAU,CAACG,EAAY,MAAO,OACnC,MAAMS,GAAYZ,EAASa,EAAAA,WAAWb,CAAM,EAAIG,EAAY,UAAwB,OAE9EW,EAAeC,GAAiB,CACpCP,EAAa,EAAK,EAClBN,GAAS,SAASa,CAAK,CAAA,EAGnBC,EAAYD,GAAiB,CACjCP,EAAa,EAAI,EACjB,MAAMR,EACJe,EAAM,SAAW,SAAYA,EAAM,OAAoB,gBAAkBA,EAAM,OAG3E,CAAE,QAAAE,EAAS,cAAAC,EAAe,UAAAC,CAAA,EAAcnB,EAAO,MAC/CoB,EAAsBD,IAAc,MAAQ,GAAK,EAEjDE,EAAarB,EAAO,WAC1B,IAAIsB,EAAYtB,EAAO,UACnBA,aAAkB,UAAY,CAACsB,IAAWA,EAAY,OAAO,SAAS,KAAK,WAE/E,MAAMC,EAASlB,EAAmB,SAAS,OACrCmB,EAAOH,EAAaD,IAAwBG,GAAQ,MAAQ,GAC5DE,EACJJ,EAAaD,EAAsBpB,EAAO,aAC1CA,EAAO,aAAeuB,GAAQ,OAAS,GAAK1B,EACxC6B,EAAMJ,IAAcC,GAAQ,KAAO,GACnCI,EACJL,EAAYtB,EAAO,cACnBA,EAAO,cAAgBuB,GAAQ,QAAU,GAAK1B,EAE1C+B,EAAkBX,IAAY,QAAUC,IAAkB,iBAC1DW,EAAeZ,IAAY,QAAUC,IAAkB,iBAEvDnB,EAAS,CACb,EAAGsB,EACH,EAAGC,EACH,WAAY,CACV,KAAMD,EAAaX,EAAkB,QAAQ,EAC7C,MAAOW,EAAaX,EAAkB,QAAQ,EAC9C,IAAKY,EAAYZ,EAAkB,QAAQ,EAC3C,OAAQY,EAAYZ,EAAkB,QAAQ,CAAA,EAEhD,QAAS,CACP,KAAMmB,EAAeJ,EAAQD,EAC7B,MAAOK,EAAeL,EAAOC,EAC7B,IAAKG,EAAkBD,EAASD,EAChC,OAAQE,EAAkBF,EAAMC,CAAA,CAClC,EAGFjB,EAAkB,QAAU,CAAE,EAAGW,EAAY,EAAGC,CAAA,EAChDjB,EAAmB,SAAS,WAAWN,EAAQgB,CAAK,CAAA,EAGtD,OAAAH,EAAQ,iBAAiB,SAAUI,CAAQ,EAC3CJ,EAAQ,iBAAiB,YAAaE,CAAW,EAE1C,IAAM,CACXF,EAAQ,oBAAoB,SAAUI,CAAQ,EAC9CJ,EAAQ,oBAAoB,YAAaE,CAAW,CAAA,CACtD,EACC,CAACd,EAAQG,EAAY,KAAK,CAAC,EAE1BH,EAAeO,EACZ,CACL,IAAKJ,EACL,UAAAI,CAAA,CAEJ"}
1
+ {"version":3,"file":"useScroll.cjs","sources":["../../../../src/hooks/useScroll/useScroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n\nexport interface UseScrollOptions {\n /** The on scroll callback */\n onScroll?: (params: UseScrollCallbackParams, event: Event) => void;\n\n /** The on end scroll callback */\n onStop?: (event: Event) => void;\n\n /** Offset arrived states by x pixels. */\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n}\n\nexport interface UseScrollCallbackParams {\n /** The element x position */\n x: number;\n /** The element y position */\n y: number;\n /** State of scroll arrived */\n arrived: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** State of scroll direction */\n directions: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n}\n\n/** The scroll into view params type */\nexport interface ScrollIntoViewParams {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n/** The scroll to params type */\nexport interface ScrollToParams {\n behavior?: ScrollBehavior;\n x: number;\n y: number;\n}\n\n/** The use scroll return type */\nexport interface UseScrollReturn {\n /** The state of scrolling */\n scrolling: boolean;\n /** Function to scroll element into view */\n scrollIntoView: (params?: ScrollIntoViewParams) => void;\n /** Function to scroll element to a specific position */\n scrollTo: (params?: ScrollToParams) => void;\n}\n\nexport interface UseScroll {\n (\n target?: HookTarget,\n callback?: (params: UseScrollCallbackParams, event: Event) => void\n ): UseScrollReturn;\n\n (target?: HookTarget, options?: UseScrollOptions): UseScrollReturn;\n\n <Target extends Element>(\n callback?: (params: UseScrollCallbackParams, event: Event) => void,\n target?: never\n ): UseScrollReturn & { ref: StateRef<Target> };\n\n <Target extends Element>(\n options?: UseScrollOptions,\n target?: never\n ): UseScrollReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useScroll\n * @description - Hook that allows you to control scroll a element\n * @category Sensors\n * @usage low\n *\n * @overload\n * @template Target The target element\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} [target=window] The target element to scroll\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(options);\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to scroll\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(() => console.log('callback'));\n */\nexport const useScroll = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onScroll: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onScroll: params[0] }\n ) as UseScrollOptions | undefined;\n\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n const elementRef = useRef<Element>(null);\n internalOptionsRef.current = options;\n\n const [scrolling, setScrolling] = useState(false);\n const scrollPositionRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = ((target ? getElement(target) : internalRef.current) as Element) ?? window;\n\n elementRef.current = element;\n\n const onScrollEnd = (event: Event) => {\n setScrolling(false);\n options?.onStop?.(event);\n };\n\n const onScroll = (event: Event) => {\n setScrolling(true);\n const target = (\n event.target === document ? (event.target as Document).documentElement : event.target\n ) as HTMLElement;\n\n const { display, flexDirection, direction } = target.style;\n const directionMultiplier = direction === 'rtl' ? -1 : 1;\n\n const scrollLeft = target.scrollLeft;\n let scrollTop = target.scrollTop;\n if (target instanceof Document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\n const offset = internalOptionsRef.current?.offset;\n const left = scrollLeft * directionMultiplier <= (offset?.left ?? 0);\n const right =\n scrollLeft * directionMultiplier + target.clientWidth >=\n target.scrollWidth - (offset?.right ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n const top = scrollTop <= (offset?.top ?? 0);\n const bottom =\n scrollTop + target.clientHeight >=\n target.scrollHeight - (offset?.bottom ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\n const isColumnReverse = display === 'flex' && flexDirection === 'column-reverse';\n const isRowReverse = display === 'flex' && flexDirection === 'column-reverse';\n\n const params = {\n x: scrollLeft,\n y: scrollTop,\n directions: {\n left: scrollLeft < scrollPositionRef.current.x,\n right: scrollLeft > scrollPositionRef.current.x,\n top: scrollTop < scrollPositionRef.current.y,\n bottom: scrollTop > scrollPositionRef.current.y\n },\n arrived: {\n left: isRowReverse ? right : left,\n right: isRowReverse ? left : right,\n top: isColumnReverse ? bottom : top,\n bottom: isColumnReverse ? top : bottom\n }\n };\n\n scrollPositionRef.current = { x: scrollLeft, y: scrollTop };\n internalOptionsRef.current?.onScroll?.(params, event);\n };\n\n element.addEventListener('scroll', onScroll);\n element.addEventListener('scrollend', onScrollEnd);\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n };\n }, [target, internalRef.state]);\n\n const scrollIntoView = (params?: {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n }) => {\n if (!elementRef.current) return;\n\n const { behavior, block, inline } = params ?? {};\n\n elementRef.current.scrollIntoView({\n behavior,\n block,\n inline\n });\n };\n\n const scrollTo = (params?: { x: number; y: number; behavior?: ScrollBehavior }) => {\n if (!elementRef.current) return;\n\n const { x, y, behavior } = params ?? {};\n\n elementRef.current.scrollTo({ left: x, top: y, behavior });\n };\n\n if (target) return { scrollIntoView, scrollTo, scrolling };\n return {\n ref: internalRef,\n scrolling,\n scrollIntoView,\n scrollTo\n };\n}) as UseScroll;\n"],"names":["ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","params","target","isTarget","options","internalRef","useRefState","internalOptionsRef","useRef","elementRef","scrolling","setScrolling","useState","scrollPositionRef","useEffect","element","getElement","onScrollEnd","event","onScroll","display","flexDirection","direction","directionMultiplier","scrollLeft","scrollTop","offset","left","right","top","bottom","isColumnReverse","isRowReverse","scrollIntoView","behavior","block","inline","scrollTo","x","y"],"mappings":"mPAUMA,EAAiC,EAuI1BC,EAAa,IAAIC,IAAkB,CAC9C,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EACJF,EACI,OAAOD,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,SAAUA,EAAO,CAAC,CAAA,EACtB,OAAOA,EAAO,CAAC,GAAM,SACnBA,EAAO,CAAC,EACR,CAAE,SAAUA,EAAO,CAAC,CAAA,EAGtBI,EAAcC,EAAAA,YAAA,EACdC,EAAqBC,EAAAA,OAAOJ,CAAO,EACnCK,EAAaD,EAAAA,OAAgB,IAAI,EACvCD,EAAmB,QAAUH,EAE7B,KAAM,CAACM,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAC1CC,EAAoBL,EAAAA,OAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAE/CM,EAAAA,UAAU,IAAM,CACd,GAAI,CAACZ,GAAU,CAACG,EAAY,MAAO,OACnC,MAAMU,GAAYb,EAASc,EAAAA,WAAWd,CAAM,EAAIG,EAAY,UAAwB,OAEpFI,EAAW,QAAUM,EAErB,MAAME,EAAeC,GAAiB,CACpCP,EAAa,EAAK,EAClBP,GAAS,SAASc,CAAK,CAAA,EAGnBC,EAAYD,GAAiB,CACjCP,EAAa,EAAI,EACjB,MAAMT,EACJgB,EAAM,SAAW,SAAYA,EAAM,OAAoB,gBAAkBA,EAAM,OAG3E,CAAE,QAAAE,EAAS,cAAAC,EAAe,UAAAC,CAAA,EAAcpB,EAAO,MAC/CqB,EAAsBD,IAAc,MAAQ,GAAK,EAEjDE,EAAatB,EAAO,WAC1B,IAAIuB,EAAYvB,EAAO,UACnBA,aAAkB,UAAY,CAACuB,IAAWA,EAAY,OAAO,SAAS,KAAK,WAE/E,MAAMC,EAASnB,EAAmB,SAAS,OACrCoB,EAAOH,EAAaD,IAAwBG,GAAQ,MAAQ,GAC5DE,EACJJ,EAAaD,EAAsBrB,EAAO,aAC1CA,EAAO,aAAewB,GAAQ,OAAS,GAAK3B,EACxC8B,EAAMJ,IAAcC,GAAQ,KAAO,GACnCI,EACJL,EAAYvB,EAAO,cACnBA,EAAO,cAAgBwB,GAAQ,QAAU,GAAK3B,EAE1CgC,EAAkBX,IAAY,QAAUC,IAAkB,iBAC1DW,EAAeZ,IAAY,QAAUC,IAAkB,iBAEvDpB,EAAS,CACb,EAAGuB,EACH,EAAGC,EACH,WAAY,CACV,KAAMD,EAAaX,EAAkB,QAAQ,EAC7C,MAAOW,EAAaX,EAAkB,QAAQ,EAC9C,IAAKY,EAAYZ,EAAkB,QAAQ,EAC3C,OAAQY,EAAYZ,EAAkB,QAAQ,CAAA,EAEhD,QAAS,CACP,KAAMmB,EAAeJ,EAAQD,EAC7B,MAAOK,EAAeL,EAAOC,EAC7B,IAAKG,EAAkBD,EAASD,EAChC,OAAQE,EAAkBF,EAAMC,CAAA,CAClC,EAGFjB,EAAkB,QAAU,CAAE,EAAGW,EAAY,EAAGC,CAAA,EAChDlB,EAAmB,SAAS,WAAWN,EAAQiB,CAAK,CAAA,EAGtD,OAAAH,EAAQ,iBAAiB,SAAUI,CAAQ,EAC3CJ,EAAQ,iBAAiB,YAAaE,CAAW,EAE1C,IAAM,CACXF,EAAQ,oBAAoB,SAAUI,CAAQ,EAC9CJ,EAAQ,oBAAoB,YAAaE,CAAW,CAAA,CACtD,EACC,CAACf,EAAQG,EAAY,KAAK,CAAC,EAE9B,MAAM4B,EAAkBhC,GAIlB,CACJ,GAAI,CAACQ,EAAW,QAAS,OAEzB,KAAM,CAAE,SAAAyB,EAAU,MAAAC,EAAO,OAAAC,CAAA,EAAWnC,GAAU,CAAA,EAE9CQ,EAAW,QAAQ,eAAe,CAChC,SAAAyB,EACA,MAAAC,EACA,OAAAC,CAAA,CACD,CAAA,EAGGC,EAAYpC,GAAiE,CACjF,GAAI,CAACQ,EAAW,QAAS,OAEzB,KAAM,CAAE,EAAA6B,EAAG,EAAAC,EAAG,SAAAL,CAAA,EAAajC,GAAU,CAAA,EAErCQ,EAAW,QAAQ,SAAS,CAAE,KAAM6B,EAAG,IAAKC,EAAG,SAAAL,EAAU,CAAA,EAG3D,OAAIhC,EAAe,CAAE,eAAA+B,EAAgB,SAAAI,EAAU,UAAA3B,CAAA,EACxC,CACL,IAAKL,EACL,UAAAK,EACA,eAAAuB,EACA,SAAAI,CAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("./helpers/createContext/createContext.cjs"),I=require("./helpers/createEventEmitter/createEventEmitter.cjs"),k=require("./helpers/createReactiveContext/createReactiveContext.cjs"),v=require("./helpers/createStore/createStore.cjs"),O=require("./hooks/useAsync/useAsync.cjs"),h=require("./hooks/useLockCallback/useLockCallback.cjs"),A=require("./hooks/useMutation/useMutation.cjs"),D=require("./hooks/useOptimistic/useOptimistic.cjs"),b=require("./hooks/useQuery/useQuery.cjs"),f=require("./hooks/useAudio/useAudio.cjs"),M=require("./hooks/useBattery/useBattery.cjs"),L=require("./hooks/useBluetooth/useBluetooth.cjs"),_=require("./hooks/useBroadcastChannel/useBroadcastChannel.cjs"),N=require("./hooks/useClipboard/useClipboard.cjs"),B=require("./hooks/useCopy/useCopy.cjs"),K=require("./hooks/useCssVar/useCssVar.cjs"),F=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),V=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),U=require("./hooks/useEventSource/useEventSource.cjs"),w=require("./hooks/useEyeDropper/useEyeDropper.cjs"),W=require("./hooks/useFavicon/useFavicon.cjs"),H=require("./hooks/useFps/useFps.cjs"),x=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),Q=require("./hooks/useGeolocation/useGeolocation.cjs"),c=require("./hooks/useMediaControls/useMediaControls.cjs"),z=require("./hooks/useMemory/useMemory.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),G=require("./hooks/useOnline/useOnline.cjs"),X=require("./hooks/useOtpCredential/useOtpCredential.cjs"),Z=require("./hooks/usePermission/usePermission.cjs"),j=require("./hooks/usePictureInPicture/usePictureInPicture.cjs"),J=require("./hooks/usePointerLock/usePointerLock.cjs"),Y=require("./hooks/usePostMessage/usePostMessage.cjs"),$=require("./hooks/useRaf/useRaf.cjs"),ee=require("./hooks/useShare/useShare.cjs"),l=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),se=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),ue=require("./hooks/useVibrate/useVibrate.cjs"),re=require("./hooks/useVirtualKeyboard/useVirtualKeyboard.cjs"),te=require("./hooks/useWakeLock/useWakeLock.cjs"),oe=require("./hooks/useWebSocket/useWebSocket.cjs"),ie=require("./hooks/useLogger/useLogger.cjs"),ne=require("./hooks/useRenderCount/useRenderCount.cjs"),ce=require("./hooks/useRenderInfo/useRenderInfo.cjs"),ae=require("./hooks/useRerender/useRerender.cjs"),le=require("./hooks/useActiveElement/useActiveElement.cjs"),Se=require("./hooks/useAutoScroll/useAutoScroll.cjs"),qe=require("./hooks/useClickOutside/useClickOutside.cjs"),S=require("./hooks/useDoubleClick/useDoubleClick.cjs"),de=require("./hooks/useDropZone/useDropZone.cjs"),ge=require("./hooks/useFileDialog/useFileDialog.cjs"),Ee=require("./hooks/useFocus/useFocus.cjs"),Te=require("./hooks/useHover/useHover.cjs"),Pe=require("./hooks/useImage/useImage.cjs"),Ce=require("./hooks/useLongPress/useLongPress.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),Re=require("./hooks/useRightClick/useRightClick.cjs"),q=require("./hooks/useScript/useScript.cjs"),me=require("./hooks/useSticky/useSticky.cjs"),pe=require("./hooks/useTextDirection/useTextDirection.cjs"),ye=require("./hooks/useFul/useFul.cjs"),Ie=require("./hooks/useLess/useLess.cjs"),ke=require("./hooks/useOnce/useOnce.cjs"),ve=require("./hooks/useDidUpdate/useDidUpdate.cjs"),Oe=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),he=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),Ae=require("./hooks/useMount/useMount.cjs"),d=require("./hooks/useShallowEffect/useShallowEffect.cjs"),De=require("./hooks/useUnmount/useUnmount.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),be=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),fe=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),Me=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),Le=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),_e=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),Ne=require("./hooks/useElementSize/useElementSize.cjs"),Be=require("./hooks/useEventListener/useEventListener.cjs"),g=require("./hooks/useHotkeys/useHotkeys.cjs"),Ke=require("./hooks/useIdle/useIdle.cjs"),Fe=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),Ve=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),Ue=require("./hooks/useKeyboard/useKeyboard.cjs"),we=require("./hooks/useKeyPress/useKeyPress.cjs"),We=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),He=require("./hooks/useKeysPressed/useKeysPressed.cjs"),xe=require("./hooks/useLockScroll/useLockScroll.cjs"),Qe=require("./hooks/useMeasure/useMeasure.cjs"),ze=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Ge=require("./hooks/useMouse/useMouse.cjs"),Xe=require("./hooks/useMutationObserver/useMutationObserver.cjs"),Ze=require("./hooks/useOrientation/useOrientation.cjs"),je=require("./hooks/usePageLeave/usePageLeave.cjs"),Je=require("./hooks/useParallax/useParallax.cjs"),Ye=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),$e=require("./hooks/useResizeObserver/useResizeObserver.cjs"),es=require("./hooks/useScroll/useScroll.cjs"),ss=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),us=require("./hooks/useScrollTo/useScrollTo.cjs"),E=require("./hooks/useTextSelection/useTextSelection.cjs"),rs=require("./hooks/useWindowEvent/useWindowEvent.cjs"),ts=require("./hooks/useWindowFocus/useWindowFocus.cjs"),T=require("./hooks/useWindowScroll/useWindowScroll.cjs"),os=require("./hooks/useWindowSize/useWindowSize.cjs"),is=require("./hooks/useBoolean/useBoolean.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),P=require("./hooks/useCookies/useCookies.cjs"),ns=require("./hooks/useCounter/useCounter.cjs"),cs=require("./hooks/useDefault/useDefault.cjs"),as=require("./hooks/useDisclosure/useDisclosure.cjs"),ls=require("./hooks/useField/useField.cjs"),Ss=require("./hooks/useHash/useHash.cjs"),qs=require("./hooks/useList/useList.cjs"),ds=require("./hooks/useLocalStorage/useLocalStorage.cjs"),gs=require("./hooks/useMap/useMap.cjs"),t=require("./hooks/useMergedRef/useMergedRef.cjs"),Es=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),Ts=require("./hooks/useQueue/useQueue.cjs"),Ps=require("./hooks/useRafState/useRafState.cjs"),Cs=require("./hooks/useRefState/useRefState.cjs"),Rs=require("./hooks/useSessionStorage/useSessionStorage.cjs"),ms=require("./hooks/useSet/useSet.cjs"),C=require("./hooks/useStateHistory/useStateHistory.cjs"),ps=require("./hooks/useStep/useStep.cjs"),o=require("./hooks/useStorage/useStorage.cjs"),ys=require("./hooks/useToggle/useToggle.cjs"),u=require("./hooks/useUrlSearchParam/useUrlSearchParam.cjs"),Is=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),ks=require("./hooks/useWizard/useWizard.cjs"),vs=require("./hooks/useInterval/useInterval.cjs"),Os=require("./hooks/useStopwatch/useStopwatch.cjs"),hs=require("./hooks/useTime/useTime.cjs"),As=require("./hooks/useTimeout/useTimeout.cjs"),R=require("./hooks/useTimer/useTimer.cjs"),Ds=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),m=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),bs=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),fs=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Ms=require("./hooks/usePreferredDark/usePreferredDark.cjs"),Ls=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),_s=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Ns=require("./hooks/useConst/useConst.cjs"),Bs=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),Ks=require("./hooks/useDebounceState/useDebounceState.cjs"),Fs=require("./hooks/useDebounceValue/useDebounceValue.cjs"),Vs=require("./hooks/useEvent/useEvent.cjs"),Us=require("./hooks/useLastChanged/useLastChanged.cjs"),ws=require("./hooks/useLatest/useLatest.cjs"),Ws=require("./hooks/usePrevious/usePrevious.cjs"),Hs=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),xs=require("./hooks/useThrottleState/useThrottleState.cjs"),Qs=require("./hooks/useThrottleValue/useThrottleValue.cjs"),p=require("./utils/helpers/copy.cjs"),zs=require("./utils/helpers/debounce.cjs"),Gs=require("./utils/helpers/getDate.cjs"),i=require("./utils/helpers/getElement.cjs"),Xs=require("./utils/helpers/getRetry.cjs"),Zs=require("./utils/helpers/isTarget.cjs"),js=require("./utils/helpers/throttle.cjs");exports.createContext=y.createContext;exports.createEventEmitter=I.createEventEmitter;exports.createReactiveContext=k.createReactiveContext;exports.createStore=v.createStore;exports.useAsync=O.useAsync;exports.useLockCallback=h.useLockCallback;exports.useMutation=A.useMutation;exports.useOptimistic=D.useOptimistic;exports.useQuery=b.useQuery;exports.useAudio=f.useAudio;exports.useBattery=M.useBattery;exports.useBluetooth=L.useBluetooth;exports.useBroadcastChannel=_.useBroadcastChannel;exports.useClipboard=N.useClipboard;exports.useCopy=B.useCopy;exports.useCssVar=K.useCssVar;exports.useDisplayMedia=F.useDisplayMedia;exports.useDocumentTitle=V.useDocumentTitle;exports.useEventSource=U.useEventSource;exports.useEyeDropper=w.useEyeDropper;exports.useFavicon=W.useFavicon;exports.useFps=H.useFps;exports.useFullscreen=x.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=Q.useGeolocation;exports.timeRangeToArray=c.timeRangeToArray;exports.useMediaControls=c.useMediaControls;exports.useMemory=z.useMemory;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOnline=G.useOnline;exports.useOtpCredential=X.useOtpCredential;exports.usePermission=Z.usePermission;exports.usePictureInPicture=j.usePictureInPicture;exports.usePointerLock=J.usePointerLock;exports.usePostMessage=Y.usePostMessage;exports.useRaf=$.useRaf;exports.useShare=ee.useShare;exports.getSpeechRecognition=l.getSpeechRecognition;exports.useSpeechRecognition=l.useSpeechRecognition;exports.useSpeechSynthesis=se.useSpeechSynthesis;exports.useVibrate=ue.useVibrate;exports.useVirtualKeyboard=re.useVirtualKeyboard;exports.useWakeLock=te.useWakeLock;exports.useWebSocket=oe.useWebSocket;exports.useLogger=ie.useLogger;exports.useRenderCount=ne.useRenderCount;exports.useRenderInfo=ce.useRenderInfo;exports.useRerender=ae.useRerender;exports.useActiveElement=le.useActiveElement;exports.useAutoScroll=Se.useAutoScroll;exports.useClickOutside=qe.useClickOutside;exports.DEFAULT_THRESHOLD_TIME=S.DEFAULT_THRESHOLD_TIME;exports.useDoubleClick=S.useDoubleClick;exports.useDropZone=de.useDropZone;exports.useFileDialog=ge.useFileDialog;exports.useFocus=Ee.useFocus;exports.useHover=Te.useHover;exports.useImage=Pe.useImage;exports.useLongPress=Ce.useLongPress;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useRightClick=Re.useRightClick;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=q.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=q.useScript;exports.useSticky=me.useSticky;exports.useTextDirection=pe.useTextDirection;exports.useFul=ye.useFul;exports.useLess=Ie.useLess;exports.useOnce=ke.useOnce;exports.useDidUpdate=ve.useDidUpdate;exports.useIsFirstRender=Oe.useIsFirstRender;exports.useIsomorphicLayoutEffect=he.useIsomorphicLayoutEffect;exports.useMount=Ae.useMount;exports.deepEqual=d.deepEqual;exports.useShallowEffect=d.useShallowEffect;exports.useUnmount=De.useUnmount;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useDeviceMotion=be.useDeviceMotion;exports.useDeviceOrientation=fe.useDeviceOrientation;exports.useDevicePixelRatio=Me.useDevicePixelRatio;exports.useDocumentEvent=Le.useDocumentEvent;exports.useDocumentVisibility=_e.useDocumentVisibility;exports.useElementSize=Ne.useElementSize;exports.useEventListener=Be.useEventListener;exports.isHotkeyMatch=g.isHotkeyMatch;exports.useHotkeys=g.useHotkeys;exports.useIdle=Ke.useIdle;exports.useInfiniteScroll=Fe.useInfiniteScroll;exports.useIntersectionObserver=Ve.useIntersectionObserver;exports.useKeyboard=Ue.useKeyboard;exports.useKeyPress=we.useKeyPress;exports.useKeyPressEvent=We.useKeyPressEvent;exports.useKeysPressed=He.useKeysPressed;exports.useLockScroll=xe.useLockScroll;exports.useMeasure=Qe.useMeasure;exports.useMediaQuery=ze.useMediaQuery;exports.useMouse=Ge.useMouse;exports.useMutationObserver=Xe.useMutationObserver;exports.useOrientation=Ze.useOrientation;exports.usePageLeave=je.usePageLeave;exports.useParallax=Je.useParallax;exports.usePerformanceObserver=Ye.usePerformanceObserver;exports.useResizeObserver=$e.useResizeObserver;exports.useScroll=es.useScroll;exports.useScrollIntoView=ss.useScrollIntoView;exports.useScrollTo=us.useScrollTo;exports.getRangesSelection=E.getRangesSelection;exports.useTextSelection=E.useTextSelection;exports.useWindowEvent=rs.useWindowEvent;exports.useWindowFocus=ts.useWindowFocus;exports.scrollTo=T.scrollTo;exports.useWindowScroll=T.useWindowScroll;exports.useWindowSize=os.useWindowSize;exports.useBoolean=is.useBoolean;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=P.clearCookies;exports.useCookies=P.useCookies;exports.useCounter=ns.useCounter;exports.useDefault=cs.useDefault;exports.useDisclosure=as.useDisclosure;exports.useField=ls.useField;exports.useHash=Ss.useHash;exports.useList=qs.useList;exports.useLocalStorage=ds.useLocalStorage;exports.useMap=gs.useMap;exports.assignRef=t.assignRef;exports.mergeRefs=t.mergeRefs;exports.useMergedRef=t.useMergedRef;exports.useOffsetPagination=Es.useOffsetPagination;exports.useQueue=Ts.useQueue;exports.useRafState=Ps.useRafState;exports.useRefState=Cs.useRefState;exports.useSessionStorage=Rs.useSessionStorage;exports.useSet=ms.useSet;exports.stateHistoryReducer=C.stateHistoryReducer;exports.useStateHistory=C.useStateHistory;exports.useStep=ps.useStep;exports.STORAGE_EVENT=o.STORAGE_EVENT;exports.dispatchStorageEvent=o.dispatchStorageEvent;exports.useStorage=o.useStorage;exports.useToggle=ys.useToggle;exports.URL_SEARCH_PARAMS_EVENT=u.URL_SEARCH_PARAMS_EVENT;exports.createQueryString=u.createQueryString;exports.dispatchUrlSearchParamsEvent=u.dispatchUrlSearchParamsEvent;exports.getUrlSearchParams=u.getUrlSearchParams;exports.useUrlSearchParam=u.useUrlSearchParam;exports.useUrlSearchParams=Is.useUrlSearchParams;exports.useWizard=ks.useWizard;exports.useInterval=vs.useInterval;exports.useStopwatch=Os.useStopwatch;exports.useTime=hs.useTime;exports.useTimeout=As.useTimeout;exports.getTimeFromSeconds=R.getTimeFromSeconds;exports.useTimer=R.useTimer;exports.useBrowserLanguage=Ds.useBrowserLanguage;exports.getOperatingSystem=m.getOperatingSystem;exports.useOperatingSystem=m.useOperatingSystem;exports.usePreferredColorScheme=bs.usePreferredColorScheme;exports.usePreferredContrast=fs.usePreferredContrast;exports.usePreferredDark=Ms.usePreferredDark;exports.usePreferredLanguages=Ls.usePreferredLanguages;exports.usePreferredReducedMotion=_s.usePreferredReducedMotion;exports.useConst=Ns.useConst;exports.useDebounceCallback=Bs.useDebounceCallback;exports.useDebounceState=Ks.useDebounceState;exports.useDebounceValue=Fs.useDebounceValue;exports.useEvent=Vs.useEvent;exports.useLastChanged=Us.useLastChanged;exports.useLatest=ws.useLatest;exports.usePrevious=Ws.usePrevious;exports.useThrottleCallback=Hs.useThrottleCallback;exports.useThrottleState=xs.useThrottleState;exports.useThrottleValue=Qs.useThrottleValue;exports.copy=p.copy;exports.legacyCopyToClipboard=p.legacyCopyToClipboard;exports.debounce=zs.debounce;exports.getDate=Gs.getDate;exports.getElement=i.getElement;exports.target=i.target;exports.targetSymbol=i.targetSymbol;exports.getRetry=Xs.getRetry;exports.isTarget=Zs.isTarget;exports.throttle=js.throttle;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("./helpers/createContext/createContext.cjs"),I=require("./helpers/createEventEmitter/createEventEmitter.cjs"),k=require("./helpers/createReactiveContext/createReactiveContext.cjs"),v=require("./helpers/createStore/createStore.cjs"),O=require("./hooks/useAsync/useAsync.cjs"),h=require("./hooks/useLockCallback/useLockCallback.cjs"),A=require("./hooks/useMutation/useMutation.cjs"),D=require("./hooks/useOptimistic/useOptimistic.cjs"),b=require("./hooks/useQuery/useQuery.cjs"),f=require("./hooks/useAudio/useAudio.cjs"),M=require("./hooks/useBattery/useBattery.cjs"),L=require("./hooks/useBluetooth/useBluetooth.cjs"),_=require("./hooks/useBroadcastChannel/useBroadcastChannel.cjs"),N=require("./hooks/useClipboard/useClipboard.cjs"),B=require("./hooks/useCopy/useCopy.cjs"),K=require("./hooks/useCssVar/useCssVar.cjs"),F=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),V=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),U=require("./hooks/useEventSource/useEventSource.cjs"),w=require("./hooks/useEyeDropper/useEyeDropper.cjs"),W=require("./hooks/useFavicon/useFavicon.cjs"),H=require("./hooks/useFps/useFps.cjs"),x=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),Q=require("./hooks/useGeolocation/useGeolocation.cjs"),c=require("./hooks/useMediaControls/useMediaControls.cjs"),z=require("./hooks/useMemory/useMemory.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),G=require("./hooks/useOnline/useOnline.cjs"),X=require("./hooks/useOtpCredential/useOtpCredential.cjs"),Z=require("./hooks/usePermission/usePermission.cjs"),j=require("./hooks/usePictureInPicture/usePictureInPicture.cjs"),J=require("./hooks/usePointerLock/usePointerLock.cjs"),Y=require("./hooks/usePostMessage/usePostMessage.cjs"),$=require("./hooks/useRaf/useRaf.cjs"),ee=require("./hooks/useShare/useShare.cjs"),l=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),se=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),ue=require("./hooks/useVibrate/useVibrate.cjs"),re=require("./hooks/useVirtualKeyboard/useVirtualKeyboard.cjs"),te=require("./hooks/useWakeLock/useWakeLock.cjs"),oe=require("./hooks/useWebSocket/useWebSocket.cjs"),ie=require("./hooks/useLogger/useLogger.cjs"),ne=require("./hooks/useRenderCount/useRenderCount.cjs"),ce=require("./hooks/useRenderInfo/useRenderInfo.cjs"),ae=require("./hooks/useRerender/useRerender.cjs"),le=require("./hooks/useActiveElement/useActiveElement.cjs"),Se=require("./hooks/useAutoScroll/useAutoScroll.cjs"),qe=require("./hooks/useClickOutside/useClickOutside.cjs"),S=require("./hooks/useDoubleClick/useDoubleClick.cjs"),de=require("./hooks/useDropZone/useDropZone.cjs"),ge=require("./hooks/useFileDialog/useFileDialog.cjs"),Ee=require("./hooks/useFocus/useFocus.cjs"),Te=require("./hooks/useHover/useHover.cjs"),Pe=require("./hooks/useImage/useImage.cjs"),Ce=require("./hooks/useLongPress/useLongPress.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),Re=require("./hooks/useRightClick/useRightClick.cjs"),q=require("./hooks/useScript/useScript.cjs"),me=require("./hooks/useSticky/useSticky.cjs"),pe=require("./hooks/useTextDirection/useTextDirection.cjs"),ye=require("./hooks/useFul/useFul.cjs"),Ie=require("./hooks/useLess/useLess.cjs"),ke=require("./hooks/useOnce/useOnce.cjs"),ve=require("./hooks/useDidUpdate/useDidUpdate.cjs"),Oe=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),he=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),Ae=require("./hooks/useMount/useMount.cjs"),d=require("./hooks/useShallowEffect/useShallowEffect.cjs"),De=require("./hooks/useUnmount/useUnmount.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),be=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),fe=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),Me=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),Le=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),_e=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),Ne=require("./hooks/useElementSize/useElementSize.cjs"),Be=require("./hooks/useEventListener/useEventListener.cjs"),g=require("./hooks/useHotkeys/useHotkeys.cjs"),Ke=require("./hooks/useIdle/useIdle.cjs"),Fe=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),Ve=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),Ue=require("./hooks/useKeyboard/useKeyboard.cjs"),we=require("./hooks/useKeyPress/useKeyPress.cjs"),We=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),He=require("./hooks/useKeysPressed/useKeysPressed.cjs"),xe=require("./hooks/useLockScroll/useLockScroll.cjs"),Qe=require("./hooks/useMeasure/useMeasure.cjs"),ze=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Ge=require("./hooks/useMouse/useMouse.cjs"),Xe=require("./hooks/useMutationObserver/useMutationObserver.cjs"),Ze=require("./hooks/useOrientation/useOrientation.cjs"),je=require("./hooks/usePageLeave/usePageLeave.cjs"),Je=require("./hooks/useParallax/useParallax.cjs"),Ye=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),$e=require("./hooks/useResizeObserver/useResizeObserver.cjs"),es=require("./hooks/useScroll/useScroll.cjs"),ss=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),us=require("./hooks/useScrollTo/useScrollTo.cjs"),E=require("./hooks/useTextSelection/useTextSelection.cjs"),rs=require("./hooks/useWindowEvent/useWindowEvent.cjs"),ts=require("./hooks/useWindowFocus/useWindowFocus.cjs"),T=require("./hooks/useWindowScroll/useWindowScroll.cjs"),os=require("./hooks/useWindowSize/useWindowSize.cjs"),is=require("./hooks/useBoolean/useBoolean.cjs"),ns=require("./hooks/useControllableState/useControllableState.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),P=require("./hooks/useCookies/useCookies.cjs"),cs=require("./hooks/useCounter/useCounter.cjs"),as=require("./hooks/useDefault/useDefault.cjs"),ls=require("./hooks/useDisclosure/useDisclosure.cjs"),Ss=require("./hooks/useField/useField.cjs"),qs=require("./hooks/useHash/useHash.cjs"),ds=require("./hooks/useList/useList.cjs"),gs=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Es=require("./hooks/useMap/useMap.cjs"),t=require("./hooks/useMergedRef/useMergedRef.cjs"),Ts=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),Ps=require("./hooks/useQueue/useQueue.cjs"),Cs=require("./hooks/useRafState/useRafState.cjs"),Rs=require("./hooks/useRefState/useRefState.cjs"),ms=require("./hooks/useSessionStorage/useSessionStorage.cjs"),ps=require("./hooks/useSet/useSet.cjs"),C=require("./hooks/useStateHistory/useStateHistory.cjs"),ys=require("./hooks/useStep/useStep.cjs"),o=require("./hooks/useStorage/useStorage.cjs"),Is=require("./hooks/useToggle/useToggle.cjs"),u=require("./hooks/useUrlSearchParam/useUrlSearchParam.cjs"),ks=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),vs=require("./hooks/useWizard/useWizard.cjs"),Os=require("./hooks/useInterval/useInterval.cjs"),hs=require("./hooks/useStopwatch/useStopwatch.cjs"),As=require("./hooks/useTime/useTime.cjs"),Ds=require("./hooks/useTimeout/useTimeout.cjs"),R=require("./hooks/useTimer/useTimer.cjs"),bs=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),m=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),fs=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Ms=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Ls=require("./hooks/usePreferredDark/usePreferredDark.cjs"),_s=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Ns=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Bs=require("./hooks/useConst/useConst.cjs"),Ks=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),Fs=require("./hooks/useDebounceState/useDebounceState.cjs"),Vs=require("./hooks/useDebounceValue/useDebounceValue.cjs"),Us=require("./hooks/useEvent/useEvent.cjs"),ws=require("./hooks/useLastChanged/useLastChanged.cjs"),Ws=require("./hooks/useLatest/useLatest.cjs"),Hs=require("./hooks/usePrevious/usePrevious.cjs"),xs=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),Qs=require("./hooks/useThrottleState/useThrottleState.cjs"),zs=require("./hooks/useThrottleValue/useThrottleValue.cjs"),p=require("./utils/helpers/copy.cjs"),Gs=require("./utils/helpers/debounce.cjs"),Xs=require("./utils/helpers/getDate.cjs"),i=require("./utils/helpers/getElement.cjs"),Zs=require("./utils/helpers/getRetry.cjs"),js=require("./utils/helpers/isTarget.cjs"),Js=require("./utils/helpers/throttle.cjs");exports.createContext=y.createContext;exports.createEventEmitter=I.createEventEmitter;exports.createReactiveContext=k.createReactiveContext;exports.createStore=v.createStore;exports.useAsync=O.useAsync;exports.useLockCallback=h.useLockCallback;exports.useMutation=A.useMutation;exports.useOptimistic=D.useOptimistic;exports.useQuery=b.useQuery;exports.useAudio=f.useAudio;exports.useBattery=M.useBattery;exports.useBluetooth=L.useBluetooth;exports.useBroadcastChannel=_.useBroadcastChannel;exports.useClipboard=N.useClipboard;exports.useCopy=B.useCopy;exports.useCssVar=K.useCssVar;exports.useDisplayMedia=F.useDisplayMedia;exports.useDocumentTitle=V.useDocumentTitle;exports.useEventSource=U.useEventSource;exports.useEyeDropper=w.useEyeDropper;exports.useFavicon=W.useFavicon;exports.useFps=H.useFps;exports.useFullscreen=x.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=Q.useGeolocation;exports.timeRangeToArray=c.timeRangeToArray;exports.useMediaControls=c.useMediaControls;exports.useMemory=z.useMemory;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOnline=G.useOnline;exports.useOtpCredential=X.useOtpCredential;exports.usePermission=Z.usePermission;exports.usePictureInPicture=j.usePictureInPicture;exports.usePointerLock=J.usePointerLock;exports.usePostMessage=Y.usePostMessage;exports.useRaf=$.useRaf;exports.useShare=ee.useShare;exports.getSpeechRecognition=l.getSpeechRecognition;exports.useSpeechRecognition=l.useSpeechRecognition;exports.useSpeechSynthesis=se.useSpeechSynthesis;exports.useVibrate=ue.useVibrate;exports.useVirtualKeyboard=re.useVirtualKeyboard;exports.useWakeLock=te.useWakeLock;exports.useWebSocket=oe.useWebSocket;exports.useLogger=ie.useLogger;exports.useRenderCount=ne.useRenderCount;exports.useRenderInfo=ce.useRenderInfo;exports.useRerender=ae.useRerender;exports.useActiveElement=le.useActiveElement;exports.useAutoScroll=Se.useAutoScroll;exports.useClickOutside=qe.useClickOutside;exports.DEFAULT_THRESHOLD_TIME=S.DEFAULT_THRESHOLD_TIME;exports.useDoubleClick=S.useDoubleClick;exports.useDropZone=de.useDropZone;exports.useFileDialog=ge.useFileDialog;exports.useFocus=Ee.useFocus;exports.useHover=Te.useHover;exports.useImage=Pe.useImage;exports.useLongPress=Ce.useLongPress;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useRightClick=Re.useRightClick;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=q.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=q.useScript;exports.useSticky=me.useSticky;exports.useTextDirection=pe.useTextDirection;exports.useFul=ye.useFul;exports.useLess=Ie.useLess;exports.useOnce=ke.useOnce;exports.useDidUpdate=ve.useDidUpdate;exports.useIsFirstRender=Oe.useIsFirstRender;exports.useIsomorphicLayoutEffect=he.useIsomorphicLayoutEffect;exports.useMount=Ae.useMount;exports.deepEqual=d.deepEqual;exports.useShallowEffect=d.useShallowEffect;exports.useUnmount=De.useUnmount;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useDeviceMotion=be.useDeviceMotion;exports.useDeviceOrientation=fe.useDeviceOrientation;exports.useDevicePixelRatio=Me.useDevicePixelRatio;exports.useDocumentEvent=Le.useDocumentEvent;exports.useDocumentVisibility=_e.useDocumentVisibility;exports.useElementSize=Ne.useElementSize;exports.useEventListener=Be.useEventListener;exports.isHotkeyMatch=g.isHotkeyMatch;exports.useHotkeys=g.useHotkeys;exports.useIdle=Ke.useIdle;exports.useInfiniteScroll=Fe.useInfiniteScroll;exports.useIntersectionObserver=Ve.useIntersectionObserver;exports.useKeyboard=Ue.useKeyboard;exports.useKeyPress=we.useKeyPress;exports.useKeyPressEvent=We.useKeyPressEvent;exports.useKeysPressed=He.useKeysPressed;exports.useLockScroll=xe.useLockScroll;exports.useMeasure=Qe.useMeasure;exports.useMediaQuery=ze.useMediaQuery;exports.useMouse=Ge.useMouse;exports.useMutationObserver=Xe.useMutationObserver;exports.useOrientation=Ze.useOrientation;exports.usePageLeave=je.usePageLeave;exports.useParallax=Je.useParallax;exports.usePerformanceObserver=Ye.usePerformanceObserver;exports.useResizeObserver=$e.useResizeObserver;exports.useScroll=es.useScroll;exports.useScrollIntoView=ss.useScrollIntoView;exports.useScrollTo=us.useScrollTo;exports.getRangesSelection=E.getRangesSelection;exports.useTextSelection=E.useTextSelection;exports.useWindowEvent=rs.useWindowEvent;exports.useWindowFocus=ts.useWindowFocus;exports.scrollTo=T.scrollTo;exports.useWindowScroll=T.useWindowScroll;exports.useWindowSize=os.useWindowSize;exports.useBoolean=is.useBoolean;exports.useControllableState=ns.useControllableState;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=P.clearCookies;exports.useCookies=P.useCookies;exports.useCounter=cs.useCounter;exports.useDefault=as.useDefault;exports.useDisclosure=ls.useDisclosure;exports.useField=Ss.useField;exports.useHash=qs.useHash;exports.useList=ds.useList;exports.useLocalStorage=gs.useLocalStorage;exports.useMap=Es.useMap;exports.assignRef=t.assignRef;exports.mergeRefs=t.mergeRefs;exports.useMergedRef=t.useMergedRef;exports.useOffsetPagination=Ts.useOffsetPagination;exports.useQueue=Ps.useQueue;exports.useRafState=Cs.useRafState;exports.useRefState=Rs.useRefState;exports.useSessionStorage=ms.useSessionStorage;exports.useSet=ps.useSet;exports.stateHistoryReducer=C.stateHistoryReducer;exports.useStateHistory=C.useStateHistory;exports.useStep=ys.useStep;exports.STORAGE_EVENT=o.STORAGE_EVENT;exports.dispatchStorageEvent=o.dispatchStorageEvent;exports.useStorage=o.useStorage;exports.useToggle=Is.useToggle;exports.URL_SEARCH_PARAMS_EVENT=u.URL_SEARCH_PARAMS_EVENT;exports.createQueryString=u.createQueryString;exports.dispatchUrlSearchParamsEvent=u.dispatchUrlSearchParamsEvent;exports.getUrlSearchParams=u.getUrlSearchParams;exports.useUrlSearchParam=u.useUrlSearchParam;exports.useUrlSearchParams=ks.useUrlSearchParams;exports.useWizard=vs.useWizard;exports.useInterval=Os.useInterval;exports.useStopwatch=hs.useStopwatch;exports.useTime=As.useTime;exports.useTimeout=Ds.useTimeout;exports.getTimeFromSeconds=R.getTimeFromSeconds;exports.useTimer=R.useTimer;exports.useBrowserLanguage=bs.useBrowserLanguage;exports.getOperatingSystem=m.getOperatingSystem;exports.useOperatingSystem=m.useOperatingSystem;exports.usePreferredColorScheme=fs.usePreferredColorScheme;exports.usePreferredContrast=Ms.usePreferredContrast;exports.usePreferredDark=Ls.usePreferredDark;exports.usePreferredLanguages=_s.usePreferredLanguages;exports.usePreferredReducedMotion=Ns.usePreferredReducedMotion;exports.useConst=Bs.useConst;exports.useDebounceCallback=Ks.useDebounceCallback;exports.useDebounceState=Fs.useDebounceState;exports.useDebounceValue=Vs.useDebounceValue;exports.useEvent=Us.useEvent;exports.useLastChanged=ws.useLastChanged;exports.useLatest=Ws.useLatest;exports.usePrevious=Hs.usePrevious;exports.useThrottleCallback=xs.useThrottleCallback;exports.useThrottleState=Qs.useThrottleState;exports.useThrottleValue=zs.useThrottleValue;exports.copy=p.copy;exports.legacyCopyToClipboard=p.legacyCopyToClipboard;exports.debounce=Gs.debounce;exports.getDate=Xs.getDate;exports.getElement=i.getElement;exports.target=i.target;exports.targetSymbol=i.targetSymbol;exports.getRetry=Zs.getRetry;exports.isTarget=js.isTarget;exports.throttle=Js.throttle;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,17 @@
1
+ import { useState as C, useRef as S, useCallback as d } from "react";
2
+ function v(l) {
3
+ const { value: o, initialValue: c, onChange: r } = l, t = o !== void 0, [u, i] = C(c), a = S(r);
4
+ a.current = r;
5
+ const e = t ? o : u, f = d(
6
+ (n) => {
7
+ const s = typeof n == "function" ? n(e) : n;
8
+ t || i(s), a.current?.(s);
9
+ },
10
+ [e, t]
11
+ );
12
+ return [e, f, t];
13
+ }
14
+ export {
15
+ v as useControllableState
16
+ };
17
+ //# sourceMappingURL=useControllableState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllableState.mjs","sources":["../../../../src/hooks/useControllableState/useControllableState.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\n/** The use controllable state options type */\nexport interface UseControllableStateOptions<Value> {\n /** The initial value for uncontrolled state */\n initialValue?: Value;\n /** The controlled value */\n value?: Value;\n /** The onChange callback */\n onChange?: (value: Value) => void;\n}\n\n/** The use controllable state return type */\nexport type UseControllableStateReturn<Value> = [\n /** Current value */\n value: Value,\n /** Setter function that works with both controlled and uncontrolled state */\n setValue: (nextValue: ((prevValue: Value) => Value) | Value) => void,\n /** Whether the state is controlled */\n isControlled: boolean\n];\n\n/**\n * @name useControllableState\n * @description - Hook that manages both controlled and uncontrolled state patterns\n * @category State\n * @usage medium\n *\n * @template Value The type of the state value\n * @param {Value} [options.value] The controlled value. When provided, the component becomes controlled\n * @param {Value} [options.initialValue] The initial value for uncontrolled state\n * @param {(value: Value) => void} [options.onChange] The callback function called when the state changes\n * @returns {UseControllableStateReturn<Value>} A tuple containing the current value, setter function, and controlled flag\n *\n * @example\n * const [value, setValue, isControlled] = useControllableState({ initialValue: 'initial' });\n */\nexport function useControllableState<Value>(\n options: UseControllableStateOptions<Value>\n): UseControllableStateReturn<Value> {\n const { value, initialValue, onChange } = options;\n const isControlled = value !== undefined;\n\n const [internalState, setInternalState] = useState<Value>(initialValue as Value);\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const currentValue = isControlled ? value : internalState;\n\n const setValue = useCallback(\n (nextValue: ((prevValue: Value) => Value) | Value) => {\n const resolvedValue =\n typeof nextValue === 'function'\n ? (nextValue as (prevValue: Value) => Value)(currentValue)\n : nextValue;\n\n if (!isControlled) setInternalState(resolvedValue);\n\n onChangeRef.current?.(resolvedValue);\n },\n [currentValue, isControlled]\n );\n\n return [currentValue, setValue, isControlled];\n}\n"],"names":["useControllableState","options","value","initialValue","onChange","isControlled","internalState","setInternalState","useState","onChangeRef","useRef","currentValue","setValue","useCallback","nextValue","resolvedValue"],"mappings":";AAqCO,SAASA,EACdC,GACmC;AACnC,QAAM,EAAE,OAAAC,GAAO,cAAAC,GAAc,UAAAC,EAAA,IAAaH,GACpCI,IAAeH,MAAU,QAEzB,CAACI,GAAeC,CAAgB,IAAIC,EAAgBL,CAAqB,GAEzEM,IAAcC,EAAON,CAAQ;AACnC,EAAAK,EAAY,UAAUL;AAEtB,QAAMO,IAAeN,IAAeH,IAAQI,GAEtCM,IAAWC;AAAA,IACf,CAACC,MAAqD;AACpD,YAAMC,IACJ,OAAOD,KAAc,aAChBA,EAA0CH,CAAY,IACvDG;AAEN,MAAKT,KAAcE,EAAiBQ,CAAa,GAEjDN,EAAY,UAAUM,CAAa;AAAA,IAAA;AAAA,IAErC,CAACJ,GAAcN,CAAY;AAAA,EAAA;AAG7B,SAAO,CAACM,GAAcC,GAAUP,CAAY;AAC9C;"}
@@ -1,47 +1,65 @@
1
- import { useRef as T, useState as _, useEffect as j } from "react";
2
- import { useRefState as A } from "../useRefState/useRefState.mjs";
3
- import { isTarget as I } from "../../utils/helpers/isTarget.mjs";
4
- import { getElement as O } from "../../utils/helpers/getElement.mjs";
5
- const w = 1, V = (...t) => {
6
- const r = I(t[0]) ? t[0] : void 0, u = r ? typeof t[1] == "object" ? t[1] : { onScroll: t[1] } : typeof t[0] == "object" ? t[0] : { onScroll: t[0] }, s = A(), d = T(u);
7
- d.current = u;
8
- const [m, g] = _(!1), l = T({ x: 0, y: 0 });
9
- return j(() => {
10
- if (!r && !s.state) return;
11
- const i = (r ? O(r) : s.current) ?? window, p = (n) => {
12
- g(!1), u?.onStop?.(n);
13
- }, S = (n) => {
14
- g(!0);
15
- const e = n.target === document ? n.target.documentElement : n.target, { display: E, flexDirection: R, direction: D } = e.style, y = D === "rtl" ? -1 : 1, c = e.scrollLeft;
16
- let o = e.scrollTop;
17
- e instanceof Document && !o && (o = window.document.body.scrollTop);
18
- const f = d.current?.offset, v = c * y <= (f?.left ?? 0), x = c * y + e.clientWidth >= e.scrollWidth - (f?.right ?? 0) - w, h = o <= (f?.top ?? 0), L = o + e.clientHeight >= e.scrollHeight - (f?.bottom ?? 0) - w, a = E === "flex" && R === "column-reverse", b = E === "flex" && R === "column-reverse", H = {
19
- x: c,
20
- y: o,
1
+ import { useRef as S, useState as j, useEffect as A } from "react";
2
+ import { useRefState as O } from "../useRefState/useRefState.mjs";
3
+ import { isTarget as P } from "../../utils/helpers/isTarget.mjs";
4
+ import { getElement as W } from "../../utils/helpers/getElement.mjs";
5
+ const I = 1, q = (...o) => {
6
+ const c = P(o[0]) ? o[0] : void 0, g = c ? typeof o[1] == "object" ? o[1] : { onScroll: o[1] } : typeof o[0] == "object" ? o[0] : { onScroll: o[0] }, d = O(), p = S(g), f = S(null);
7
+ p.current = g;
8
+ const [E, R] = j(!1), u = S({ x: 0, y: 0 });
9
+ A(() => {
10
+ if (!c && !d.state) return;
11
+ const e = (c ? W(c) : d.current) ?? window;
12
+ f.current = e;
13
+ const l = (t) => {
14
+ R(!1), g?.onStop?.(t);
15
+ }, s = (t) => {
16
+ R(!0);
17
+ const r = t.target === document ? t.target.documentElement : t.target, { display: b, flexDirection: h, direction: V } = r.style, x = V === "rtl" ? -1 : 1, i = r.scrollLeft;
18
+ let n = r.scrollTop;
19
+ r instanceof Document && !n && (n = window.document.body.scrollTop);
20
+ const m = p.current?.offset, a = i * x <= (m?.left ?? 0), T = i * x + r.clientWidth >= r.scrollWidth - (m?.right ?? 0) - I, L = n <= (m?.top ?? 0), w = n + r.clientHeight >= r.scrollHeight - (m?.bottom ?? 0) - I, D = b === "flex" && h === "column-reverse", H = b === "flex" && h === "column-reverse", _ = {
21
+ x: i,
22
+ y: n,
21
23
  directions: {
22
- left: c < l.current.x,
23
- right: c > l.current.x,
24
- top: o < l.current.y,
25
- bottom: o > l.current.y
24
+ left: i < u.current.x,
25
+ right: i > u.current.x,
26
+ top: n < u.current.y,
27
+ bottom: n > u.current.y
26
28
  },
27
29
  arrived: {
28
- left: b ? x : v,
29
- right: b ? v : x,
30
- top: a ? L : h,
31
- bottom: a ? h : L
30
+ left: H ? T : a,
31
+ right: H ? a : T,
32
+ top: D ? w : L,
33
+ bottom: D ? L : w
32
34
  }
33
35
  };
34
- l.current = { x: c, y: o }, d.current?.onScroll?.(H, n);
36
+ u.current = { x: i, y: n }, p.current?.onScroll?.(_, t);
35
37
  };
36
- return i.addEventListener("scroll", S), i.addEventListener("scrollend", p), () => {
37
- i.removeEventListener("scroll", S), i.removeEventListener("scrollend", p);
38
+ return e.addEventListener("scroll", s), e.addEventListener("scrollend", l), () => {
39
+ e.removeEventListener("scroll", s), e.removeEventListener("scrollend", l);
38
40
  };
39
- }, [r, s.state]), r ? m : {
40
- ref: s,
41
- scrolling: m
41
+ }, [c, d.state]);
42
+ const v = (e) => {
43
+ if (!f.current) return;
44
+ const { behavior: l, block: s, inline: t } = e ?? {};
45
+ f.current.scrollIntoView({
46
+ behavior: l,
47
+ block: s,
48
+ inline: t
49
+ });
50
+ }, y = (e) => {
51
+ if (!f.current) return;
52
+ const { x: l, y: s, behavior: t } = e ?? {};
53
+ f.current.scrollTo({ left: l, top: s, behavior: t });
54
+ };
55
+ return c ? { scrollIntoView: v, scrollTo: y, scrolling: E } : {
56
+ ref: d,
57
+ scrolling: E,
58
+ scrollIntoView: v,
59
+ scrollTo: y
42
60
  };
43
61
  };
44
62
  export {
45
- V as useScroll
63
+ q as useScroll
46
64
  };
47
65
  //# sourceMappingURL=useScroll.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScroll.mjs","sources":["../../../../src/hooks/useScroll/useScroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n\nexport interface UseScrollOptions {\n /** The on scroll callback */\n onScroll?: (params: UseScrollCallbackParams, event: Event) => void;\n\n /** The on end scroll callback */\n onStop?: (event: Event) => void;\n\n /** Offset arrived states by x pixels. */\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n}\n\nexport interface UseScrollCallbackParams {\n /** The element x position */\n x: number;\n /** The element y position */\n y: number;\n /** State of scroll arrived */\n arrived: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** State of scroll direction */\n directions: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n}\n\nexport interface UseScroll {\n (\n target?: HookTarget,\n callback?: (params: UseScrollCallbackParams, event: Event) => void\n ): boolean;\n\n (target?: HookTarget, options?: UseScrollOptions): boolean;\n\n <Target extends Element>(\n callback?: (params: UseScrollCallbackParams, event: Event) => void,\n target?: never\n ): {\n ref: StateRef<Target>;\n scrolling: boolean;\n };\n\n <Target extends Element>(\n options?: UseScrollOptions,\n target?: never\n ): {\n ref: StateRef<Target>;\n scrolling: boolean;\n };\n}\n\n/**\n * @name useScroll\n * @description - Hook that allows you to control scroll a element\n * @category Sensors\n * @usage low\n *\n * @overload\n * @template Target The target element\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {boolean} The state of scrolling\n *\n * @example\n * const scrolling = useScroll(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {boolean} The state of scrolling\n *\n * @example\n * const scrolling = useScroll(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} [target=window] The target element to scroll\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {[StateRef<Target>, boolean]} The state of scrolling\n *\n * @example\n * const { ref, scrolling } = useScroll(options);\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to scroll\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {[StateRef<Target>, boolean]} The state of scrolling\n *\n * @example\n * const { ref, scrolling } = useScroll(() => console.log('callback'));\n */\nexport const useScroll = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onScroll: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onScroll: params[0] }\n ) as UseScrollOptions | undefined;\n\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n internalOptionsRef.current = options;\n\n const [scrolling, setScrolling] = useState(false);\n const scrollPositionRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = ((target ? getElement(target) : internalRef.current) as Element) ?? window;\n\n const onScrollEnd = (event: Event) => {\n setScrolling(false);\n options?.onStop?.(event);\n };\n\n const onScroll = (event: Event) => {\n setScrolling(true);\n const target = (\n event.target === document ? (event.target as Document).documentElement : event.target\n ) as HTMLElement;\n\n const { display, flexDirection, direction } = target.style;\n const directionMultiplier = direction === 'rtl' ? -1 : 1;\n\n const scrollLeft = target.scrollLeft;\n let scrollTop = target.scrollTop;\n if (target instanceof Document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\n const offset = internalOptionsRef.current?.offset;\n const left = scrollLeft * directionMultiplier <= (offset?.left ?? 0);\n const right =\n scrollLeft * directionMultiplier + target.clientWidth >=\n target.scrollWidth - (offset?.right ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n const top = scrollTop <= (offset?.top ?? 0);\n const bottom =\n scrollTop + target.clientHeight >=\n target.scrollHeight - (offset?.bottom ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\n const isColumnReverse = display === 'flex' && flexDirection === 'column-reverse';\n const isRowReverse = display === 'flex' && flexDirection === 'column-reverse';\n\n const params = {\n x: scrollLeft,\n y: scrollTop,\n directions: {\n left: scrollLeft < scrollPositionRef.current.x,\n right: scrollLeft > scrollPositionRef.current.x,\n top: scrollTop < scrollPositionRef.current.y,\n bottom: scrollTop > scrollPositionRef.current.y\n },\n arrived: {\n left: isRowReverse ? right : left,\n right: isRowReverse ? left : right,\n top: isColumnReverse ? bottom : top,\n bottom: isColumnReverse ? top : bottom\n }\n };\n\n scrollPositionRef.current = { x: scrollLeft, y: scrollTop };\n internalOptionsRef.current?.onScroll?.(params, event);\n };\n\n element.addEventListener('scroll', onScroll);\n element.addEventListener('scrollend', onScrollEnd);\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n };\n }, [target, internalRef.state]);\n\n if (target) return scrolling;\n return {\n ref: internalRef,\n scrolling\n };\n}) as UseScroll;\n"],"names":["ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","params","target","isTarget","options","internalRef","useRefState","internalOptionsRef","useRef","scrolling","setScrolling","useState","scrollPositionRef","useEffect","element","getElement","onScrollEnd","event","onScroll","display","flexDirection","direction","directionMultiplier","scrollLeft","scrollTop","offset","left","right","top","bottom","isColumnReverse","isRowReverse"],"mappings":";;;;AAUA,MAAMA,IAAiC,GAoH1BC,IAAa,IAAIC,MAAkB;AAC9C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IACJF,IACI,OAAOD,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,UAAUA,EAAO,CAAC,EAAA,IACtB,OAAOA,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,UAAUA,EAAO,CAAC,EAAA,GAGtBI,IAAcC,EAAA,GACdC,IAAqBC,EAAOJ,CAAO;AACzC,EAAAG,EAAmB,UAAUH;AAE7B,QAAM,CAACK,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAoBJ,EAAO,EAAE,GAAG,GAAG,GAAG,GAAG;AAmE/C,SAjEAK,EAAU,MAAM;AACd,QAAI,CAACX,KAAU,CAACG,EAAY,MAAO;AACnC,UAAMS,KAAYZ,IAASa,EAAWb,CAAM,IAAIG,EAAY,YAAwB,QAE9EW,IAAc,CAACC,MAAiB;AACpC,MAAAP,EAAa,EAAK,GAClBN,GAAS,SAASa,CAAK;AAAA,IAAA,GAGnBC,IAAW,CAACD,MAAiB;AACjC,MAAAP,EAAa,EAAI;AACjB,YAAMR,IACJe,EAAM,WAAW,WAAYA,EAAM,OAAoB,kBAAkBA,EAAM,QAG3E,EAAE,SAAAE,GAAS,eAAAC,GAAe,WAAAC,EAAA,IAAcnB,EAAO,OAC/CoB,IAAsBD,MAAc,QAAQ,KAAK,GAEjDE,IAAarB,EAAO;AAC1B,UAAIsB,IAAYtB,EAAO;AACvB,MAAIA,aAAkB,YAAY,CAACsB,MAAWA,IAAY,OAAO,SAAS,KAAK;AAE/E,YAAMC,IAASlB,EAAmB,SAAS,QACrCmB,IAAOH,IAAaD,MAAwBG,GAAQ,QAAQ,IAC5DE,IACJJ,IAAaD,IAAsBpB,EAAO,eAC1CA,EAAO,eAAeuB,GAAQ,SAAS,KAAK1B,GACxC6B,IAAMJ,MAAcC,GAAQ,OAAO,IACnCI,IACJL,IAAYtB,EAAO,gBACnBA,EAAO,gBAAgBuB,GAAQ,UAAU,KAAK1B,GAE1C+B,IAAkBX,MAAY,UAAUC,MAAkB,kBAC1DW,IAAeZ,MAAY,UAAUC,MAAkB,kBAEvDnB,IAAS;AAAA,QACb,GAAGsB;AAAA,QACH,GAAGC;AAAA,QACH,YAAY;AAAA,UACV,MAAMD,IAAaX,EAAkB,QAAQ;AAAA,UAC7C,OAAOW,IAAaX,EAAkB,QAAQ;AAAA,UAC9C,KAAKY,IAAYZ,EAAkB,QAAQ;AAAA,UAC3C,QAAQY,IAAYZ,EAAkB,QAAQ;AAAA,QAAA;AAAA,QAEhD,SAAS;AAAA,UACP,MAAMmB,IAAeJ,IAAQD;AAAA,UAC7B,OAAOK,IAAeL,IAAOC;AAAA,UAC7B,KAAKG,IAAkBD,IAASD;AAAA,UAChC,QAAQE,IAAkBF,IAAMC;AAAA,QAAA;AAAA,MAClC;AAGF,MAAAjB,EAAkB,UAAU,EAAE,GAAGW,GAAY,GAAGC,EAAA,GAChDjB,EAAmB,SAAS,WAAWN,GAAQgB,CAAK;AAAA,IAAA;AAGtD,WAAAH,EAAQ,iBAAiB,UAAUI,CAAQ,GAC3CJ,EAAQ,iBAAiB,aAAaE,CAAW,GAE1C,MAAM;AACX,MAAAF,EAAQ,oBAAoB,UAAUI,CAAQ,GAC9CJ,EAAQ,oBAAoB,aAAaE,CAAW;AAAA,IAAA;AAAA,EACtD,GACC,CAACd,GAAQG,EAAY,KAAK,CAAC,GAE1BH,IAAeO,IACZ;AAAA,IACL,KAAKJ;AAAA,IACL,WAAAI;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useScroll.mjs","sources":["../../../../src/hooks/useScroll/useScroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { HookTarget } from '@/utils/helpers';\n\nimport { getElement, isTarget } from '@/utils/helpers';\n\nimport type { StateRef } from '../useRefState/useRefState';\n\nimport { useRefState } from '../useRefState/useRefState';\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n\nexport interface UseScrollOptions {\n /** The on scroll callback */\n onScroll?: (params: UseScrollCallbackParams, event: Event) => void;\n\n /** The on end scroll callback */\n onStop?: (event: Event) => void;\n\n /** Offset arrived states by x pixels. */\n offset?: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n}\n\nexport interface UseScrollCallbackParams {\n /** The element x position */\n x: number;\n /** The element y position */\n y: number;\n /** State of scroll arrived */\n arrived: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n /** State of scroll direction */\n directions: {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n };\n}\n\n/** The scroll into view params type */\nexport interface ScrollIntoViewParams {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n/** The scroll to params type */\nexport interface ScrollToParams {\n behavior?: ScrollBehavior;\n x: number;\n y: number;\n}\n\n/** The use scroll return type */\nexport interface UseScrollReturn {\n /** The state of scrolling */\n scrolling: boolean;\n /** Function to scroll element into view */\n scrollIntoView: (params?: ScrollIntoViewParams) => void;\n /** Function to scroll element to a specific position */\n scrollTo: (params?: ScrollToParams) => void;\n}\n\nexport interface UseScroll {\n (\n target?: HookTarget,\n callback?: (params: UseScrollCallbackParams, event: Event) => void\n ): UseScrollReturn;\n\n (target?: HookTarget, options?: UseScrollOptions): UseScrollReturn;\n\n <Target extends Element>(\n callback?: (params: UseScrollCallbackParams, event: Event) => void,\n target?: never\n ): UseScrollReturn & { ref: StateRef<Target> };\n\n <Target extends Element>(\n options?: UseScrollOptions,\n target?: never\n ): UseScrollReturn & {\n ref: StateRef<Target>;\n };\n}\n\n/**\n * @name useScroll\n * @description - Hook that allows you to control scroll a element\n * @category Sensors\n * @usage low\n *\n * @overload\n * @template Target The target element\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, options);\n *\n * @overload\n * @template Target The target element\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn} The state of scrolling\n *\n * @example\n * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, () => console.log('callback'));\n *\n * @overload\n * @template Target The target element\n * @param {Target} [target=window] The target element to scroll\n * @param {ScrollBehavior} [options.behavior=auto] The behavior of scrolling\n * @param {number} [options.offset.left=0] The left offset for arrived states\n * @param {number} [options.offset.right=0] The right offset for arrived states\n * @param {number} [options.offset.top=0] The top offset for arrived states\n * @param {number} [options.offset.bottom=0] The bottom offset for arrived states\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll\n * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(options);\n *\n * @overload\n * @template Target The target element\n * @param {Target} target The target element to scroll\n * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll\n * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling\n *\n * @example\n * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(() => console.log('callback'));\n */\nexport const useScroll = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onScroll: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onScroll: params[0] }\n ) as UseScrollOptions | undefined;\n\n const internalRef = useRefState<Element>();\n const internalOptionsRef = useRef(options);\n const elementRef = useRef<Element>(null);\n internalOptionsRef.current = options;\n\n const [scrolling, setScrolling] = useState(false);\n const scrollPositionRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n if (!target && !internalRef.state) return;\n const element = ((target ? getElement(target) : internalRef.current) as Element) ?? window;\n\n elementRef.current = element;\n\n const onScrollEnd = (event: Event) => {\n setScrolling(false);\n options?.onStop?.(event);\n };\n\n const onScroll = (event: Event) => {\n setScrolling(true);\n const target = (\n event.target === document ? (event.target as Document).documentElement : event.target\n ) as HTMLElement;\n\n const { display, flexDirection, direction } = target.style;\n const directionMultiplier = direction === 'rtl' ? -1 : 1;\n\n const scrollLeft = target.scrollLeft;\n let scrollTop = target.scrollTop;\n if (target instanceof Document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\n const offset = internalOptionsRef.current?.offset;\n const left = scrollLeft * directionMultiplier <= (offset?.left ?? 0);\n const right =\n scrollLeft * directionMultiplier + target.clientWidth >=\n target.scrollWidth - (offset?.right ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n const top = scrollTop <= (offset?.top ?? 0);\n const bottom =\n scrollTop + target.clientHeight >=\n target.scrollHeight - (offset?.bottom ?? 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\n const isColumnReverse = display === 'flex' && flexDirection === 'column-reverse';\n const isRowReverse = display === 'flex' && flexDirection === 'column-reverse';\n\n const params = {\n x: scrollLeft,\n y: scrollTop,\n directions: {\n left: scrollLeft < scrollPositionRef.current.x,\n right: scrollLeft > scrollPositionRef.current.x,\n top: scrollTop < scrollPositionRef.current.y,\n bottom: scrollTop > scrollPositionRef.current.y\n },\n arrived: {\n left: isRowReverse ? right : left,\n right: isRowReverse ? left : right,\n top: isColumnReverse ? bottom : top,\n bottom: isColumnReverse ? top : bottom\n }\n };\n\n scrollPositionRef.current = { x: scrollLeft, y: scrollTop };\n internalOptionsRef.current?.onScroll?.(params, event);\n };\n\n element.addEventListener('scroll', onScroll);\n element.addEventListener('scrollend', onScrollEnd);\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n element.removeEventListener('scrollend', onScrollEnd);\n };\n }, [target, internalRef.state]);\n\n const scrollIntoView = (params?: {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n }) => {\n if (!elementRef.current) return;\n\n const { behavior, block, inline } = params ?? {};\n\n elementRef.current.scrollIntoView({\n behavior,\n block,\n inline\n });\n };\n\n const scrollTo = (params?: { x: number; y: number; behavior?: ScrollBehavior }) => {\n if (!elementRef.current) return;\n\n const { x, y, behavior } = params ?? {};\n\n elementRef.current.scrollTo({ left: x, top: y, behavior });\n };\n\n if (target) return { scrollIntoView, scrollTo, scrolling };\n return {\n ref: internalRef,\n scrolling,\n scrollIntoView,\n scrollTo\n };\n}) as UseScroll;\n"],"names":["ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","params","target","isTarget","options","internalRef","useRefState","internalOptionsRef","useRef","elementRef","scrolling","setScrolling","useState","scrollPositionRef","useEffect","element","getElement","onScrollEnd","event","onScroll","display","flexDirection","direction","directionMultiplier","scrollLeft","scrollTop","offset","left","right","top","bottom","isColumnReverse","isRowReverse","scrollIntoView","behavior","block","inline","scrollTo","x","y"],"mappings":";;;;AAUA,MAAMA,IAAiC,GAuI1BC,IAAa,IAAIC,MAAkB;AAC9C,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IACJF,IACI,OAAOD,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,UAAUA,EAAO,CAAC,EAAA,IACtB,OAAOA,EAAO,CAAC,KAAM,WACnBA,EAAO,CAAC,IACR,EAAE,UAAUA,EAAO,CAAC,EAAA,GAGtBI,IAAcC,EAAA,GACdC,IAAqBC,EAAOJ,CAAO,GACnCK,IAAaD,EAAgB,IAAI;AACvC,EAAAD,EAAmB,UAAUH;AAE7B,QAAM,CAACM,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAoBL,EAAO,EAAE,GAAG,GAAG,GAAG,GAAG;AAE/C,EAAAM,EAAU,MAAM;AACd,QAAI,CAACZ,KAAU,CAACG,EAAY,MAAO;AACnC,UAAMU,KAAYb,IAASc,EAAWd,CAAM,IAAIG,EAAY,YAAwB;AAEpF,IAAAI,EAAW,UAAUM;AAErB,UAAME,IAAc,CAACC,MAAiB;AACpC,MAAAP,EAAa,EAAK,GAClBP,GAAS,SAASc,CAAK;AAAA,IAAA,GAGnBC,IAAW,CAACD,MAAiB;AACjC,MAAAP,EAAa,EAAI;AACjB,YAAMT,IACJgB,EAAM,WAAW,WAAYA,EAAM,OAAoB,kBAAkBA,EAAM,QAG3E,EAAE,SAAAE,GAAS,eAAAC,GAAe,WAAAC,EAAA,IAAcpB,EAAO,OAC/CqB,IAAsBD,MAAc,QAAQ,KAAK,GAEjDE,IAAatB,EAAO;AAC1B,UAAIuB,IAAYvB,EAAO;AACvB,MAAIA,aAAkB,YAAY,CAACuB,MAAWA,IAAY,OAAO,SAAS,KAAK;AAE/E,YAAMC,IAASnB,EAAmB,SAAS,QACrCoB,IAAOH,IAAaD,MAAwBG,GAAQ,QAAQ,IAC5DE,IACJJ,IAAaD,IAAsBrB,EAAO,eAC1CA,EAAO,eAAewB,GAAQ,SAAS,KAAK3B,GACxC8B,IAAMJ,MAAcC,GAAQ,OAAO,IACnCI,IACJL,IAAYvB,EAAO,gBACnBA,EAAO,gBAAgBwB,GAAQ,UAAU,KAAK3B,GAE1CgC,IAAkBX,MAAY,UAAUC,MAAkB,kBAC1DW,IAAeZ,MAAY,UAAUC,MAAkB,kBAEvDpB,IAAS;AAAA,QACb,GAAGuB;AAAA,QACH,GAAGC;AAAA,QACH,YAAY;AAAA,UACV,MAAMD,IAAaX,EAAkB,QAAQ;AAAA,UAC7C,OAAOW,IAAaX,EAAkB,QAAQ;AAAA,UAC9C,KAAKY,IAAYZ,EAAkB,QAAQ;AAAA,UAC3C,QAAQY,IAAYZ,EAAkB,QAAQ;AAAA,QAAA;AAAA,QAEhD,SAAS;AAAA,UACP,MAAMmB,IAAeJ,IAAQD;AAAA,UAC7B,OAAOK,IAAeL,IAAOC;AAAA,UAC7B,KAAKG,IAAkBD,IAASD;AAAA,UAChC,QAAQE,IAAkBF,IAAMC;AAAA,QAAA;AAAA,MAClC;AAGF,MAAAjB,EAAkB,UAAU,EAAE,GAAGW,GAAY,GAAGC,EAAA,GAChDlB,EAAmB,SAAS,WAAWN,GAAQiB,CAAK;AAAA,IAAA;AAGtD,WAAAH,EAAQ,iBAAiB,UAAUI,CAAQ,GAC3CJ,EAAQ,iBAAiB,aAAaE,CAAW,GAE1C,MAAM;AACX,MAAAF,EAAQ,oBAAoB,UAAUI,CAAQ,GAC9CJ,EAAQ,oBAAoB,aAAaE,CAAW;AAAA,IAAA;AAAA,EACtD,GACC,CAACf,GAAQG,EAAY,KAAK,CAAC;AAE9B,QAAM4B,IAAiB,CAAChC,MAIlB;AACJ,QAAI,CAACQ,EAAW,QAAS;AAEzB,UAAM,EAAE,UAAAyB,GAAU,OAAAC,GAAO,QAAAC,EAAA,IAAWnC,KAAU,CAAA;AAE9C,IAAAQ,EAAW,QAAQ,eAAe;AAAA,MAChC,UAAAyB;AAAA,MACA,OAAAC;AAAA,MACA,QAAAC;AAAA,IAAA,CACD;AAAA,EAAA,GAGGC,IAAW,CAACpC,MAAiE;AACjF,QAAI,CAACQ,EAAW,QAAS;AAEzB,UAAM,EAAE,GAAA6B,GAAG,GAAAC,GAAG,UAAAL,EAAA,IAAajC,KAAU,CAAA;AAErC,IAAAQ,EAAW,QAAQ,SAAS,EAAE,MAAM6B,GAAG,KAAKC,GAAG,UAAAL,GAAU;AAAA,EAAA;AAG3D,SAAIhC,IAAe,EAAE,gBAAA+B,GAAgB,UAAAI,GAAU,WAAA3B,EAAA,IACxC;AAAA,IACL,KAAKL;AAAA,IACL,WAAAK;AAAA,IACA,gBAAAuB;AAAA,IACA,UAAAI;AAAA,EAAA;AAEJ;"}
@@ -8,13 +8,13 @@ import { useMutation as l } from "./hooks/useMutation/useMutation.mjs";
8
8
  import { useOptimistic as E } from "./hooks/useOptimistic/useOptimistic.mjs";
9
9
  import { useQuery as g } from "./hooks/useQuery/useQuery.mjs";
10
10
  import { useAudio as R } from "./hooks/useAudio/useAudio.mjs";
11
- import { useBattery as C } from "./hooks/useBattery/useBattery.mjs";
11
+ import { useBattery as P } from "./hooks/useBattery/useBattery.mjs";
12
12
  import { useBluetooth as A } from "./hooks/useBluetooth/useBluetooth.mjs";
13
13
  import { useBroadcastChannel as O } from "./hooks/useBroadcastChannel/useBroadcastChannel.mjs";
14
14
  import { useClipboard as h } from "./hooks/useClipboard/useClipboard.mjs";
15
15
  import { useCopy as _ } from "./hooks/useCopy/useCopy.mjs";
16
16
  import { useCssVar as M } from "./hooks/useCssVar/useCssVar.mjs";
17
- import { useDisplayMedia as b } from "./hooks/useDisplayMedia/useDisplayMedia.mjs";
17
+ import { useDisplayMedia as L } from "./hooks/useDisplayMedia/useDisplayMedia.mjs";
18
18
  import { useDocumentTitle as B } from "./hooks/useDocumentTitle/useDocumentTitle.mjs";
19
19
  import { useEventSource as F } from "./hooks/useEventSource/useEventSource.mjs";
20
20
  import { useEyeDropper as V } from "./hooks/useEyeDropper/useEyeDropper.mjs";
@@ -33,13 +33,13 @@ import { usePictureInPicture as ce } from "./hooks/usePictureInPicture/usePictur
33
33
  import { usePointerLock as Se } from "./hooks/usePointerLock/usePointerLock.mjs";
34
34
  import { usePostMessage as Te } from "./hooks/usePostMessage/usePostMessage.mjs";
35
35
  import { useRaf as de } from "./hooks/useRaf/useRaf.mjs";
36
- import { useShare as Pe } from "./hooks/useShare/useShare.mjs";
36
+ import { useShare as Ce } from "./hooks/useShare/useShare.mjs";
37
37
  import { getSpeechRecognition as Ie, useSpeechRecognition as Ae } from "./hooks/useSpeechRecognition/useSpeechRecognition.mjs";
38
38
  import { useSpeechSynthesis as Oe } from "./hooks/useSpeechSynthesis/useSpeechSynthesis.mjs";
39
39
  import { useVibrate as he } from "./hooks/useVibrate/useVibrate.mjs";
40
40
  import { useVirtualKeyboard as _e } from "./hooks/useVirtualKeyboard/useVirtualKeyboard.mjs";
41
41
  import { useWakeLock as Me } from "./hooks/useWakeLock/useWakeLock.mjs";
42
- import { useWebSocket as be } from "./hooks/useWebSocket/useWebSocket.mjs";
42
+ import { useWebSocket as Le } from "./hooks/useWebSocket/useWebSocket.mjs";
43
43
  import { useLogger as Be } from "./hooks/useLogger/useLogger.mjs";
44
44
  import { useRenderCount as Fe } from "./hooks/useRenderCount/useRenderCount.mjs";
45
45
  import { useRenderInfo as Ve } from "./hooks/useRenderInfo/useRenderInfo.mjs";
@@ -57,13 +57,13 @@ import { useLongPress as xo } from "./hooks/useLongPress/useLongPress.mjs";
57
57
  import { Paint as io, Pointer as no, usePaint as co } from "./hooks/usePaint/usePaint.mjs";
58
58
  import { useRightClick as So } from "./hooks/useRightClick/useRightClick.mjs";
59
59
  import { SCRIPT_STATUS_ATTRIBUTE_NAME as To, useScript as go } from "./hooks/useScript/useScript.mjs";
60
- import { useSticky as Po } from "./hooks/useSticky/useSticky.mjs";
60
+ import { useSticky as Co } from "./hooks/useSticky/useSticky.mjs";
61
61
  import { useTextDirection as Io } from "./hooks/useTextDirection/useTextDirection.mjs";
62
62
  import { useFul as yo } from "./hooks/useFul/useFul.mjs";
63
63
  import { useLess as ko } from "./hooks/useLess/useLess.mjs";
64
64
  import { useOnce as vo } from "./hooks/useOnce/useOnce.mjs";
65
65
  import { useDidUpdate as Do } from "./hooks/useDidUpdate/useDidUpdate.mjs";
66
- import { useIsFirstRender as Lo } from "./hooks/useIsFirstRender/useIsFirstRender.mjs";
66
+ import { useIsFirstRender as bo } from "./hooks/useIsFirstRender/useIsFirstRender.mjs";
67
67
  import { useIsomorphicLayoutEffect as No } from "./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
68
68
  import { useMount as Ko } from "./hooks/useMount/useMount.mjs";
69
69
  import { deepEqual as Uo, useShallowEffect as Vo } from "./hooks/useShallowEffect/useShallowEffect.mjs";
@@ -79,13 +79,13 @@ import { useEventListener as cr } from "./hooks/useEventListener/useEventListene
79
79
  import { isHotkeyMatch as Sr, useHotkeys as Er } from "./hooks/useHotkeys/useHotkeys.mjs";
80
80
  import { useIdle as gr } from "./hooks/useIdle/useIdle.mjs";
81
81
  import { useInfiniteScroll as Rr } from "./hooks/useInfiniteScroll/useInfiniteScroll.mjs";
82
- import { useIntersectionObserver as Cr } from "./hooks/useIntersectionObserver/useIntersectionObserver.mjs";
82
+ import { useIntersectionObserver as Pr } from "./hooks/useIntersectionObserver/useIntersectionObserver.mjs";
83
83
  import { useKeyboard as Ar } from "./hooks/useKeyboard/useKeyboard.mjs";
84
84
  import { useKeyPress as Or } from "./hooks/useKeyPress/useKeyPress.mjs";
85
85
  import { useKeyPressEvent as hr } from "./hooks/useKeyPressEvent/useKeyPressEvent.mjs";
86
86
  import { useKeysPressed as _r } from "./hooks/useKeysPressed/useKeysPressed.mjs";
87
87
  import { useLockScroll as Mr } from "./hooks/useLockScroll/useLockScroll.mjs";
88
- import { useMeasure as br } from "./hooks/useMeasure/useMeasure.mjs";
88
+ import { useMeasure as Lr } from "./hooks/useMeasure/useMeasure.mjs";
89
89
  import { useMediaQuery as Br } from "./hooks/useMediaQuery/useMediaQuery.mjs";
90
90
  import { useMouse as Fr } from "./hooks/useMouse/useMouse.mjs";
91
91
  import { useMutationObserver as Vr } from "./hooks/useMutationObserver/useMutationObserver.mjs";
@@ -103,60 +103,61 @@ import { useWindowFocus as xt } from "./hooks/useWindowFocus/useWindowFocus.mjs"
103
103
  import { scrollTo as it, useWindowScroll as nt } from "./hooks/useWindowScroll/useWindowScroll.mjs";
104
104
  import { useWindowSize as lt } from "./hooks/useWindowSize/useWindowSize.mjs";
105
105
  import { useBoolean as Et } from "./hooks/useBoolean/useBoolean.mjs";
106
- import { COOKIE_EVENT as gt, dispatchCookieEvent as dt, getCookie as Rt, getCookies as Pt, removeCookie as Ct, removeCookieItem as It, setCookie as At, setCookieItem as yt, useCookie as Ot } from "./hooks/useCookie/useCookie.mjs";
107
- import { clearCookies as ht, useCookies as vt } from "./hooks/useCookies/useCookies.mjs";
108
- import { useCounter as Dt } from "./hooks/useCounter/useCounter.mjs";
109
- import { useDefault as Lt } from "./hooks/useDefault/useDefault.mjs";
110
- import { useDisclosure as Nt } from "./hooks/useDisclosure/useDisclosure.mjs";
111
- import { useField as Kt } from "./hooks/useField/useField.mjs";
112
- import { useHash as Ut } from "./hooks/useHash/useHash.mjs";
113
- import { useList as wt } from "./hooks/useList/useList.mjs";
114
- import { useLocalStorage as Wt } from "./hooks/useLocalStorage/useLocalStorage.mjs";
115
- import { useMap as Qt } from "./hooks/useMap/useMap.mjs";
116
- import { assignRef as Xt, mergeRefs as qt, useMergedRef as Zt } from "./hooks/useMergedRef/useMergedRef.mjs";
117
- import { useOffsetPagination as Jt } from "./hooks/useOffsetPagination/useOffsetPagination.mjs";
118
- import { useQueue as $t } from "./hooks/useQueue/useQueue.mjs";
119
- import { useRafState as os } from "./hooks/useRafState/useRafState.mjs";
120
- import { useRefState as ts } from "./hooks/useRefState/useRefState.mjs";
121
- import { useSessionStorage as ms } from "./hooks/useSessionStorage/useSessionStorage.mjs";
122
- import { useSet as ps } from "./hooks/useSet/useSet.mjs";
123
- import { stateHistoryReducer as xs, useStateHistory as as } from "./hooks/useStateHistory/useStateHistory.mjs";
124
- import { useStep as ns } from "./hooks/useStep/useStep.mjs";
125
- import { STORAGE_EVENT as ls, dispatchStorageEvent as Ss, useStorage as Es } from "./hooks/useStorage/useStorage.mjs";
126
- import { useToggle as gs } from "./hooks/useToggle/useToggle.mjs";
127
- import { URL_SEARCH_PARAMS_EVENT as Rs, createQueryString as Ps, dispatchUrlSearchParamsEvent as Cs, getUrlSearchParams as Is, useUrlSearchParam as As } from "./hooks/useUrlSearchParam/useUrlSearchParam.mjs";
128
- import { useUrlSearchParams as Os } from "./hooks/useUrlSearchParams/useUrlSearchParams.mjs";
129
- import { useWizard as hs } from "./hooks/useWizard/useWizard.mjs";
130
- import { useInterval as _s } from "./hooks/useInterval/useInterval.mjs";
131
- import { useStopwatch as Ms } from "./hooks/useStopwatch/useStopwatch.mjs";
132
- import { useTime as bs } from "./hooks/useTime/useTime.mjs";
133
- import { useTimeout as Bs } from "./hooks/useTimeout/useTimeout.mjs";
134
- import { getTimeFromSeconds as Fs, useTimer as Us } from "./hooks/useTimer/useTimer.mjs";
135
- import { useBrowserLanguage as ws } from "./hooks/useBrowserLanguage/useBrowserLanguage.mjs";
136
- import { getOperatingSystem as Ws, useOperatingSystem as Gs } from "./hooks/useOperatingSystem/useOperatingSystem.mjs";
137
- import { usePreferredColorScheme as zs } from "./hooks/usePreferredColorScheme/usePreferredColorScheme.mjs";
138
- import { usePreferredContrast as qs } from "./hooks/usePreferredContrast/usePreferredContrast.mjs";
139
- import { usePreferredDark as js } from "./hooks/usePreferredDark/usePreferredDark.mjs";
140
- import { usePreferredLanguages as Ys } from "./hooks/usePreferredLanguages/usePreferredLanguages.mjs";
141
- import { usePreferredReducedMotion as em } from "./hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs";
142
- import { useConst as rm } from "./hooks/useConst/useConst.mjs";
143
- import { useDebounceCallback as sm } from "./hooks/useDebounceCallback/useDebounceCallback.mjs";
144
- import { useDebounceState as um } from "./hooks/useDebounceState/useDebounceState.mjs";
145
- import { useDebounceValue as fm } from "./hooks/useDebounceValue/useDebounceValue.mjs";
146
- import { useEvent as am } from "./hooks/useEvent/useEvent.mjs";
147
- import { useLastChanged as nm } from "./hooks/useLastChanged/useLastChanged.mjs";
148
- import { useLatest as lm } from "./hooks/useLatest/useLatest.mjs";
149
- import { usePrevious as Em } from "./hooks/usePrevious/usePrevious.mjs";
150
- import { useThrottleCallback as gm } from "./hooks/useThrottleCallback/useThrottleCallback.mjs";
151
- import { useThrottleState as Rm } from "./hooks/useThrottleState/useThrottleState.mjs";
152
- import { useThrottleValue as Cm } from "./hooks/useThrottleValue/useThrottleValue.mjs";
153
- import { copy as Am, legacyCopyToClipboard as ym } from "./utils/helpers/copy.mjs";
154
- import { debounce as km } from "./utils/helpers/debounce.mjs";
155
- import { getDate as vm } from "./utils/helpers/getDate.mjs";
156
- import { getElement as Dm, target as Mm, targetSymbol as Lm } from "./utils/helpers/getElement.mjs";
157
- import { getRetry as Nm } from "./utils/helpers/getRetry.mjs";
158
- import { isTarget as Km } from "./utils/helpers/isTarget.mjs";
159
- import { throttle as Um } from "./utils/helpers/throttle.mjs";
106
+ import { useControllableState as gt } from "./hooks/useControllableState/useControllableState.mjs";
107
+ import { COOKIE_EVENT as Rt, dispatchCookieEvent as Ct, getCookie as Pt, getCookies as It, removeCookie as At, removeCookieItem as yt, setCookie as Ot, setCookieItem as kt, useCookie as ht } from "./hooks/useCookie/useCookie.mjs";
108
+ import { clearCookies as _t, useCookies as Dt } from "./hooks/useCookies/useCookies.mjs";
109
+ import { useCounter as bt } from "./hooks/useCounter/useCounter.mjs";
110
+ import { useDefault as Nt } from "./hooks/useDefault/useDefault.mjs";
111
+ import { useDisclosure as Kt } from "./hooks/useDisclosure/useDisclosure.mjs";
112
+ import { useField as Ut } from "./hooks/useField/useField.mjs";
113
+ import { useHash as wt } from "./hooks/useHash/useHash.mjs";
114
+ import { useList as Wt } from "./hooks/useList/useList.mjs";
115
+ import { useLocalStorage as Qt } from "./hooks/useLocalStorage/useLocalStorage.mjs";
116
+ import { useMap as Xt } from "./hooks/useMap/useMap.mjs";
117
+ import { assignRef as Zt, mergeRefs as jt, useMergedRef as Jt } from "./hooks/useMergedRef/useMergedRef.mjs";
118
+ import { useOffsetPagination as $t } from "./hooks/useOffsetPagination/useOffsetPagination.mjs";
119
+ import { useQueue as os } from "./hooks/useQueue/useQueue.mjs";
120
+ import { useRafState as ts } from "./hooks/useRafState/useRafState.mjs";
121
+ import { useRefState as ms } from "./hooks/useRefState/useRefState.mjs";
122
+ import { useSessionStorage as ps } from "./hooks/useSessionStorage/useSessionStorage.mjs";
123
+ import { useSet as xs } from "./hooks/useSet/useSet.mjs";
124
+ import { stateHistoryReducer as is, useStateHistory as ns } from "./hooks/useStateHistory/useStateHistory.mjs";
125
+ import { useStep as ls } from "./hooks/useStep/useStep.mjs";
126
+ import { STORAGE_EVENT as Es, dispatchStorageEvent as Ts, useStorage as gs } from "./hooks/useStorage/useStorage.mjs";
127
+ import { useToggle as Rs } from "./hooks/useToggle/useToggle.mjs";
128
+ import { URL_SEARCH_PARAMS_EVENT as Ps, createQueryString as Is, dispatchUrlSearchParamsEvent as As, getUrlSearchParams as ys, useUrlSearchParam as Os } from "./hooks/useUrlSearchParam/useUrlSearchParam.mjs";
129
+ import { useUrlSearchParams as hs } from "./hooks/useUrlSearchParams/useUrlSearchParams.mjs";
130
+ import { useWizard as _s } from "./hooks/useWizard/useWizard.mjs";
131
+ import { useInterval as Ms } from "./hooks/useInterval/useInterval.mjs";
132
+ import { useStopwatch as Ls } from "./hooks/useStopwatch/useStopwatch.mjs";
133
+ import { useTime as Bs } from "./hooks/useTime/useTime.mjs";
134
+ import { useTimeout as Fs } from "./hooks/useTimeout/useTimeout.mjs";
135
+ import { getTimeFromSeconds as Vs, useTimer as ws } from "./hooks/useTimer/useTimer.mjs";
136
+ import { useBrowserLanguage as Ws } from "./hooks/useBrowserLanguage/useBrowserLanguage.mjs";
137
+ import { getOperatingSystem as Qs, useOperatingSystem as zs } from "./hooks/useOperatingSystem/useOperatingSystem.mjs";
138
+ import { usePreferredColorScheme as qs } from "./hooks/usePreferredColorScheme/usePreferredColorScheme.mjs";
139
+ import { usePreferredContrast as js } from "./hooks/usePreferredContrast/usePreferredContrast.mjs";
140
+ import { usePreferredDark as Ys } from "./hooks/usePreferredDark/usePreferredDark.mjs";
141
+ import { usePreferredLanguages as em } from "./hooks/usePreferredLanguages/usePreferredLanguages.mjs";
142
+ import { usePreferredReducedMotion as rm } from "./hooks/usePreferredReducedMotion/usePreferredReducedMotion.mjs";
143
+ import { useConst as sm } from "./hooks/useConst/useConst.mjs";
144
+ import { useDebounceCallback as um } from "./hooks/useDebounceCallback/useDebounceCallback.mjs";
145
+ import { useDebounceState as fm } from "./hooks/useDebounceState/useDebounceState.mjs";
146
+ import { useDebounceValue as am } from "./hooks/useDebounceValue/useDebounceValue.mjs";
147
+ import { useEvent as nm } from "./hooks/useEvent/useEvent.mjs";
148
+ import { useLastChanged as lm } from "./hooks/useLastChanged/useLastChanged.mjs";
149
+ import { useLatest as Em } from "./hooks/useLatest/useLatest.mjs";
150
+ import { usePrevious as gm } from "./hooks/usePrevious/usePrevious.mjs";
151
+ import { useThrottleCallback as Rm } from "./hooks/useThrottleCallback/useThrottleCallback.mjs";
152
+ import { useThrottleState as Pm } from "./hooks/useThrottleState/useThrottleState.mjs";
153
+ import { useThrottleValue as Am } from "./hooks/useThrottleValue/useThrottleValue.mjs";
154
+ import { copy as Om, legacyCopyToClipboard as km } from "./utils/helpers/copy.mjs";
155
+ import { debounce as vm } from "./utils/helpers/debounce.mjs";
156
+ import { getDate as Dm } from "./utils/helpers/getDate.mjs";
157
+ import { getElement as bm, target as Lm, targetSymbol as Nm } from "./utils/helpers/getElement.mjs";
158
+ import { getRetry as Km } from "./utils/helpers/getRetry.mjs";
159
+ import { isTarget as Um } from "./utils/helpers/isTarget.mjs";
160
+ import { throttle as wm } from "./utils/helpers/throttle.mjs";
160
161
  export {
161
162
  Go as BREAKPOINTS_ANT_DESIGN,
162
163
  Qo as BREAKPOINTS_BOOTSTRAP_V5,
@@ -167,92 +168,93 @@ export {
167
168
  jo as BREAKPOINTS_QUASAR_V2,
168
169
  Jo as BREAKPOINTS_SEMANTIC,
169
170
  Yo as BREAKPOINTS_TAILWIND,
170
- gt as COOKIE_EVENT,
171
+ Rt as COOKIE_EVENT,
171
172
  je as DEFAULT_THRESHOLD_TIME,
172
173
  io as Paint,
173
174
  no as Pointer,
174
175
  To as SCRIPT_STATUS_ATTRIBUTE_NAME,
175
- ls as STORAGE_EVENT,
176
- Rs as URL_SEARCH_PARAMS_EVENT,
177
- Xt as assignRef,
178
- ht as clearCookies,
179
- Am as copy,
176
+ Es as STORAGE_EVENT,
177
+ Ps as URL_SEARCH_PARAMS_EVENT,
178
+ Zt as assignRef,
179
+ _t as clearCookies,
180
+ Om as copy,
180
181
  r as createContext,
181
182
  s as createEventEmitter,
182
- Ps as createQueryString,
183
+ Is as createQueryString,
183
184
  u as createReactiveContext,
184
185
  f as createStore,
185
- km as debounce,
186
+ vm as debounce,
186
187
  Uo as deepEqual,
187
- dt as dispatchCookieEvent,
188
- Ss as dispatchStorageEvent,
189
- Cs as dispatchUrlSearchParamsEvent,
188
+ Ct as dispatchCookieEvent,
189
+ Ts as dispatchStorageEvent,
190
+ As as dispatchUrlSearchParamsEvent,
190
191
  se as getConnection,
191
- Rt as getCookie,
192
- Pt as getCookies,
193
- vm as getDate,
194
- Dm as getElement,
195
- Ws as getOperatingSystem,
192
+ Pt as getCookie,
193
+ It as getCookies,
194
+ Dm as getDate,
195
+ bm as getElement,
196
+ Qs as getOperatingSystem,
196
197
  st as getRangesSelection,
197
- Nm as getRetry,
198
+ Km as getRetry,
198
199
  Ie as getSpeechRecognition,
199
- Fs as getTimeFromSeconds,
200
- Is as getUrlSearchParams,
200
+ Vs as getTimeFromSeconds,
201
+ ys as getUrlSearchParams,
201
202
  Sr as isHotkeyMatch,
202
- Km as isTarget,
203
- ym as legacyCopyToClipboard,
203
+ Um as isTarget,
204
+ km as legacyCopyToClipboard,
204
205
  q as mapGamepadToXbox360Controller,
205
- qt as mergeRefs,
206
- Ct as removeCookie,
207
- It as removeCookieItem,
206
+ jt as mergeRefs,
207
+ At as removeCookie,
208
+ yt as removeCookieItem,
208
209
  it as scrollTo,
209
- At as setCookie,
210
- yt as setCookieItem,
211
- xs as stateHistoryReducer,
212
- Mm as target,
213
- Lm as targetSymbol,
214
- Um as throttle,
210
+ Ot as setCookie,
211
+ kt as setCookieItem,
212
+ is as stateHistoryReducer,
213
+ Lm as target,
214
+ Nm as targetSymbol,
215
+ wm as throttle,
215
216
  $ as timeRangeToArray,
216
217
  Ge as useActiveElement,
217
218
  a as useAsync,
218
219
  R as useAudio,
219
220
  ze as useAutoScroll,
220
- C as useBattery,
221
+ P as useBattery,
221
222
  A as useBluetooth,
222
223
  Et as useBoolean,
223
224
  $o as useBreakpoints,
224
225
  O as useBroadcastChannel,
225
- ws as useBrowserLanguage,
226
+ Ws as useBrowserLanguage,
226
227
  qe as useClickOutside,
227
228
  h as useClipboard,
228
- rm as useConst,
229
- Ot as useCookie,
230
- vt as useCookies,
229
+ sm as useConst,
230
+ gt as useControllableState,
231
+ ht as useCookie,
232
+ Dt as useCookies,
231
233
  _ as useCopy,
232
- Dt as useCounter,
234
+ bt as useCounter,
233
235
  M as useCssVar,
234
- sm as useDebounceCallback,
235
- um as useDebounceState,
236
- fm as useDebounceValue,
237
- Lt as useDefault,
236
+ um as useDebounceCallback,
237
+ fm as useDebounceState,
238
+ am as useDebounceValue,
239
+ Nt as useDefault,
238
240
  or as useDeviceMotion,
239
241
  tr as useDeviceOrientation,
240
242
  mr as useDevicePixelRatio,
241
243
  Do as useDidUpdate,
242
- Nt as useDisclosure,
243
- b as useDisplayMedia,
244
+ Kt as useDisclosure,
245
+ L as useDisplayMedia,
244
246
  pr as useDocumentEvent,
245
247
  B as useDocumentTitle,
246
248
  xr as useDocumentVisibility,
247
249
  Je as useDoubleClick,
248
250
  $e as useDropZone,
249
251
  ir as useElementSize,
250
- am as useEvent,
252
+ nm as useEvent,
251
253
  cr as useEventListener,
252
254
  F as useEventSource,
253
255
  V as useEyeDropper,
254
256
  H as useFavicon,
255
- Kt as useField,
257
+ Ut as useField,
256
258
  oo as useFileDialog,
257
259
  to as useFocus,
258
260
  G as useFps,
@@ -260,44 +262,44 @@ export {
260
262
  z as useFullscreen,
261
263
  Z as useGamepad,
262
264
  J as useGeolocation,
263
- Ut as useHash,
265
+ wt as useHash,
264
266
  Er as useHotkeys,
265
267
  mo as useHover,
266
268
  gr as useIdle,
267
269
  po as useImage,
268
270
  Rr as useInfiniteScroll,
269
- Cr as useIntersectionObserver,
270
- _s as useInterval,
271
- Lo as useIsFirstRender,
271
+ Pr as useIntersectionObserver,
272
+ Ms as useInterval,
273
+ bo as useIsFirstRender,
272
274
  No as useIsomorphicLayoutEffect,
273
275
  Or as useKeyPress,
274
276
  hr as useKeyPressEvent,
275
277
  Ar as useKeyboard,
276
278
  _r as useKeysPressed,
277
- nm as useLastChanged,
278
- lm as useLatest,
279
+ lm as useLastChanged,
280
+ Em as useLatest,
279
281
  ko as useLess,
280
- wt as useList,
281
- Wt as useLocalStorage,
282
+ Wt as useList,
283
+ Qt as useLocalStorage,
282
284
  n as useLockCallback,
283
285
  Mr as useLockScroll,
284
286
  Be as useLogger,
285
287
  xo as useLongPress,
286
- Qt as useMap,
287
- br as useMeasure,
288
+ Xt as useMap,
289
+ Lr as useMeasure,
288
290
  ee as useMediaControls,
289
291
  Br as useMediaQuery,
290
292
  re as useMemory,
291
- Zt as useMergedRef,
293
+ Jt as useMergedRef,
292
294
  Ko as useMount,
293
295
  Fr as useMouse,
294
296
  l as useMutation,
295
297
  Vr as useMutationObserver,
296
298
  me as useNetwork,
297
- Jt as useOffsetPagination,
299
+ $t as useOffsetPagination,
298
300
  vo as useOnce,
299
301
  pe as useOnline,
300
- Gs as useOperatingSystem,
302
+ zs as useOperatingSystem,
301
303
  E as useOptimistic,
302
304
  Hr as useOrientation,
303
305
  xe as useOtpCredential,
@@ -309,17 +311,17 @@ export {
309
311
  ce as usePictureInPicture,
310
312
  Se as usePointerLock,
311
313
  Te as usePostMessage,
312
- zs as usePreferredColorScheme,
313
- qs as usePreferredContrast,
314
- js as usePreferredDark,
315
- Ys as usePreferredLanguages,
316
- em as usePreferredReducedMotion,
317
- Em as usePrevious,
314
+ qs as usePreferredColorScheme,
315
+ js as usePreferredContrast,
316
+ Ys as usePreferredDark,
317
+ em as usePreferredLanguages,
318
+ rm as usePreferredReducedMotion,
319
+ gm as usePrevious,
318
320
  g as useQuery,
319
- $t as useQueue,
321
+ os as useQueue,
320
322
  de as useRaf,
321
- os as useRafState,
322
- ts as useRefState,
323
+ ts as useRafState,
324
+ ms as useRefState,
323
325
  Fe as useRenderCount,
324
326
  Ve as useRenderInfo,
325
327
  He as useRerender,
@@ -329,37 +331,37 @@ export {
329
331
  Yr as useScroll,
330
332
  et as useScrollIntoView,
331
333
  rt as useScrollTo,
332
- ms as useSessionStorage,
333
- ps as useSet,
334
+ ps as useSessionStorage,
335
+ xs as useSet,
334
336
  Vo as useShallowEffect,
335
- Pe as useShare,
337
+ Ce as useShare,
336
338
  Ae as useSpeechRecognition,
337
339
  Oe as useSpeechSynthesis,
338
- as as useStateHistory,
339
- ns as useStep,
340
- Po as useSticky,
341
- Ms as useStopwatch,
342
- Es as useStorage,
340
+ ns as useStateHistory,
341
+ ls as useStep,
342
+ Co as useSticky,
343
+ Ls as useStopwatch,
344
+ gs as useStorage,
343
345
  Io as useTextDirection,
344
346
  mt as useTextSelection,
345
- gm as useThrottleCallback,
346
- Rm as useThrottleState,
347
- Cm as useThrottleValue,
348
- bs as useTime,
349
- Bs as useTimeout,
350
- Us as useTimer,
351
- gs as useToggle,
347
+ Rm as useThrottleCallback,
348
+ Pm as useThrottleState,
349
+ Am as useThrottleValue,
350
+ Bs as useTime,
351
+ Fs as useTimeout,
352
+ ws as useTimer,
353
+ Rs as useToggle,
352
354
  Ho as useUnmount,
353
- As as useUrlSearchParam,
354
- Os as useUrlSearchParams,
355
+ Os as useUrlSearchParam,
356
+ hs as useUrlSearchParams,
355
357
  he as useVibrate,
356
358
  _e as useVirtualKeyboard,
357
359
  Me as useWakeLock,
358
- be as useWebSocket,
360
+ Le as useWebSocket,
359
361
  pt as useWindowEvent,
360
362
  xt as useWindowFocus,
361
363
  nt as useWindowScroll,
362
364
  lt as useWindowSize,
363
- hs as useWizard
365
+ _s as useWizard
364
366
  };
365
367
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  export * from './useBoolean/useBoolean';
2
+ export * from './useControllableState/useControllableState';
2
3
  export * from './useCookie/useCookie';
3
4
  export * from './useCookies/useCookies';
4
5
  export * from './useCounter/useCounter';
@@ -0,0 +1,34 @@
1
+ /** The use controllable state options type */
2
+ export interface UseControllableStateOptions<Value> {
3
+ /** The initial value for uncontrolled state */
4
+ initialValue?: Value;
5
+ /** The controlled value */
6
+ value?: Value;
7
+ /** The onChange callback */
8
+ onChange?: (value: Value) => void;
9
+ }
10
+ /** The use controllable state return type */
11
+ export type UseControllableStateReturn<Value> = [
12
+ /** Current value */
13
+ value: Value,
14
+ /** Setter function that works with both controlled and uncontrolled state */
15
+ setValue: (nextValue: ((prevValue: Value) => Value) | Value) => void,
16
+ /** Whether the state is controlled */
17
+ isControlled: boolean
18
+ ];
19
+ /**
20
+ * @name useControllableState
21
+ * @description - Hook that manages both controlled and uncontrolled state patterns
22
+ * @category State
23
+ * @usage medium
24
+ *
25
+ * @template Value The type of the state value
26
+ * @param {Value} [options.value] The controlled value. When provided, the component becomes controlled
27
+ * @param {Value} [options.initialValue] The initial value for uncontrolled state
28
+ * @param {(value: Value) => void} [options.onChange] The callback function called when the state changes
29
+ * @returns {UseControllableStateReturn<Value>} A tuple containing the current value, setter function, and controlled flag
30
+ *
31
+ * @example
32
+ * const [value, setValue, isControlled] = useControllableState({ initialValue: 'initial' });
33
+ */
34
+ export declare function useControllableState<Value>(options: UseControllableStateOptions<Value>): UseControllableStateReturn<Value>;
@@ -33,16 +33,35 @@ export interface UseScrollCallbackParams {
33
33
  bottom: boolean;
34
34
  };
35
35
  }
36
+ /** The scroll into view params type */
37
+ export interface ScrollIntoViewParams {
38
+ behavior?: ScrollBehavior;
39
+ block?: ScrollLogicalPosition;
40
+ inline?: ScrollLogicalPosition;
41
+ }
42
+ /** The scroll to params type */
43
+ export interface ScrollToParams {
44
+ behavior?: ScrollBehavior;
45
+ x: number;
46
+ y: number;
47
+ }
48
+ /** The use scroll return type */
49
+ export interface UseScrollReturn {
50
+ /** The state of scrolling */
51
+ scrolling: boolean;
52
+ /** Function to scroll element into view */
53
+ scrollIntoView: (params?: ScrollIntoViewParams) => void;
54
+ /** Function to scroll element to a specific position */
55
+ scrollTo: (params?: ScrollToParams) => void;
56
+ }
36
57
  export interface UseScroll {
37
- (target?: HookTarget, callback?: (params: UseScrollCallbackParams, event: Event) => void): boolean;
38
- (target?: HookTarget, options?: UseScrollOptions): boolean;
39
- <Target extends Element>(callback?: (params: UseScrollCallbackParams, event: Event) => void, target?: never): {
58
+ (target?: HookTarget, callback?: (params: UseScrollCallbackParams, event: Event) => void): UseScrollReturn;
59
+ (target?: HookTarget, options?: UseScrollOptions): UseScrollReturn;
60
+ <Target extends Element>(callback?: (params: UseScrollCallbackParams, event: Event) => void, target?: never): UseScrollReturn & {
40
61
  ref: StateRef<Target>;
41
- scrolling: boolean;
42
62
  };
43
- <Target extends Element>(options?: UseScrollOptions, target?: never): {
63
+ <Target extends Element>(options?: UseScrollOptions, target?: never): UseScrollReturn & {
44
64
  ref: StateRef<Target>;
45
- scrolling: boolean;
46
65
  };
47
66
  }
48
67
  /**
@@ -60,18 +79,18 @@ export interface UseScroll {
60
79
  * @param {number} [options.offset.bottom=0] The bottom offset for arrived states
61
80
  * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll
62
81
  * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end
63
- * @returns {boolean} The state of scrolling
82
+ * @returns {UseScrollReturn} The state of scrolling
64
83
  *
65
84
  * @example
66
- * const scrolling = useScroll(ref, options);
85
+ * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, options);
67
86
  *
68
87
  * @overload
69
88
  * @template Target The target element
70
89
  * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll
71
- * @returns {boolean} The state of scrolling
90
+ * @returns {UseScrollReturn} The state of scrolling
72
91
  *
73
92
  * @example
74
- * const scrolling = useScroll(ref, () => console.log('callback'));
93
+ * const { scrolling, scrollIntoView, scrollTo} = useScroll(ref, () => console.log('callback'));
75
94
  *
76
95
  * @overload
77
96
  * @template Target The target element
@@ -83,18 +102,18 @@ export interface UseScroll {
83
102
  * @param {number} [options.offset.bottom=0] The bottom offset for arrived states
84
103
  * @param {(params: UseScrollCallbackParams, event: Event) => void} [options.onScroll] The callback function to be invoked on scroll
85
104
  * @param {(event: Event) => void} [options.onStop] The callback function to be invoked on scroll end
86
- * @returns {[StateRef<Target>, boolean]} The state of scrolling
105
+ * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling
87
106
  *
88
107
  * @example
89
- * const { ref, scrolling } = useScroll(options);
108
+ * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(options);
90
109
  *
91
110
  * @overload
92
111
  * @template Target The target element
93
112
  * @param {Target} target The target element to scroll
94
113
  * @param {(params: UseScrollCallbackParams, event: Event) => void} [callback] The callback function to be invoked on scroll
95
- * @returns {[StateRef<Target>, boolean]} The state of scrolling
114
+ * @returns {UseScrollReturn & { ref: StateRef<Target> }} The state of scrolling
96
115
  *
97
116
  * @example
98
- * const { ref, scrolling } = useScroll(() => console.log('callback'));
117
+ * const { ref, scrolling, scrollIntoView, scrollTo} = useScroll(() => console.log('callback'));
99
118
  */
100
119
  export declare const useScroll: UseScroll;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siberiacancode/reactuse",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "The ultimate collection of react hooks",
5
5
  "author": {
6
6
  "name": "SIBERIA CAN CODE 🧊",