@siberiacancode/reactuse 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs +2 -0
- package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs.map +1 -0
- package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs +31 -0
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs.map +1 -0
- package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs +20 -20
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
- package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
- package/dist/esm/index.mjs +333 -331
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/helpers/createEventEmitter/createEventEmitter.d.ts +18 -0
- package/dist/types/helpers/createStore/createStore.d.ts +0 -1
- package/dist/types/helpers/index.d.ts +1 -0
- package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +22 -2
- package/package.json +5 -5
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),l=()=>{const r=new EventTarget,E=(e,t)=>r.dispatchEvent(new CustomEvent(e,{detail:t})),u=(e,t)=>{const n=s=>t(s.detail);return r.addEventListener(e,n),()=>r.removeEventListener(e,n)},o=(e,t)=>{const n=s=>t(s.detail);r.removeEventListener(e,n)};return{instance:r,push:E,subscribe:u,unsubscribe:o,useSubscribe:(e,t)=>{const[n,s]=c.useState(void 0),a=c.useRef(t);return a.current=t,c.useEffect(()=>{const i=b=>{s(b),a.current?.(b)};return u(e,i),()=>{o(e,i)}},[e]),n}}};exports.createEventEmitter=l;
|
|
2
|
+
//# sourceMappingURL=createEventEmitter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEventEmitter.cjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n *\n * @template Events - The type of events and their data\n * @returns {Events} - Object containing event emitter methods and hook\n *\n * @example\n * const { instance, push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();\n */\nexport const createEventEmitter = <Events extends Record<string, any> = Record<string, any>>() => {\n const eventTarget = new EventTarget();\n\n const push = <Event extends keyof Events>(event: Event, data: Events[Event]) =>\n eventTarget.dispatchEvent(new CustomEvent(event as string, { detail: data }));\n\n const subscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const callback = (event: Event) => listener((event as CustomEvent).detail);\n\n eventTarget.addEventListener(event as string, callback);\n return () => eventTarget.removeEventListener(event as string, callback);\n };\n\n const unsubscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const callback = (event: Event) => listener((event as CustomEvent).detail);\n eventTarget.removeEventListener(event as string, callback);\n };\n\n const useSubscribe = <Event extends keyof Events>(\n event: Event,\n listener?: (data: Events[Event]) => void\n ) => {\n const [data, setData] = useState<Events[Event] | undefined>(undefined);\n const listenerRef = useRef(listener);\n listenerRef.current = listener;\n\n useEffect(() => {\n const onSubscribe = (data: Events[Event]) => {\n setData(data);\n listenerRef.current?.(data);\n };\n subscribe(event, onSubscribe);\n return () => {\n unsubscribe(event, onSubscribe);\n };\n }, [event]);\n\n return data;\n };\n\n return {\n instance: eventTarget,\n push,\n subscribe,\n unsubscribe,\n useSubscribe\n };\n};\n"],"names":["createEventEmitter","eventTarget","push","event","data","subscribe","listener","callback","unsubscribe","setData","useState","listenerRef","useRef","useEffect","onSubscribe"],"mappings":"yGAaaA,EAAqB,IAAgE,CAChG,MAAMC,EAAc,IAAI,YAElBC,EAAO,CAA6BC,EAAcC,IACtDH,EAAY,cAAc,IAAI,YAAYE,EAAiB,CAAE,OAAQC,CAAA,CAAM,CAAC,EAExEC,EAAY,CAChBF,EACAG,IACG,CACH,MAAMC,EAAYJ,GAAiBG,EAAUH,EAAsB,MAAM,EAEzE,OAAAF,EAAY,iBAAiBE,EAAiBI,CAAQ,EAC/C,IAAMN,EAAY,oBAAoBE,EAAiBI,CAAQ,CAAA,EAGlEC,EAAc,CAClBL,EACAG,IACG,CACH,MAAMC,EAAYJ,GAAiBG,EAAUH,EAAsB,MAAM,EACzEF,EAAY,oBAAoBE,EAAiBI,CAAQ,CAAA,EAyB3D,MAAO,CACL,SAAUN,EACV,KAAAC,EACA,UAAAG,EACA,YAAAG,EACA,aA3BmB,CACnBL,EACAG,IACG,CACH,KAAM,CAACF,EAAMK,CAAO,EAAIC,EAAAA,SAAoC,MAAS,EAC/DC,EAAcC,EAAAA,OAAON,CAAQ,EACnC,OAAAK,EAAY,QAAUL,EAEtBO,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAeV,GAAwB,CAC3CK,EAAQL,CAAI,EACZO,EAAY,UAAUP,CAAI,CAAA,EAE5B,OAAAC,EAAUF,EAAOW,CAAW,EACrB,IAAM,CACXN,EAAYL,EAAOW,CAAW,CAAA,CAChC,EACC,CAACX,CAAK,CAAC,EAEHC,CAAA,CAQP,CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStore.cjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n
|
|
1
|
+
{"version":3,"file":"createStore.cjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n * @param {StateCreator<Value>} createState - Function that initializes the store state\n * @returns {StoreApi<Value>} - Object containing store methods and hook for accessing state\n *\n * @example\n * const { set, get, use, subscribe } = createStore((set) => ({\n * count: 0,\n * increment: () => set(state => ({ count: state.count + 1 }))\n * }));\n */\nexport const createStore = <Value>(createState: StateCreator<Value> | Value) => {\n type Listener = (state: Value, prevState: Value) => void;\n let state: Value;\n const listeners: Set<Listener> = new Set();\n\n const setState = (action: SetStateAction<Value>) => {\n const nextState =\n typeof action === 'function' ? (action as (state: Value) => Value)(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = nextState;\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const getState = () => state;\n const getInitialState = () => state;\n\n const subscribe = (listener: Listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n if (typeof createState === 'function') {\n state = (createState as StateCreator<Value>)(setState, getState);\n } else {\n state = createState;\n }\n\n const useStore = <Selected>(selector: (state: Value) => Selected) =>\n useSyncExternalStore(\n subscribe,\n () => selector(getState()),\n () => selector(getInitialState())\n );\n\n return {\n set: setState,\n get: getState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore"],"mappings":"yGA8BaA,EAAsBC,GAA6C,CAE9E,IAAIC,EACJ,MAAMC,MAA+B,IAE/BC,EAAYC,GAAkC,CAClD,MAAMC,EACJ,OAAOD,GAAW,WAAcA,EAAmCH,CAAK,EAAIG,EAE9E,GAAI,CAAC,OAAO,GAAGC,EAAWJ,CAAK,EAAG,CAChC,MAAMK,EAAYL,EAClBA,EAAQI,EACRH,EAAU,QAASK,GAAaA,EAASN,EAAOK,CAAS,CAAC,CAAA,CAC5D,EAGIE,EAAW,IAAMP,EACjBQ,EAAkB,IAAMR,EAExBS,EAAaH,IACjBL,EAAU,IAAIK,CAAQ,EACf,IAAML,EAAU,OAAOK,CAAQ,GAExC,OAAI,OAAOP,GAAgB,WACzBC,EAASD,EAAoCG,EAAUK,CAAQ,EAE/DP,EAAQD,EAUH,CACL,IAAKG,EACL,IAAKK,EACL,IAV0BG,GAC1BC,EAAAA,qBACEF,EACA,IAAMC,EAASH,GAAU,EACzB,IAAMG,EAASF,EAAA,CAAiB,CAAA,EAOlC,UAAAC,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),d=require("../useRefState/useRefState.cjs"),v=require("../../utils/helpers/isTarget.cjs"),b=require("../../utils/helpers/getElement.cjs"),h=(...e)=>{const n=v.isTarget(e[0])?e[0]:void 0,t=n?typeof e[1]=="object"?e[1]:{onChange:e[1]}:typeof e[0]=="object"?e[0]:{onChange:e[0]},c=t?.onChange,i=t?.enabled??!0,[r,a]=s.useState(),o=d.useRefState(),u=s.useRef(c);return u.current=c,s.useEffect(()=>{if(!i||!n&&!o.state)return;const g=n?b.getElement(n):o.current;if(!g)return;const f=new IntersectionObserver(([l])=>{a(l),u.current?.(l)},{...t,root:t?.root?b.getElement(t.root):document});return f.observe(g),()=>{f.disconnect()}},[n,o.state,t?.rootMargin,t?.threshold,t?.root,i]),n?{entry:r,inView:!!r?.isIntersecting}:{ref:o,entry:r,inView:!!r?.isIntersecting}};exports.useIntersectionObserver=h;
|
|
2
2
|
//# sourceMappingURL=useIntersectionObserver.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.cjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.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\n/** The intersection observer options type */\nexport interface UseIntersectionObserverOptions extends Omit<IntersectionObserverInit, 'root'> {\n enabled?: boolean;\n root?: HookTarget;\n onChange?: (entry: IntersectionObserverEntry) => void;\n}\n\n/** The intersection observer return type */\nexport interface UseIntersectionObserverReturn {\n entry?: IntersectionObserverEntry;\n inView: boolean;\n}\n\nexport interface UseIntersectionObserver {\n <Target extends Element>(\n options?: UseIntersectionObserverOptions,\n target?: never\n ): UseIntersectionObserverReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseIntersectionObserverOptions): UseIntersectionObserverReturn;\n}\n\n/**\n * @name useIntersectionObserver\n * @description - Hook that gives you intersection observer state\n * @category Browser\n *\n * @browserapi IntersectionObserver https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @overload\n * @param {HookTarget} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root] The root element to observe\n * @returns {UseIntersectionObserverReturn} An object containing the state\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root] The root element to observe\n * @returns {UseIntersectionObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(ref);\n */\nexport const useIntersectionObserver = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseIntersectionObserverOptions | undefined;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRefState<Element>();\n const internalOnChangeRef = useRef<UseIntersectionObserverOptions['onChange']>(
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.cjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.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\n/** The intersection observer options type */\nexport interface UseIntersectionObserverOptions extends Omit<IntersectionObserverInit, 'root'> {\n enabled?: boolean;\n root?: HookTarget;\n onChange?: (entry: IntersectionObserverEntry) => void;\n}\n\n/** The intersection observer return type */\nexport interface UseIntersectionObserverReturn {\n entry?: IntersectionObserverEntry;\n inView: boolean;\n}\n\nexport interface UseIntersectionObserver {\n <Target extends Element>(\n options?: UseIntersectionObserverOptions,\n target?: never\n ): UseIntersectionObserverReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseIntersectionObserverOptions): UseIntersectionObserverReturn;\n\n <Target extends Element>(\n callback: (entry: IntersectionObserverEntry) => void,\n target?: never\n ): UseIntersectionObserverReturn & { ref: StateRef<Target> };\n\n (\n callback: (entry: IntersectionObserverEntry) => void,\n target: HookTarget\n ): UseIntersectionObserverReturn;\n}\n\n/**\n * @name useIntersectionObserver\n * @description - Hook that gives you intersection observer state\n * @category Browser\n *\n * @browserapi IntersectionObserver https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @overload\n * @param {HookTarget} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseIntersectionObserverReturn} An object containing the state\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseIntersectionObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(ref);\n *\n * @overload\n * @template Target The target element\n * @param {(entry: IntersectionObserverEntry) => void} callback The callback to execute when intersection is detected\n * @returns {UseIntersectionObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver(() => console.log('callback'));\n *\n * @overload\n * @param {(entry: IntersectionObserverEntry) => void} callback The callback to execute when intersection is detected\n * @param {HookTarget} target The target element to detect intersection\n * @returns {UseIntersectionObserverReturn} An object containing the state\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(() => console.log('callback'), ref);\n */\nexport const useIntersectionObserver = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onChange: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onChange: params[0] }\n ) as UseIntersectionObserverOptions | undefined;\n\n const callback = options?.onChange;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRefState<Element>();\n const internalOnChangeRef = useRef<UseIntersectionObserverOptions['onChange']>(callback);\n internalOnChangeRef.current = callback;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n setEntry(entry);\n internalOnChangeRef.current?.(entry);\n },\n {\n ...options,\n root: options?.root ? (getElement(options.root) as Document | Element) : document\n }\n );\n\n observer.observe(element as Element);\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state, options?.rootMargin, options?.threshold, options?.root, enabled]);\n\n if (target) return { entry, inView: !!entry?.isIntersecting };\n return {\n ref: internalRef,\n entry,\n inView: !!entry?.isIntersecting\n };\n}) as UseIntersectionObserver;\n"],"names":["useIntersectionObserver","params","target","isTarget","options","callback","enabled","entry","setEntry","useState","internalRef","useRefState","internalOnChangeRef","useRef","useEffect","element","getElement","observer"],"mappings":"mPAqFaA,EAA2B,IAAIC,IAAkB,CAC5D,MAAMC,EAAUC,EAAAA,SAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAE5CG,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,EAAWD,GAAS,SACpBE,EAAUF,GAAS,SAAW,GAE9B,CAACG,EAAOC,CAAQ,EAAIC,WAAA,EAEpBC,EAAcC,EAAAA,YAAA,EACdC,EAAsBC,EAAAA,OAAmDR,CAAQ,EA2BvF,OA1BAO,EAAoB,QAAUP,EAE9BS,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,GAAY,CAACJ,GAAU,CAACQ,EAAY,MAAQ,OAEjD,MAAMK,EAAUb,EAASc,EAAAA,WAAWd,CAAM,EAAIQ,EAAY,QAC1D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAW,IAAI,qBACnB,CAAC,CAACV,CAAK,IAAM,CACXC,EAASD,CAAK,EACdK,EAAoB,UAAUL,CAAK,CAAA,EAErC,CACE,GAAGH,EACH,KAAMA,GAAS,KAAQY,EAAAA,WAAWZ,EAAQ,IAAI,EAA2B,QAAA,CAC3E,EAGF,OAAAa,EAAS,QAAQF,CAAkB,EAE5B,IAAM,CACXE,EAAS,WAAA,CAAW,CACtB,EACC,CAACf,EAAQQ,EAAY,MAAON,GAAS,WAAYA,GAAS,UAAWA,GAAS,KAAME,CAAO,CAAC,EAE3FJ,EAAe,CAAE,MAAAK,EAAO,OAAQ,CAAC,CAACA,GAAO,cAAA,EACtC,CACL,IAAKG,EACL,MAAAH,EACA,OAAQ,CAAC,CAACA,GAAO,cAAA,CAErB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.cjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/* The use query return type */\nexport interface UseQueryOptions<QueryData, Data> {\n /* The enabled state of the query */\n enabled?: boolean;\n /* The depends for the hook */\n keys?: DependencyList;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The refetch interval */\n refetchInterval?: number;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, error: Error) => number) | number;\n /* The callback function to be invoked on error */\n onError?: (error: Error) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (data: Data) => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\ninterface UseQueryCallbackParams {\n /* The depends for the hook */\n keys: DependencyList;\n /* The abort signal */\n signal: AbortSignal;\n}\n\n/* The use query return type */\nexport interface UseQueryReturn<Data> {\n /* The abort function */\n abort: AbortController['abort'];\n /* The state of the query */\n data?: Data;\n /* The success state of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The fetching state of the query */\n isFetching: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n /* The refetching state of the query */\n isRefetching: boolean;\n /* The success state of the query */\n isSuccess: boolean;\n /* The refetch function */\n refetch: () => void;\n}\n\n/**\n * @name useQuery\n * @description - Hook that defines the logic when query data\n * @category Utilities\n *\n * @template Data The type of the data\n * @param {() => Promise<Data>} callback The callback function to be invoked\n * @param {DependencyList} [options.keys] The dependencies for the hook\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\n * @param {number} [options.refetchInterval] The refetch interval\n * @param {boolean | number} [options.retry] The retry count of requests\n * @returns {UseQueryReturn<Data>} An object with the state of the query\n *\n * @example\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\n */\nexport const useQuery = <QueryData, Data = QueryData>(\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\n options?: UseQueryOptions<QueryData, Data>\n): UseQueryReturn<Data> => {\n const enabled = options?.enabled ?? true;\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const alreadyRequested = useRef(false);\n\n const [isFetching, setIsFetching] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [isRefetching, setIsRefetching] = useState(false);\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n\n const keys = options?.keys ?? [];\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n const request = (action: 'init' | 'refetch') => {\n abort();\n\n setIsFetching(true);\n if (action === 'init') {\n alreadyRequested.current = true;\n setIsLoading(true);\n }\n if (action === 'refetch') setIsRefetching(true);\n callback({ signal: abortControllerRef.current.signal, keys })\n .then((response) => {\n const data = options?.select ? options?.select(response) : response;\n options?.onSuccess?.(data as Data);\n setData(data as Data);\n setIsSuccess(true);\n setError(undefined);\n setIsError(false);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n })\n .catch((error: Error) => {\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, error)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(() => request(action), retryDelay);\n return;\n }\n\n return request(action);\n }\n options?.onError?.(error);\n setData(undefined);\n setIsSuccess(false);\n setError(error);\n setIsError(true);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n })\n .finally(() => {\n if (options?.refetchInterval) {\n const interval = setInterval(() => {\n clearInterval(interval);\n request('refetch');\n }, options?.refetchInterval);\n intervalIdRef.current = interval;\n }\n });\n };\n\n useMount(() => {\n if (!enabled) return;\n request('init');\n });\n\n useDidUpdate(() => {\n if (!enabled) return;\n request(alreadyRequested.current ? 'refetch' : 'init');\n }, [enabled, ...keys]);\n\n useEffect(() => {\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\n\n const refetch = () => request('refetch');\n\n return {\n abort,\n data,\n error,\n refetch,\n isFetching,\n isLoading,\n isError,\n isSuccess,\n isRefetching\n };\n};\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useQuery.cjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\r\n\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nimport { getRetry } from '@/utils/helpers';\r\n\r\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\r\nimport { useMount } from '../useMount/useMount';\r\n\r\n/* The use query return type */\r\nexport interface UseQueryOptions<QueryData, Data> {\r\n /* The enabled state of the query */\r\n enabled?: boolean;\r\n /* The depends for the hook */\r\n keys?: DependencyList;\r\n /* The placeholder data for the hook */\r\n placeholderData?: (() => Data) | Data;\r\n /* The refetch interval */\r\n refetchInterval?: number;\r\n /* The retry count of requests */\r\n retry?: boolean | number;\r\n /* The retry delay of requests */\r\n retryDelay?: ((retry: number, error: Error) => number) | number;\r\n /* The callback function to be invoked on error */\r\n onError?: (error: Error) => void;\r\n /* The callback function to be invoked on success */\r\n onSuccess?: (data: Data) => void;\r\n /* The select function to be invoked */\r\n select?: (data: QueryData) => Data;\r\n}\r\n\r\ninterface UseQueryCallbackParams {\r\n /* The depends for the hook */\r\n keys: DependencyList;\r\n /* The abort signal */\r\n signal: AbortSignal;\r\n}\r\n\r\n/* The use query return type */\r\nexport interface UseQueryReturn<Data> {\r\n /* The abort function */\r\n abort: AbortController['abort'];\r\n /* The state of the query */\r\n data?: Data;\r\n /* The success state of the query */\r\n error?: Error;\r\n /* The error state of the query */\r\n isError: boolean;\r\n /* The fetching state of the query */\r\n isFetching: boolean;\r\n /* The loading state of the query */\r\n isLoading: boolean;\r\n /* The refetching state of the query */\r\n isRefetching: boolean;\r\n /* The success state of the query */\r\n isSuccess: boolean;\r\n /* The refetch function */\r\n refetch: () => void;\r\n}\r\n\r\n/**\r\n * @name useQuery\r\n * @description - Hook that defines the logic when query data\r\n * @category Utilities\r\n *\r\n * @template Data The type of the data\r\n * @param {() => Promise<Data>} callback The callback function to be invoked\r\n * @param {DependencyList} [options.keys] The dependencies for the hook\r\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\r\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\r\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\r\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\r\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\r\n * @param {number} [options.refetchInterval] The refetch interval\r\n * @param {boolean | number} [options.retry] The retry count of requests\r\n * @returns {UseQueryReturn<Data>} An object with the state of the query\r\n *\r\n * @example\r\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\r\n */\r\nexport const useQuery = <QueryData, Data = QueryData>(\r\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\r\n options?: UseQueryOptions<QueryData, Data>\r\n): UseQueryReturn<Data> => {\r\n const enabled = options?.enabled ?? true;\r\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\r\n const alreadyRequested = useRef(false);\r\n\r\n const [isFetching, setIsFetching] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isError, setIsError] = useState(false);\r\n const [isRefetching, setIsRefetching] = useState(false);\r\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\r\n\r\n const [error, setError] = useState<Error | undefined>(undefined);\r\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\r\n\r\n const abortControllerRef = useRef<AbortController>(new AbortController());\r\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\r\n\r\n const keys = options?.keys ?? [];\r\n\r\n const abort = () => {\r\n abortControllerRef.current.abort();\r\n abortControllerRef.current = new AbortController();\r\n };\r\n\r\n const request = (action: 'init' | 'refetch') => {\r\n abort();\r\n\r\n setIsFetching(true);\r\n if (action === 'init') {\r\n alreadyRequested.current = true;\r\n setIsLoading(true);\r\n }\r\n if (action === 'refetch') setIsRefetching(true);\r\n callback({ signal: abortControllerRef.current.signal, keys })\r\n .then((response) => {\r\n const data = options?.select ? options?.select(response) : response;\r\n options?.onSuccess?.(data as Data);\r\n setData(data as Data);\r\n setIsSuccess(true);\r\n setError(undefined);\r\n setIsError(false);\r\n setIsFetching(false);\r\n if (action === 'init') setIsLoading(false);\r\n if (action === 'refetch') setIsRefetching(false);\r\n })\r\n .catch((error: Error) => {\r\n if (retryCountRef.current > 0) {\r\n retryCountRef.current -= 1;\r\n const retryDelay =\r\n typeof options?.retryDelay === 'function'\r\n ? options?.retryDelay(retryCountRef.current, error)\r\n : options?.retryDelay;\r\n\r\n if (retryDelay) {\r\n setTimeout(() => request(action), retryDelay);\r\n return;\r\n }\r\n\r\n return request(action);\r\n }\r\n options?.onError?.(error);\r\n setData(undefined);\r\n setIsSuccess(false);\r\n setError(error);\r\n setIsError(true);\r\n setIsFetching(false);\r\n if (action === 'init') setIsLoading(false);\r\n if (action === 'refetch') setIsRefetching(false);\r\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\r\n })\r\n .finally(() => {\r\n if (options?.refetchInterval) {\r\n const interval = setInterval(() => {\r\n clearInterval(interval);\r\n request('refetch');\r\n }, options?.refetchInterval);\r\n intervalIdRef.current = interval;\r\n }\r\n });\r\n };\r\n\r\n useMount(() => {\r\n if (!enabled) return;\r\n request('init');\r\n });\r\n\r\n useDidUpdate(() => {\r\n if (!enabled) return;\r\n request(alreadyRequested.current ? 'refetch' : 'init');\r\n }, [enabled, ...keys]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearInterval(intervalIdRef.current);\r\n };\r\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\r\n\r\n const refetch = () => request('refetch');\r\n\r\n return {\r\n abort,\r\n data,\r\n error,\r\n refetch,\r\n isFetching,\r\n isLoading,\r\n isError,\r\n isSuccess,\r\n isRefetching\r\n };\r\n};\r\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":"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"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("./helpers/createContext/createContext.cjs"),m=require("./helpers/createReactiveContext/createReactiveContext.cjs"),R=require("./helpers/createStore/createStore.cjs"),p=require("./hooks/useActiveElement/useActiveElement.cjs"),y=require("./hooks/useAsync/useAsync.cjs"),O=require("./hooks/useBattery/useBattery.cjs"),v=require("./hooks/useBluetooth/useBluetooth.cjs"),I=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),k=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),D=require("./hooks/useClickOutside/useClickOutside.cjs"),h=require("./hooks/useClipboard/useClipboard.cjs"),A=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),i=require("./hooks/useCookies/useCookies.cjs"),b=require("./hooks/useCopy/useCopy.cjs"),L=require("./hooks/useCounter/useCounter.cjs"),M=require("./hooks/useCssVar/useCssVar.cjs"),f=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),_=require("./hooks/useDebounceValue/useDebounceValue.cjs"),N=require("./hooks/useDefault/useDefault.cjs"),B=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),K=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),F=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),V=require("./hooks/useDidUpdate/useDidUpdate.cjs"),U=require("./hooks/useDisclosure/useDisclosure.cjs"),w=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),W=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),x=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),H=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),Q=require("./hooks/useDoubleClick/useDoubleClick.cjs"),z=require("./hooks/useDropZone/useDropZone.cjs"),G=require("./hooks/useElementSize/useElementSize.cjs"),X=require("./hooks/useEvent/useEvent.cjs"),Z=require("./hooks/useEventListener/useEventListener.cjs"),j=require("./hooks/useEventSource/useEventSource.cjs"),J=require("./hooks/useEyeDropper/useEyeDropper.cjs"),Y=require("./hooks/useFavicon/useFavicon.cjs"),$=require("./hooks/useField/useField.cjs"),ee=require("./hooks/useFileDialog/useFileDialog.cjs"),se=require("./hooks/useFocus/useFocus.cjs"),ue=require("./hooks/useFps/useFps.cjs"),re=require("./hooks/useFul/useFul.cjs"),te=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),oe=require("./hooks/useGeolocation/useGeolocation.cjs"),ie=require("./hooks/useHash/useHash.cjs"),c=require("./hooks/useHotkeys/useHotkeys.cjs"),ne=require("./hooks/useHover/useHover.cjs"),ce=require("./hooks/useIdle/useIdle.cjs"),ae=require("./hooks/useImage/useImage.cjs"),le=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),Se=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),qe=require("./hooks/useInterval/useInterval.cjs"),de=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),ge=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),Pe=require("./hooks/useKeyboard/useKeyboard.cjs"),Te=require("./hooks/useKeyPress/useKeyPress.cjs"),Ee=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),Ce=require("./hooks/useKeysPressed/useKeysPressed.cjs"),me=require("./hooks/useLastChanged/useLastChanged.cjs"),Re=require("./hooks/useLatest/useLatest.cjs"),pe=require("./hooks/useLess/useLess.cjs"),ye=require("./hooks/useList/useList.cjs"),Oe=require("./hooks/useLocalStorage/useLocalStorage.cjs"),ve=require("./hooks/useLockCallback/useLockCallback.cjs"),Ie=require("./hooks/useLogger/useLogger.cjs"),ke=require("./hooks/useLongPress/useLongPress.cjs"),De=require("./hooks/useMap/useMap.cjs"),he=require("./hooks/useMeasure/useMeasure.cjs"),Ae=require("./hooks/useMediaQuery/useMediaQuery.cjs"),be=require("./hooks/useMemory/useMemory.cjs"),Le=require("./hooks/useMount/useMount.cjs"),Me=require("./hooks/useMouse/useMouse.cjs"),fe=require("./hooks/useMutation/useMutation.cjs"),_e=require("./hooks/useMutationObserver/useMutationObserver.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),Ne=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),Be=require("./hooks/useOnce/useOnce.cjs"),Ke=require("./hooks/useOnline/useOnline.cjs"),l=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Fe=require("./hooks/useOptimistic/useOptimistic.cjs"),Ve=require("./hooks/useOrientation/useOrientation.cjs"),Ue=require("./hooks/useOtpCredential/useOtpCredential.cjs"),we=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),We=require("./hooks/useParallax/useParallax.cjs"),xe=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),He=require("./hooks/usePermission/usePermission.cjs"),Qe=require("./hooks/usePointerLock/usePointerLock.cjs"),ze=require("./hooks/usePostMessage/usePostMessage.cjs"),Ge=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Xe=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Ze=require("./hooks/usePreferredDark/usePreferredDark.cjs"),je=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Je=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Ye=require("./hooks/usePrevious/usePrevious.cjs"),$e=require("./hooks/useQuery/useQuery.cjs"),es=require("./hooks/useQueue/useQueue.cjs"),ss=require("./hooks/useRaf/useRaf.cjs"),us=require("./hooks/useRafValue/useRafValue.cjs"),rs=require("./hooks/useRefState/useRefState.cjs"),ts=require("./hooks/useRenderCount/useRenderCount.cjs"),os=require("./hooks/useRenderInfo/useRenderInfo.cjs"),is=require("./hooks/useRerender/useRerender.cjs"),ns=require("./hooks/useResizeObserver/useResizeObserver.cjs"),cs=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),S=require("./hooks/useScript/useScript.cjs"),as=require("./hooks/useScroll/useScroll.cjs"),ls=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),Ss=require("./hooks/useScrollTo/useScrollTo.cjs"),qs=require("./hooks/useSessionStorage/useSessionStorage.cjs"),ds=require("./hooks/useSet/useSet.cjs"),gs=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),Ps=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),d=require("./hooks/useStateHistory/useStateHistory.cjs"),Ts=require("./hooks/useStep/useStep.cjs"),Es=require("./hooks/useSticky/useSticky.cjs"),Cs=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),ms=require("./hooks/useTextDirection/useTextDirection.cjs"),g=require("./hooks/useTextSelection/useTextSelection.cjs"),Rs=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),ps=require("./hooks/useThrottleValue/useThrottleValue.cjs"),ys=require("./hooks/useTime/useTime.cjs"),Os=require("./hooks/useTimeout/useTimeout.cjs"),P=require("./hooks/useTimer/useTimer.cjs"),vs=require("./hooks/useToggle/useToggle.cjs"),Is=require("./hooks/useUnmount/useUnmount.cjs"),u=require("./hooks/useUrlSearchParam/useUrlSearchParam.cjs"),ks=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),Ds=require("./hooks/useVibrate/useVibrate.cjs"),hs=require("./hooks/useWakeLock/useWakeLock.cjs"),As=require("./hooks/useWebSocket/useWebSocket.cjs"),bs=require("./hooks/useWindowEvent/useWindowEvent.cjs"),Ls=require("./hooks/useWindowFocus/useWindowFocus.cjs"),T=require("./hooks/useWindowScroll/useWindowScroll.cjs"),Ms=require("./hooks/useWindowSize/useWindowSize.cjs"),fs=require("./hooks/useWizard/useWizard.cjs"),E=require("./utils/helpers/copy.cjs"),_s=require("./utils/helpers/debounce.cjs"),Ns=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),Bs=require("./utils/helpers/getRetry.cjs"),Ks=require("./utils/helpers/isTarget.cjs"),Fs=require("./utils/helpers/throttle.cjs");exports.createContext=C.createContext;exports.createReactiveContext=m.createReactiveContext;exports.createStore=R.createStore;exports.useActiveElement=p.useActiveElement;exports.useAsync=y.useAsync;exports.useBattery=O.useBattery;exports.useBluetooth=v.useBluetooth;exports.useBoolean=I.useBoolean;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.useBrowserLanguage=k.useBrowserLanguage;exports.useClickOutside=D.useClickOutside;exports.useClipboard=h.useClipboard;exports.useConst=A.useConst;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=i.clearCookies;exports.useCookies=i.useCookies;exports.useCopy=b.useCopy;exports.useCounter=L.useCounter;exports.useCssVar=M.useCssVar;exports.useDebounceCallback=f.useDebounceCallback;exports.useDebounceValue=_.useDebounceValue;exports.useDefault=N.useDefault;exports.useDeviceMotion=B.useDeviceMotion;exports.useDeviceOrientation=K.useDeviceOrientation;exports.useDevicePixelRatio=F.useDevicePixelRatio;exports.useDidUpdate=V.useDidUpdate;exports.useDisclosure=U.useDisclosure;exports.useDisplayMedia=w.useDisplayMedia;exports.useDocumentEvent=W.useDocumentEvent;exports.useDocumentTitle=x.useDocumentTitle;exports.useDocumentVisibility=H.useDocumentVisibility;exports.useDoubleClick=Q.useDoubleClick;exports.useDropZone=z.useDropZone;exports.useElementSize=G.useElementSize;exports.useEvent=X.useEvent;exports.useEventListener=Z.useEventListener;exports.useEventSource=j.useEventSource;exports.useEyeDropper=J.useEyeDropper;exports.useFavicon=Y.useFavicon;exports.useField=$.useField;exports.useFileDialog=ee.useFileDialog;exports.useFocus=se.useFocus;exports.useFps=ue.useFps;exports.useFul=re.useFul;exports.useFullscreen=te.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=oe.useGeolocation;exports.useHash=ie.useHash;exports.isHotkeyMatch=c.isHotkeyMatch;exports.useHotkeys=c.useHotkeys;exports.useHover=ne.useHover;exports.useIdle=ce.useIdle;exports.useImage=ae.useImage;exports.useInfiniteScroll=le.useInfiniteScroll;exports.useIntersectionObserver=Se.useIntersectionObserver;exports.useInterval=qe.useInterval;exports.useIsFirstRender=de.useIsFirstRender;exports.useIsomorphicLayoutEffect=ge.useIsomorphicLayoutEffect;exports.useKeyboard=Pe.useKeyboard;exports.useKeyPress=Te.useKeyPress;exports.useKeyPressEvent=Ee.useKeyPressEvent;exports.useKeysPressed=Ce.useKeysPressed;exports.useLastChanged=me.useLastChanged;exports.useLatest=Re.useLatest;exports.useLess=pe.useLess;exports.useList=ye.useList;exports.useLocalStorage=Oe.useLocalStorage;exports.useLockCallback=ve.useLockCallback;exports.useLogger=Ie.useLogger;exports.useLongPress=ke.useLongPress;exports.useMap=De.useMap;exports.useMeasure=he.useMeasure;exports.useMediaQuery=Ae.useMediaQuery;exports.useMemory=be.useMemory;exports.useMount=Le.useMount;exports.useMouse=Me.useMouse;exports.useMutation=fe.useMutation;exports.useMutationObserver=_e.useMutationObserver;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOffsetPagination=Ne.useOffsetPagination;exports.useOnce=Be.useOnce;exports.useOnline=Ke.useOnline;exports.getOperatingSystem=l.getOperatingSystem;exports.useOperatingSystem=l.useOperatingSystem;exports.useOptimistic=Fe.useOptimistic;exports.useOrientation=Ve.useOrientation;exports.useOtpCredential=Ue.useOtpCredential;exports.usePageLeave=we.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=We.useParallax;exports.usePerformanceObserver=xe.usePerformanceObserver;exports.usePermission=He.usePermission;exports.usePointerLock=Qe.usePointerLock;exports.usePostMessage=ze.usePostMessage;exports.usePreferredColorScheme=Ge.usePreferredColorScheme;exports.usePreferredContrast=Xe.usePreferredContrast;exports.usePreferredDark=Ze.usePreferredDark;exports.usePreferredLanguages=je.usePreferredLanguages;exports.usePreferredReducedMotion=Je.usePreferredReducedMotion;exports.usePrevious=Ye.usePrevious;exports.useQuery=$e.useQuery;exports.useQueue=es.useQueue;exports.useRaf=ss.useRaf;exports.useRafValue=us.useRafValue;exports.useRefState=rs.useRefState;exports.useRenderCount=ts.useRenderCount;exports.useRenderInfo=os.useRenderInfo;exports.useRerender=is.useRerender;exports.useResizeObserver=ns.useResizeObserver;exports.useScreenOrientation=cs.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=S.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=S.useScript;exports.useScroll=as.useScroll;exports.useScrollIntoView=ls.useScrollIntoView;exports.useScrollTo=Ss.useScrollTo;exports.useSessionStorage=qs.useSessionStorage;exports.useSet=ds.useSet;exports.useShare=gs.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useSpeechSynthesis=Ps.useSpeechSynthesis;exports.stateHistoryReducer=d.stateHistoryReducer;exports.useStateHistory=d.useStateHistory;exports.useStep=Ts.useStep;exports.useSticky=Es.useSticky;exports.useStopwatch=Cs.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=ms.useTextDirection;exports.getRangesSelection=g.getRangesSelection;exports.useTextSelection=g.useTextSelection;exports.useThrottleCallback=Rs.useThrottleCallback;exports.useThrottleValue=ps.useThrottleValue;exports.useTime=ys.useTime;exports.useTimeout=Os.useTimeout;exports.getTimeFromSeconds=P.getTimeFromSeconds;exports.useTimer=P.useTimer;exports.useToggle=vs.useToggle;exports.useUnmount=Is.useUnmount;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.useVibrate=Ds.useVibrate;exports.useWakeLock=hs.useWakeLock;exports.useWebSocket=As.useWebSocket;exports.useWindowEvent=bs.useWindowEvent;exports.useWindowFocus=Ls.useWindowFocus;exports.scrollTo=T.scrollTo;exports.useWindowScroll=T.useWindowScroll;exports.useWindowSize=Ms.useWindowSize;exports.useWizard=fs.useWizard;exports.copy=E.copy;exports.legacyCopyToClipboard=E.legacyCopyToClipboard;exports.debounce=_s.debounce;exports.getDate=Ns.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=Bs.getRetry;exports.isTarget=Ks.isTarget;exports.throttle=Fs.throttle;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./helpers/createContext/createContext.cjs"),C=require("./helpers/createEventEmitter/createEventEmitter.cjs"),R=require("./helpers/createReactiveContext/createReactiveContext.cjs"),p=require("./helpers/createStore/createStore.cjs"),y=require("./hooks/useActiveElement/useActiveElement.cjs"),v=require("./hooks/useAsync/useAsync.cjs"),O=require("./hooks/useBattery/useBattery.cjs"),I=require("./hooks/useBluetooth/useBluetooth.cjs"),k=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),D=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),h=require("./hooks/useClickOutside/useClickOutside.cjs"),A=require("./hooks/useClipboard/useClipboard.cjs"),b=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),i=require("./hooks/useCookies/useCookies.cjs"),L=require("./hooks/useCopy/useCopy.cjs"),M=require("./hooks/useCounter/useCounter.cjs"),f=require("./hooks/useCssVar/useCssVar.cjs"),_=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),N=require("./hooks/useDebounceValue/useDebounceValue.cjs"),B=require("./hooks/useDefault/useDefault.cjs"),K=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),F=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),V=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),U=require("./hooks/useDidUpdate/useDidUpdate.cjs"),w=require("./hooks/useDisclosure/useDisclosure.cjs"),W=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),x=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),H=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),Q=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),z=require("./hooks/useDoubleClick/useDoubleClick.cjs"),G=require("./hooks/useDropZone/useDropZone.cjs"),X=require("./hooks/useElementSize/useElementSize.cjs"),Z=require("./hooks/useEvent/useEvent.cjs"),j=require("./hooks/useEventListener/useEventListener.cjs"),J=require("./hooks/useEventSource/useEventSource.cjs"),Y=require("./hooks/useEyeDropper/useEyeDropper.cjs"),$=require("./hooks/useFavicon/useFavicon.cjs"),ee=require("./hooks/useField/useField.cjs"),se=require("./hooks/useFileDialog/useFileDialog.cjs"),ue=require("./hooks/useFocus/useFocus.cjs"),re=require("./hooks/useFps/useFps.cjs"),te=require("./hooks/useFul/useFul.cjs"),oe=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),ie=require("./hooks/useGeolocation/useGeolocation.cjs"),ne=require("./hooks/useHash/useHash.cjs"),c=require("./hooks/useHotkeys/useHotkeys.cjs"),ce=require("./hooks/useHover/useHover.cjs"),ae=require("./hooks/useIdle/useIdle.cjs"),le=require("./hooks/useImage/useImage.cjs"),Se=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),qe=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),de=require("./hooks/useInterval/useInterval.cjs"),ge=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),Ee=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),Pe=require("./hooks/useKeyboard/useKeyboard.cjs"),Te=require("./hooks/useKeyPress/useKeyPress.cjs"),me=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),Ce=require("./hooks/useKeysPressed/useKeysPressed.cjs"),Re=require("./hooks/useLastChanged/useLastChanged.cjs"),pe=require("./hooks/useLatest/useLatest.cjs"),ye=require("./hooks/useLess/useLess.cjs"),ve=require("./hooks/useList/useList.cjs"),Oe=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Ie=require("./hooks/useLockCallback/useLockCallback.cjs"),ke=require("./hooks/useLogger/useLogger.cjs"),De=require("./hooks/useLongPress/useLongPress.cjs"),he=require("./hooks/useMap/useMap.cjs"),Ae=require("./hooks/useMeasure/useMeasure.cjs"),be=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Le=require("./hooks/useMemory/useMemory.cjs"),Me=require("./hooks/useMount/useMount.cjs"),fe=require("./hooks/useMouse/useMouse.cjs"),_e=require("./hooks/useMutation/useMutation.cjs"),Ne=require("./hooks/useMutationObserver/useMutationObserver.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),Be=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),Ke=require("./hooks/useOnce/useOnce.cjs"),Fe=require("./hooks/useOnline/useOnline.cjs"),l=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Ve=require("./hooks/useOptimistic/useOptimistic.cjs"),Ue=require("./hooks/useOrientation/useOrientation.cjs"),we=require("./hooks/useOtpCredential/useOtpCredential.cjs"),We=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),xe=require("./hooks/useParallax/useParallax.cjs"),He=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),Qe=require("./hooks/usePermission/usePermission.cjs"),ze=require("./hooks/usePointerLock/usePointerLock.cjs"),Ge=require("./hooks/usePostMessage/usePostMessage.cjs"),Xe=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Ze=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),je=require("./hooks/usePreferredDark/usePreferredDark.cjs"),Je=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Ye=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),$e=require("./hooks/usePrevious/usePrevious.cjs"),es=require("./hooks/useQuery/useQuery.cjs"),ss=require("./hooks/useQueue/useQueue.cjs"),us=require("./hooks/useRaf/useRaf.cjs"),rs=require("./hooks/useRafValue/useRafValue.cjs"),ts=require("./hooks/useRefState/useRefState.cjs"),os=require("./hooks/useRenderCount/useRenderCount.cjs"),is=require("./hooks/useRenderInfo/useRenderInfo.cjs"),ns=require("./hooks/useRerender/useRerender.cjs"),cs=require("./hooks/useResizeObserver/useResizeObserver.cjs"),as=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),S=require("./hooks/useScript/useScript.cjs"),ls=require("./hooks/useScroll/useScroll.cjs"),Ss=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),qs=require("./hooks/useScrollTo/useScrollTo.cjs"),ds=require("./hooks/useSessionStorage/useSessionStorage.cjs"),gs=require("./hooks/useSet/useSet.cjs"),Es=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),Ps=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),d=require("./hooks/useStateHistory/useStateHistory.cjs"),Ts=require("./hooks/useStep/useStep.cjs"),ms=require("./hooks/useSticky/useSticky.cjs"),Cs=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),Rs=require("./hooks/useTextDirection/useTextDirection.cjs"),g=require("./hooks/useTextSelection/useTextSelection.cjs"),ps=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),ys=require("./hooks/useThrottleValue/useThrottleValue.cjs"),vs=require("./hooks/useTime/useTime.cjs"),Os=require("./hooks/useTimeout/useTimeout.cjs"),E=require("./hooks/useTimer/useTimer.cjs"),Is=require("./hooks/useToggle/useToggle.cjs"),ks=require("./hooks/useUnmount/useUnmount.cjs"),u=require("./hooks/useUrlSearchParam/useUrlSearchParam.cjs"),Ds=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),hs=require("./hooks/useVibrate/useVibrate.cjs"),As=require("./hooks/useWakeLock/useWakeLock.cjs"),bs=require("./hooks/useWebSocket/useWebSocket.cjs"),Ls=require("./hooks/useWindowEvent/useWindowEvent.cjs"),Ms=require("./hooks/useWindowFocus/useWindowFocus.cjs"),P=require("./hooks/useWindowScroll/useWindowScroll.cjs"),fs=require("./hooks/useWindowSize/useWindowSize.cjs"),_s=require("./hooks/useWizard/useWizard.cjs"),T=require("./utils/helpers/copy.cjs"),Ns=require("./utils/helpers/debounce.cjs"),Bs=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),Ks=require("./utils/helpers/getRetry.cjs"),Fs=require("./utils/helpers/isTarget.cjs"),Vs=require("./utils/helpers/throttle.cjs");exports.createContext=m.createContext;exports.createEventEmitter=C.createEventEmitter;exports.createReactiveContext=R.createReactiveContext;exports.createStore=p.createStore;exports.useActiveElement=y.useActiveElement;exports.useAsync=v.useAsync;exports.useBattery=O.useBattery;exports.useBluetooth=I.useBluetooth;exports.useBoolean=k.useBoolean;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.useBrowserLanguage=D.useBrowserLanguage;exports.useClickOutside=h.useClickOutside;exports.useClipboard=A.useClipboard;exports.useConst=b.useConst;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=i.clearCookies;exports.useCookies=i.useCookies;exports.useCopy=L.useCopy;exports.useCounter=M.useCounter;exports.useCssVar=f.useCssVar;exports.useDebounceCallback=_.useDebounceCallback;exports.useDebounceValue=N.useDebounceValue;exports.useDefault=B.useDefault;exports.useDeviceMotion=K.useDeviceMotion;exports.useDeviceOrientation=F.useDeviceOrientation;exports.useDevicePixelRatio=V.useDevicePixelRatio;exports.useDidUpdate=U.useDidUpdate;exports.useDisclosure=w.useDisclosure;exports.useDisplayMedia=W.useDisplayMedia;exports.useDocumentEvent=x.useDocumentEvent;exports.useDocumentTitle=H.useDocumentTitle;exports.useDocumentVisibility=Q.useDocumentVisibility;exports.useDoubleClick=z.useDoubleClick;exports.useDropZone=G.useDropZone;exports.useElementSize=X.useElementSize;exports.useEvent=Z.useEvent;exports.useEventListener=j.useEventListener;exports.useEventSource=J.useEventSource;exports.useEyeDropper=Y.useEyeDropper;exports.useFavicon=$.useFavicon;exports.useField=ee.useField;exports.useFileDialog=se.useFileDialog;exports.useFocus=ue.useFocus;exports.useFps=re.useFps;exports.useFul=te.useFul;exports.useFullscreen=oe.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=ie.useGeolocation;exports.useHash=ne.useHash;exports.isHotkeyMatch=c.isHotkeyMatch;exports.useHotkeys=c.useHotkeys;exports.useHover=ce.useHover;exports.useIdle=ae.useIdle;exports.useImage=le.useImage;exports.useInfiniteScroll=Se.useInfiniteScroll;exports.useIntersectionObserver=qe.useIntersectionObserver;exports.useInterval=de.useInterval;exports.useIsFirstRender=ge.useIsFirstRender;exports.useIsomorphicLayoutEffect=Ee.useIsomorphicLayoutEffect;exports.useKeyboard=Pe.useKeyboard;exports.useKeyPress=Te.useKeyPress;exports.useKeyPressEvent=me.useKeyPressEvent;exports.useKeysPressed=Ce.useKeysPressed;exports.useLastChanged=Re.useLastChanged;exports.useLatest=pe.useLatest;exports.useLess=ye.useLess;exports.useList=ve.useList;exports.useLocalStorage=Oe.useLocalStorage;exports.useLockCallback=Ie.useLockCallback;exports.useLogger=ke.useLogger;exports.useLongPress=De.useLongPress;exports.useMap=he.useMap;exports.useMeasure=Ae.useMeasure;exports.useMediaQuery=be.useMediaQuery;exports.useMemory=Le.useMemory;exports.useMount=Me.useMount;exports.useMouse=fe.useMouse;exports.useMutation=_e.useMutation;exports.useMutationObserver=Ne.useMutationObserver;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOffsetPagination=Be.useOffsetPagination;exports.useOnce=Ke.useOnce;exports.useOnline=Fe.useOnline;exports.getOperatingSystem=l.getOperatingSystem;exports.useOperatingSystem=l.useOperatingSystem;exports.useOptimistic=Ve.useOptimistic;exports.useOrientation=Ue.useOrientation;exports.useOtpCredential=we.useOtpCredential;exports.usePageLeave=We.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=xe.useParallax;exports.usePerformanceObserver=He.usePerformanceObserver;exports.usePermission=Qe.usePermission;exports.usePointerLock=ze.usePointerLock;exports.usePostMessage=Ge.usePostMessage;exports.usePreferredColorScheme=Xe.usePreferredColorScheme;exports.usePreferredContrast=Ze.usePreferredContrast;exports.usePreferredDark=je.usePreferredDark;exports.usePreferredLanguages=Je.usePreferredLanguages;exports.usePreferredReducedMotion=Ye.usePreferredReducedMotion;exports.usePrevious=$e.usePrevious;exports.useQuery=es.useQuery;exports.useQueue=ss.useQueue;exports.useRaf=us.useRaf;exports.useRafValue=rs.useRafValue;exports.useRefState=ts.useRefState;exports.useRenderCount=os.useRenderCount;exports.useRenderInfo=is.useRenderInfo;exports.useRerender=ns.useRerender;exports.useResizeObserver=cs.useResizeObserver;exports.useScreenOrientation=as.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=S.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=S.useScript;exports.useScroll=ls.useScroll;exports.useScrollIntoView=Ss.useScrollIntoView;exports.useScrollTo=qs.useScrollTo;exports.useSessionStorage=ds.useSessionStorage;exports.useSet=gs.useSet;exports.useShare=Es.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useSpeechSynthesis=Ps.useSpeechSynthesis;exports.stateHistoryReducer=d.stateHistoryReducer;exports.useStateHistory=d.useStateHistory;exports.useStep=Ts.useStep;exports.useSticky=ms.useSticky;exports.useStopwatch=Cs.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=Rs.useTextDirection;exports.getRangesSelection=g.getRangesSelection;exports.useTextSelection=g.useTextSelection;exports.useThrottleCallback=ps.useThrottleCallback;exports.useThrottleValue=ys.useThrottleValue;exports.useTime=vs.useTime;exports.useTimeout=Os.useTimeout;exports.getTimeFromSeconds=E.getTimeFromSeconds;exports.useTimer=E.useTimer;exports.useToggle=Is.useToggle;exports.useUnmount=ks.useUnmount;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=Ds.useUrlSearchParams;exports.useVibrate=hs.useVibrate;exports.useWakeLock=As.useWakeLock;exports.useWebSocket=bs.useWebSocket;exports.useWindowEvent=Ls.useWindowEvent;exports.useWindowFocus=Ms.useWindowFocus;exports.scrollTo=P.scrollTo;exports.useWindowScroll=P.useWindowScroll;exports.useWindowSize=fs.useWindowSize;exports.useWizard=_s.useWizard;exports.copy=T.copy;exports.legacyCopyToClipboard=T.legacyCopyToClipboard;exports.debounce=Ns.debounce;exports.getDate=Bs.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=Ks.getRetry;exports.isTarget=Fs.isTarget;exports.throttle=Vs.throttle;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useState as E, useRef as v, useEffect as d } from "react";
|
|
2
|
+
const f = () => {
|
|
3
|
+
const s = new EventTarget(), b = (e, t) => s.dispatchEvent(new CustomEvent(e, { detail: t })), c = (e, t) => {
|
|
4
|
+
const n = (r) => t(r.detail);
|
|
5
|
+
return s.addEventListener(e, n), () => s.removeEventListener(e, n);
|
|
6
|
+
}, o = (e, t) => {
|
|
7
|
+
const n = (r) => t(r.detail);
|
|
8
|
+
s.removeEventListener(e, n);
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
instance: s,
|
|
12
|
+
push: b,
|
|
13
|
+
subscribe: c,
|
|
14
|
+
unsubscribe: o,
|
|
15
|
+
useSubscribe: (e, t) => {
|
|
16
|
+
const [n, r] = E(void 0), u = v(t);
|
|
17
|
+
return u.current = t, d(() => {
|
|
18
|
+
const a = (i) => {
|
|
19
|
+
r(i), u.current?.(i);
|
|
20
|
+
};
|
|
21
|
+
return c(e, a), () => {
|
|
22
|
+
o(e, a);
|
|
23
|
+
};
|
|
24
|
+
}, [e]), n;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
f as createEventEmitter
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=createEventEmitter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEventEmitter.mjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n *\n * @template Events - The type of events and their data\n * @returns {Events} - Object containing event emitter methods and hook\n *\n * @example\n * const { instance, push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();\n */\nexport const createEventEmitter = <Events extends Record<string, any> = Record<string, any>>() => {\n const eventTarget = new EventTarget();\n\n const push = <Event extends keyof Events>(event: Event, data: Events[Event]) =>\n eventTarget.dispatchEvent(new CustomEvent(event as string, { detail: data }));\n\n const subscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const callback = (event: Event) => listener((event as CustomEvent).detail);\n\n eventTarget.addEventListener(event as string, callback);\n return () => eventTarget.removeEventListener(event as string, callback);\n };\n\n const unsubscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const callback = (event: Event) => listener((event as CustomEvent).detail);\n eventTarget.removeEventListener(event as string, callback);\n };\n\n const useSubscribe = <Event extends keyof Events>(\n event: Event,\n listener?: (data: Events[Event]) => void\n ) => {\n const [data, setData] = useState<Events[Event] | undefined>(undefined);\n const listenerRef = useRef(listener);\n listenerRef.current = listener;\n\n useEffect(() => {\n const onSubscribe = (data: Events[Event]) => {\n setData(data);\n listenerRef.current?.(data);\n };\n subscribe(event, onSubscribe);\n return () => {\n unsubscribe(event, onSubscribe);\n };\n }, [event]);\n\n return data;\n };\n\n return {\n instance: eventTarget,\n push,\n subscribe,\n unsubscribe,\n useSubscribe\n };\n};\n"],"names":["createEventEmitter","eventTarget","push","event","data","subscribe","listener","callback","unsubscribe","setData","useState","listenerRef","useRef","useEffect","onSubscribe"],"mappings":";AAaO,MAAMA,IAAqB,MAAgE;AAChG,QAAMC,IAAc,IAAI,YAAA,GAElBC,IAAO,CAA6BC,GAAcC,MACtDH,EAAY,cAAc,IAAI,YAAYE,GAAiB,EAAE,QAAQC,EAAA,CAAM,CAAC,GAExEC,IAAY,CAChBF,GACAG,MACG;AACH,UAAMC,IAAW,CAACJ,MAAiBG,EAAUH,EAAsB,MAAM;AAEzE,WAAAF,EAAY,iBAAiBE,GAAiBI,CAAQ,GAC/C,MAAMN,EAAY,oBAAoBE,GAAiBI,CAAQ;AAAA,EAAA,GAGlEC,IAAc,CAClBL,GACAG,MACG;AACH,UAAMC,IAAW,CAACJ,MAAiBG,EAAUH,EAAsB,MAAM;AACzE,IAAAF,EAAY,oBAAoBE,GAAiBI,CAAQ;AAAA,EAAA;AAyB3D,SAAO;AAAA,IACL,UAAUN;AAAA,IACV,MAAAC;AAAA,IACA,WAAAG;AAAA,IACA,aAAAG;AAAA,IACA,cA3BmB,CACnBL,GACAG,MACG;AACH,YAAM,CAACF,GAAMK,CAAO,IAAIC,EAAoC,MAAS,GAC/DC,IAAcC,EAAON,CAAQ;AACnC,aAAAK,EAAY,UAAUL,GAEtBO,EAAU,MAAM;AACd,cAAMC,IAAc,CAACV,MAAwB;AAC3C,UAAAK,EAAQL,CAAI,GACZO,EAAY,UAAUP,CAAI;AAAA,QAAA;AAE5B,eAAAC,EAAUF,GAAOW,CAAW,GACrB,MAAM;AACX,UAAAN,EAAYL,GAAOW,CAAW;AAAA,QAAA;AAAA,MAChC,GACC,CAACX,CAAK,CAAC,GAEHC;AAAA,IAAA;AAAA,EAQP;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStore.mjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n
|
|
1
|
+
{"version":3,"file":"createStore.mjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n * @param {StateCreator<Value>} createState - Function that initializes the store state\n * @returns {StoreApi<Value>} - Object containing store methods and hook for accessing state\n *\n * @example\n * const { set, get, use, subscribe } = createStore((set) => ({\n * count: 0,\n * increment: () => set(state => ({ count: state.count + 1 }))\n * }));\n */\nexport const createStore = <Value>(createState: StateCreator<Value> | Value) => {\n type Listener = (state: Value, prevState: Value) => void;\n let state: Value;\n const listeners: Set<Listener> = new Set();\n\n const setState = (action: SetStateAction<Value>) => {\n const nextState =\n typeof action === 'function' ? (action as (state: Value) => Value)(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = nextState;\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const getState = () => state;\n const getInitialState = () => state;\n\n const subscribe = (listener: Listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n if (typeof createState === 'function') {\n state = (createState as StateCreator<Value>)(setState, getState);\n } else {\n state = createState;\n }\n\n const useStore = <Selected>(selector: (state: Value) => Selected) =>\n useSyncExternalStore(\n subscribe,\n () => selector(getState()),\n () => selector(getInitialState())\n );\n\n return {\n set: setState,\n get: getState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore"],"mappings":";AA8BO,MAAMA,IAAc,CAAQC,MAA6C;AAE9E,MAAIC;AACJ,QAAMC,wBAA+B,IAAA,GAE/BC,IAAW,CAACC,MAAkC;AAClD,UAAMC,IACJ,OAAOD,KAAW,aAAcA,EAAmCH,CAAK,IAAIG;AAE9E,QAAI,CAAC,OAAO,GAAGC,GAAWJ,CAAK,GAAG;AAChC,YAAMK,IAAYL;AAClB,MAAAA,IAAQI,GACRH,EAAU,QAAQ,CAACK,MAAaA,EAASN,GAAOK,CAAS,CAAC;AAAA,IAAA;AAAA,EAC5D,GAGIE,IAAW,MAAMP,GACjBQ,IAAkB,MAAMR,GAExBS,IAAY,CAACH,OACjBL,EAAU,IAAIK,CAAQ,GACf,MAAML,EAAU,OAAOK,CAAQ;AAExC,SAAI,OAAOP,KAAgB,aACzBC,IAASD,EAAoCG,GAAUK,CAAQ,IAE/DP,IAAQD,GAUH;AAAA,IACL,KAAKG;AAAA,IACL,KAAKK;AAAA,IACL,KAVe,CAAWG,MAC1BC;AAAA,MACEF;AAAA,MACA,MAAMC,EAASH,GAAU;AAAA,MACzB,MAAMG,EAASF,EAAA,CAAiB;AAAA,IAAA;AAAA,IAOlC,WAAAC;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
import { useRefState as
|
|
3
|
-
import { isTarget as
|
|
4
|
-
import { getElement as
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
return i.current =
|
|
8
|
-
if (!s || !
|
|
9
|
-
const
|
|
10
|
-
if (!
|
|
1
|
+
import { useState as d, useRef as h, useEffect as v } from "react";
|
|
2
|
+
import { useRefState as m } from "../useRefState/useRefState.mjs";
|
|
3
|
+
import { isTarget as C } from "../../utils/helpers/isTarget.mjs";
|
|
4
|
+
import { getElement as b } from "../../utils/helpers/getElement.mjs";
|
|
5
|
+
const y = (...e) => {
|
|
6
|
+
const n = C(e[0]) ? e[0] : void 0, t = n ? typeof e[1] == "object" ? e[1] : { onChange: e[1] } : typeof e[0] == "object" ? e[0] : { onChange: e[0] }, c = t?.onChange, s = t?.enabled ?? !0, [o, l] = d(), r = m(), i = h(c);
|
|
7
|
+
return i.current = c, v(() => {
|
|
8
|
+
if (!s || !n && !r.state) return;
|
|
9
|
+
const f = n ? b(n) : r.current;
|
|
10
|
+
if (!f) return;
|
|
11
11
|
const u = new IntersectionObserver(
|
|
12
|
-
([
|
|
13
|
-
|
|
12
|
+
([g]) => {
|
|
13
|
+
l(g), i.current?.(g);
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
...
|
|
17
|
-
root:
|
|
16
|
+
...t,
|
|
17
|
+
root: t?.root ? b(t.root) : document
|
|
18
18
|
}
|
|
19
19
|
);
|
|
20
|
-
return u.observe(
|
|
20
|
+
return u.observe(f), () => {
|
|
21
21
|
u.disconnect();
|
|
22
22
|
};
|
|
23
|
-
}, [
|
|
24
|
-
ref:
|
|
25
|
-
entry:
|
|
26
|
-
inView: !!
|
|
23
|
+
}, [n, r.state, t?.rootMargin, t?.threshold, t?.root, s]), n ? { entry: o, inView: !!o?.isIntersecting } : {
|
|
24
|
+
ref: r,
|
|
25
|
+
entry: o,
|
|
26
|
+
inView: !!o?.isIntersecting
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
29
|
export {
|
|
30
|
-
|
|
30
|
+
y as useIntersectionObserver
|
|
31
31
|
};
|
|
32
32
|
//# sourceMappingURL=useIntersectionObserver.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.mjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.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\n/** The intersection observer options type */\nexport interface UseIntersectionObserverOptions extends Omit<IntersectionObserverInit, 'root'> {\n enabled?: boolean;\n root?: HookTarget;\n onChange?: (entry: IntersectionObserverEntry) => void;\n}\n\n/** The intersection observer return type */\nexport interface UseIntersectionObserverReturn {\n entry?: IntersectionObserverEntry;\n inView: boolean;\n}\n\nexport interface UseIntersectionObserver {\n <Target extends Element>(\n options?: UseIntersectionObserverOptions,\n target?: never\n ): UseIntersectionObserverReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseIntersectionObserverOptions): UseIntersectionObserverReturn;\n}\n\n/**\n * @name useIntersectionObserver\n * @description - Hook that gives you intersection observer state\n * @category Browser\n *\n * @browserapi IntersectionObserver https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @overload\n * @param {HookTarget} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root] The root element to observe\n * @returns {UseIntersectionObserverReturn} An object containing the state\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root] The root element to observe\n * @returns {UseIntersectionObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(ref);\n */\nexport const useIntersectionObserver = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n const options = (target ? params[1] : params[0]) as UseIntersectionObserverOptions | undefined;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRefState<Element>();\n const internalOnChangeRef = useRef<UseIntersectionObserverOptions['onChange']>(
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.mjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.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\n/** The intersection observer options type */\nexport interface UseIntersectionObserverOptions extends Omit<IntersectionObserverInit, 'root'> {\n enabled?: boolean;\n root?: HookTarget;\n onChange?: (entry: IntersectionObserverEntry) => void;\n}\n\n/** The intersection observer return type */\nexport interface UseIntersectionObserverReturn {\n entry?: IntersectionObserverEntry;\n inView: boolean;\n}\n\nexport interface UseIntersectionObserver {\n <Target extends Element>(\n options?: UseIntersectionObserverOptions,\n target?: never\n ): UseIntersectionObserverReturn & { ref: StateRef<Target> };\n\n (target: HookTarget, options?: UseIntersectionObserverOptions): UseIntersectionObserverReturn;\n\n <Target extends Element>(\n callback: (entry: IntersectionObserverEntry) => void,\n target?: never\n ): UseIntersectionObserverReturn & { ref: StateRef<Target> };\n\n (\n callback: (entry: IntersectionObserverEntry) => void,\n target: HookTarget\n ): UseIntersectionObserverReturn;\n}\n\n/**\n * @name useIntersectionObserver\n * @description - Hook that gives you intersection observer state\n * @category Browser\n *\n * @browserapi IntersectionObserver https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver\n *\n * @overload\n * @param {HookTarget} target The target element to detect intersection\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseIntersectionObserverReturn} An object containing the state\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver();\n *\n * @overload\n * @template Target The target element\n * @param {boolean} [options.enabled=true] The IntersectionObserver options\n * @param {((entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void) | undefined} [options.onChange] The callback to execute when intersection is detected\n * @param {HookTarget} [options.root=document] The root element to observe\n * @returns {UseIntersectionObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(ref);\n *\n * @overload\n * @template Target The target element\n * @param {(entry: IntersectionObserverEntry) => void} callback The callback to execute when intersection is detected\n * @returns {UseIntersectionObserverReturn & { ref: StateRef<Target> }} A React ref to attach to the target element\n *\n * @example\n * const { ref, entry, inView } = useIntersectionObserver(() => console.log('callback'));\n *\n * @overload\n * @param {(entry: IntersectionObserverEntry) => void} callback The callback to execute when intersection is detected\n * @param {HookTarget} target The target element to detect intersection\n * @returns {UseIntersectionObserverReturn} An object containing the state\n *\n * @example\n * const { entry, inView } = useIntersectionObserver(() => console.log('callback'), ref);\n */\nexport const useIntersectionObserver = ((...params: any[]) => {\n const target = (isTarget(params[0]) ? params[0] : undefined) as HookTarget | undefined;\n\n const options = (\n target\n ? typeof params[1] === 'object'\n ? params[1]\n : { onChange: params[1] }\n : typeof params[0] === 'object'\n ? params[0]\n : { onChange: params[0] }\n ) as UseIntersectionObserverOptions | undefined;\n\n const callback = options?.onChange;\n const enabled = options?.enabled ?? true;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\n\n const internalRef = useRefState<Element>();\n const internalOnChangeRef = useRef<UseIntersectionObserverOptions['onChange']>(callback);\n internalOnChangeRef.current = callback;\n\n useEffect(() => {\n if (!enabled || (!target && !internalRef.state)) return;\n\n const element = target ? getElement(target) : internalRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n setEntry(entry);\n internalOnChangeRef.current?.(entry);\n },\n {\n ...options,\n root: options?.root ? (getElement(options.root) as Document | Element) : document\n }\n );\n\n observer.observe(element as Element);\n\n return () => {\n observer.disconnect();\n };\n }, [target, internalRef.state, options?.rootMargin, options?.threshold, options?.root, enabled]);\n\n if (target) return { entry, inView: !!entry?.isIntersecting };\n return {\n ref: internalRef,\n entry,\n inView: !!entry?.isIntersecting\n };\n}) as UseIntersectionObserver;\n"],"names":["useIntersectionObserver","params","target","isTarget","options","callback","enabled","entry","setEntry","useState","internalRef","useRefState","internalOnChangeRef","useRef","useEffect","element","getElement","observer"],"mappings":";;;;AAqFO,MAAMA,IAA2B,IAAIC,MAAkB;AAC5D,QAAMC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAE5CG,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,IAAWD,GAAS,UACpBE,IAAUF,GAAS,WAAW,IAE9B,CAACG,GAAOC,CAAQ,IAAIC,EAAA,GAEpBC,IAAcC,EAAA,GACdC,IAAsBC,EAAmDR,CAAQ;AA2BvF,SA1BAO,EAAoB,UAAUP,GAE9BS,EAAU,MAAM;AACd,QAAI,CAACR,KAAY,CAACJ,KAAU,CAACQ,EAAY,MAAQ;AAEjD,UAAMK,IAAUb,IAASc,EAAWd,CAAM,IAAIQ,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAW,IAAI;AAAA,MACnB,CAAC,CAACV,CAAK,MAAM;AACX,QAAAC,EAASD,CAAK,GACdK,EAAoB,UAAUL,CAAK;AAAA,MAAA;AAAA,MAErC;AAAA,QACE,GAAGH;AAAA,QACH,MAAMA,GAAS,OAAQY,EAAWZ,EAAQ,IAAI,IAA2B;AAAA,MAAA;AAAA,IAC3E;AAGF,WAAAa,EAAS,QAAQF,CAAkB,GAE5B,MAAM;AACX,MAAAE,EAAS,WAAA;AAAA,IAAW;AAAA,EACtB,GACC,CAACf,GAAQQ,EAAY,OAAON,GAAS,YAAYA,GAAS,WAAWA,GAAS,MAAME,CAAO,CAAC,GAE3FJ,IAAe,EAAE,OAAAK,GAAO,QAAQ,CAAC,CAACA,GAAO,eAAA,IACtC;AAAA,IACL,KAAKG;AAAA,IACL,OAAAH;AAAA,IACA,QAAQ,CAAC,CAACA,GAAO;AAAA,EAAA;AAErB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.mjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\nimport { useMount } from '../useMount/useMount';\n\n/* The use query return type */\nexport interface UseQueryOptions<QueryData, Data> {\n /* The enabled state of the query */\n enabled?: boolean;\n /* The depends for the hook */\n keys?: DependencyList;\n /* The placeholder data for the hook */\n placeholderData?: (() => Data) | Data;\n /* The refetch interval */\n refetchInterval?: number;\n /* The retry count of requests */\n retry?: boolean | number;\n /* The retry delay of requests */\n retryDelay?: ((retry: number, error: Error) => number) | number;\n /* The callback function to be invoked on error */\n onError?: (error: Error) => void;\n /* The callback function to be invoked on success */\n onSuccess?: (data: Data) => void;\n /* The select function to be invoked */\n select?: (data: QueryData) => Data;\n}\n\ninterface UseQueryCallbackParams {\n /* The depends for the hook */\n keys: DependencyList;\n /* The abort signal */\n signal: AbortSignal;\n}\n\n/* The use query return type */\nexport interface UseQueryReturn<Data> {\n /* The abort function */\n abort: AbortController['abort'];\n /* The state of the query */\n data?: Data;\n /* The success state of the query */\n error?: Error;\n /* The error state of the query */\n isError: boolean;\n /* The fetching state of the query */\n isFetching: boolean;\n /* The loading state of the query */\n isLoading: boolean;\n /* The refetching state of the query */\n isRefetching: boolean;\n /* The success state of the query */\n isSuccess: boolean;\n /* The refetch function */\n refetch: () => void;\n}\n\n/**\n * @name useQuery\n * @description - Hook that defines the logic when query data\n * @category Utilities\n *\n * @template Data The type of the data\n * @param {() => Promise<Data>} callback The callback function to be invoked\n * @param {DependencyList} [options.keys] The dependencies for the hook\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\n * @param {number} [options.refetchInterval] The refetch interval\n * @param {boolean | number} [options.retry] The retry count of requests\n * @returns {UseQueryReturn<Data>} An object with the state of the query\n *\n * @example\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\n */\nexport const useQuery = <QueryData, Data = QueryData>(\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\n options?: UseQueryOptions<QueryData, Data>\n): UseQueryReturn<Data> => {\n const enabled = options?.enabled ?? true;\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const alreadyRequested = useRef(false);\n\n const [isFetching, setIsFetching] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n const [isRefetching, setIsRefetching] = useState(false);\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\n\n const [error, setError] = useState<Error | undefined>(undefined);\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\n\n const abortControllerRef = useRef<AbortController>(new AbortController());\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\n\n const keys = options?.keys ?? [];\n\n const abort = () => {\n abortControllerRef.current.abort();\n abortControllerRef.current = new AbortController();\n };\n\n const request = (action: 'init' | 'refetch') => {\n abort();\n\n setIsFetching(true);\n if (action === 'init') {\n alreadyRequested.current = true;\n setIsLoading(true);\n }\n if (action === 'refetch') setIsRefetching(true);\n callback({ signal: abortControllerRef.current.signal, keys })\n .then((response) => {\n const data = options?.select ? options?.select(response) : response;\n options?.onSuccess?.(data as Data);\n setData(data as Data);\n setIsSuccess(true);\n setError(undefined);\n setIsError(false);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n })\n .catch((error: Error) => {\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n const retryDelay =\n typeof options?.retryDelay === 'function'\n ? options?.retryDelay(retryCountRef.current, error)\n : options?.retryDelay;\n\n if (retryDelay) {\n setTimeout(() => request(action), retryDelay);\n return;\n }\n\n return request(action);\n }\n options?.onError?.(error);\n setData(undefined);\n setIsSuccess(false);\n setError(error);\n setIsError(true);\n setIsFetching(false);\n if (action === 'init') setIsLoading(false);\n if (action === 'refetch') setIsRefetching(false);\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n })\n .finally(() => {\n if (options?.refetchInterval) {\n const interval = setInterval(() => {\n clearInterval(interval);\n request('refetch');\n }, options?.refetchInterval);\n intervalIdRef.current = interval;\n }\n });\n };\n\n useMount(() => {\n if (!enabled) return;\n request('init');\n });\n\n useDidUpdate(() => {\n if (!enabled) return;\n request(alreadyRequested.current ? 'refetch' : 'init');\n }, [enabled, ...keys]);\n\n useEffect(() => {\n return () => {\n clearInterval(intervalIdRef.current);\n };\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\n\n const refetch = () => request('refetch');\n\n return {\n abort,\n data,\n error,\n refetch,\n isFetching,\n isLoading,\n isError,\n isSuccess,\n isRefetching\n };\n};\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useQuery.mjs","sources":["../../../../src/hooks/useQuery/useQuery.ts"],"sourcesContent":["import type { DependencyList } from 'react';\r\n\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nimport { getRetry } from '@/utils/helpers';\r\n\r\nimport { useDidUpdate } from '../useDidUpdate/useDidUpdate';\r\nimport { useMount } from '../useMount/useMount';\r\n\r\n/* The use query return type */\r\nexport interface UseQueryOptions<QueryData, Data> {\r\n /* The enabled state of the query */\r\n enabled?: boolean;\r\n /* The depends for the hook */\r\n keys?: DependencyList;\r\n /* The placeholder data for the hook */\r\n placeholderData?: (() => Data) | Data;\r\n /* The refetch interval */\r\n refetchInterval?: number;\r\n /* The retry count of requests */\r\n retry?: boolean | number;\r\n /* The retry delay of requests */\r\n retryDelay?: ((retry: number, error: Error) => number) | number;\r\n /* The callback function to be invoked on error */\r\n onError?: (error: Error) => void;\r\n /* The callback function to be invoked on success */\r\n onSuccess?: (data: Data) => void;\r\n /* The select function to be invoked */\r\n select?: (data: QueryData) => Data;\r\n}\r\n\r\ninterface UseQueryCallbackParams {\r\n /* The depends for the hook */\r\n keys: DependencyList;\r\n /* The abort signal */\r\n signal: AbortSignal;\r\n}\r\n\r\n/* The use query return type */\r\nexport interface UseQueryReturn<Data> {\r\n /* The abort function */\r\n abort: AbortController['abort'];\r\n /* The state of the query */\r\n data?: Data;\r\n /* The success state of the query */\r\n error?: Error;\r\n /* The error state of the query */\r\n isError: boolean;\r\n /* The fetching state of the query */\r\n isFetching: boolean;\r\n /* The loading state of the query */\r\n isLoading: boolean;\r\n /* The refetching state of the query */\r\n isRefetching: boolean;\r\n /* The success state of the query */\r\n isSuccess: boolean;\r\n /* The refetch function */\r\n refetch: () => void;\r\n}\r\n\r\n/**\r\n * @name useQuery\r\n * @description - Hook that defines the logic when query data\r\n * @category Utilities\r\n *\r\n * @template Data The type of the data\r\n * @param {() => Promise<Data>} callback The callback function to be invoked\r\n * @param {DependencyList} [options.keys] The dependencies for the hook\r\n * @param {(data: Data) => void} [options.onSuccess] The callback function to be invoked on success\r\n * @param {(error: Error) => void} [options.onError] The callback function to be invoked on error\r\n * @param {UseQueryOptionsSelect<Data>} [options.select] The select function to be invoked\r\n * @param {Data | (() => Data)} [options.initialData] The initial data for the hook\r\n * @param {Data | (() => Data)} [options.placeholderData] The placeholder data for the hook\r\n * @param {number} [options.refetchInterval] The refetch interval\r\n * @param {boolean | number} [options.retry] The retry count of requests\r\n * @returns {UseQueryReturn<Data>} An object with the state of the query\r\n *\r\n * @example\r\n * const { data, isFetching, isLoading, isError, isSuccess, error, refetch, isRefetching, abort, aborted } = useQuery(() => fetch('url'));\r\n */\r\nexport const useQuery = <QueryData, Data = QueryData>(\r\n callback: (params: UseQueryCallbackParams) => Promise<QueryData>,\r\n options?: UseQueryOptions<QueryData, Data>\r\n): UseQueryReturn<Data> => {\r\n const enabled = options?.enabled ?? true;\r\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\r\n const alreadyRequested = useRef(false);\r\n\r\n const [isFetching, setIsFetching] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isError, setIsError] = useState(false);\r\n const [isRefetching, setIsRefetching] = useState(false);\r\n const [isSuccess, setIsSuccess] = useState(!!options?.placeholderData);\r\n\r\n const [error, setError] = useState<Error | undefined>(undefined);\r\n const [data, setData] = useState<Data | undefined>(options?.placeholderData);\r\n\r\n const abortControllerRef = useRef<AbortController>(new AbortController());\r\n const intervalIdRef = useRef<ReturnType<typeof setInterval>>(undefined);\r\n\r\n const keys = options?.keys ?? [];\r\n\r\n const abort = () => {\r\n abortControllerRef.current.abort();\r\n abortControllerRef.current = new AbortController();\r\n };\r\n\r\n const request = (action: 'init' | 'refetch') => {\r\n abort();\r\n\r\n setIsFetching(true);\r\n if (action === 'init') {\r\n alreadyRequested.current = true;\r\n setIsLoading(true);\r\n }\r\n if (action === 'refetch') setIsRefetching(true);\r\n callback({ signal: abortControllerRef.current.signal, keys })\r\n .then((response) => {\r\n const data = options?.select ? options?.select(response) : response;\r\n options?.onSuccess?.(data as Data);\r\n setData(data as Data);\r\n setIsSuccess(true);\r\n setError(undefined);\r\n setIsError(false);\r\n setIsFetching(false);\r\n if (action === 'init') setIsLoading(false);\r\n if (action === 'refetch') setIsRefetching(false);\r\n })\r\n .catch((error: Error) => {\r\n if (retryCountRef.current > 0) {\r\n retryCountRef.current -= 1;\r\n const retryDelay =\r\n typeof options?.retryDelay === 'function'\r\n ? options?.retryDelay(retryCountRef.current, error)\r\n : options?.retryDelay;\r\n\r\n if (retryDelay) {\r\n setTimeout(() => request(action), retryDelay);\r\n return;\r\n }\r\n\r\n return request(action);\r\n }\r\n options?.onError?.(error);\r\n setData(undefined);\r\n setIsSuccess(false);\r\n setError(error);\r\n setIsError(true);\r\n setIsFetching(false);\r\n if (action === 'init') setIsLoading(false);\r\n if (action === 'refetch') setIsRefetching(false);\r\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\r\n })\r\n .finally(() => {\r\n if (options?.refetchInterval) {\r\n const interval = setInterval(() => {\r\n clearInterval(interval);\r\n request('refetch');\r\n }, options?.refetchInterval);\r\n intervalIdRef.current = interval;\r\n }\r\n });\r\n };\r\n\r\n useMount(() => {\r\n if (!enabled) return;\r\n request('init');\r\n });\r\n\r\n useDidUpdate(() => {\r\n if (!enabled) return;\r\n request(alreadyRequested.current ? 'refetch' : 'init');\r\n }, [enabled, ...keys]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearInterval(intervalIdRef.current);\r\n };\r\n }, [enabled, options?.refetchInterval, options?.retry, ...keys]);\r\n\r\n const refetch = () => request('refetch');\r\n\r\n return {\r\n abort,\r\n data,\r\n error,\r\n refetch,\r\n isFetching,\r\n isLoading,\r\n isError,\r\n isSuccess,\r\n isRefetching\r\n };\r\n};\r\n"],"names":["useQuery","callback","options","enabled","retryCountRef","useRef","getRetry","alreadyRequested","isFetching","setIsFetching","useState","isLoading","setIsLoading","isError","setIsError","isRefetching","setIsRefetching","isSuccess","setIsSuccess","error","setError","data","setData","abortControllerRef","intervalIdRef","keys","abort","request","action","response","retryDelay","interval","useMount","useDidUpdate","useEffect"],"mappings":"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"}
|