@siberiacancode/reactuse 0.1.1 → 0.2.0
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/createContext/createContext.cjs +2 -0
- package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -0
- package/dist/cjs/helpers/createStore/createStore.cjs +2 -0
- package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -0
- package/dist/cjs/hooks/useClipboard/useClipboard.cjs.map +1 -1
- package/dist/cjs/hooks/useField/useField.cjs +1 -1
- package/dist/cjs/hooks/useField/useField.cjs.map +1 -1
- package/dist/cjs/hooks/useGamepad/useGamepad.cjs.map +1 -1
- package/dist/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useMemory/useMemory.cjs +1 -1
- package/dist/cjs/hooks/useMemory/useMemory.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/esm/helpers/createContext/createContext.mjs +38 -0
- package/dist/esm/helpers/createContext/createContext.mjs.map +1 -0
- package/dist/esm/helpers/createStore/createStore.mjs +32 -0
- package/dist/esm/helpers/createStore/createStore.mjs.map +1 -0
- package/dist/esm/hooks/useClipboard/useClipboard.mjs.map +1 -1
- package/dist/esm/hooks/useField/useField.mjs +1 -3
- package/dist/esm/hooks/useField/useField.mjs.map +1 -1
- package/dist/esm/hooks/useGamepad/useGamepad.mjs +7 -2
- package/dist/esm/hooks/useGamepad/useGamepad.mjs.map +1 -1
- package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.mjs.map +1 -1
- package/dist/esm/hooks/useMemory/useMemory.mjs +14 -10
- package/dist/esm/hooks/useMemory/useMemory.mjs.map +1 -1
- package/dist/esm/index.mjs +323 -319
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/helpers/createContext/createContext.d.ts +48 -0
- package/dist/types/helpers/createStore/createStore.d.ts +31 -0
- package/dist/types/helpers/index.d.ts +2 -0
- package/dist/types/hooks/useClipboard/useClipboard.d.ts +1 -1
- package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react/jsx-runtime"),n=require("react"),d=(s=void 0,o={})=>{const t=n.createContext({value:s,set:()=>{}});t.displayName=o.name;function c(r){const e=n.use(t);if(!e&&o.strict)throw new Error(`Context hook ${o.name} must be used inside a Provider`);return r?r(e.value):e}return{useSelect:c,instance:t,Provider:({children:r,initialValue:e})=>{const[u,i]=n.useState(e??s),a=n.useMemo(()=>({value:u,set:i}),[u]);return v.jsx(t,{value:a,children:r})}}};exports.createContext=d;
|
|
2
|
+
//# sourceMappingURL=createContext.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createContext.cjs","sources":["../../../../src/helpers/createContext/createContext.tsx"],"sourcesContent":["import type { JSX, ReactNode } from \"react\";\n\nimport {\n createContext as createReactContext,\n use,\n useMemo,\n useState,\n} from \"react\";\n\n/** The create context options type */\nexport interface CreateContextOptions {\n /** Display name for the context (useful for debugging) */\n name?: string;\n /** Whether to throw an error if context is used outside of Provider */\n strict?: boolean;\n}\n\n/** The context value type */\nexport interface ContextValue<Value> {\n /** The context value */\n value: Value | undefined;\n /** The context set function */\n set: (value: Value) => void;\n}\n\n/** The provider props type */\nexport interface ProviderProps<Value> {\n /** The children */\n children: ReactNode;\n /** The initial value */\n initialValue?: Value;\n}\n\n/** The create context return type */\nexport interface CreateContextReturn<Value> {\n /** The context instance */\n instance: React.Context<ContextValue<Value>>;\n /** The provider component */\n Provider: (props: ProviderProps<Value>) => JSX.Element;\n /** The selector hook */\n useSelect: {\n <Selected>(selector: (value: Value) => Selected): Selected;\n (): ContextValue<Value>;\n };\n}\n\n/**\n * @name createContext\n * @description - Creates a typed context with additional utilities\n * @category Helpers\n *\n * @template Value - The type of value that will be stored in the context\n * @param {Value | undefined} [defaultValue] - Default value for the context\n * @param {CreateContextOptions<Value>} [options] - Additional options for context creation\n * @returns {CreateContextReturn<Value>} Object containing context utilities and components\n *\n * @example\n * const { useSelect, instance, Provider } = createContext<number>(0);\n */\nexport const createContext = <Value,>(\n defaultValue: Value | undefined = undefined,\n options: CreateContextOptions = {}\n): CreateContextReturn<Value> => {\n const Context = createReactContext<{\n value: Value | undefined;\n set: (value: Value) => void;\n }>({\n value: defaultValue,\n set: () => {},\n });\n\n Context.displayName = options.name;\n\n function useSelect(): ContextValue<Value>;\n function useSelect<Selected>(selector: (value: Value) => Selected): Selected;\n function useSelect<Selected>(selector?: (value: Value) => Selected) {\n const context = use(Context);\n\n if (!context && options.strict) {\n throw new Error(\n `Context hook ${options.name} must be used inside a Provider`\n );\n }\n\n if (!selector) {\n return context;\n }\n\n return selector(context.value as Value);\n }\n\n const Provider = ({ children, initialValue }: ProviderProps<Value>) => {\n const [profile, setProfile] = useState<Value | undefined>(\n initialValue ?? defaultValue\n );\n\n const value = useMemo(\n () => ({\n value: profile,\n set: setProfile,\n }),\n [profile]\n );\n\n return <Context value={value}>{children}</Context>;\n };\n\n return {\n useSelect,\n instance: Context,\n Provider,\n } as const;\n};\n"],"names":["createContext","defaultValue","options","Context","createReactContext","useSelect","selector","context","use","children","initialValue","profile","setProfile","useState","value","useMemo","jsx"],"mappings":"wIA2DaA,EAAgB,CAC3BC,EAAkC,OAClCC,EAAgC,CAAA,IACD,CAC/B,MAAMC,EAAUC,EAAAA,cAGb,CACD,MAAOH,EACP,IAAK,IAAM,CAAA,CAAC,CACb,EAEDE,EAAQ,YAAcD,EAAQ,KAI9B,SAASG,EAAoBC,EAAuC,CAC5D,MAAAC,EAAUC,MAAIL,CAAO,EAEvB,GAAA,CAACI,GAAWL,EAAQ,OACtB,MAAM,IAAI,MACR,gBAAgBA,EAAQ,IAAI,iCAC9B,EAGF,OAAKI,EAIEA,EAASC,EAAQ,KAAc,EAH7BA,CAG6B,CAmBjC,MAAA,CACL,UAAAF,EACA,SAAUF,EACV,SAnBe,CAAC,CAAE,SAAAM,EAAU,aAAAC,KAAyC,CAC/D,KAAA,CAACC,EAASC,CAAU,EAAIC,EAAA,SAC5BH,GAAgBT,CAClB,EAEMa,EAAQC,EAAA,QACZ,KAAO,CACL,MAAOJ,EACP,IAAKC,CAAA,GAEP,CAACD,CAAO,CACV,EAEO,OAAAK,EAAA,IAACb,EAAQ,CAAA,MAAAW,EAAe,SAAAL,CAAS,CAAA,CAC1C,CAMA,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react");function i(o){let t;const n=new Set,r=e=>{const S=typeof e=="function"?e(t):e;if(!Object.is(S,t)){const a=t;t=S,n.forEach(f=>f(t,a))}},c=()=>t,l=()=>t,u=e=>(n.add(e),()=>n.delete(e));return typeof o=="function"?t=o(r,c):t=o,{set:r,get:c,use:e=>g.useSyncExternalStore(u,()=>e(c()),()=>e(l())),subscribe:u}}const s=i(o=>({count:0,increment:()=>o(t=>({count:t.count+1}))}));console.log(s.get());s.set(o=>({count:o.count+1}));console.log(s.get());exports.createStore=i;
|
|
2
|
+
//# sourceMappingURL=createStore.cjs.map
|
|
@@ -0,0 +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 *\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 function 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\nconst counterStore = createStore<{ count: number }>((set) => ({\n count: 0,\n increment: () => set((state) => ({ count: state.count + 1 }))\n}));\n\nconsole.log(counterStore.get());\ncounterStore.set((state) => ({ count: state.count + 1 }));\nconsole.log(counterStore.get());\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore","counterStore","set"],"mappings":"yGA+BO,SAASA,EAAmBC,EAA0C,CAEvE,IAAAC,EACE,MAAAC,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,EACVA,EAAAI,EACRH,EAAU,QAASK,GAAaA,EAASN,EAAOK,CAAS,CAAC,CAAA,CAE9D,EAEME,EAAW,IAAMP,EACjBQ,EAAkB,IAAMR,EAExBS,EAAaH,IACjBL,EAAU,IAAIK,CAAQ,EACf,IAAML,EAAU,OAAOK,CAAQ,GAEpC,OAAA,OAAOP,GAAgB,WAChBC,EAAAD,EAAoCG,EAAUK,CAAQ,EAEvDP,EAAAD,EAUH,CACL,IAAKG,EACL,IAAKK,EACL,IAV0BG,GAC1BC,EAAA,qBACEF,EACA,IAAMC,EAASH,GAAU,EACzB,IAAMG,EAASF,EAAiB,CAAA,CAClC,EAMA,UAAAC,CACF,CACF,CAEA,MAAMG,EAAed,EAAgCe,IAAS,CAC5D,MAAO,EACP,UAAW,IAAMA,EAAKb,IAAW,CAAE,MAAOA,EAAM,MAAQ,GAAI,CAC9D,EAAE,EAEF,QAAQ,IAAIY,EAAa,KAAK,EAC9BA,EAAa,IAAKZ,IAAW,CAAE,MAAOA,EAAM,MAAQ,GAAI,EACxD,QAAQ,IAAIY,EAAa,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClipboard.cjs","sources":["../../../../src/hooks/useClipboard/useClipboard.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { copy } from '@/utils/helpers';\n\n/** The use copy to clipboard return type */\nexport interface UseCopyToClipboardReturn {\n /** The copied value */\n value: string | null;\n /** Function to copy to clipboard */\n copy: (value: string) => Promise<void>;\n}\n\n/** The use copy to clipboard params type */\nexport interface UseCopyToClipboardParams {\n /** Whether the copy to clipboard is enabled */\n enabled: boolean;\n}\n\n/**\n * @name useClipboard\n * @description - Hook that manages a copy to clipboard\n * @category Browser\n *\n * @browserapi navigator.clipboard https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard\n *\n * @param {boolean} [params.enabled=false] Whether the copy to clipboard is enabled\n * @returns {UseCopyToClipboardReturn} An object containing the boolean state value and utility functions to manipulate the state\n *\n * @example\n * const {
|
|
1
|
+
{"version":3,"file":"useClipboard.cjs","sources":["../../../../src/hooks/useClipboard/useClipboard.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { copy } from '@/utils/helpers';\n\n/** The use copy to clipboard return type */\nexport interface UseCopyToClipboardReturn {\n /** The copied value */\n value: string | null;\n /** Function to copy to clipboard */\n copy: (value: string) => Promise<void>;\n}\n\n/** The use copy to clipboard params type */\nexport interface UseCopyToClipboardParams {\n /** Whether the copy to clipboard is enabled */\n enabled: boolean;\n}\n\n/**\n * @name useClipboard\n * @description - Hook that manages a copy to clipboard\n * @category Browser\n *\n * @browserapi navigator.clipboard https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard\n *\n * @param {boolean} [params.enabled=false] Whether the copy to clipboard is enabled\n * @returns {UseCopyToClipboardReturn} An object containing the boolean state value and utility functions to manipulate the state\n *\n * @example\n * const { value, copy } = useClipboard();\n */\nexport const useClipboard = (params?: UseCopyToClipboardParams): UseCopyToClipboardReturn => {\n const [value, setValue] = useState<string | null>(null);\n const enabled = params?.enabled ?? false;\n\n const set = async () => {\n try {\n const value = await navigator.clipboard.readText();\n setValue(value);\n } catch {\n setValue(document.getSelection?.()?.toString() ?? '');\n }\n };\n\n useEffect(() => {\n if (!enabled) return;\n\n document.addEventListener('copy', set);\n document.addEventListener('cut', set);\n return () => {\n document.removeEventListener('copy', set);\n document.removeEventListener('cut', set);\n };\n }, [enabled]);\n\n const copyToClipboard = async (value: string) => {\n copy(value);\n setValue(value);\n };\n\n return { value, copy: copyToClipboard };\n};\n"],"names":["useClipboard","params","value","setValue","useState","enabled","set","_b","_a","useEffect","copy"],"mappings":"mJA+BaA,EAAgBC,GAAgE,CAC3F,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAwB,IAAI,EAChDC,GAAUJ,GAAA,YAAAA,EAAQ,UAAW,GAE7BK,EAAM,SAAY,SAClB,GAAA,CACF,MAAMJ,EAAQ,MAAM,UAAU,UAAU,SAAS,EACjDC,EAASD,CAAK,CAAA,MACR,CACNC,IAASI,GAAAC,EAAA,SAAS,eAAT,YAAAA,EAAA,6BAAAD,EAA2B,aAAc,EAAE,CAAA,CAExD,EAEAE,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAKJ,EAEI,gBAAA,iBAAiB,OAAQC,CAAG,EAC5B,SAAA,iBAAiB,MAAOA,CAAG,EAC7B,IAAM,CACF,SAAA,oBAAoB,OAAQA,CAAG,EAC/B,SAAA,oBAAoB,MAAOA,CAAG,CACzC,CAAA,EACC,CAACD,CAAO,CAAC,EAOL,CAAE,MAAAH,EAAO,KALQ,MAAOA,GAAkB,CAC/CQ,EAAAA,KAAKR,CAAK,EACVC,EAASD,CAAK,CAChB,CAEsC,CACxC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),R=require("../useRerender/useRerender.cjs"),S=t=>{const r=(t==null?void 0:t.initialValue)??"",u=l.useRef(null),o=l.useRef(!1),f=R.useRerender(),[h,d]=l.useState(!1),[b,g]=l.useState((t==null?void 0:t.initialTouched)??!1),[k,c]=l.useState(void 0),y=()=>{var e,n,i;return((e=u.current)==null?void 0:e.type)==="radio"||((n=u.current)==null?void 0:n.type)==="checkbox"?u.current.checked:((i=u.current)==null?void 0:i.value)??r},x=e=>{var n,i;if(((n=u.current)==null?void 0:n.type)==="radio"||((i=u.current)==null?void 0:i.type)==="checkbox")return u.current.checked=e,o.current?f():void 0;if(u.current.value=e,o.current)return f()},V=()=>{x(r),d(!1),g(!1),c(void 0)},L=()=>
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),R=require("../useRerender/useRerender.cjs"),S=t=>{const r=(t==null?void 0:t.initialValue)??"",u=l.useRef(null),o=l.useRef(!1),f=R.useRerender(),[h,d]=l.useState(!1),[b,g]=l.useState((t==null?void 0:t.initialTouched)??!1),[k,c]=l.useState(void 0),y=()=>{var e,n,i;return((e=u.current)==null?void 0:e.type)==="radio"||((n=u.current)==null?void 0:n.type)==="checkbox"?u.current.checked:((i=u.current)==null?void 0:i.value)??r},x=e=>{var n,i;if(((n=u.current)==null?void 0:n.type)==="radio"||((i=u.current)==null?void 0:i.type)==="checkbox")return u.current.checked=e,o.current?f():void 0;if(u.current.value=e,o.current)return f()},V=()=>{x(r),d(!1),g(!1),c(void 0)},L=()=>u.current.focus(),v=e=>{if(e.required&&!u.current.value)return c(e.required);if(e.minLength&&u.current.value.length<e.minLength.value)return c(e.minLength.message);if(e.maxLength&&u.current.value.length>e.maxLength.value)return c(e.maxLength.message);if(e.min&&Number(u.current.value)<e.min.value)return c(e.min.message);if(e.max&&Number(u.current.value)>e.max.value)return c(e.max.message);if(e.pattern&&!e.pattern.value.test(u.current.value))return c(e.pattern.message);if(e.validate){const n=e.validate(u.current.value);if(typeof n=="string")return c(n)}c(void 0)};return{register:e=>({ref:n=>{if(!u.current&&n){if(t!=null&&t.autoFocus&&n.focus(),u.current=n,u.current.type==="radio"){u.current.defaultChecked=(t==null?void 0:t.initialValue)===n.value;return}if(u.current.type==="checkbox"){u.current.defaultChecked=!!(t!=null&&t.initialValue);return}u.current.defaultValue=String(r),e&&(t!=null&&t.validateOnMount)&&v(e)}},onChange:async()=>{if(o.current)return f();u.current.value!==r&&d(!0),h&&u.current.value===r&&d(!1),e&&(t!=null&&t.validateOnChange)&&await v(e),e&&(t!=null&&t.validateOnBlur)&&c(void 0)},onBlur:async()=>{e&&(t!=null&&t.validateOnBlur)&&await v(e),g(!0)}}),dirty:h,touched:b,error:k,setError:c,clearError:()=>c(void 0),getValue:y,setValue:x,reset:V,watch:()=>(o.current=!0,y()),focus:L}};exports.useField=S;
|
|
2
2
|
//# sourceMappingURL=useField.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.cjs","sources":["../../../../src/hooks/useField/useField.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useRerender } from '../useRerender/useRerender';\n\n/** The use field params type */\nexport interface UseFieldParams<Value> {\n /** The auto focus */\n autoFocus?: boolean;\n /** The initial touched */\n initialTouched?: boolean;\n /** The initial value */\n initialValue?: Value;\n /** The validate on blur */\n validateOnBlur?: boolean;\n /** The validate on mount */\n validateOnChange?: boolean;\n /** The validate on mount */\n validateOnMount?: boolean;\n}\n\n/** The use field register params type */\nexport interface UseFieldRegisterParams {\n /** The required validation */\n required?: string;\n /** The custom validation */\n validate?: (value: string) => Promise<string | true>;\n /** The min value validation */\n max?: {\n value: number;\n message: string;\n };\n /** The max length validation */\n maxLength?: {\n value: number;\n message: string;\n };\n /** The max value validation */\n min?: {\n value: number;\n message: string;\n };\n /** The min length validation */\n minLength?: {\n value: number;\n message: string;\n };\n /** The pattern validation */\n pattern?: {\n value: RegExp;\n message: string;\n };\n}\n\n/** The use field return type */\nexport interface UseFieldReturn<Value> {\n /** The dirty state */\n dirty: boolean;\n /** The error state */\n error?: string;\n /** The set error function */\n touched: boolean;\n /** The set error function */\n clearError: () => void;\n /** The focus function */\n focus: () => void;\n /** The get value function */\n getValue: () => Value;\n /** The register function */\n register: (params?: UseFieldRegisterParams) => {\n onBlur: () => void;\n onChange: () => void;\n ref: (\n node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined\n ) => void;\n };\n /** The reset function */\n reset: () => void;\n /** The set error function */\n setError: (error: string) => void;\n /** The set value function */\n setValue: (value: Value) => void;\n /** The watch function */\n watch: () => Value;\n}\n\n/**\n * @name useField\n * @description - Hook to manage a form field\n * @category Utilities\n *\n * @template Value The input value\n * @template Type The input value type\n * @param {Value} [params.initialValue] Initial value\n * @param {boolean} [params.initialTouched=false] Initial touched state\n * @param {boolean} [params.autoFocus=false] Auto focus\n * @param {boolean} [params.validateOnChange=false] Validate on change\n * @param {boolean} [params.validateOnBlur=false] Validate on blur\n * @param {boolean} [params.validateOnMount=false] Validate on mount\n * @returns {UseFieldReturn<Value>} An object containing input information\n *\n * @example\n * const { register, getValue, setValue, reset, dirty, error, setError, clearError, touched, focus, watch } = useField();\n */\nexport const useField = <\n Value extends boolean | number | string = string,\n Type = Value extends string ? string : Value extends boolean ? boolean : number\n>(\n params?: UseFieldParams<Value>\n): UseFieldReturn<Type> => {\n const initialValue = (params?.initialValue ?? '') as Value;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const watchingRef = useRef(false);\n const rerender = useRerender();\n\n const [dirty, setDirty] = useState(false);\n const [touched, setTouched] = useState(params?.initialTouched ?? false);\n const [error, setError] = useState<string | undefined>(undefined);\n\n const getValue = () => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox')\n return inputRef.current.checked as Type;\n return (inputRef.current?.value ?? initialValue) as Type;\n };\n\n const setValue = (value: Type) => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox') {\n inputRef.current.checked = value as boolean;\n if (watchingRef.current) return rerender();\n return;\n }\n\n inputRef.current!.value = value as string;\n if (watchingRef.current) return rerender();\n };\n\n const reset = () => {\n setValue(initialValue as unknown as Type);\n setDirty(false);\n setTouched(false);\n setError(undefined);\n };\n\n const focus = () =>
|
|
1
|
+
{"version":3,"file":"useField.cjs","sources":["../../../../src/hooks/useField/useField.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useRerender } from '../useRerender/useRerender';\n\n/** The use field params type */\nexport interface UseFieldParams<Value> {\n /** The auto focus */\n autoFocus?: boolean;\n /** The initial touched */\n initialTouched?: boolean;\n /** The initial value */\n initialValue?: Value;\n /** The validate on blur */\n validateOnBlur?: boolean;\n /** The validate on mount */\n validateOnChange?: boolean;\n /** The validate on mount */\n validateOnMount?: boolean;\n}\n\n/** The use field register params type */\nexport interface UseFieldRegisterParams {\n /** The required validation */\n required?: string;\n /** The custom validation */\n validate?: (value: string) => Promise<string | true>;\n /** The min value validation */\n max?: {\n value: number;\n message: string;\n };\n /** The max length validation */\n maxLength?: {\n value: number;\n message: string;\n };\n /** The max value validation */\n min?: {\n value: number;\n message: string;\n };\n /** The min length validation */\n minLength?: {\n value: number;\n message: string;\n };\n /** The pattern validation */\n pattern?: {\n value: RegExp;\n message: string;\n };\n}\n\n/** The use field return type */\nexport interface UseFieldReturn<Value> {\n /** The dirty state */\n dirty: boolean;\n /** The error state */\n error?: string;\n /** The set error function */\n touched: boolean;\n /** The set error function */\n clearError: () => void;\n /** The focus function */\n focus: () => void;\n /** The get value function */\n getValue: () => Value;\n /** The register function */\n register: (params?: UseFieldRegisterParams) => {\n onBlur: () => void;\n onChange: () => void;\n ref: (\n node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined\n ) => void;\n };\n /** The reset function */\n reset: () => void;\n /** The set error function */\n setError: (error: string) => void;\n /** The set value function */\n setValue: (value: Value) => void;\n /** The watch function */\n watch: () => Value;\n}\n\n/**\n * @name useField\n * @description - Hook to manage a form field\n * @category Utilities\n *\n * @template Value The input value\n * @template Type The input value type\n * @param {Value} [params.initialValue] Initial value\n * @param {boolean} [params.initialTouched=false] Initial touched state\n * @param {boolean} [params.autoFocus=false] Auto focus\n * @param {boolean} [params.validateOnChange=false] Validate on change\n * @param {boolean} [params.validateOnBlur=false] Validate on blur\n * @param {boolean} [params.validateOnMount=false] Validate on mount\n * @returns {UseFieldReturn<Value>} An object containing input information\n *\n * @example\n * const { register, getValue, setValue, reset, dirty, error, setError, clearError, touched, focus, watch } = useField();\n */\nexport const useField = <\n Value extends boolean | number | string = string,\n Type = Value extends string ? string : Value extends boolean ? boolean : number\n>(\n params?: UseFieldParams<Value>\n): UseFieldReturn<Type> => {\n const initialValue = (params?.initialValue ?? '') as Value;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const watchingRef = useRef(false);\n const rerender = useRerender();\n\n const [dirty, setDirty] = useState(false);\n const [touched, setTouched] = useState(params?.initialTouched ?? false);\n const [error, setError] = useState<string | undefined>(undefined);\n\n const getValue = () => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox')\n return inputRef.current.checked as Type;\n return (inputRef.current?.value ?? initialValue) as Type;\n };\n\n const setValue = (value: Type) => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox') {\n inputRef.current.checked = value as boolean;\n if (watchingRef.current) return rerender();\n return;\n }\n\n inputRef.current!.value = value as string;\n if (watchingRef.current) return rerender();\n };\n\n const reset = () => {\n setValue(initialValue as unknown as Type);\n setDirty(false);\n setTouched(false);\n setError(undefined);\n };\n\n const focus = () => inputRef.current!.focus();\n\n const validate = (params: UseFieldRegisterParams) => {\n if (params.required && !inputRef.current!.value) {\n return setError(params.required);\n }\n\n if (params.minLength && inputRef.current!.value.length < params.minLength.value) {\n return setError(params.minLength.message);\n }\n\n if (params.maxLength && inputRef.current!.value.length > params.maxLength.value) {\n return setError(params.maxLength.message);\n }\n\n if (params.min && Number(inputRef.current!.value) < params.min.value) {\n return setError(params.min.message);\n }\n\n if (params.max && Number(inputRef.current!.value) > params.max.value) {\n return setError(params.max.message);\n }\n\n if (params.pattern && !params.pattern.value.test(inputRef.current!.value)) {\n return setError(params.pattern.message);\n }\n\n if (params.validate) {\n const error = params.validate(inputRef.current!.value);\n if (typeof error === 'string') return setError(error);\n }\n\n setError(undefined);\n };\n\n const register = (registerParams?: UseFieldRegisterParams) => ({\n ref: (node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined) => {\n if (!inputRef.current && node) {\n if (params?.autoFocus) node.focus();\n inputRef.current = node as HTMLInputElement;\n if (inputRef.current.type === 'radio') {\n inputRef.current.defaultChecked = params?.initialValue === node.value;\n return;\n }\n if (inputRef.current.type === 'checkbox') {\n inputRef.current.defaultChecked = !!params?.initialValue;\n return;\n }\n inputRef.current.defaultValue = String(initialValue);\n\n if (registerParams && params?.validateOnMount) validate(registerParams);\n }\n },\n onChange: async () => {\n if (watchingRef.current) return rerender();\n if (inputRef.current!.value !== initialValue) setDirty(true);\n if (dirty && inputRef.current!.value === initialValue) setDirty(false);\n if (registerParams && params?.validateOnChange) await validate(registerParams);\n if (registerParams && params?.validateOnBlur) setError(undefined);\n },\n onBlur: async () => {\n if (registerParams && params?.validateOnBlur) await validate(registerParams);\n setTouched(true);\n }\n });\n\n const watch = () => {\n watchingRef.current = true;\n return getValue();\n };\n\n const clearError = () => setError(undefined);\n\n return {\n register,\n dirty,\n touched,\n error,\n setError,\n clearError,\n getValue,\n setValue,\n reset,\n watch,\n focus\n };\n};\n"],"names":["useField","params","initialValue","inputRef","useRef","watchingRef","rerender","useRerender","dirty","setDirty","useState","touched","setTouched","error","setError","getValue","_a","_b","_c","setValue","value","reset","focus","validate","registerParams","node"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGamepad.cjs","sources":["../../../../src/hooks/useGamepad/useGamepad.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useRaf } from '../useRaf/useRaf';\n\ndeclare global {\n interface Gamepad {\n hapticActuators?: GamepadHapticActuator[];\n }\n}\n\n/** The use gamepad return type */\nexport interface UseGamepadStateReturn {\n /** The gamepad active status */\n active: boolean;\n /** The gamepad state */\n gamepads: Gamepad[];\n /** The gamepad supported status */\n supported: boolean;\n}\n\n/**\n * @name useGamepad\n * @description - Hook for getting information about gamepad\n * @category Browser\n *\n * @browserapi navigator.getGamepads https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getGamepads\n *\n * @returns {UseGamepadStateReturn} An object containing the gamepad information\n *\n * @example\n * const { supported, gamepads, active } = useGamepad();\n */\nexport const useGamepad = () => {\n const supported = typeof navigator !== 'undefined' && 'getGamepads' in navigator;\n const [gamepads, setGamepads] = useState<Record<number, Gamepad>>({});\n\n const createGamepad = (gamepad: Gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null;\n\n if (vibrationActuator) hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\n return {\n ...gamepad,\n hapticActuators\n } as Gamepad;\n };\n\n const updateGamepadState = () => {\n for (const gamepad of navigator.getGamepads() ?? []) {\n if (gamepad && gamepads[gamepad.index]) gamepads[gamepad.index] = createGamepad(gamepad);\n }\n };\n\n const { active } = useRaf(updateGamepadState, {
|
|
1
|
+
{"version":3,"file":"useGamepad.cjs","sources":["../../../../src/hooks/useGamepad/useGamepad.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useRaf } from '../useRaf/useRaf';\n\ndeclare global {\n interface Gamepad {\n hapticActuators?: GamepadHapticActuator[];\n }\n}\n\n/** The use gamepad return type */\nexport interface UseGamepadStateReturn {\n /** The gamepad active status */\n active: boolean;\n /** The gamepad state */\n gamepads: Gamepad[];\n /** The gamepad supported status */\n supported: boolean;\n}\n\n/**\n * @name useGamepad\n * @description - Hook for getting information about gamepad\n * @category Browser\n *\n * @browserapi navigator.getGamepads https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getGamepads\n *\n * @returns {UseGamepadStateReturn} An object containing the gamepad information\n *\n * @example\n * const { supported, gamepads, active } = useGamepad();\n */\nexport const useGamepad = () => {\n const supported = typeof navigator !== 'undefined' && 'getGamepads' in navigator;\n const [gamepads, setGamepads] = useState<Record<number, Gamepad>>({});\n\n const createGamepad = (gamepad: Gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null;\n\n if (vibrationActuator) hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\n return {\n ...gamepad,\n hapticActuators\n } as Gamepad;\n };\n\n const updateGamepadState = () => {\n for (const gamepad of navigator.getGamepads() ?? []) {\n if (gamepad && gamepads[gamepad.index]) gamepads[gamepad.index] = createGamepad(gamepad);\n }\n };\n\n const { active } = useRaf(updateGamepadState, {\n enabled: !!Object.keys(gamepads).length\n });\n\n useEffect(() => {\n if (!supported) return;\n const gamepads = navigator.getGamepads();\n setGamepads(\n gamepads.reduce(\n (acc, gamepad) => ({\n ...acc,\n ...(gamepad && { [gamepad.index]: createGamepad(gamepad) })\n }),\n {}\n )\n );\n }, []);\n\n useEffect(() => {\n const onConnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n setGamepads({ ...gamepads, [gamepad.index]: createGamepad(gamepad) });\n };\n\n const onDisconnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n const updatedGamepads = { ...gamepads };\n delete updatedGamepads[gamepad.index];\n setGamepads(updatedGamepads);\n };\n\n document.addEventListener('gamepadconnected', onConnected);\n document.addEventListener('gamepaddisconnected', onDisconnected);\n\n return () => {\n document.removeEventListener('gamepadconnected', onConnected);\n document.removeEventListener('gamepaddisconnected', onDisconnected);\n };\n }, []);\n\n return {\n active,\n supported,\n gamepads: Object.values(gamepads)\n };\n};\n\nexport const mapGamepadToXbox360Controller = (gamepad: Gamepad) => ({\n buttons: {\n a: gamepad.buttons[0],\n b: gamepad.buttons[1],\n x: gamepad.buttons[2],\n y: gamepad.buttons[3]\n },\n bumper: {\n left: gamepad.buttons[4],\n right: gamepad.buttons[5]\n },\n triggers: {\n left: gamepad.buttons[6],\n right: gamepad.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.axes[0],\n vertical: gamepad.axes[1],\n button: gamepad.buttons[10]\n },\n right: {\n horizontal: gamepad.axes[2],\n vertical: gamepad.axes[3],\n button: gamepad.buttons[11]\n }\n },\n dpad: {\n up: gamepad.buttons[12],\n down: gamepad.buttons[13],\n left: gamepad.buttons[14],\n right: gamepad.buttons[15]\n },\n back: gamepad.buttons[8],\n start: gamepad.buttons[9]\n});\n"],"names":["useGamepad","supported","gamepads","setGamepads","useState","createGamepad","gamepad","hapticActuators","vibrationActuator","updateGamepadState","active","useRaf","useEffect","acc","onConnected","event","onDisconnected","updatedGamepads","mapGamepadToXbox360Controller"],"mappings":"2IAgCaA,EAAa,IAAM,CAC9B,MAAMC,EAAY,OAAO,UAAc,KAAe,gBAAiB,UACjE,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAkC,CAAA,CAAE,EAE9DC,EAAiBC,GAAqB,CAC1C,MAAMC,EAAkB,CAAC,EACnBC,EAAoB,sBAAuBF,EAAUA,EAAQ,kBAAoB,KAEnF,OAAAE,GAAmCD,EAAA,KAAKC,CAAiB,EACzDF,EAAQ,iBAAiBC,EAAgB,KAAK,GAAGD,EAAQ,eAAe,EAErE,CACL,GAAGA,EACH,gBAAAC,CACF,CACF,EAEME,EAAqB,IAAM,CAC/B,UAAWH,KAAW,UAAU,YAAY,GAAK,CAAA,EAC3CA,GAAWJ,EAASI,EAAQ,KAAK,MAAYA,EAAQ,KAAK,EAAID,EAAcC,CAAO,EAE3F,EAEM,CAAE,OAAAI,CAAA,EAAWC,EAAA,OAAOF,EAAoB,CAC5C,QAAS,CAAC,CAAC,OAAO,KAAKP,CAAQ,EAAE,MAAA,CAClC,EAEDU,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACX,EAAW,OACVC,MAAAA,EAAW,UAAU,YAAY,EACvCC,EACED,EAAS,OACP,CAACW,EAAKP,KAAa,CACjB,GAAGO,EACH,GAAIP,GAAW,CAAE,CAACA,EAAQ,KAAK,EAAGD,EAAcC,CAAO,CAAE,CAAA,GAE3D,CAAA,CAAC,CAEL,CACF,EAAG,EAAE,EAELM,EAAAA,UAAU,IAAM,CACR,MAAAE,EAAeC,GAAiB,CAC9B,KAAA,CAAE,QAAAT,GAAYS,EACRZ,EAAA,CAAE,GAAGD,EAAU,CAACI,EAAQ,KAAK,EAAGD,EAAcC,CAAO,EAAG,CACtE,EAEMU,EAAkBD,GAAiB,CACjC,KAAA,CAAE,QAAAT,GAAYS,EACdE,EAAkB,CAAE,GAAGf,CAAS,EAC/B,OAAAe,EAAgBX,EAAQ,KAAK,EACpCH,EAAYc,CAAe,CAC7B,EAES,gBAAA,iBAAiB,mBAAoBH,CAAW,EAChD,SAAA,iBAAiB,sBAAuBE,CAAc,EAExD,IAAM,CACF,SAAA,oBAAoB,mBAAoBF,CAAW,EACnD,SAAA,oBAAoB,sBAAuBE,CAAc,CACpE,CACF,EAAG,EAAE,EAEE,CACL,OAAAN,EACA,UAAAT,EACA,SAAU,OAAO,OAAOC,CAAQ,CAClC,CACF,EAEagB,EAAiCZ,IAAsB,CAClE,QAAS,CACP,EAAGA,EAAQ,QAAQ,CAAC,EACpB,EAAGA,EAAQ,QAAQ,CAAC,EACpB,EAAGA,EAAQ,QAAQ,CAAC,EACpB,EAAGA,EAAQ,QAAQ,CAAC,CACtB,EACA,OAAQ,CACN,KAAMA,EAAQ,QAAQ,CAAC,EACvB,MAAOA,EAAQ,QAAQ,CAAC,CAC1B,EACA,SAAU,CACR,KAAMA,EAAQ,QAAQ,CAAC,EACvB,MAAOA,EAAQ,QAAQ,CAAC,CAC1B,EACA,MAAO,CACL,KAAM,CACJ,WAAYA,EAAQ,KAAK,CAAC,EAC1B,SAAUA,EAAQ,KAAK,CAAC,EACxB,OAAQA,EAAQ,QAAQ,EAAE,CAC5B,EACA,MAAO,CACL,WAAYA,EAAQ,KAAK,CAAC,EAC1B,SAAUA,EAAQ,KAAK,CAAC,EACxB,OAAQA,EAAQ,QAAQ,EAAE,CAAA,CAE9B,EACA,KAAM,CACJ,GAAIA,EAAQ,QAAQ,EAAE,EACtB,KAAMA,EAAQ,QAAQ,EAAE,EACxB,KAAMA,EAAQ,QAAQ,EAAE,EACxB,MAAOA,EAAQ,QAAQ,EAAE,CAC3B,EACA,KAAMA,EAAQ,QAAQ,CAAC,EACvB,MAAOA,EAAQ,QAAQ,CAAC,CAC1B"}
|
|
@@ -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
|
|
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']>(options?.onChange);\n internalOnChangeRef.current = options?.onChange;\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","enabled","entry","setEntry","useState","internalRef","useRefState","internalOnChangeRef","useRef","useEffect","element","getElement","observer","_a"],"mappings":"mPA2DaA,EAA2B,IAAIC,IAAkB,CACtD,MAAAC,EAAUC,WAASF,EAAO,CAAC,CAAC,EAAIA,EAAO,CAAC,EAAI,OAC5CG,EAAWF,EAASD,EAAO,CAAC,EAAIA,EAAO,CAAC,EACxCI,GAAUD,GAAA,YAAAA,EAAS,UAAW,GAE9B,CAACE,EAAOC,CAAQ,EAAIC,WAAoC,EAExDC,EAAcC,EAAAA,YAAqB,EACnCC,EAAsBC,EAAAA,OAAmDR,GAAA,YAAAA,EAAS,QAAQ,EA2B5F,OA1BJO,EAAoB,QAAUP,GAAA,YAAAA,EAAS,SAEvCS,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,GAAW,CAACH,GAAU,CAACO,EAAY,MAAO,OAE/C,MAAMK,EAAUZ,EAASa,EAAAA,WAAWb,CAAM,EAAIO,EAAY,QAC1D,GAAI,CAACK,EAAS,OAEd,MAAME,EAAW,IAAI,qBACnB,CAAC,CAACV,CAAK,IAAM,OACXC,EAASD,CAAK,GACdW,EAAAN,EAAoB,UAApB,MAAAM,EAAA,KAAAN,EAA8BL,EAChC,EACA,CACE,GAAGF,EACH,KAAMA,GAAA,MAAAA,EAAS,KAAQW,EAAW,WAAAX,EAAQ,IAAI,EAA2B,QAAA,CAE7E,EAEA,OAAAY,EAAS,QAAQF,CAAkB,EAE5B,IAAM,CACXE,EAAS,WAAW,CACtB,CACC,EAAA,CAACd,EAAQO,EAAY,MAAOL,GAAA,YAAAA,EAAS,WAAYA,GAAA,YAAAA,EAAS,UAAWA,GAAA,YAAAA,EAAS,KAAMC,CAAO,CAAC,EAE3FH,EAAe,CAAE,MAAAI,EAAO,OAAQ,CAAC,EAACA,GAAA,MAAAA,EAAO,eAAe,EACrD,CACL,IAAKG,EACL,MAAAH,EACA,OAAQ,CAAC,EAACA,GAAA,MAAAA,EAAO,eACnB,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),m=require("../useInterval/useInterval.cjs"),a=()=>{const e=performance&&"memory"in performance&&!!performance.memory,[r,t]=o.useState((performance==null?void 0:performance.memory)??{jsHeapSizeLimit:0,totalJSHeapSize:0,usedJSHeapSize:0});return m.useInterval(()=>t(performance.memory),1e3,{immediately:e}),{supported:e,value:r}};exports.useMemory=a;
|
|
2
2
|
//# sourceMappingURL=useMemory.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemory.cjs","sources":["../../../../src/hooks/useMemory/useMemory.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useInterval } from '../useInterval/useInterval';\n\ndeclare global {\n interface Performance {\n memory: {\n readonly jsHeapSizeLimit: number;\n readonly totalJSHeapSize: number;\n readonly usedJSHeapSize: number;\n };\n }\n}\n\n/** The use memory return type */\nexport interface UseMemoryReturn {\n /** The memory supported status */\n supported: boolean;\n /** The current memory usage */\n value: Performance['memory'];\n}\n\n/**\n * @name useMemory\n * @description - Hook that gives you current memory usage\n * @category Browser\n *\n * @browserapi performance.memory https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory\n *\n * @returns {UseMemoryReturn} An object containing the current memory usage\n *\n * @example\n * const { supported, value } = useMemory();\n */\nexport const useMemory = (): UseMemoryReturn => {\n const supported = performance && 'memory' in performance;\n const [value, setValue] = useState<Performance['memory']>({\n
|
|
1
|
+
{"version":3,"file":"useMemory.cjs","sources":["../../../../src/hooks/useMemory/useMemory.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useInterval } from '../useInterval/useInterval';\n\ndeclare global {\n interface Performance {\n memory: {\n readonly jsHeapSizeLimit: number;\n readonly totalJSHeapSize: number;\n readonly usedJSHeapSize: number;\n };\n }\n}\n\n/** The use memory return type */\nexport interface UseMemoryReturn {\n /** The memory supported status */\n supported: boolean;\n /** The current memory usage */\n value: Performance['memory'];\n}\n\n/**\n * @name useMemory\n * @description - Hook that gives you current memory usage\n * @category Browser\n *\n * @browserapi performance.memory https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory\n *\n * @returns {UseMemoryReturn} An object containing the current memory usage\n *\n * @example\n * const { supported, value } = useMemory();\n */\nexport const useMemory = (): UseMemoryReturn => {\n const supported = performance && 'memory' in performance && !!performance.memory;\n const [value, setValue] = useState<Performance['memory']>(\n performance?.memory ?? {\n jsHeapSizeLimit: 0,\n totalJSHeapSize: 0,\n usedJSHeapSize: 0\n }\n );\n\n useInterval(() => setValue(performance.memory), 1000, {\n immediately: supported\n });\n\n return { supported, value };\n};\n"],"names":["useMemory","supported","value","setValue","useState","useInterval"],"mappings":"qJAkCaA,EAAY,IAAuB,CAC9C,MAAMC,EAAY,aAAe,WAAY,aAAe,CAAC,CAAC,YAAY,OACpE,CAACC,EAAOC,CAAQ,EAAIC,EAAA,UACxB,qCAAa,SAAU,CACrB,gBAAiB,EACjB,gBAAiB,EACjB,eAAgB,CAAA,CAEpB,EAEAC,OAAAA,EAAAA,YAAY,IAAMF,EAAS,YAAY,MAAM,EAAG,IAAM,CACpD,YAAaF,CAAA,CACd,EAEM,CAAE,UAAAA,EAAW,MAAAC,CAAM,CAC5B"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("./hooks/useActiveElement/useActiveElement.cjs"),C=require("./hooks/useAsync/useAsync.cjs"),E=require("./hooks/useBattery/useBattery.cjs"),p=require("./hooks/useBluetooth/useBluetooth.cjs"),m=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),y=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),R=require("./hooks/useClickOutside/useClickOutside.cjs"),O=require("./hooks/useClipboard/useClipboard.cjs"),k=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),u=require("./hooks/useCookies/useCookies.cjs"),I=require("./hooks/useCopy/useCopy.cjs"),v=require("./hooks/useCounter/useCounter.cjs"),D=require("./hooks/useCssVar/useCssVar.cjs"),b=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),A=require("./hooks/useDebounceValue/useDebounceValue.cjs"),L=require("./hooks/useDefault/useDefault.cjs"),M=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),f=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),h=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),_=require("./hooks/useDidUpdate/useDidUpdate.cjs"),N=require("./hooks/useDisclosure/useDisclosure.cjs"),B=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),K=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),F=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),V=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),w=require("./hooks/useDoubleClick/useDoubleClick.cjs"),W=require("./hooks/useDropZone/useDropZone.cjs"),x=require("./hooks/useElementSize/useElementSize.cjs"),H=require("./hooks/useEvent/useEvent.cjs"),U=require("./hooks/useEventListener/useEventListener.cjs"),z=require("./hooks/useEventSource/useEventSource.cjs"),G=require("./hooks/useEyeDropper/useEyeDropper.cjs"),Q=require("./hooks/useFavicon/useFavicon.cjs"),X=require("./hooks/useField/useField.cjs"),Z=require("./hooks/useFileDialog/useFileDialog.cjs"),j=require("./hooks/useFocus/useFocus.cjs"),J=require("./hooks/useFps/useFps.cjs"),Y=require("./hooks/useFul/useFul.cjs"),$=require("./hooks/useFullscreen/useFullscreen.cjs"),i=require("./hooks/useGamepad/useGamepad.cjs"),ee=require("./hooks/useGeolocation/useGeolocation.cjs"),se=require("./hooks/useHash/useHash.cjs"),n=require("./hooks/useHotkeys/useHotkeys.cjs"),ue=require("./hooks/useHover/useHover.cjs"),re=require("./hooks/useIdle/useIdle.cjs"),te=require("./hooks/useImage/useImage.cjs"),oe=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),ie=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),ne=require("./hooks/useInterval/useInterval.cjs"),ce=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),ae=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),le=require("./hooks/useKeyboard/useKeyboard.cjs"),qe=require("./hooks/useKeyPress/useKeyPress.cjs"),Se=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),de=require("./hooks/useKeysPressed/useKeysPressed.cjs"),ge=require("./hooks/useLastChanged/useLastChanged.cjs"),Te=require("./hooks/useLatest/useLatest.cjs"),Pe=require("./hooks/useLess/useLess.cjs"),Ce=require("./hooks/useList/useList.cjs"),Ee=require("./hooks/useLocalStorage/useLocalStorage.cjs"),pe=require("./hooks/useLockCallback/useLockCallback.cjs"),me=require("./hooks/useLogger/useLogger.cjs"),ye=require("./hooks/useLongPress/useLongPress.cjs"),Re=require("./hooks/useMap/useMap.cjs"),Oe=require("./hooks/useMeasure/useMeasure.cjs"),ke=require("./hooks/useMediaQuery/useMediaQuery.cjs"),Ie=require("./hooks/useMemory/useMemory.cjs"),ve=require("./hooks/useMount/useMount.cjs"),De=require("./hooks/useMouse/useMouse.cjs"),be=require("./hooks/useMutation/useMutation.cjs"),Ae=require("./hooks/useMutationObserver/useMutationObserver.cjs"),c=require("./hooks/useNetwork/useNetwork.cjs"),Le=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),Me=require("./hooks/useOnce/useOnce.cjs"),fe=require("./hooks/useOnline/useOnline.cjs"),a=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),he=require("./hooks/useOptimistic/useOptimistic.cjs"),_e=require("./hooks/useOrientation/useOrientation.cjs"),Ne=require("./hooks/useOtpCredential/useOtpCredential.cjs"),Be=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),Ke=require("./hooks/useParallax/useParallax.cjs"),Fe=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),Ve=require("./hooks/usePermission/usePermission.cjs"),we=require("./hooks/usePointerLock/usePointerLock.cjs"),We=require("./hooks/usePostMessage/usePostMessage.cjs"),xe=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),He=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Ue=require("./hooks/usePreferredDark/usePreferredDark.cjs"),ze=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Ge=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Qe=require("./hooks/usePrevious/usePrevious.cjs"),Xe=require("./hooks/useQuery/useQuery.cjs"),Ze=require("./hooks/useQueue/useQueue.cjs"),je=require("./hooks/useRaf/useRaf.cjs"),Je=require("./hooks/useRafValue/useRafValue.cjs"),Ye=require("./hooks/useRefState/useRefState.cjs"),$e=require("./hooks/useRenderCount/useRenderCount.cjs"),es=require("./hooks/useRenderInfo/useRenderInfo.cjs"),ss=require("./hooks/useRerender/useRerender.cjs"),us=require("./hooks/useResizeObserver/useResizeObserver.cjs"),rs=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),l=require("./hooks/useScript/useScript.cjs"),ts=require("./hooks/useScroll/useScroll.cjs"),os=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),is=require("./hooks/useScrollTo/useScrollTo.cjs"),ns=require("./hooks/useSessionStorage/useSessionStorage.cjs"),cs=require("./hooks/useSet/useSet.cjs"),as=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),ls=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),qs=require("./hooks/useStateHistory/useStateHistory.cjs"),Ss=require("./hooks/useStep/useStep.cjs"),ds=require("./hooks/useSticky/useSticky.cjs"),gs=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),Ts=require("./hooks/useTextDirection/useTextDirection.cjs"),S=require("./hooks/useTextSelection/useTextSelection.cjs"),Ps=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),Cs=require("./hooks/useThrottleValue/useThrottleValue.cjs"),Es=require("./hooks/useTime/useTime.cjs"),ps=require("./hooks/useTimeout/useTimeout.cjs"),d=require("./hooks/useTimer/useTimer.cjs"),ms=require("./hooks/useToggle/useToggle.cjs"),ys=require("./hooks/useUnmount/useUnmount.cjs"),Rs=require("./hooks/useVibrate/useVibrate.cjs"),Os=require("./hooks/useWakeLock/useWakeLock.cjs"),ks=require("./hooks/useWebSocket/useWebSocket.cjs"),Is=require("./hooks/useWindowEvent/useWindowEvent.cjs"),vs=require("./hooks/useWindowFocus/useWindowFocus.cjs"),g=require("./hooks/useWindowScroll/useWindowScroll.cjs"),Ds=require("./hooks/useWindowSize/useWindowSize.cjs"),bs=require("./hooks/useWizard/useWizard.cjs"),T=require("./utils/helpers/copy.cjs"),As=require("./utils/helpers/debounce.cjs"),Ls=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),Ms=require("./utils/helpers/getRetry.cjs"),fs=require("./utils/helpers/isTarget.cjs"),hs=require("./utils/helpers/throttle.cjs");exports.useActiveElement=P.useActiveElement;exports.useAsync=C.useAsync;exports.useBattery=E.useBattery;exports.useBluetooth=p.useBluetooth;exports.useBoolean=m.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=y.useBrowserLanguage;exports.useClickOutside=R.useClickOutside;exports.useClipboard=O.useClipboard;exports.useConst=k.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=u.clearCookies;exports.getParsedCookies=u.getParsedCookies;exports.useCookies=u.useCookies;exports.useCopy=I.useCopy;exports.useCounter=v.useCounter;exports.useCssVar=D.useCssVar;exports.useDebounceCallback=b.useDebounceCallback;exports.useDebounceValue=A.useDebounceValue;exports.useDefault=L.useDefault;exports.useDeviceMotion=M.useDeviceMotion;exports.useDeviceOrientation=f.useDeviceOrientation;exports.useDevicePixelRatio=h.useDevicePixelRatio;exports.useDidUpdate=_.useDidUpdate;exports.useDisclosure=N.useDisclosure;exports.useDisplayMedia=B.useDisplayMedia;exports.useDocumentEvent=K.useDocumentEvent;exports.useDocumentTitle=F.useDocumentTitle;exports.useDocumentVisibility=V.useDocumentVisibility;exports.useDoubleClick=w.useDoubleClick;exports.useDropZone=W.useDropZone;exports.useElementSize=x.useElementSize;exports.useEvent=H.useEvent;exports.useEventListener=U.useEventListener;exports.useEventSource=z.useEventSource;exports.useEyeDropper=G.useEyeDropper;exports.useFavicon=Q.useFavicon;exports.useField=X.useField;exports.useFileDialog=Z.useFileDialog;exports.useFocus=j.useFocus;exports.useFps=J.useFps;exports.useFul=Y.useFul;exports.useFullscreen=$.useFullscreen;exports.mapGamepadToXbox360Controller=i.mapGamepadToXbox360Controller;exports.useGamepad=i.useGamepad;exports.useGeolocation=ee.useGeolocation;exports.useHash=se.useHash;exports.isHotkeyMatch=n.isHotkeyMatch;exports.useHotkeys=n.useHotkeys;exports.useHover=ue.useHover;exports.useIdle=re.useIdle;exports.useImage=te.useImage;exports.useInfiniteScroll=oe.useInfiniteScroll;exports.useIntersectionObserver=ie.useIntersectionObserver;exports.useInterval=ne.useInterval;exports.useIsFirstRender=ce.useIsFirstRender;exports.useIsomorphicLayoutEffect=ae.useIsomorphicLayoutEffect;exports.useKeyboard=le.useKeyboard;exports.useKeyPress=qe.useKeyPress;exports.useKeyPressEvent=Se.useKeyPressEvent;exports.useKeysPressed=de.useKeysPressed;exports.useLastChanged=ge.useLastChanged;exports.useLatest=Te.useLatest;exports.useLess=Pe.useLess;exports.useList=Ce.useList;exports.useLocalStorage=Ee.useLocalStorage;exports.useLockCallback=pe.useLockCallback;exports.useLogger=me.useLogger;exports.useLongPress=ye.useLongPress;exports.useMap=Re.useMap;exports.useMeasure=Oe.useMeasure;exports.useMediaQuery=ke.useMediaQuery;exports.useMemory=Ie.useMemory;exports.useMount=ve.useMount;exports.useMouse=De.useMouse;exports.useMutation=be.useMutation;exports.useMutationObserver=Ae.useMutationObserver;exports.getConnection=c.getConnection;exports.useNetwork=c.useNetwork;exports.useOffsetPagination=Le.useOffsetPagination;exports.useOnce=Me.useOnce;exports.useOnline=fe.useOnline;exports.getOperatingSystem=a.getOperatingSystem;exports.useOperatingSystem=a.useOperatingSystem;exports.useOptimistic=he.useOptimistic;exports.useOrientation=_e.useOrientation;exports.useOtpCredential=Ne.useOtpCredential;exports.usePageLeave=Be.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=Ke.useParallax;exports.usePerformanceObserver=Fe.usePerformanceObserver;exports.usePermission=Ve.usePermission;exports.usePointerLock=we.usePointerLock;exports.usePostMessage=We.usePostMessage;exports.usePreferredColorScheme=xe.usePreferredColorScheme;exports.usePreferredContrast=He.usePreferredContrast;exports.usePreferredDark=Ue.usePreferredDark;exports.usePreferredLanguages=ze.usePreferredLanguages;exports.usePreferredReducedMotion=Ge.usePreferredReducedMotion;exports.usePrevious=Qe.usePrevious;exports.useQuery=Xe.useQuery;exports.useQueue=Ze.useQueue;exports.useRaf=je.useRaf;exports.useRafValue=Je.useRafValue;exports.useRefState=Ye.useRefState;exports.useRenderCount=$e.useRenderCount;exports.useRenderInfo=es.useRenderInfo;exports.useRerender=ss.useRerender;exports.useResizeObserver=us.useResizeObserver;exports.useScreenOrientation=rs.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=l.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=l.useScript;exports.useScroll=ts.useScroll;exports.useScrollIntoView=os.useScrollIntoView;exports.useScrollTo=is.useScrollTo;exports.useSessionStorage=ns.useSessionStorage;exports.useSet=cs.useSet;exports.useShare=as.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useSpeechSynthesis=ls.useSpeechSynthesis;exports.useStateHistory=qs.useStateHistory;exports.useStep=Ss.useStep;exports.useSticky=ds.useSticky;exports.useStopwatch=gs.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=Ts.useTextDirection;exports.getRangesSelection=S.getRangesSelection;exports.useTextSelection=S.useTextSelection;exports.useThrottleCallback=Ps.useThrottleCallback;exports.useThrottleValue=Cs.useThrottleValue;exports.useTime=Es.useTime;exports.useTimeout=ps.useTimeout;exports.getTimeFromSeconds=d.getTimeFromSeconds;exports.useTimer=d.useTimer;exports.useToggle=ms.useToggle;exports.useUnmount=ys.useUnmount;exports.useVibrate=Rs.useVibrate;exports.useWakeLock=Os.useWakeLock;exports.useWebSocket=ks.useWebSocket;exports.useWindowEvent=Is.useWindowEvent;exports.useWindowFocus=vs.useWindowFocus;exports.scrollTo=g.scrollTo;exports.useWindowScroll=g.useWindowScroll;exports.useWindowSize=Ds.useWindowSize;exports.useWizard=bs.useWizard;exports.copy=T.copy;exports.legacyCopyToClipboard=T.legacyCopyToClipboard;exports.debounce=As.debounce;exports.getDate=Ls.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=Ms.getRetry;exports.isTarget=fs.isTarget;exports.throttle=hs.throttle;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("./helpers/createContext/createContext.cjs"),P=require("./helpers/createStore/createStore.cjs"),E=require("./hooks/useActiveElement/useActiveElement.cjs"),p=require("./hooks/useAsync/useAsync.cjs"),m=require("./hooks/useBattery/useBattery.cjs"),y=require("./hooks/useBluetooth/useBluetooth.cjs"),R=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),O=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),k=require("./hooks/useClickOutside/useClickOutside.cjs"),I=require("./hooks/useClipboard/useClipboard.cjs"),v=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),u=require("./hooks/useCookies/useCookies.cjs"),D=require("./hooks/useCopy/useCopy.cjs"),b=require("./hooks/useCounter/useCounter.cjs"),A=require("./hooks/useCssVar/useCssVar.cjs"),L=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),M=require("./hooks/useDebounceValue/useDebounceValue.cjs"),f=require("./hooks/useDefault/useDefault.cjs"),h=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),_=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),N=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),B=require("./hooks/useDidUpdate/useDidUpdate.cjs"),K=require("./hooks/useDisclosure/useDisclosure.cjs"),F=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),V=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),w=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),W=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),x=require("./hooks/useDoubleClick/useDoubleClick.cjs"),H=require("./hooks/useDropZone/useDropZone.cjs"),U=require("./hooks/useElementSize/useElementSize.cjs"),z=require("./hooks/useEvent/useEvent.cjs"),G=require("./hooks/useEventListener/useEventListener.cjs"),Q=require("./hooks/useEventSource/useEventSource.cjs"),X=require("./hooks/useEyeDropper/useEyeDropper.cjs"),Z=require("./hooks/useFavicon/useFavicon.cjs"),j=require("./hooks/useField/useField.cjs"),J=require("./hooks/useFileDialog/useFileDialog.cjs"),Y=require("./hooks/useFocus/useFocus.cjs"),$=require("./hooks/useFps/useFps.cjs"),ee=require("./hooks/useFul/useFul.cjs"),se=require("./hooks/useFullscreen/useFullscreen.cjs"),i=require("./hooks/useGamepad/useGamepad.cjs"),ue=require("./hooks/useGeolocation/useGeolocation.cjs"),re=require("./hooks/useHash/useHash.cjs"),n=require("./hooks/useHotkeys/useHotkeys.cjs"),te=require("./hooks/useHover/useHover.cjs"),oe=require("./hooks/useIdle/useIdle.cjs"),ie=require("./hooks/useImage/useImage.cjs"),ne=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),ce=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),ae=require("./hooks/useInterval/useInterval.cjs"),le=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),qe=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),Se=require("./hooks/useKeyboard/useKeyboard.cjs"),de=require("./hooks/useKeyPress/useKeyPress.cjs"),ge=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),Te=require("./hooks/useKeysPressed/useKeysPressed.cjs"),Ce=require("./hooks/useLastChanged/useLastChanged.cjs"),Pe=require("./hooks/useLatest/useLatest.cjs"),Ee=require("./hooks/useLess/useLess.cjs"),pe=require("./hooks/useList/useList.cjs"),me=require("./hooks/useLocalStorage/useLocalStorage.cjs"),ye=require("./hooks/useLockCallback/useLockCallback.cjs"),Re=require("./hooks/useLogger/useLogger.cjs"),Oe=require("./hooks/useLongPress/useLongPress.cjs"),ke=require("./hooks/useMap/useMap.cjs"),Ie=require("./hooks/useMeasure/useMeasure.cjs"),ve=require("./hooks/useMediaQuery/useMediaQuery.cjs"),De=require("./hooks/useMemory/useMemory.cjs"),be=require("./hooks/useMount/useMount.cjs"),Ae=require("./hooks/useMouse/useMouse.cjs"),Le=require("./hooks/useMutation/useMutation.cjs"),Me=require("./hooks/useMutationObserver/useMutationObserver.cjs"),c=require("./hooks/useNetwork/useNetwork.cjs"),fe=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),he=require("./hooks/useOnce/useOnce.cjs"),_e=require("./hooks/useOnline/useOnline.cjs"),a=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Ne=require("./hooks/useOptimistic/useOptimistic.cjs"),Be=require("./hooks/useOrientation/useOrientation.cjs"),Ke=require("./hooks/useOtpCredential/useOtpCredential.cjs"),Fe=require("./hooks/usePageLeave/usePageLeave.cjs"),r=require("./hooks/usePaint/usePaint.cjs"),Ve=require("./hooks/useParallax/useParallax.cjs"),we=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),We=require("./hooks/usePermission/usePermission.cjs"),xe=require("./hooks/usePointerLock/usePointerLock.cjs"),He=require("./hooks/usePostMessage/usePostMessage.cjs"),Ue=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),ze=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Ge=require("./hooks/usePreferredDark/usePreferredDark.cjs"),Qe=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),Xe=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Ze=require("./hooks/usePrevious/usePrevious.cjs"),je=require("./hooks/useQuery/useQuery.cjs"),Je=require("./hooks/useQueue/useQueue.cjs"),Ye=require("./hooks/useRaf/useRaf.cjs"),$e=require("./hooks/useRafValue/useRafValue.cjs"),es=require("./hooks/useRefState/useRefState.cjs"),ss=require("./hooks/useRenderCount/useRenderCount.cjs"),us=require("./hooks/useRenderInfo/useRenderInfo.cjs"),rs=require("./hooks/useRerender/useRerender.cjs"),ts=require("./hooks/useResizeObserver/useResizeObserver.cjs"),os=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),l=require("./hooks/useScript/useScript.cjs"),is=require("./hooks/useScroll/useScroll.cjs"),ns=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),cs=require("./hooks/useScrollTo/useScrollTo.cjs"),as=require("./hooks/useSessionStorage/useSessionStorage.cjs"),ls=require("./hooks/useSet/useSet.cjs"),qs=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),Ss=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),ds=require("./hooks/useStateHistory/useStateHistory.cjs"),gs=require("./hooks/useStep/useStep.cjs"),Ts=require("./hooks/useSticky/useSticky.cjs"),Cs=require("./hooks/useStopwatch/useStopwatch.cjs"),t=require("./hooks/useStorage/useStorage.cjs"),Ps=require("./hooks/useTextDirection/useTextDirection.cjs"),S=require("./hooks/useTextSelection/useTextSelection.cjs"),Es=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),ps=require("./hooks/useThrottleValue/useThrottleValue.cjs"),ms=require("./hooks/useTime/useTime.cjs"),ys=require("./hooks/useTimeout/useTimeout.cjs"),d=require("./hooks/useTimer/useTimer.cjs"),Rs=require("./hooks/useToggle/useToggle.cjs"),Os=require("./hooks/useUnmount/useUnmount.cjs"),ks=require("./hooks/useVibrate/useVibrate.cjs"),Is=require("./hooks/useWakeLock/useWakeLock.cjs"),vs=require("./hooks/useWebSocket/useWebSocket.cjs"),Ds=require("./hooks/useWindowEvent/useWindowEvent.cjs"),bs=require("./hooks/useWindowFocus/useWindowFocus.cjs"),g=require("./hooks/useWindowScroll/useWindowScroll.cjs"),As=require("./hooks/useWindowSize/useWindowSize.cjs"),Ls=require("./hooks/useWizard/useWizard.cjs"),T=require("./utils/helpers/copy.cjs"),Ms=require("./utils/helpers/debounce.cjs"),fs=require("./utils/helpers/getDate.cjs"),o=require("./utils/helpers/getElement.cjs"),hs=require("./utils/helpers/getRetry.cjs"),_s=require("./utils/helpers/isTarget.cjs"),Ns=require("./utils/helpers/throttle.cjs");exports.createContext=C.createContext;exports.createStore=P.createStore;exports.useActiveElement=E.useActiveElement;exports.useAsync=p.useAsync;exports.useBattery=m.useBattery;exports.useBluetooth=y.useBluetooth;exports.useBoolean=R.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=O.useBrowserLanguage;exports.useClickOutside=k.useClickOutside;exports.useClipboard=I.useClipboard;exports.useConst=v.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=u.clearCookies;exports.getParsedCookies=u.getParsedCookies;exports.useCookies=u.useCookies;exports.useCopy=D.useCopy;exports.useCounter=b.useCounter;exports.useCssVar=A.useCssVar;exports.useDebounceCallback=L.useDebounceCallback;exports.useDebounceValue=M.useDebounceValue;exports.useDefault=f.useDefault;exports.useDeviceMotion=h.useDeviceMotion;exports.useDeviceOrientation=_.useDeviceOrientation;exports.useDevicePixelRatio=N.useDevicePixelRatio;exports.useDidUpdate=B.useDidUpdate;exports.useDisclosure=K.useDisclosure;exports.useDisplayMedia=F.useDisplayMedia;exports.useDocumentEvent=V.useDocumentEvent;exports.useDocumentTitle=w.useDocumentTitle;exports.useDocumentVisibility=W.useDocumentVisibility;exports.useDoubleClick=x.useDoubleClick;exports.useDropZone=H.useDropZone;exports.useElementSize=U.useElementSize;exports.useEvent=z.useEvent;exports.useEventListener=G.useEventListener;exports.useEventSource=Q.useEventSource;exports.useEyeDropper=X.useEyeDropper;exports.useFavicon=Z.useFavicon;exports.useField=j.useField;exports.useFileDialog=J.useFileDialog;exports.useFocus=Y.useFocus;exports.useFps=$.useFps;exports.useFul=ee.useFul;exports.useFullscreen=se.useFullscreen;exports.mapGamepadToXbox360Controller=i.mapGamepadToXbox360Controller;exports.useGamepad=i.useGamepad;exports.useGeolocation=ue.useGeolocation;exports.useHash=re.useHash;exports.isHotkeyMatch=n.isHotkeyMatch;exports.useHotkeys=n.useHotkeys;exports.useHover=te.useHover;exports.useIdle=oe.useIdle;exports.useImage=ie.useImage;exports.useInfiniteScroll=ne.useInfiniteScroll;exports.useIntersectionObserver=ce.useIntersectionObserver;exports.useInterval=ae.useInterval;exports.useIsFirstRender=le.useIsFirstRender;exports.useIsomorphicLayoutEffect=qe.useIsomorphicLayoutEffect;exports.useKeyboard=Se.useKeyboard;exports.useKeyPress=de.useKeyPress;exports.useKeyPressEvent=ge.useKeyPressEvent;exports.useKeysPressed=Te.useKeysPressed;exports.useLastChanged=Ce.useLastChanged;exports.useLatest=Pe.useLatest;exports.useLess=Ee.useLess;exports.useList=pe.useList;exports.useLocalStorage=me.useLocalStorage;exports.useLockCallback=ye.useLockCallback;exports.useLogger=Re.useLogger;exports.useLongPress=Oe.useLongPress;exports.useMap=ke.useMap;exports.useMeasure=Ie.useMeasure;exports.useMediaQuery=ve.useMediaQuery;exports.useMemory=De.useMemory;exports.useMount=be.useMount;exports.useMouse=Ae.useMouse;exports.useMutation=Le.useMutation;exports.useMutationObserver=Me.useMutationObserver;exports.getConnection=c.getConnection;exports.useNetwork=c.useNetwork;exports.useOffsetPagination=fe.useOffsetPagination;exports.useOnce=he.useOnce;exports.useOnline=_e.useOnline;exports.getOperatingSystem=a.getOperatingSystem;exports.useOperatingSystem=a.useOperatingSystem;exports.useOptimistic=Ne.useOptimistic;exports.useOrientation=Be.useOrientation;exports.useOtpCredential=Ke.useOtpCredential;exports.usePageLeave=Fe.usePageLeave;exports.Paint=r.Paint;exports.Pointer=r.Pointer;exports.usePaint=r.usePaint;exports.useParallax=Ve.useParallax;exports.usePerformanceObserver=we.usePerformanceObserver;exports.usePermission=We.usePermission;exports.usePointerLock=xe.usePointerLock;exports.usePostMessage=He.usePostMessage;exports.usePreferredColorScheme=Ue.usePreferredColorScheme;exports.usePreferredContrast=ze.usePreferredContrast;exports.usePreferredDark=Ge.usePreferredDark;exports.usePreferredLanguages=Qe.usePreferredLanguages;exports.usePreferredReducedMotion=Xe.usePreferredReducedMotion;exports.usePrevious=Ze.usePrevious;exports.useQuery=je.useQuery;exports.useQueue=Je.useQueue;exports.useRaf=Ye.useRaf;exports.useRafValue=$e.useRafValue;exports.useRefState=es.useRefState;exports.useRenderCount=ss.useRenderCount;exports.useRenderInfo=us.useRenderInfo;exports.useRerender=rs.useRerender;exports.useResizeObserver=ts.useResizeObserver;exports.useScreenOrientation=os.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=l.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=l.useScript;exports.useScroll=is.useScroll;exports.useScrollIntoView=ns.useScrollIntoView;exports.useScrollTo=cs.useScrollTo;exports.useSessionStorage=as.useSessionStorage;exports.useSet=ls.useSet;exports.useShare=qs.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useSpeechSynthesis=Ss.useSpeechSynthesis;exports.useStateHistory=ds.useStateHistory;exports.useStep=gs.useStep;exports.useSticky=Ts.useSticky;exports.useStopwatch=Cs.useStopwatch;exports.STORAGE_EVENT=t.STORAGE_EVENT;exports.dispatchStorageEvent=t.dispatchStorageEvent;exports.useStorage=t.useStorage;exports.useTextDirection=Ps.useTextDirection;exports.getRangesSelection=S.getRangesSelection;exports.useTextSelection=S.useTextSelection;exports.useThrottleCallback=Es.useThrottleCallback;exports.useThrottleValue=ps.useThrottleValue;exports.useTime=ms.useTime;exports.useTimeout=ys.useTimeout;exports.getTimeFromSeconds=d.getTimeFromSeconds;exports.useTimer=d.useTimer;exports.useToggle=Rs.useToggle;exports.useUnmount=Os.useUnmount;exports.useVibrate=ks.useVibrate;exports.useWakeLock=Is.useWakeLock;exports.useWebSocket=vs.useWebSocket;exports.useWindowEvent=Ds.useWindowEvent;exports.useWindowFocus=bs.useWindowFocus;exports.scrollTo=g.scrollTo;exports.useWindowScroll=g.useWindowScroll;exports.useWindowSize=As.useWindowSize;exports.useWizard=Ls.useWizard;exports.copy=T.copy;exports.legacyCopyToClipboard=T.legacyCopyToClipboard;exports.debounce=Ms.debounce;exports.getDate=fs.getDate;exports.getElement=o.getElement;exports.target=o.target;exports.targetSymbol=o.targetSymbol;exports.getRetry=hs.getRetry;exports.isTarget=_s.isTarget;exports.throttle=Ns.throttle;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as m, use as v, useState as x, useMemo as d } from "react";
|
|
3
|
+
const P = (n = void 0, o = {}) => {
|
|
4
|
+
const t = m({
|
|
5
|
+
value: n,
|
|
6
|
+
set: () => {
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
t.displayName = o.name;
|
|
10
|
+
function i(r) {
|
|
11
|
+
const e = v(t);
|
|
12
|
+
if (!e && o.strict)
|
|
13
|
+
throw new Error(
|
|
14
|
+
`Context hook ${o.name} must be used inside a Provider`
|
|
15
|
+
);
|
|
16
|
+
return r ? r(e.value) : e;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
useSelect: i,
|
|
20
|
+
instance: t,
|
|
21
|
+
Provider: ({ children: r, initialValue: e }) => {
|
|
22
|
+
const [s, a] = x(
|
|
23
|
+
e ?? n
|
|
24
|
+
), c = d(
|
|
25
|
+
() => ({
|
|
26
|
+
value: s,
|
|
27
|
+
set: a
|
|
28
|
+
}),
|
|
29
|
+
[s]
|
|
30
|
+
);
|
|
31
|
+
return /* @__PURE__ */ u(t, { value: c, children: r });
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export {
|
|
36
|
+
P as createContext
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=createContext.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createContext.mjs","sources":["../../../../src/helpers/createContext/createContext.tsx"],"sourcesContent":["import type { JSX, ReactNode } from \"react\";\n\nimport {\n createContext as createReactContext,\n use,\n useMemo,\n useState,\n} from \"react\";\n\n/** The create context options type */\nexport interface CreateContextOptions {\n /** Display name for the context (useful for debugging) */\n name?: string;\n /** Whether to throw an error if context is used outside of Provider */\n strict?: boolean;\n}\n\n/** The context value type */\nexport interface ContextValue<Value> {\n /** The context value */\n value: Value | undefined;\n /** The context set function */\n set: (value: Value) => void;\n}\n\n/** The provider props type */\nexport interface ProviderProps<Value> {\n /** The children */\n children: ReactNode;\n /** The initial value */\n initialValue?: Value;\n}\n\n/** The create context return type */\nexport interface CreateContextReturn<Value> {\n /** The context instance */\n instance: React.Context<ContextValue<Value>>;\n /** The provider component */\n Provider: (props: ProviderProps<Value>) => JSX.Element;\n /** The selector hook */\n useSelect: {\n <Selected>(selector: (value: Value) => Selected): Selected;\n (): ContextValue<Value>;\n };\n}\n\n/**\n * @name createContext\n * @description - Creates a typed context with additional utilities\n * @category Helpers\n *\n * @template Value - The type of value that will be stored in the context\n * @param {Value | undefined} [defaultValue] - Default value for the context\n * @param {CreateContextOptions<Value>} [options] - Additional options for context creation\n * @returns {CreateContextReturn<Value>} Object containing context utilities and components\n *\n * @example\n * const { useSelect, instance, Provider } = createContext<number>(0);\n */\nexport const createContext = <Value,>(\n defaultValue: Value | undefined = undefined,\n options: CreateContextOptions = {}\n): CreateContextReturn<Value> => {\n const Context = createReactContext<{\n value: Value | undefined;\n set: (value: Value) => void;\n }>({\n value: defaultValue,\n set: () => {},\n });\n\n Context.displayName = options.name;\n\n function useSelect(): ContextValue<Value>;\n function useSelect<Selected>(selector: (value: Value) => Selected): Selected;\n function useSelect<Selected>(selector?: (value: Value) => Selected) {\n const context = use(Context);\n\n if (!context && options.strict) {\n throw new Error(\n `Context hook ${options.name} must be used inside a Provider`\n );\n }\n\n if (!selector) {\n return context;\n }\n\n return selector(context.value as Value);\n }\n\n const Provider = ({ children, initialValue }: ProviderProps<Value>) => {\n const [profile, setProfile] = useState<Value | undefined>(\n initialValue ?? defaultValue\n );\n\n const value = useMemo(\n () => ({\n value: profile,\n set: setProfile,\n }),\n [profile]\n );\n\n return <Context value={value}>{children}</Context>;\n };\n\n return {\n useSelect,\n instance: Context,\n Provider,\n } as const;\n};\n"],"names":["createContext","defaultValue","options","Context","createReactContext","useSelect","selector","context","use","children","initialValue","profile","setProfile","useState","value","useMemo","jsx"],"mappings":";;AA2DO,MAAMA,IAAgB,CAC3BC,IAAkC,QAClCC,IAAgC,CAAA,MACD;AAC/B,QAAMC,IAAUC,EAGb;AAAA,IACD,OAAOH;AAAA,IACP,KAAK,MAAM;AAAA,IAAA;AAAA,EAAC,CACb;AAED,EAAAE,EAAQ,cAAcD,EAAQ;AAI9B,WAASG,EAAoBC,GAAuC;AAC5D,UAAAC,IAAUC,EAAIL,CAAO;AAEvB,QAAA,CAACI,KAAWL,EAAQ;AACtB,YAAM,IAAI;AAAA,QACR,gBAAgBA,EAAQ,IAAI;AAAA,MAC9B;AAGF,WAAKI,IAIEA,EAASC,EAAQ,KAAc,IAH7BA;AAAA,EAG6B;AAmBjC,SAAA;AAAA,IACL,WAAAF;AAAA,IACA,UAAUF;AAAA,IACV,UAnBe,CAAC,EAAE,UAAAM,GAAU,cAAAC,QAAyC;AAC/D,YAAA,CAACC,GAASC,CAAU,IAAIC;AAAA,QAC5BH,KAAgBT;AAAA,MAClB,GAEMa,IAAQC;AAAA,QACZ,OAAO;AAAA,UACL,OAAOJ;AAAA,UACP,KAAKC;AAAA,QAAA;AAAA,QAEP,CAACD,CAAO;AAAA,MACV;AAEO,aAAA,gBAAAK,EAACb,GAAQ,EAAA,OAAAW,GAAe,UAAAL,EAAS,CAAA;AAAA,IAC1C;AAAA,EAMA;AACF;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useSyncExternalStore as g } from "react";
|
|
2
|
+
function a(o) {
|
|
3
|
+
let t;
|
|
4
|
+
const n = /* @__PURE__ */ new Set(), r = (e) => {
|
|
5
|
+
const S = typeof e == "function" ? e(t) : e;
|
|
6
|
+
if (!Object.is(S, t)) {
|
|
7
|
+
const i = t;
|
|
8
|
+
t = S, n.forEach((l) => l(t, i));
|
|
9
|
+
}
|
|
10
|
+
}, s = () => t, f = () => t, u = (e) => (n.add(e), () => n.delete(e));
|
|
11
|
+
return typeof o == "function" ? t = o(r, s) : t = o, {
|
|
12
|
+
set: r,
|
|
13
|
+
get: s,
|
|
14
|
+
use: (e) => g(
|
|
15
|
+
u,
|
|
16
|
+
() => e(s()),
|
|
17
|
+
() => e(f())
|
|
18
|
+
),
|
|
19
|
+
subscribe: u
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const c = a((o) => ({
|
|
23
|
+
count: 0,
|
|
24
|
+
increment: () => o((t) => ({ count: t.count + 1 }))
|
|
25
|
+
}));
|
|
26
|
+
console.log(c.get());
|
|
27
|
+
c.set((o) => ({ count: o.count + 1 }));
|
|
28
|
+
console.log(c.get());
|
|
29
|
+
export {
|
|
30
|
+
a as createStore
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=createStore.mjs.map
|
|
@@ -0,0 +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 *\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 function 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\nconst counterStore = createStore<{ count: number }>((set) => ({\n count: 0,\n increment: () => set((state) => ({ count: state.count + 1 }))\n}));\n\nconsole.log(counterStore.get());\ncounterStore.set((state) => ({ count: state.count + 1 }));\nconsole.log(counterStore.get());\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore","counterStore","set"],"mappings":";AA+BO,SAASA,EAAmBC,GAA0C;AAEvE,MAAAC;AACE,QAAAC,wBAA+B,IAAI,GAEnCC,IAAW,CAACC,MAAkC;AAClD,UAAMC,IACJ,OAAOD,KAAW,aAAcA,EAAmCH,CAAK,IAAIG;AAE9E,QAAI,CAAC,OAAO,GAAGC,GAAWJ,CAAK,GAAG;AAChC,YAAMK,IAAYL;AACV,MAAAA,IAAAI,GACRH,EAAU,QAAQ,CAACK,MAAaA,EAASN,GAAOK,CAAS,CAAC;AAAA,IAAA;AAAA,EAE9D,GAEME,IAAW,MAAMP,GACjBQ,IAAkB,MAAMR,GAExBS,IAAY,CAACH,OACjBL,EAAU,IAAIK,CAAQ,GACf,MAAML,EAAU,OAAOK,CAAQ;AAEpC,SAAA,OAAOP,KAAgB,aAChBC,IAAAD,EAAoCG,GAAUK,CAAQ,IAEvDP,IAAAD,GAUH;AAAA,IACL,KAAKG;AAAA,IACL,KAAKK;AAAA,IACL,KAVe,CAAWG,MAC1BC;AAAA,MACEF;AAAA,MACA,MAAMC,EAASH,GAAU;AAAA,MACzB,MAAMG,EAASF,EAAiB,CAAA;AAAA,IAClC;AAAA,IAMA,WAAAC;AAAA,EACF;AACF;AAEA,MAAMG,IAAed,EAA+B,CAACe,OAAS;AAAA,EAC5D,OAAO;AAAA,EACP,WAAW,MAAMA,EAAI,CAACb,OAAW,EAAE,OAAOA,EAAM,QAAQ,IAAI;AAC9D,EAAE;AAEF,QAAQ,IAAIY,EAAa,KAAK;AAC9BA,EAAa,IAAI,CAACZ,OAAW,EAAE,OAAOA,EAAM,QAAQ,IAAI;AACxD,QAAQ,IAAIY,EAAa,KAAK;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClipboard.mjs","sources":["../../../../src/hooks/useClipboard/useClipboard.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { copy } from '@/utils/helpers';\n\n/** The use copy to clipboard return type */\nexport interface UseCopyToClipboardReturn {\n /** The copied value */\n value: string | null;\n /** Function to copy to clipboard */\n copy: (value: string) => Promise<void>;\n}\n\n/** The use copy to clipboard params type */\nexport interface UseCopyToClipboardParams {\n /** Whether the copy to clipboard is enabled */\n enabled: boolean;\n}\n\n/**\n * @name useClipboard\n * @description - Hook that manages a copy to clipboard\n * @category Browser\n *\n * @browserapi navigator.clipboard https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard\n *\n * @param {boolean} [params.enabled=false] Whether the copy to clipboard is enabled\n * @returns {UseCopyToClipboardReturn} An object containing the boolean state value and utility functions to manipulate the state\n *\n * @example\n * const {
|
|
1
|
+
{"version":3,"file":"useClipboard.mjs","sources":["../../../../src/hooks/useClipboard/useClipboard.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { copy } from '@/utils/helpers';\n\n/** The use copy to clipboard return type */\nexport interface UseCopyToClipboardReturn {\n /** The copied value */\n value: string | null;\n /** Function to copy to clipboard */\n copy: (value: string) => Promise<void>;\n}\n\n/** The use copy to clipboard params type */\nexport interface UseCopyToClipboardParams {\n /** Whether the copy to clipboard is enabled */\n enabled: boolean;\n}\n\n/**\n * @name useClipboard\n * @description - Hook that manages a copy to clipboard\n * @category Browser\n *\n * @browserapi navigator.clipboard https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard\n *\n * @param {boolean} [params.enabled=false] Whether the copy to clipboard is enabled\n * @returns {UseCopyToClipboardReturn} An object containing the boolean state value and utility functions to manipulate the state\n *\n * @example\n * const { value, copy } = useClipboard();\n */\nexport const useClipboard = (params?: UseCopyToClipboardParams): UseCopyToClipboardReturn => {\n const [value, setValue] = useState<string | null>(null);\n const enabled = params?.enabled ?? false;\n\n const set = async () => {\n try {\n const value = await navigator.clipboard.readText();\n setValue(value);\n } catch {\n setValue(document.getSelection?.()?.toString() ?? '');\n }\n };\n\n useEffect(() => {\n if (!enabled) return;\n\n document.addEventListener('copy', set);\n document.addEventListener('cut', set);\n return () => {\n document.removeEventListener('copy', set);\n document.removeEventListener('cut', set);\n };\n }, [enabled]);\n\n const copyToClipboard = async (value: string) => {\n copy(value);\n setValue(value);\n };\n\n return { value, copy: copyToClipboard };\n};\n"],"names":["useClipboard","params","value","setValue","useState","enabled","set","_b","_a","useEffect","copy"],"mappings":";;AA+Ba,MAAAA,IAAe,CAACC,MAAgE;AAC3F,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAwB,IAAI,GAChDC,KAAUJ,KAAA,gBAAAA,EAAQ,YAAW,IAE7BK,IAAM,YAAY;;AAClB,QAAA;AACF,YAAMJ,IAAQ,MAAM,UAAU,UAAU,SAAS;AACjD,MAAAC,EAASD,CAAK;AAAA,IAAA,QACR;AACN,MAAAC,IAASI,KAAAC,IAAA,SAAS,iBAAT,gBAAAA,EAAA,mCAAAD,EAA2B,eAAc,EAAE;AAAA,IAAA;AAAA,EAExD;AAEA,SAAAE,EAAU,MAAM;AACd,QAAKJ;AAEI,sBAAA,iBAAiB,QAAQC,CAAG,GAC5B,SAAA,iBAAiB,OAAOA,CAAG,GAC7B,MAAM;AACF,iBAAA,oBAAoB,QAAQA,CAAG,GAC/B,SAAA,oBAAoB,OAAOA,CAAG;AAAA,MACzC;AAAA,EAAA,GACC,CAACD,CAAO,CAAC,GAOL,EAAE,OAAAH,GAAO,MALQ,OAAOA,MAAkB;AAC/C,IAAAQ,EAAKR,CAAK,GACVC,EAASD,CAAK;AAAA,EAChB,EAEsC;AACxC;"}
|
|
@@ -11,9 +11,7 @@ const F = (t) => {
|
|
|
11
11
|
if (n.current.value = e, l.current) return o();
|
|
12
12
|
}, b = () => {
|
|
13
13
|
x(i), f(!1), g(!1), c(void 0);
|
|
14
|
-
}, w = () => {
|
|
15
|
-
n.current.focus();
|
|
16
|
-
}, d = (e) => {
|
|
14
|
+
}, w = () => n.current.focus(), d = (e) => {
|
|
17
15
|
if (e.required && !n.current.value)
|
|
18
16
|
return c(e.required);
|
|
19
17
|
if (e.minLength && n.current.value.length < e.minLength.value)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.mjs","sources":["../../../../src/hooks/useField/useField.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useRerender } from '../useRerender/useRerender';\n\n/** The use field params type */\nexport interface UseFieldParams<Value> {\n /** The auto focus */\n autoFocus?: boolean;\n /** The initial touched */\n initialTouched?: boolean;\n /** The initial value */\n initialValue?: Value;\n /** The validate on blur */\n validateOnBlur?: boolean;\n /** The validate on mount */\n validateOnChange?: boolean;\n /** The validate on mount */\n validateOnMount?: boolean;\n}\n\n/** The use field register params type */\nexport interface UseFieldRegisterParams {\n /** The required validation */\n required?: string;\n /** The custom validation */\n validate?: (value: string) => Promise<string | true>;\n /** The min value validation */\n max?: {\n value: number;\n message: string;\n };\n /** The max length validation */\n maxLength?: {\n value: number;\n message: string;\n };\n /** The max value validation */\n min?: {\n value: number;\n message: string;\n };\n /** The min length validation */\n minLength?: {\n value: number;\n message: string;\n };\n /** The pattern validation */\n pattern?: {\n value: RegExp;\n message: string;\n };\n}\n\n/** The use field return type */\nexport interface UseFieldReturn<Value> {\n /** The dirty state */\n dirty: boolean;\n /** The error state */\n error?: string;\n /** The set error function */\n touched: boolean;\n /** The set error function */\n clearError: () => void;\n /** The focus function */\n focus: () => void;\n /** The get value function */\n getValue: () => Value;\n /** The register function */\n register: (params?: UseFieldRegisterParams) => {\n onBlur: () => void;\n onChange: () => void;\n ref: (\n node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined\n ) => void;\n };\n /** The reset function */\n reset: () => void;\n /** The set error function */\n setError: (error: string) => void;\n /** The set value function */\n setValue: (value: Value) => void;\n /** The watch function */\n watch: () => Value;\n}\n\n/**\n * @name useField\n * @description - Hook to manage a form field\n * @category Utilities\n *\n * @template Value The input value\n * @template Type The input value type\n * @param {Value} [params.initialValue] Initial value\n * @param {boolean} [params.initialTouched=false] Initial touched state\n * @param {boolean} [params.autoFocus=false] Auto focus\n * @param {boolean} [params.validateOnChange=false] Validate on change\n * @param {boolean} [params.validateOnBlur=false] Validate on blur\n * @param {boolean} [params.validateOnMount=false] Validate on mount\n * @returns {UseFieldReturn<Value>} An object containing input information\n *\n * @example\n * const { register, getValue, setValue, reset, dirty, error, setError, clearError, touched, focus, watch } = useField();\n */\nexport const useField = <\n Value extends boolean | number | string = string,\n Type = Value extends string ? string : Value extends boolean ? boolean : number\n>(\n params?: UseFieldParams<Value>\n): UseFieldReturn<Type> => {\n const initialValue = (params?.initialValue ?? '') as Value;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const watchingRef = useRef(false);\n const rerender = useRerender();\n\n const [dirty, setDirty] = useState(false);\n const [touched, setTouched] = useState(params?.initialTouched ?? false);\n const [error, setError] = useState<string | undefined>(undefined);\n\n const getValue = () => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox')\n return inputRef.current.checked as Type;\n return (inputRef.current?.value ?? initialValue) as Type;\n };\n\n const setValue = (value: Type) => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox') {\n inputRef.current.checked = value as boolean;\n if (watchingRef.current) return rerender();\n return;\n }\n\n inputRef.current!.value = value as string;\n if (watchingRef.current) return rerender();\n };\n\n const reset = () => {\n setValue(initialValue as unknown as Type);\n setDirty(false);\n setTouched(false);\n setError(undefined);\n };\n\n const focus = () => {\n inputRef.current!.focus();\n };\n\n const validate = (params: UseFieldRegisterParams) => {\n if (params.required && !inputRef.current!.value) {\n return setError(params.required);\n }\n\n if (params.minLength && inputRef.current!.value.length < params.minLength.value) {\n return setError(params.minLength.message);\n }\n\n if (params.maxLength && inputRef.current!.value.length > params.maxLength.value) {\n return setError(params.maxLength.message);\n }\n\n if (params.min && Number(inputRef.current!.value) < params.min.value) {\n return setError(params.min.message);\n }\n\n if (params.max && Number(inputRef.current!.value) > params.max.value) {\n return setError(params.max.message);\n }\n\n if (params.pattern && !params.pattern.value.test(inputRef.current!.value)) {\n return setError(params.pattern.message);\n }\n\n if (params.validate) {\n const error = params.validate(inputRef.current!.value);\n if (typeof error === 'string') return setError(error);\n }\n\n setError(undefined);\n };\n\n const register = (registerParams?: UseFieldRegisterParams) => ({\n ref: (node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined) => {\n if (!inputRef.current && node) {\n if (params?.autoFocus) node.focus();\n inputRef.current = node as HTMLInputElement;\n if (inputRef.current.type === 'radio') {\n inputRef.current.defaultChecked = params?.initialValue === node.value;\n return;\n }\n if (inputRef.current.type === 'checkbox') {\n inputRef.current.defaultChecked = !!params?.initialValue;\n return;\n }\n inputRef.current.defaultValue = String(initialValue);\n\n if (registerParams && params?.validateOnMount) validate(registerParams);\n }\n },\n onChange: async () => {\n if (watchingRef.current) return rerender();\n if (inputRef.current!.value !== initialValue) setDirty(true);\n if (dirty && inputRef.current!.value === initialValue) setDirty(false);\n if (registerParams && params?.validateOnChange) await validate(registerParams);\n if (registerParams && params?.validateOnBlur) setError(undefined);\n },\n onBlur: async () => {\n if (registerParams && params?.validateOnBlur) await validate(registerParams);\n setTouched(true);\n }\n });\n\n const watch = () => {\n watchingRef.current = true;\n return getValue();\n };\n\n const clearError = () => setError(undefined);\n\n return {\n register,\n dirty,\n touched,\n error,\n setError,\n clearError,\n getValue,\n setValue,\n reset,\n watch,\n focus\n };\n};\n"],"names":["useField","params","initialValue","inputRef","useRef","watchingRef","rerender","useRerender","dirty","setDirty","useState","touched","setTouched","error","setError","getValue","_a","_b","_c","setValue","value","reset","focus","validate","registerParams","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useField.mjs","sources":["../../../../src/hooks/useField/useField.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useRerender } from '../useRerender/useRerender';\n\n/** The use field params type */\nexport interface UseFieldParams<Value> {\n /** The auto focus */\n autoFocus?: boolean;\n /** The initial touched */\n initialTouched?: boolean;\n /** The initial value */\n initialValue?: Value;\n /** The validate on blur */\n validateOnBlur?: boolean;\n /** The validate on mount */\n validateOnChange?: boolean;\n /** The validate on mount */\n validateOnMount?: boolean;\n}\n\n/** The use field register params type */\nexport interface UseFieldRegisterParams {\n /** The required validation */\n required?: string;\n /** The custom validation */\n validate?: (value: string) => Promise<string | true>;\n /** The min value validation */\n max?: {\n value: number;\n message: string;\n };\n /** The max length validation */\n maxLength?: {\n value: number;\n message: string;\n };\n /** The max value validation */\n min?: {\n value: number;\n message: string;\n };\n /** The min length validation */\n minLength?: {\n value: number;\n message: string;\n };\n /** The pattern validation */\n pattern?: {\n value: RegExp;\n message: string;\n };\n}\n\n/** The use field return type */\nexport interface UseFieldReturn<Value> {\n /** The dirty state */\n dirty: boolean;\n /** The error state */\n error?: string;\n /** The set error function */\n touched: boolean;\n /** The set error function */\n clearError: () => void;\n /** The focus function */\n focus: () => void;\n /** The get value function */\n getValue: () => Value;\n /** The register function */\n register: (params?: UseFieldRegisterParams) => {\n onBlur: () => void;\n onChange: () => void;\n ref: (\n node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined\n ) => void;\n };\n /** The reset function */\n reset: () => void;\n /** The set error function */\n setError: (error: string) => void;\n /** The set value function */\n setValue: (value: Value) => void;\n /** The watch function */\n watch: () => Value;\n}\n\n/**\n * @name useField\n * @description - Hook to manage a form field\n * @category Utilities\n *\n * @template Value The input value\n * @template Type The input value type\n * @param {Value} [params.initialValue] Initial value\n * @param {boolean} [params.initialTouched=false] Initial touched state\n * @param {boolean} [params.autoFocus=false] Auto focus\n * @param {boolean} [params.validateOnChange=false] Validate on change\n * @param {boolean} [params.validateOnBlur=false] Validate on blur\n * @param {boolean} [params.validateOnMount=false] Validate on mount\n * @returns {UseFieldReturn<Value>} An object containing input information\n *\n * @example\n * const { register, getValue, setValue, reset, dirty, error, setError, clearError, touched, focus, watch } = useField();\n */\nexport const useField = <\n Value extends boolean | number | string = string,\n Type = Value extends string ? string : Value extends boolean ? boolean : number\n>(\n params?: UseFieldParams<Value>\n): UseFieldReturn<Type> => {\n const initialValue = (params?.initialValue ?? '') as Value;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const watchingRef = useRef(false);\n const rerender = useRerender();\n\n const [dirty, setDirty] = useState(false);\n const [touched, setTouched] = useState(params?.initialTouched ?? false);\n const [error, setError] = useState<string | undefined>(undefined);\n\n const getValue = () => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox')\n return inputRef.current.checked as Type;\n return (inputRef.current?.value ?? initialValue) as Type;\n };\n\n const setValue = (value: Type) => {\n if (inputRef.current?.type === 'radio' || inputRef.current?.type === 'checkbox') {\n inputRef.current.checked = value as boolean;\n if (watchingRef.current) return rerender();\n return;\n }\n\n inputRef.current!.value = value as string;\n if (watchingRef.current) return rerender();\n };\n\n const reset = () => {\n setValue(initialValue as unknown as Type);\n setDirty(false);\n setTouched(false);\n setError(undefined);\n };\n\n const focus = () => inputRef.current!.focus();\n\n const validate = (params: UseFieldRegisterParams) => {\n if (params.required && !inputRef.current!.value) {\n return setError(params.required);\n }\n\n if (params.minLength && inputRef.current!.value.length < params.minLength.value) {\n return setError(params.minLength.message);\n }\n\n if (params.maxLength && inputRef.current!.value.length > params.maxLength.value) {\n return setError(params.maxLength.message);\n }\n\n if (params.min && Number(inputRef.current!.value) < params.min.value) {\n return setError(params.min.message);\n }\n\n if (params.max && Number(inputRef.current!.value) > params.max.value) {\n return setError(params.max.message);\n }\n\n if (params.pattern && !params.pattern.value.test(inputRef.current!.value)) {\n return setError(params.pattern.message);\n }\n\n if (params.validate) {\n const error = params.validate(inputRef.current!.value);\n if (typeof error === 'string') return setError(error);\n }\n\n setError(undefined);\n };\n\n const register = (registerParams?: UseFieldRegisterParams) => ({\n ref: (node: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | null | undefined) => {\n if (!inputRef.current && node) {\n if (params?.autoFocus) node.focus();\n inputRef.current = node as HTMLInputElement;\n if (inputRef.current.type === 'radio') {\n inputRef.current.defaultChecked = params?.initialValue === node.value;\n return;\n }\n if (inputRef.current.type === 'checkbox') {\n inputRef.current.defaultChecked = !!params?.initialValue;\n return;\n }\n inputRef.current.defaultValue = String(initialValue);\n\n if (registerParams && params?.validateOnMount) validate(registerParams);\n }\n },\n onChange: async () => {\n if (watchingRef.current) return rerender();\n if (inputRef.current!.value !== initialValue) setDirty(true);\n if (dirty && inputRef.current!.value === initialValue) setDirty(false);\n if (registerParams && params?.validateOnChange) await validate(registerParams);\n if (registerParams && params?.validateOnBlur) setError(undefined);\n },\n onBlur: async () => {\n if (registerParams && params?.validateOnBlur) await validate(registerParams);\n setTouched(true);\n }\n });\n\n const watch = () => {\n watchingRef.current = true;\n return getValue();\n };\n\n const clearError = () => setError(undefined);\n\n return {\n register,\n dirty,\n touched,\n error,\n setError,\n clearError,\n getValue,\n setValue,\n reset,\n watch,\n focus\n };\n};\n"],"names":["useField","params","initialValue","inputRef","useRef","watchingRef","rerender","useRerender","dirty","setDirty","useState","touched","setTouched","error","setError","getValue","_a","_b","_c","setValue","value","reset","focus","validate","registerParams","node"],"mappings":";;AAuGa,MAAAA,IAAW,CAItBC,MACyB;AACnB,QAAAC,KAAgBD,KAAA,gBAAAA,EAAQ,iBAAgB,IAExCE,IAAWC,EAAgC,IAAI,GAC/CC,IAAcD,EAAO,EAAK,GAC1BE,IAAWC,EAAY,GAEvB,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAK,GAClC,CAACC,GAASC,CAAU,IAAIF,GAAST,KAAA,gBAAAA,EAAQ,mBAAkB,EAAK,GAChE,CAACY,GAAOC,CAAQ,IAAIJ,EAA6B,MAAS,GAE1DK,IAAW,MAAM;;AACrB,aAAIC,IAAAb,EAAS,YAAT,gBAAAa,EAAkB,UAAS,aAAWC,IAAAd,EAAS,YAAT,gBAAAc,EAAkB,UAAS,aAC5Dd,EAAS,QAAQ,YAClBe,IAAAf,EAAS,YAAT,gBAAAe,EAAkB,UAAShB;AAAA,EACrC,GAEMiB,IAAW,CAACC,MAAgB;;AAChC,UAAIJ,IAAAb,EAAS,YAAT,gBAAAa,EAAkB,UAAS,aAAWC,IAAAd,EAAS,YAAT,gBAAAc,EAAkB,UAAS;AAE/D,aADJd,EAAS,QAAQ,UAAUiB,GACvBf,EAAY,UAAgBC,EAAS,IACzC;AAIE,QADJH,EAAS,QAAS,QAAQiB,GACtBf,EAAY,QAAS,QAAOC,EAAS;AAAA,EAC3C,GAEMe,IAAQ,MAAM;AAClB,IAAAF,EAASjB,CAA+B,GACxCO,EAAS,EAAK,GACdG,EAAW,EAAK,GAChBE,EAAS,MAAS;AAAA,EACpB,GAEMQ,IAAQ,MAAMnB,EAAS,QAAS,MAAM,GAEtCoB,IAAW,CAACtB,MAAmC;AACnD,QAAIA,EAAO,YAAY,CAACE,EAAS,QAAS;AACjC,aAAAW,EAASb,EAAO,QAAQ;AAG7BA,QAAAA,EAAO,aAAaE,EAAS,QAAS,MAAM,SAASF,EAAO,UAAU;AACjE,aAAAa,EAASb,EAAO,UAAU,OAAO;AAGtCA,QAAAA,EAAO,aAAaE,EAAS,QAAS,MAAM,SAASF,EAAO,UAAU;AACjE,aAAAa,EAASb,EAAO,UAAU,OAAO;AAGtCA,QAAAA,EAAO,OAAO,OAAOE,EAAS,QAAS,KAAK,IAAIF,EAAO,IAAI;AACtD,aAAAa,EAASb,EAAO,IAAI,OAAO;AAGhCA,QAAAA,EAAO,OAAO,OAAOE,EAAS,QAAS,KAAK,IAAIF,EAAO,IAAI;AACtD,aAAAa,EAASb,EAAO,IAAI,OAAO;AAGhCA,QAAAA,EAAO,WAAW,CAACA,EAAO,QAAQ,MAAM,KAAKE,EAAS,QAAS,KAAK;AAC/D,aAAAW,EAASb,EAAO,QAAQ,OAAO;AAGxC,QAAIA,EAAO,UAAU;AACnB,YAAMY,IAAQZ,EAAO,SAASE,EAAS,QAAS,KAAK;AACrD,UAAI,OAAOU,KAAU,SAAU,QAAOC,EAASD,CAAK;AAAA,IAAA;AAGtD,IAAAC,EAAS,MAAS;AAAA,EACpB;AAwCO,SAAA;AAAA,IACL,UAvCe,CAACU,OAA6C;AAAA,MAC7D,KAAK,CAACC,MAAwF;AACxF,YAAA,CAACtB,EAAS,WAAWsB,GAAM;AAGzB,cAFAxB,KAAA,QAAAA,EAAQ,aAAWwB,EAAK,MAAM,GAClCtB,EAAS,UAAUsB,GACftB,EAAS,QAAQ,SAAS,SAAS;AACrC,YAAAA,EAAS,QAAQ,kBAAiBF,KAAA,gBAAAA,EAAQ,kBAAiBwB,EAAK;AAChE;AAAA,UAAA;AAEE,cAAAtB,EAAS,QAAQ,SAAS,YAAY;AACxC,YAAAA,EAAS,QAAQ,iBAAiB,CAAC,EAACF,KAAA,QAAAA,EAAQ;AAC5C;AAAA,UAAA;AAEO,UAAAE,EAAA,QAAQ,eAAe,OAAOD,CAAY,GAE/CsB,MAAkBvB,KAAA,QAAAA,EAAQ,oBAAiBsB,EAASC,CAAc;AAAA,QAAA;AAAA,MAE1E;AAAA,MACA,UAAU,YAAY;AAChB,YAAAnB,EAAY,QAAS,QAAOC,EAAS;AACzC,QAAIH,EAAS,QAAS,UAAUD,OAAuB,EAAI,GACvDM,KAASL,EAAS,QAAS,UAAUD,OAAuB,EAAK,GACjEsB,MAAkBvB,KAAA,QAAAA,EAAQ,qBAAkB,MAAMsB,EAASC,CAAc,GACzEA,MAAkBvB,KAAA,QAAAA,EAAQ,mBAAgBa,EAAS,MAAS;AAAA,MAClE;AAAA,MACA,QAAQ,YAAY;AAClB,QAAIU,MAAkBvB,KAAA,QAAAA,EAAQ,mBAAgB,MAAMsB,EAASC,CAAc,GAC3EZ,EAAW,EAAI;AAAA,MAAA;AAAA,IACjB;AAAA,IAYA,OAAAJ;AAAA,IACA,SAAAG;AAAA,IACA,OAAAE;AAAA,IACA,UAAAC;AAAA,IACA,YARiB,MAAMA,EAAS,MAAS;AAAA,IASzC,UAAAC;AAAA,IACA,UAAAI;AAAA,IACA,OAAAE;AAAA,IACA,OAjBY,OACZhB,EAAY,UAAU,IACfU,EAAS;AAAA,IAgBhB,OAAAO;AAAA,EACF;AACF;"}
|
|
@@ -10,13 +10,18 @@ const x = () => {
|
|
|
10
10
|
}, b = () => {
|
|
11
11
|
for (const n of navigator.getGamepads() ?? [])
|
|
12
12
|
n && s[n.index] && (s[n.index] = u(n));
|
|
13
|
-
}, { active: d } = v(b, {
|
|
13
|
+
}, { active: d } = v(b, {
|
|
14
|
+
enabled: !!Object.keys(s).length
|
|
15
|
+
});
|
|
14
16
|
return a(() => {
|
|
15
17
|
if (!t) return;
|
|
16
18
|
const n = navigator.getGamepads();
|
|
17
19
|
r(
|
|
18
20
|
n.reduce(
|
|
19
|
-
(o, e) => ({
|
|
21
|
+
(o, e) => ({
|
|
22
|
+
...o,
|
|
23
|
+
...e && { [e.index]: u(e) }
|
|
24
|
+
}),
|
|
20
25
|
{}
|
|
21
26
|
)
|
|
22
27
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGamepad.mjs","sources":["../../../../src/hooks/useGamepad/useGamepad.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useRaf } from '../useRaf/useRaf';\n\ndeclare global {\n interface Gamepad {\n hapticActuators?: GamepadHapticActuator[];\n }\n}\n\n/** The use gamepad return type */\nexport interface UseGamepadStateReturn {\n /** The gamepad active status */\n active: boolean;\n /** The gamepad state */\n gamepads: Gamepad[];\n /** The gamepad supported status */\n supported: boolean;\n}\n\n/**\n * @name useGamepad\n * @description - Hook for getting information about gamepad\n * @category Browser\n *\n * @browserapi navigator.getGamepads https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getGamepads\n *\n * @returns {UseGamepadStateReturn} An object containing the gamepad information\n *\n * @example\n * const { supported, gamepads, active } = useGamepad();\n */\nexport const useGamepad = () => {\n const supported = typeof navigator !== 'undefined' && 'getGamepads' in navigator;\n const [gamepads, setGamepads] = useState<Record<number, Gamepad>>({});\n\n const createGamepad = (gamepad: Gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null;\n\n if (vibrationActuator) hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\n return {\n ...gamepad,\n hapticActuators\n } as Gamepad;\n };\n\n const updateGamepadState = () => {\n for (const gamepad of navigator.getGamepads() ?? []) {\n if (gamepad && gamepads[gamepad.index]) gamepads[gamepad.index] = createGamepad(gamepad);\n }\n };\n\n const { active } = useRaf(updateGamepadState, {
|
|
1
|
+
{"version":3,"file":"useGamepad.mjs","sources":["../../../../src/hooks/useGamepad/useGamepad.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useRaf } from '../useRaf/useRaf';\n\ndeclare global {\n interface Gamepad {\n hapticActuators?: GamepadHapticActuator[];\n }\n}\n\n/** The use gamepad return type */\nexport interface UseGamepadStateReturn {\n /** The gamepad active status */\n active: boolean;\n /** The gamepad state */\n gamepads: Gamepad[];\n /** The gamepad supported status */\n supported: boolean;\n}\n\n/**\n * @name useGamepad\n * @description - Hook for getting information about gamepad\n * @category Browser\n *\n * @browserapi navigator.getGamepads https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getGamepads\n *\n * @returns {UseGamepadStateReturn} An object containing the gamepad information\n *\n * @example\n * const { supported, gamepads, active } = useGamepad();\n */\nexport const useGamepad = () => {\n const supported = typeof navigator !== 'undefined' && 'getGamepads' in navigator;\n const [gamepads, setGamepads] = useState<Record<number, Gamepad>>({});\n\n const createGamepad = (gamepad: Gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = 'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null;\n\n if (vibrationActuator) hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\n return {\n ...gamepad,\n hapticActuators\n } as Gamepad;\n };\n\n const updateGamepadState = () => {\n for (const gamepad of navigator.getGamepads() ?? []) {\n if (gamepad && gamepads[gamepad.index]) gamepads[gamepad.index] = createGamepad(gamepad);\n }\n };\n\n const { active } = useRaf(updateGamepadState, {\n enabled: !!Object.keys(gamepads).length\n });\n\n useEffect(() => {\n if (!supported) return;\n const gamepads = navigator.getGamepads();\n setGamepads(\n gamepads.reduce(\n (acc, gamepad) => ({\n ...acc,\n ...(gamepad && { [gamepad.index]: createGamepad(gamepad) })\n }),\n {}\n )\n );\n }, []);\n\n useEffect(() => {\n const onConnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n setGamepads({ ...gamepads, [gamepad.index]: createGamepad(gamepad) });\n };\n\n const onDisconnected = (event: Event) => {\n const { gamepad } = event as GamepadEvent;\n const updatedGamepads = { ...gamepads };\n delete updatedGamepads[gamepad.index];\n setGamepads(updatedGamepads);\n };\n\n document.addEventListener('gamepadconnected', onConnected);\n document.addEventListener('gamepaddisconnected', onDisconnected);\n\n return () => {\n document.removeEventListener('gamepadconnected', onConnected);\n document.removeEventListener('gamepaddisconnected', onDisconnected);\n };\n }, []);\n\n return {\n active,\n supported,\n gamepads: Object.values(gamepads)\n };\n};\n\nexport const mapGamepadToXbox360Controller = (gamepad: Gamepad) => ({\n buttons: {\n a: gamepad.buttons[0],\n b: gamepad.buttons[1],\n x: gamepad.buttons[2],\n y: gamepad.buttons[3]\n },\n bumper: {\n left: gamepad.buttons[4],\n right: gamepad.buttons[5]\n },\n triggers: {\n left: gamepad.buttons[6],\n right: gamepad.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.axes[0],\n vertical: gamepad.axes[1],\n button: gamepad.buttons[10]\n },\n right: {\n horizontal: gamepad.axes[2],\n vertical: gamepad.axes[3],\n button: gamepad.buttons[11]\n }\n },\n dpad: {\n up: gamepad.buttons[12],\n down: gamepad.buttons[13],\n left: gamepad.buttons[14],\n right: gamepad.buttons[15]\n },\n back: gamepad.buttons[8],\n start: gamepad.buttons[9]\n});\n"],"names":["useGamepad","supported","gamepads","setGamepads","useState","createGamepad","gamepad","hapticActuators","vibrationActuator","updateGamepadState","active","useRaf","useEffect","acc","onConnected","event","onDisconnected","updatedGamepads","mapGamepadToXbox360Controller"],"mappings":"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"}
|
|
@@ -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
|
|
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']>(options?.onChange);\n internalOnChangeRef.current = options?.onChange;\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","enabled","entry","setEntry","useState","internalRef","useRefState","internalOnChangeRef","useRef","useEffect","element","getElement","observer","_a"],"mappings":";;;;AA2Da,MAAAA,IAA2B,IAAIC,MAAkB;AACtD,QAAAC,IAAUC,EAASF,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,IAAI,QAC5CG,IAAWF,IAASD,EAAO,CAAC,IAAIA,EAAO,CAAC,GACxCI,KAAUD,KAAA,gBAAAA,EAAS,YAAW,IAE9B,CAACE,GAAOC,CAAQ,IAAIC,EAAoC,GAExDC,IAAcC,EAAqB,GACnCC,IAAsBC,EAAmDR,KAAA,gBAAAA,EAAS,QAAQ;AA2B5F,SA1BJO,EAAoB,UAAUP,KAAA,gBAAAA,EAAS,UAEvCS,EAAU,MAAM;AACd,QAAI,CAACR,KAAW,CAACH,KAAU,CAACO,EAAY,MAAO;AAE/C,UAAMK,IAAUZ,IAASa,EAAWb,CAAM,IAAIO,EAAY;AAC1D,QAAI,CAACK,EAAS;AAEd,UAAME,IAAW,IAAI;AAAA,MACnB,CAAC,CAACV,CAAK,MAAM;;AACX,QAAAC,EAASD,CAAK,IACdW,IAAAN,EAAoB,YAApB,QAAAM,EAAA,KAAAN,GAA8BL;AAAAA,MAChC;AAAA,MACA;AAAA,QACE,GAAGF;AAAA,QACH,MAAMA,KAAA,QAAAA,EAAS,OAAQW,EAAWX,EAAQ,IAAI,IAA2B;AAAA,MAAA;AAAA,IAE7E;AAEA,WAAAY,EAAS,QAAQF,CAAkB,GAE5B,MAAM;AACX,MAAAE,EAAS,WAAW;AAAA,IACtB;AAAA,EACC,GAAA,CAACd,GAAQO,EAAY,OAAOL,KAAA,gBAAAA,EAAS,YAAYA,KAAA,gBAAAA,EAAS,WAAWA,KAAA,gBAAAA,EAAS,MAAMC,CAAO,CAAC,GAE3FH,IAAe,EAAE,OAAAI,GAAO,QAAQ,CAAC,EAACA,KAAA,QAAAA,EAAO,gBAAe,IACrD;AAAA,IACL,KAAKG;AAAA,IACL,OAAAH;AAAA,IACA,QAAQ,CAAC,EAACA,KAAA,QAAAA,EAAO;AAAA,EACnB;AACF;"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
import { useInterval as
|
|
3
|
-
const
|
|
4
|
-
const e = performance && "memory" in performance, [r,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { useState as o } from "react";
|
|
2
|
+
import { useInterval as t } from "../useInterval/useInterval.mjs";
|
|
3
|
+
const n = () => {
|
|
4
|
+
const e = performance && "memory" in performance && !!performance.memory, [r, m] = o(
|
|
5
|
+
(performance == null ? void 0 : performance.memory) ?? {
|
|
6
|
+
jsHeapSizeLimit: 0,
|
|
7
|
+
totalJSHeapSize: 0,
|
|
8
|
+
usedJSHeapSize: 0
|
|
9
|
+
}
|
|
10
|
+
);
|
|
11
|
+
return t(() => m(performance.memory), 1e3, {
|
|
12
|
+
immediately: e
|
|
13
|
+
}), { supported: e, value: r };
|
|
10
14
|
};
|
|
11
15
|
export {
|
|
12
|
-
|
|
16
|
+
n as useMemory
|
|
13
17
|
};
|
|
14
18
|
//# sourceMappingURL=useMemory.mjs.map
|