@siberiacancode/reactuse 0.2.0 → 0.2.1

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.
Files changed (25) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/helpers/createContext/createContext.cjs.map +1 -1
  3. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs +2 -0
  4. package/dist/cjs/helpers/createReactiveContext/createReactiveContext.cjs.map +1 -0
  5. package/dist/cjs/helpers/createStore/createStore.cjs +1 -1
  6. package/dist/cjs/helpers/createStore/createStore.cjs.map +1 -1
  7. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs +2 -0
  8. package/dist/cjs/hooks/useUrlSearchParams/useUrlSearchParams.cjs.map +1 -0
  9. package/dist/cjs/index.cjs +1 -1
  10. package/dist/esm/helpers/createContext/createContext.mjs +2 -6
  11. package/dist/esm/helpers/createContext/createContext.mjs.map +1 -1
  12. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs +54 -0
  13. package/dist/esm/helpers/createReactiveContext/createReactiveContext.mjs.map +1 -0
  14. package/dist/esm/helpers/createStore/createStore.mjs +16 -23
  15. package/dist/esm/helpers/createStore/createStore.mjs.map +1 -1
  16. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs +63 -0
  17. package/dist/esm/hooks/useUrlSearchParams/useUrlSearchParams.mjs.map +1 -0
  18. package/dist/esm/index.mjs +328 -321
  19. package/dist/esm/index.mjs.map +1 -1
  20. package/dist/types/helpers/createReactiveContext/createReactiveContext.d.ts +46 -0
  21. package/dist/types/helpers/createStore/createStore.d.ts +1 -1
  22. package/dist/types/helpers/index.d.ts +1 -0
  23. package/dist/types/hooks/index.d.ts +1 -0
  24. package/dist/types/hooks/useUrlSearchParams/useUrlSearchParams.d.ts +39 -0
  25. package/package.json +17 -18
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 siberiacancode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1 +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"}
1
+ {"version":3,"file":"createContext.cjs","sources":["../../../../src/helpers/createContext/createContext.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\n\nimport { createContext as createReactContext, use, useMemo, useState } 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(`Context hook ${options.name} must be used inside a Provider`);\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>(initialValue ?? defaultValue);\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":"wIAsDaA,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,MAAM,gBAAgBA,EAAQ,IAAI,iCAAiC,EAG/E,OAAKI,EAIEA,EAASC,EAAQ,KAAc,EAH7BA,CAG6B,CAiBjC,MAAA,CACL,UAAAF,EACA,SAAUF,EACV,SAjBe,CAAC,CAAE,SAAAM,EAAU,aAAAC,KAAyC,CACrE,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAA4BH,GAAgBT,CAAY,EAEhFa,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 r=require("react"),v=require("../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),d=require("../../hooks/useEvent/useEvent.cjs"),f=s=>e=>{const t=r.useRef(e.value),c=r.useMemo(()=>({value:t,listeners:new Set}),[]);return v.useIsomorphicLayoutEffect(()=>{Object.is(t.current,e.value)||(t.current=e.value,r.startTransition(()=>{c.listeners.forEach(u=>{u(t.current)})}))},[e.value]),r.createElement(s,{value:c},e.children)},m=(s,n,e={})=>{const t=r.use(s);if(!t&&e.strict)throw new Error(`Context hook ${e.name} must be used inside a Provider`);const[c,u]=r.useState({selected:n(t.value.current),value:t.value.current}),o=d.useEvent(a=>{u(i=>{if(Object.is(i.value,a))return i;const l=n(a);return Object.is(i.selected,l)?i:{value:a,selected:l}})});return v.useIsomorphicLayoutEffect(()=>(t.listeners.add(o),()=>{t.listeners.delete(o)}),[t.listeners]),c.selected},h=(s=void 0,n={})=>{const e=r.createContext({value:{current:s},listeners:new Set}),t=f(e.Provider);e.displayName=n.name;function c(u){return m(e,u??(o=>o),n)}return{instance:e,Provider:t,useSelector:c}};exports.createReactiveContext=h;
2
+ //# sourceMappingURL=createReactiveContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createReactiveContext.cjs","sources":["../../../../src/helpers/createReactiveContext/createReactiveContext.ts"],"sourcesContent":["import type { Context, FC, Provider, ProviderProps, RefObject } from 'react';\n\nimport {\n createContext,\n createElement,\n startTransition,\n use,\n useMemo,\n useRef,\n useState\n} from 'react';\n\nimport { useEvent, useIsomorphicLayoutEffect } from '@/hooks';\n\n/** The create reactive context options type */\nexport interface CreateReactiveContextOptions {\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 create reactive context return type */\nexport interface CreateReactiveContextReturn<Value> {\n /** The context instance */\n instance: Context<ReactiveContextValue<Value>>;\n /** The Provider component for the context */\n Provider: Provider<Value>;\n /** A hook to select a part of the context state */\n useSelector: <Selected>(selector?: (state: Value) => Selected) => Selected;\n}\n\ntype ContextListener<Value> = (value: Value) => void;\n\ninterface ReactiveContextValue<Value> {\n /** The listeners for the context */\n listeners: Set<ContextListener<Value>>;\n /** The value for the context */\n value: RefObject<Value>;\n}\n\nconst createProvider = <Value>(originalProvider: Provider<ReactiveContextValue<Value>>) => {\n const Provider: FC<ProviderProps<Value>> = (props) => {\n const valueRef = useRef(props.value);\n const contextValue = useMemo<ReactiveContextValue<Value>>(\n () => ({\n value: valueRef,\n listeners: new Set()\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!Object.is(valueRef.current, props.value)) {\n valueRef.current = props.value;\n\n startTransition(() => {\n contextValue.listeners.forEach((listener) => {\n listener(valueRef.current);\n });\n });\n }\n }, [props.value]);\n\n return createElement(originalProvider, { value: contextValue }, props.children);\n };\n\n return Provider as unknown as Provider<ReactiveContextValue<Value>>;\n};\n\nconst createReactiveContextSelector = <Value, Selected>(\n Context: Context<ReactiveContextValue<Value>>,\n selector: (state: Value) => Selected,\n options: CreateReactiveContextOptions = {}\n) => {\n const context = use(Context);\n\n if (!context && options.strict) {\n throw new Error(`Context hook ${options.name} must be used inside a Provider`);\n }\n\n const [value, setValue] = useState({\n selected: selector(context.value.current),\n value: context.value.current\n });\n\n const dispatch = useEvent((newValue: Value) => {\n setValue((prevValue) => {\n if (Object.is(prevValue.value, newValue)) return prevValue;\n\n const newSelected = selector(newValue);\n if (Object.is(prevValue.selected, newSelected)) return prevValue;\n\n return { value: newValue, selected: newSelected };\n });\n });\n\n useIsomorphicLayoutEffect(() => {\n context.listeners.add(dispatch);\n return () => {\n context.listeners.delete(dispatch);\n };\n }, [context.listeners]);\n\n return value.selected;\n};\n\n/**\n * @name createReactiveContext\n * @description - Creates a typed context selector with optimized updates for state selection\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 {CreateReactiveContextOptions<Value>} [options] - Additional options for context creation\n * @returns {CreateReactiveContextReturn<Value>} Object containing context utilities and components\n *\n * @example\n * const { Provider, useSelector, instance } = createReactiveContext<number>(0);\n */\nexport const createReactiveContext = <Value extends Record<string, any>>(\n defaultValue: Value | undefined = undefined,\n options: CreateReactiveContextOptions = {}\n) => {\n const Context = createContext<ReactiveContextValue<Value>>({\n value: { current: defaultValue as Value },\n listeners: new Set()\n });\n\n const Provider = createProvider(Context.Provider) as unknown as Provider<Value>;\n\n Context.displayName = options.name;\n\n function useSelector(): Value;\n function useSelector<SelectedValue>(selector: (state: Value) => SelectedValue): SelectedValue;\n function useSelector<SelectedValue>(selector?: (state: Value) => SelectedValue) {\n return createReactiveContextSelector(\n Context as unknown as Context<ReactiveContextValue<Value>>,\n selector ?? ((state) => state as unknown as SelectedValue),\n options\n );\n }\n\n return { instance: Context, Provider, useSelector };\n};\n"],"names":["createProvider","originalProvider","props","valueRef","useRef","contextValue","useMemo","useIsomorphicLayoutEffect","startTransition","listener","createElement","createReactiveContextSelector","Context","selector","options","context","use","value","setValue","useState","dispatch","useEvent","newValue","prevValue","newSelected","createReactiveContext","defaultValue","createContext","Provider","useSelector","state"],"mappings":"yOAyCMA,EAAyBC,GACeC,GAAU,CAC9C,MAAAC,EAAWC,EAAAA,OAAOF,EAAM,KAAK,EAC7BG,EAAeC,EAAA,QACnB,KAAO,CACL,MAAOH,EACP,cAAe,GAAI,GAErB,CAAA,CACF,EAEAI,OAAAA,EAAAA,0BAA0B,IAAM,CACzB,OAAO,GAAGJ,EAAS,QAASD,EAAM,KAAK,IAC1CC,EAAS,QAAUD,EAAM,MAEzBM,EAAAA,gBAAgB,IAAM,CACPH,EAAA,UAAU,QAASI,GAAa,CAC3CA,EAASN,EAAS,OAAO,CAAA,CAC1B,CAAA,CACF,EACH,EACC,CAACD,EAAM,KAAK,CAAC,EAETQ,EAAAA,cAAcT,EAAkB,CAAE,MAAOI,CAAa,EAAGH,EAAM,QAAQ,CAChF,EAKIS,EAAgC,CACpCC,EACAC,EACAC,EAAwC,CAAA,IACrC,CACG,MAAAC,EAAUC,MAAIJ,CAAO,EAEvB,GAAA,CAACG,GAAWD,EAAQ,OACtB,MAAM,IAAI,MAAM,gBAAgBA,EAAQ,IAAI,iCAAiC,EAG/E,KAAM,CAACG,EAAOC,CAAQ,EAAIC,WAAS,CACjC,SAAUN,EAASE,EAAQ,MAAM,OAAO,EACxC,MAAOA,EAAQ,MAAM,OAAA,CACtB,EAEKK,EAAWC,WAAUC,GAAoB,CAC7CJ,EAAUK,GAAc,CACtB,GAAI,OAAO,GAAGA,EAAU,MAAOD,CAAQ,EAAU,OAAAC,EAE3C,MAAAC,EAAcX,EAASS,CAAQ,EACrC,OAAI,OAAO,GAAGC,EAAU,SAAUC,CAAW,EAAUD,EAEhD,CAAE,MAAOD,EAAU,SAAUE,CAAY,CAAA,CACjD,CAAA,CACF,EAEDjB,OAAAA,EAAAA,0BAA0B,KAChBQ,EAAA,UAAU,IAAIK,CAAQ,EACvB,IAAM,CACHL,EAAA,UAAU,OAAOK,CAAQ,CACnC,GACC,CAACL,EAAQ,SAAS,CAAC,EAEfE,EAAM,QACf,EAeaQ,EAAwB,CACnCC,EAAkC,OAClCZ,EAAwC,CAAA,IACrC,CACH,MAAMF,EAAUe,EAAAA,cAA2C,CACzD,MAAO,CAAE,QAASD,CAAsB,EACxC,cAAe,GAAI,CACpB,EAEKE,EAAW5B,EAAeY,EAAQ,QAAQ,EAEhDA,EAAQ,YAAcE,EAAQ,KAI9B,SAASe,EAA2BhB,EAA4C,CACvE,OAAAF,EACLC,EACAC,IAAciB,GAAUA,GACxBhB,CACF,CAAA,CAGF,MAAO,CAAE,SAAUF,EAAS,SAAAgB,EAAU,YAAAC,CAAY,CACpD"}
@@ -1,2 +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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),l=s=>{let t;const n=new Set,r=e=>{const u=typeof e=="function"?e(t):e;if(!Object.is(u,t)){const i=t;t=u,n.forEach(a=>a(t,i))}},o=()=>t,S=()=>t,c=e=>(n.add(e),()=>n.delete(e));return typeof s=="function"?t=s(r,o):t=s,{set:r,get:o,use:e=>f.useSyncExternalStore(c,()=>e(o()),()=>e(S())),subscribe:c}};exports.createStore=l;
2
2
  //# sourceMappingURL=createStore.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.cjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n *\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
+ {"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 const createStore = <Value>(createState: StateCreator<Value> | Value) => {\n type Listener = (state: Value, prevState: Value) => void;\n let state: Value;\n const listeners: Set<Listener> = new Set();\n\n const setState = (action: SetStateAction<Value>) => {\n const nextState =\n typeof action === 'function' ? (action as (state: Value) => Value)(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = nextState;\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const getState = () => state;\n const getInitialState = () => state;\n\n const subscribe = (listener: Listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n if (typeof createState === 'function') {\n state = (createState as StateCreator<Value>)(setState, getState);\n } else {\n state = createState;\n }\n\n const useStore = <Selected>(selector: (state: Value) => Selected) =>\n useSyncExternalStore(\n subscribe,\n () => selector(getState()),\n () => selector(getInitialState())\n );\n\n return {\n set: setState,\n get: getState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore"],"mappings":"yGA+BaA,EAAsBC,GAA6C,CAE1E,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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),d=(n="history")=>{const{search:i,hash:e}=window.location;let r="";if(n==="history"&&(r=i),n==="hash-params"&&(r=e.replace(/^#/,"")),n==="hash"){const s=e.indexOf("?");r=~s?e.slice(s):""}return new URLSearchParams(r)},w=(n,i)=>{const e=n.toString(),{search:r,hash:t}=window.location;if(i==="history")return`${e?`?${e}`:""}${t}`;if(i==="hash-params")return`${r}${e?`#${e}`:""}`;if(i==="hash"){const s=t.indexOf("?"),c=s>-1?t.slice(0,s):t;return`${r}${c}${e?`?${e}`:""}`}throw new Error("Invalid mode")},S=(n,i,e="replace")=>{const r=new URLSearchParams;Object.entries(i).forEach(([s,c])=>{Array.isArray(c)?c.forEach(h=>r.set(s,String(h))):r.set(s,String(c))});const t=w(r,n);return e==="replace"&&window.history.replaceState({},"",t),e==="push"&&window.history.pushState({},"",t),r},p=(n,i={})=>{const{mode:e="history",write:r="replace"}=i,t=a=>typeof a=="string"?t(new URLSearchParams(a)):a instanceof URLSearchParams?Array.from(a.entries()).reduce((o,[u,f])=>{if(f==="undefined")return o;try{o[u]=JSON.parse(f)}catch{o[u]=f}return o},{}):a,[s,c]=l.useState(t(n??{})),h=(a,o="replace")=>{const u=S(e,{...s,...a},o??r);c(t(u))};return l.useEffect(()=>{h(s);const a=()=>{const o=d(e);h(t(o))};return window.addEventListener("popstate",a),e!=="history"&&window.addEventListener("hashchange",a),()=>{window.removeEventListener("popstate",a),e!=="history"&&window.removeEventListener("hashchange",a)}},[e]),{value:s,set:h}};exports.createQueryString=w;exports.getUrlSearchParams=d;exports.setUrlSearchParams=S;exports.useUrlSearchParams=p;
2
+ //# sourceMappingURL=useUrlSearchParams.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUrlSearchParams.cjs","sources":["../../../../src/hooks/useUrlSearchParams/useUrlSearchParams.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const getUrlSearchParams = (mode: UrlSearchParamsMode = 'history') => {\n const { search, hash } = window.location;\n\n let path = '';\n\n if (mode === 'history') path = search;\n if (mode === 'hash-params') path = hash.replace(/^#/, '');\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n path = ~index ? hash.slice(index) : '';\n }\n\n const searchParams = new URLSearchParams(path);\n\n return searchParams;\n};\n\nexport const createQueryString = (searchParams: URLSearchParams, mode: UrlSearchParamsMode) => {\n const searchParamsString = searchParams.toString();\n const { search, hash } = window.location;\n\n if (mode === 'history') return `${searchParamsString ? `?${searchParamsString}` : ''}${hash}`;\n if (mode === 'hash-params')\n return `${search}${searchParamsString ? `#${searchParamsString}` : ''}`;\n\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n const base = index > -1 ? hash.slice(0, index) : hash;\n\n return `${search}${base}${searchParamsString ? `?${searchParamsString}` : ''}`;\n }\n\n throw new Error('Invalid mode');\n};\n\nexport const setUrlSearchParams = <Params extends UrlParams>(\n mode: UrlSearchParamsMode,\n params: Partial<Params>,\n write: 'push' | 'replace' = 'replace'\n) => {\n const searchParams = new URLSearchParams();\n\n Object.entries(params).forEach(([key, param]) => {\n if (Array.isArray(param)) {\n param.forEach((value) => searchParams.set(key, String(value)));\n } else {\n searchParams.set(key, String(param));\n }\n });\n\n const query = createQueryString(searchParams, mode);\n if (write === 'replace') window.history.replaceState({}, '', query);\n if (write === 'push') window.history.pushState({}, '', query);\n\n return searchParams;\n};\n\n/** The url params type */\nexport type UrlParams = Record<string, any>;\n\n/** The url search params mod */\nexport type UrlSearchParamsMode = 'hash-params' | 'hash' | 'history';\n\n/** The use url search params set options type */\nexport interface UseUrlSearchParamsSetOptions {\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/** The use url search params options type */\nexport interface UseUrlSearchParamsOptions {\n /** The mode to use for writing to the URL */\n mode?: UrlSearchParamsMode;\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/** The use url search params return type */\nexport interface UseUrlSearchParamsReturn<Params extends UrlParams> {\n value: Params;\n set: (params: Partial<Params>) => void;\n}\n\n/**\n * @name useUrlSearchParams\n * @description - Hook that provides reactive URLSearchParams\n * @category Browser\n *\n * @overload\n * @template Value The type of the url param values\n * @param {UrlSearchParamsMode} mode The URL mode\n * @param {UseUrlSearchParamsOptions<Value>} [options] The URL mode\n * @returns {UseUrlSearchParamsReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParams('history');\n */\nexport const useUrlSearchParams = <\n Params extends UrlParams,\n SearchParams extends string | UrlParams | URLSearchParams = UrlParams\n>(\n initialValue?: SearchParams,\n options: UseUrlSearchParamsOptions = {}\n): UseUrlSearchParamsReturn<Params> => {\n const { mode = 'history', write: writeMode = 'replace' } = options;\n\n const deserializer = (searchParams: string | UrlParams | URLSearchParams) => {\n if (typeof searchParams === 'string') {\n return deserializer(new URLSearchParams(searchParams));\n }\n\n if (searchParams instanceof URLSearchParams) {\n return Array.from(searchParams.entries()).reduce(\n (acc, [key, value]) => {\n if (value === 'undefined') return acc;\n try {\n acc[key] = JSON.parse(value);\n } catch {\n acc[key] = value;\n }\n return acc;\n },\n {} as Record<string, any>\n );\n }\n\n return searchParams;\n };\n\n const [value, setValue] = useState(deserializer(initialValue ?? {}) as Params);\n\n const set = (params: Partial<Params>, write: 'push' | 'replace' = 'replace') => {\n const searchParams = setUrlSearchParams(mode, { ...value, ...params }, write ?? writeMode);\n setValue(deserializer(searchParams) as Params);\n };\n\n useEffect(() => {\n set(value);\n\n const onParamsChange = () => {\n const searchParams = getUrlSearchParams(mode);\n set(deserializer(searchParams) as Params);\n };\n\n window.addEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.addEventListener('hashchange', onParamsChange);\n\n return () => {\n window.removeEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.removeEventListener('hashchange', onParamsChange);\n };\n }, [mode]);\n\n return {\n value,\n set\n };\n};\n"],"names":["getUrlSearchParams","mode","search","hash","path","index","createQueryString","searchParams","searchParamsString","base","setUrlSearchParams","params","write","key","param","value","query","useUrlSearchParams","initialValue","options","writeMode","deserializer","acc","setValue","useState","set","useEffect","onParamsChange"],"mappings":"yGAEaA,EAAqB,CAACC,EAA4B,YAAc,CAC3E,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAI,OAAO,SAEhC,IAAIC,EAAO,GAIX,GAFIH,IAAS,YAAkBG,EAAAF,GAC3BD,IAAS,gBAAeG,EAAOD,EAAK,QAAQ,KAAM,EAAE,GACpDF,IAAS,OAAQ,CACb,MAAAI,EAAQF,EAAK,QAAQ,GAAG,EAC9BC,EAAO,CAACC,EAAQF,EAAK,MAAME,CAAK,EAAI,EAAA,CAK/B,OAFc,IAAI,gBAAgBD,CAAI,CAG/C,EAEaE,EAAoB,CAACC,EAA+BN,IAA8B,CACvF,MAAAO,EAAqBD,EAAa,SAAS,EAC3C,CAAE,OAAAL,EAAQ,KAAAC,CAAK,EAAI,OAAO,SAE5B,GAAAF,IAAS,UAAW,MAAO,GAAGO,EAAqB,IAAIA,CAAkB,GAAK,EAAE,GAAGL,CAAI,GAC3F,GAAIF,IAAS,cACX,MAAO,GAAGC,CAAM,GAAGM,EAAqB,IAAIA,CAAkB,GAAK,EAAE,GAEvE,GAAIP,IAAS,OAAQ,CACb,MAAAI,EAAQF,EAAK,QAAQ,GAAG,EACxBM,EAAOJ,EAAQ,GAAKF,EAAK,MAAM,EAAGE,CAAK,EAAIF,EAE1C,MAAA,GAAGD,CAAM,GAAGO,CAAI,GAAGD,EAAqB,IAAIA,CAAkB,GAAK,EAAE,EAAA,CAGxE,MAAA,IAAI,MAAM,cAAc,CAChC,EAEaE,EAAqB,CAChCT,EACAU,EACAC,EAA4B,YACzB,CACG,MAAAL,EAAe,IAAI,gBAElB,OAAA,QAAQI,CAAM,EAAE,QAAQ,CAAC,CAACE,EAAKC,CAAK,IAAM,CAC3C,MAAM,QAAQA,CAAK,EACfA,EAAA,QAASC,GAAUR,EAAa,IAAIM,EAAK,OAAOE,CAAK,CAAC,CAAC,EAE7DR,EAAa,IAAIM,EAAK,OAAOC,CAAK,CAAC,CACrC,CACD,EAEK,MAAAE,EAAQV,EAAkBC,EAAcN,CAAI,EAC9C,OAAAW,IAAU,WAAkB,OAAA,QAAQ,aAAa,CAAC,EAAG,GAAII,CAAK,EAC9DJ,IAAU,QAAe,OAAA,QAAQ,UAAU,CAAC,EAAG,GAAII,CAAK,EAErDT,CACT,EA0CaU,EAAqB,CAIhCC,EACAC,EAAqC,KACA,CACrC,KAAM,CAAE,KAAAlB,EAAO,UAAW,MAAOmB,EAAY,WAAcD,EAErDE,EAAgBd,GAChB,OAAOA,GAAiB,SACnBc,EAAa,IAAI,gBAAgBd,CAAY,CAAC,EAGnDA,aAAwB,gBACnB,MAAM,KAAKA,EAAa,QAAA,CAAS,EAAE,OACxC,CAACe,EAAK,CAACT,EAAKE,CAAK,IAAM,CACjBA,GAAAA,IAAU,YAAoB,OAAAO,EAC9B,GAAA,CACFA,EAAIT,CAAG,EAAI,KAAK,MAAME,CAAK,CAAA,MACrB,CACNO,EAAIT,CAAG,EAAIE,CAAA,CAEN,OAAAO,CACT,EACA,CAAA,CACF,EAGKf,EAGH,CAACQ,EAAOQ,CAAQ,EAAIC,WAASH,EAAaH,GAAgB,CAAA,CAAE,CAAW,EAEvEO,EAAM,CAACd,EAAyBC,EAA4B,YAAc,CACxE,MAAAL,EAAeG,EAAmBT,EAAM,CAAE,GAAGc,EAAO,GAAGJ,CAAA,EAAUC,GAASQ,CAAS,EAChFG,EAAAF,EAAad,CAAY,CAAW,CAC/C,EAEAmB,OAAAA,EAAAA,UAAU,IAAM,CACdD,EAAIV,CAAK,EAET,MAAMY,EAAiB,IAAM,CACrB,MAAApB,EAAeP,EAAmBC,CAAI,EACxCwB,EAAAJ,EAAad,CAAY,CAAW,CAC1C,EAEO,cAAA,iBAAiB,WAAYoB,CAAc,EAC9C1B,IAAS,WAAkB,OAAA,iBAAiB,aAAc0B,CAAc,EAErE,IAAM,CACJ,OAAA,oBAAoB,WAAYA,CAAc,EACjD1B,IAAS,WAAkB,OAAA,oBAAoB,aAAc0B,CAAc,CACjF,CAAA,EACC,CAAC1B,CAAI,CAAC,EAEF,CACL,MAAAc,EACA,IAAAU,CACF,CACF"}
@@ -1,2 +1,2 @@
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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("./helpers/createContext/createContext.cjs"),m=require("./helpers/createReactiveContext/createReactiveContext.cjs"),E=require("./helpers/createStore/createStore.cjs"),p=require("./hooks/useActiveElement/useActiveElement.cjs"),y=require("./hooks/useAsync/useAsync.cjs"),R=require("./hooks/useBattery/useBattery.cjs"),O=require("./hooks/useBluetooth/useBluetooth.cjs"),k=require("./hooks/useBoolean/useBoolean.cjs"),e=require("./hooks/useBreakpoints/useBreakpoints.cjs"),I=require("./hooks/useBrowserLanguage/useBrowserLanguage.cjs"),v=require("./hooks/useClickOutside/useClickOutside.cjs"),D=require("./hooks/useClipboard/useClipboard.cjs"),b=require("./hooks/useConst/useConst.cjs"),s=require("./hooks/useCookie/useCookie.cjs"),r=require("./hooks/useCookies/useCookies.cjs"),h=require("./hooks/useCopy/useCopy.cjs"),A=require("./hooks/useCounter/useCounter.cjs"),L=require("./hooks/useCssVar/useCssVar.cjs"),M=require("./hooks/useDebounceCallback/useDebounceCallback.cjs"),f=require("./hooks/useDebounceValue/useDebounceValue.cjs"),_=require("./hooks/useDefault/useDefault.cjs"),N=require("./hooks/useDeviceMotion/useDeviceMotion.cjs"),B=require("./hooks/useDeviceOrientation/useDeviceOrientation.cjs"),K=require("./hooks/useDevicePixelRatio/useDevicePixelRatio.cjs"),F=require("./hooks/useDidUpdate/useDidUpdate.cjs"),V=require("./hooks/useDisclosure/useDisclosure.cjs"),w=require("./hooks/useDisplayMedia/useDisplayMedia.cjs"),W=require("./hooks/useDocumentEvent/useDocumentEvent.cjs"),U=require("./hooks/useDocumentTitle/useDocumentTitle.cjs"),x=require("./hooks/useDocumentVisibility/useDocumentVisibility.cjs"),H=require("./hooks/useDoubleClick/useDoubleClick.cjs"),Q=require("./hooks/useDropZone/useDropZone.cjs"),z=require("./hooks/useElementSize/useElementSize.cjs"),G=require("./hooks/useEvent/useEvent.cjs"),X=require("./hooks/useEventListener/useEventListener.cjs"),Z=require("./hooks/useEventSource/useEventSource.cjs"),j=require("./hooks/useEyeDropper/useEyeDropper.cjs"),J=require("./hooks/useFavicon/useFavicon.cjs"),Y=require("./hooks/useField/useField.cjs"),$=require("./hooks/useFileDialog/useFileDialog.cjs"),ee=require("./hooks/useFocus/useFocus.cjs"),se=require("./hooks/useFps/useFps.cjs"),ue=require("./hooks/useFul/useFul.cjs"),re=require("./hooks/useFullscreen/useFullscreen.cjs"),n=require("./hooks/useGamepad/useGamepad.cjs"),te=require("./hooks/useGeolocation/useGeolocation.cjs"),oe=require("./hooks/useHash/useHash.cjs"),c=require("./hooks/useHotkeys/useHotkeys.cjs"),ie=require("./hooks/useHover/useHover.cjs"),ne=require("./hooks/useIdle/useIdle.cjs"),ce=require("./hooks/useImage/useImage.cjs"),ae=require("./hooks/useInfiniteScroll/useInfiniteScroll.cjs"),le=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),Se=require("./hooks/useInterval/useInterval.cjs"),qe=require("./hooks/useIsFirstRender/useIsFirstRender.cjs"),ge=require("./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs"),de=require("./hooks/useKeyboard/useKeyboard.cjs"),Pe=require("./hooks/useKeyPress/useKeyPress.cjs"),Te=require("./hooks/useKeyPressEvent/useKeyPressEvent.cjs"),Ce=require("./hooks/useKeysPressed/useKeysPressed.cjs"),me=require("./hooks/useLastChanged/useLastChanged.cjs"),Ee=require("./hooks/useLatest/useLatest.cjs"),pe=require("./hooks/useLess/useLess.cjs"),ye=require("./hooks/useList/useList.cjs"),Re=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Oe=require("./hooks/useLockCallback/useLockCallback.cjs"),ke=require("./hooks/useLogger/useLogger.cjs"),Ie=require("./hooks/useLongPress/useLongPress.cjs"),ve=require("./hooks/useMap/useMap.cjs"),De=require("./hooks/useMeasure/useMeasure.cjs"),be=require("./hooks/useMediaQuery/useMediaQuery.cjs"),he=require("./hooks/useMemory/useMemory.cjs"),Ae=require("./hooks/useMount/useMount.cjs"),Le=require("./hooks/useMouse/useMouse.cjs"),Me=require("./hooks/useMutation/useMutation.cjs"),fe=require("./hooks/useMutationObserver/useMutationObserver.cjs"),a=require("./hooks/useNetwork/useNetwork.cjs"),_e=require("./hooks/useOffsetPagination/useOffsetPagination.cjs"),Ne=require("./hooks/useOnce/useOnce.cjs"),Be=require("./hooks/useOnline/useOnline.cjs"),l=require("./hooks/useOperatingSystem/useOperatingSystem.cjs"),Ke=require("./hooks/useOptimistic/useOptimistic.cjs"),Fe=require("./hooks/useOrientation/useOrientation.cjs"),Ve=require("./hooks/useOtpCredential/useOtpCredential.cjs"),we=require("./hooks/usePageLeave/usePageLeave.cjs"),t=require("./hooks/usePaint/usePaint.cjs"),We=require("./hooks/useParallax/useParallax.cjs"),Ue=require("./hooks/usePerformanceObserver/usePerformanceObserver.cjs"),xe=require("./hooks/usePermission/usePermission.cjs"),He=require("./hooks/usePointerLock/usePointerLock.cjs"),Qe=require("./hooks/usePostMessage/usePostMessage.cjs"),ze=require("./hooks/usePreferredColorScheme/usePreferredColorScheme.cjs"),Ge=require("./hooks/usePreferredContrast/usePreferredContrast.cjs"),Xe=require("./hooks/usePreferredDark/usePreferredDark.cjs"),Ze=require("./hooks/usePreferredLanguages/usePreferredLanguages.cjs"),je=require("./hooks/usePreferredReducedMotion/usePreferredReducedMotion.cjs"),Je=require("./hooks/usePrevious/usePrevious.cjs"),Ye=require("./hooks/useQuery/useQuery.cjs"),$e=require("./hooks/useQueue/useQueue.cjs"),es=require("./hooks/useRaf/useRaf.cjs"),ss=require("./hooks/useRafValue/useRafValue.cjs"),us=require("./hooks/useRefState/useRefState.cjs"),rs=require("./hooks/useRenderCount/useRenderCount.cjs"),ts=require("./hooks/useRenderInfo/useRenderInfo.cjs"),os=require("./hooks/useRerender/useRerender.cjs"),is=require("./hooks/useResizeObserver/useResizeObserver.cjs"),ns=require("./hooks/useScreenOrientation/useScreenOrientation.cjs"),S=require("./hooks/useScript/useScript.cjs"),cs=require("./hooks/useScroll/useScroll.cjs"),as=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),ls=require("./hooks/useScrollTo/useScrollTo.cjs"),Ss=require("./hooks/useSessionStorage/useSessionStorage.cjs"),qs=require("./hooks/useSet/useSet.cjs"),gs=require("./hooks/useShare/useShare.cjs"),q=require("./hooks/useSpeechRecognition/useSpeechRecognition.cjs"),ds=require("./hooks/useSpeechSynthesis/useSpeechSynthesis.cjs"),Ps=require("./hooks/useStateHistory/useStateHistory.cjs"),Ts=require("./hooks/useStep/useStep.cjs"),Cs=require("./hooks/useSticky/useSticky.cjs"),ms=require("./hooks/useStopwatch/useStopwatch.cjs"),o=require("./hooks/useStorage/useStorage.cjs"),Es=require("./hooks/useTextDirection/useTextDirection.cjs"),g=require("./hooks/useTextSelection/useTextSelection.cjs"),ps=require("./hooks/useThrottleCallback/useThrottleCallback.cjs"),ys=require("./hooks/useThrottleValue/useThrottleValue.cjs"),Rs=require("./hooks/useTime/useTime.cjs"),Os=require("./hooks/useTimeout/useTimeout.cjs"),d=require("./hooks/useTimer/useTimer.cjs"),ks=require("./hooks/useToggle/useToggle.cjs"),Is=require("./hooks/useUnmount/useUnmount.cjs"),u=require("./hooks/useUrlSearchParams/useUrlSearchParams.cjs"),vs=require("./hooks/useVibrate/useVibrate.cjs"),Ds=require("./hooks/useWakeLock/useWakeLock.cjs"),bs=require("./hooks/useWebSocket/useWebSocket.cjs"),hs=require("./hooks/useWindowEvent/useWindowEvent.cjs"),As=require("./hooks/useWindowFocus/useWindowFocus.cjs"),P=require("./hooks/useWindowScroll/useWindowScroll.cjs"),Ls=require("./hooks/useWindowSize/useWindowSize.cjs"),Ms=require("./hooks/useWizard/useWizard.cjs"),T=require("./utils/helpers/copy.cjs"),fs=require("./utils/helpers/debounce.cjs"),_s=require("./utils/helpers/getDate.cjs"),i=require("./utils/helpers/getElement.cjs"),Ns=require("./utils/helpers/getRetry.cjs"),Bs=require("./utils/helpers/isTarget.cjs"),Ks=require("./utils/helpers/throttle.cjs");exports.createContext=C.createContext;exports.createReactiveContext=m.createReactiveContext;exports.createStore=E.createStore;exports.useActiveElement=p.useActiveElement;exports.useAsync=y.useAsync;exports.useBattery=R.useBattery;exports.useBluetooth=O.useBluetooth;exports.useBoolean=k.useBoolean;exports.BREAKPOINTS_ANT_DESIGN=e.BREAKPOINTS_ANT_DESIGN;exports.BREAKPOINTS_BOOTSTRAP_V5=e.BREAKPOINTS_BOOTSTRAP_V5;exports.BREAKPOINTS_MANTINE=e.BREAKPOINTS_MANTINE;exports.BREAKPOINTS_MASTER_CSS=e.BREAKPOINTS_MASTER_CSS;exports.BREAKPOINTS_MATERIAL_UI=e.BREAKPOINTS_MATERIAL_UI;exports.BREAKPOINTS_PRIME_FLEX=e.BREAKPOINTS_PRIME_FLEX;exports.BREAKPOINTS_QUASAR_V2=e.BREAKPOINTS_QUASAR_V2;exports.BREAKPOINTS_SEMANTIC=e.BREAKPOINTS_SEMANTIC;exports.BREAKPOINTS_TAILWIND=e.BREAKPOINTS_TAILWIND;exports.useBreakpoints=e.useBreakpoints;exports.useBrowserLanguage=I.useBrowserLanguage;exports.useClickOutside=v.useClickOutside;exports.useClipboard=D.useClipboard;exports.useConst=b.useConst;exports.COOKIE_EVENT=s.COOKIE_EVENT;exports.dispatchCookieEvent=s.dispatchCookieEvent;exports.getCookie=s.getCookie;exports.getCookies=s.getCookies;exports.removeCookie=s.removeCookie;exports.removeCookieItem=s.removeCookieItem;exports.setCookie=s.setCookie;exports.setCookieItem=s.setCookieItem;exports.useCookie=s.useCookie;exports.clearCookies=r.clearCookies;exports.getParsedCookies=r.getParsedCookies;exports.useCookies=r.useCookies;exports.useCopy=h.useCopy;exports.useCounter=A.useCounter;exports.useCssVar=L.useCssVar;exports.useDebounceCallback=M.useDebounceCallback;exports.useDebounceValue=f.useDebounceValue;exports.useDefault=_.useDefault;exports.useDeviceMotion=N.useDeviceMotion;exports.useDeviceOrientation=B.useDeviceOrientation;exports.useDevicePixelRatio=K.useDevicePixelRatio;exports.useDidUpdate=F.useDidUpdate;exports.useDisclosure=V.useDisclosure;exports.useDisplayMedia=w.useDisplayMedia;exports.useDocumentEvent=W.useDocumentEvent;exports.useDocumentTitle=U.useDocumentTitle;exports.useDocumentVisibility=x.useDocumentVisibility;exports.useDoubleClick=H.useDoubleClick;exports.useDropZone=Q.useDropZone;exports.useElementSize=z.useElementSize;exports.useEvent=G.useEvent;exports.useEventListener=X.useEventListener;exports.useEventSource=Z.useEventSource;exports.useEyeDropper=j.useEyeDropper;exports.useFavicon=J.useFavicon;exports.useField=Y.useField;exports.useFileDialog=$.useFileDialog;exports.useFocus=ee.useFocus;exports.useFps=se.useFps;exports.useFul=ue.useFul;exports.useFullscreen=re.useFullscreen;exports.mapGamepadToXbox360Controller=n.mapGamepadToXbox360Controller;exports.useGamepad=n.useGamepad;exports.useGeolocation=te.useGeolocation;exports.useHash=oe.useHash;exports.isHotkeyMatch=c.isHotkeyMatch;exports.useHotkeys=c.useHotkeys;exports.useHover=ie.useHover;exports.useIdle=ne.useIdle;exports.useImage=ce.useImage;exports.useInfiniteScroll=ae.useInfiniteScroll;exports.useIntersectionObserver=le.useIntersectionObserver;exports.useInterval=Se.useInterval;exports.useIsFirstRender=qe.useIsFirstRender;exports.useIsomorphicLayoutEffect=ge.useIsomorphicLayoutEffect;exports.useKeyboard=de.useKeyboard;exports.useKeyPress=Pe.useKeyPress;exports.useKeyPressEvent=Te.useKeyPressEvent;exports.useKeysPressed=Ce.useKeysPressed;exports.useLastChanged=me.useLastChanged;exports.useLatest=Ee.useLatest;exports.useLess=pe.useLess;exports.useList=ye.useList;exports.useLocalStorage=Re.useLocalStorage;exports.useLockCallback=Oe.useLockCallback;exports.useLogger=ke.useLogger;exports.useLongPress=Ie.useLongPress;exports.useMap=ve.useMap;exports.useMeasure=De.useMeasure;exports.useMediaQuery=be.useMediaQuery;exports.useMemory=he.useMemory;exports.useMount=Ae.useMount;exports.useMouse=Le.useMouse;exports.useMutation=Me.useMutation;exports.useMutationObserver=fe.useMutationObserver;exports.getConnection=a.getConnection;exports.useNetwork=a.useNetwork;exports.useOffsetPagination=_e.useOffsetPagination;exports.useOnce=Ne.useOnce;exports.useOnline=Be.useOnline;exports.getOperatingSystem=l.getOperatingSystem;exports.useOperatingSystem=l.useOperatingSystem;exports.useOptimistic=Ke.useOptimistic;exports.useOrientation=Fe.useOrientation;exports.useOtpCredential=Ve.useOtpCredential;exports.usePageLeave=we.usePageLeave;exports.Paint=t.Paint;exports.Pointer=t.Pointer;exports.usePaint=t.usePaint;exports.useParallax=We.useParallax;exports.usePerformanceObserver=Ue.usePerformanceObserver;exports.usePermission=xe.usePermission;exports.usePointerLock=He.usePointerLock;exports.usePostMessage=Qe.usePostMessage;exports.usePreferredColorScheme=ze.usePreferredColorScheme;exports.usePreferredContrast=Ge.usePreferredContrast;exports.usePreferredDark=Xe.usePreferredDark;exports.usePreferredLanguages=Ze.usePreferredLanguages;exports.usePreferredReducedMotion=je.usePreferredReducedMotion;exports.usePrevious=Je.usePrevious;exports.useQuery=Ye.useQuery;exports.useQueue=$e.useQueue;exports.useRaf=es.useRaf;exports.useRafValue=ss.useRafValue;exports.useRefState=us.useRefState;exports.useRenderCount=rs.useRenderCount;exports.useRenderInfo=ts.useRenderInfo;exports.useRerender=os.useRerender;exports.useResizeObserver=is.useResizeObserver;exports.useScreenOrientation=ns.useScreenOrientation;exports.SCRIPT_STATUS_ATTRIBUTE_NAME=S.SCRIPT_STATUS_ATTRIBUTE_NAME;exports.useScript=S.useScript;exports.useScroll=cs.useScroll;exports.useScrollIntoView=as.useScrollIntoView;exports.useScrollTo=ls.useScrollTo;exports.useSessionStorage=Ss.useSessionStorage;exports.useSet=qs.useSet;exports.useShare=gs.useShare;exports.getSpeechRecognition=q.getSpeechRecognition;exports.useSpeechRecognition=q.useSpeechRecognition;exports.useSpeechSynthesis=ds.useSpeechSynthesis;exports.useStateHistory=Ps.useStateHistory;exports.useStep=Ts.useStep;exports.useSticky=Cs.useSticky;exports.useStopwatch=ms.useStopwatch;exports.STORAGE_EVENT=o.STORAGE_EVENT;exports.dispatchStorageEvent=o.dispatchStorageEvent;exports.useStorage=o.useStorage;exports.useTextDirection=Es.useTextDirection;exports.getRangesSelection=g.getRangesSelection;exports.useTextSelection=g.useTextSelection;exports.useThrottleCallback=ps.useThrottleCallback;exports.useThrottleValue=ys.useThrottleValue;exports.useTime=Rs.useTime;exports.useTimeout=Os.useTimeout;exports.getTimeFromSeconds=d.getTimeFromSeconds;exports.useTimer=d.useTimer;exports.useToggle=ks.useToggle;exports.useUnmount=Is.useUnmount;exports.createQueryString=u.createQueryString;exports.getUrlSearchParams=u.getUrlSearchParams;exports.setUrlSearchParams=u.setUrlSearchParams;exports.useUrlSearchParams=u.useUrlSearchParams;exports.useVibrate=vs.useVibrate;exports.useWakeLock=Ds.useWakeLock;exports.useWebSocket=bs.useWebSocket;exports.useWindowEvent=hs.useWindowEvent;exports.useWindowFocus=As.useWindowFocus;exports.scrollTo=P.scrollTo;exports.useWindowScroll=P.useWindowScroll;exports.useWindowSize=Ls.useWindowSize;exports.useWizard=Ms.useWizard;exports.copy=T.copy;exports.legacyCopyToClipboard=T.legacyCopyToClipboard;exports.debounce=fs.debounce;exports.getDate=_s.getDate;exports.getElement=i.getElement;exports.target=i.target;exports.targetSymbol=i.targetSymbol;exports.getRetry=Ns.getRetry;exports.isTarget=Bs.isTarget;exports.throttle=Ks.throttle;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -10,18 +10,14 @@ const P = (n = void 0, o = {}) => {
10
10
  function i(r) {
11
11
  const e = v(t);
12
12
  if (!e && o.strict)
13
- throw new Error(
14
- `Context hook ${o.name} must be used inside a Provider`
15
- );
13
+ throw new Error(`Context hook ${o.name} must be used inside a Provider`);
16
14
  return r ? r(e.value) : e;
17
15
  }
18
16
  return {
19
17
  useSelect: i,
20
18
  instance: t,
21
19
  Provider: ({ children: r, initialValue: e }) => {
22
- const [s, a] = x(
23
- e ?? n
24
- ), c = d(
20
+ const [s, a] = x(e ?? n), c = d(
25
21
  () => ({
26
22
  value: s,
27
23
  set: a
@@ -1 +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;"}
1
+ {"version":3,"file":"createContext.mjs","sources":["../../../../src/helpers/createContext/createContext.tsx"],"sourcesContent":["import type { JSX, ReactNode } from 'react';\n\nimport { createContext as createReactContext, use, useMemo, useState } 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(`Context hook ${options.name} must be used inside a Provider`);\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>(initialValue ?? defaultValue);\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":";;AAsDO,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,MAAM,gBAAgBA,EAAQ,IAAI,iCAAiC;AAG/E,WAAKI,IAIEA,EAASC,EAAQ,KAAc,IAH7BA;AAAA,EAG6B;AAiBjC,SAAA;AAAA,IACL,WAAAF;AAAA,IACA,UAAUF;AAAA,IACV,UAjBe,CAAC,EAAE,UAAAM,GAAU,cAAAC,QAAyC;AACrE,YAAM,CAACC,GAASC,CAAU,IAAIC,EAA4BH,KAAgBT,CAAY,GAEhFa,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,54 @@
1
+ import { createContext as v, useRef as d, useMemo as f, startTransition as m, createElement as x, use as h, useState as P } from "react";
2
+ import { useIsomorphicLayoutEffect as l } from "../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
3
+ import { useEvent as S } from "../../hooks/useEvent/useEvent.mjs";
4
+ const C = (c) => (e) => {
5
+ const t = d(e.value), n = f(
6
+ () => ({
7
+ value: t,
8
+ listeners: /* @__PURE__ */ new Set()
9
+ }),
10
+ []
11
+ );
12
+ return l(() => {
13
+ Object.is(t.current, e.value) || (t.current = e.value, m(() => {
14
+ n.listeners.forEach((s) => {
15
+ s(t.current);
16
+ });
17
+ }));
18
+ }, [e.value]), x(c, { value: n }, e.children);
19
+ }, E = (c, r, e = {}) => {
20
+ const t = h(c);
21
+ if (!t && e.strict)
22
+ throw new Error(`Context hook ${e.name} must be used inside a Provider`);
23
+ const [n, s] = P({
24
+ selected: r(t.value.current),
25
+ value: t.value.current
26
+ }), o = S((i) => {
27
+ s((u) => {
28
+ if (Object.is(u.value, i)) return u;
29
+ const a = r(i);
30
+ return Object.is(u.selected, a) ? u : { value: i, selected: a };
31
+ });
32
+ });
33
+ return l(() => (t.listeners.add(o), () => {
34
+ t.listeners.delete(o);
35
+ }), [t.listeners]), n.selected;
36
+ }, w = (c = void 0, r = {}) => {
37
+ const e = v({
38
+ value: { current: c },
39
+ listeners: /* @__PURE__ */ new Set()
40
+ }), t = C(e.Provider);
41
+ e.displayName = r.name;
42
+ function n(s) {
43
+ return E(
44
+ e,
45
+ s ?? ((o) => o),
46
+ r
47
+ );
48
+ }
49
+ return { instance: e, Provider: t, useSelector: n };
50
+ };
51
+ export {
52
+ w as createReactiveContext
53
+ };
54
+ //# sourceMappingURL=createReactiveContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createReactiveContext.mjs","sources":["../../../../src/helpers/createReactiveContext/createReactiveContext.ts"],"sourcesContent":["import type { Context, FC, Provider, ProviderProps, RefObject } from 'react';\n\nimport {\n createContext,\n createElement,\n startTransition,\n use,\n useMemo,\n useRef,\n useState\n} from 'react';\n\nimport { useEvent, useIsomorphicLayoutEffect } from '@/hooks';\n\n/** The create reactive context options type */\nexport interface CreateReactiveContextOptions {\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 create reactive context return type */\nexport interface CreateReactiveContextReturn<Value> {\n /** The context instance */\n instance: Context<ReactiveContextValue<Value>>;\n /** The Provider component for the context */\n Provider: Provider<Value>;\n /** A hook to select a part of the context state */\n useSelector: <Selected>(selector?: (state: Value) => Selected) => Selected;\n}\n\ntype ContextListener<Value> = (value: Value) => void;\n\ninterface ReactiveContextValue<Value> {\n /** The listeners for the context */\n listeners: Set<ContextListener<Value>>;\n /** The value for the context */\n value: RefObject<Value>;\n}\n\nconst createProvider = <Value>(originalProvider: Provider<ReactiveContextValue<Value>>) => {\n const Provider: FC<ProviderProps<Value>> = (props) => {\n const valueRef = useRef(props.value);\n const contextValue = useMemo<ReactiveContextValue<Value>>(\n () => ({\n value: valueRef,\n listeners: new Set()\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!Object.is(valueRef.current, props.value)) {\n valueRef.current = props.value;\n\n startTransition(() => {\n contextValue.listeners.forEach((listener) => {\n listener(valueRef.current);\n });\n });\n }\n }, [props.value]);\n\n return createElement(originalProvider, { value: contextValue }, props.children);\n };\n\n return Provider as unknown as Provider<ReactiveContextValue<Value>>;\n};\n\nconst createReactiveContextSelector = <Value, Selected>(\n Context: Context<ReactiveContextValue<Value>>,\n selector: (state: Value) => Selected,\n options: CreateReactiveContextOptions = {}\n) => {\n const context = use(Context);\n\n if (!context && options.strict) {\n throw new Error(`Context hook ${options.name} must be used inside a Provider`);\n }\n\n const [value, setValue] = useState({\n selected: selector(context.value.current),\n value: context.value.current\n });\n\n const dispatch = useEvent((newValue: Value) => {\n setValue((prevValue) => {\n if (Object.is(prevValue.value, newValue)) return prevValue;\n\n const newSelected = selector(newValue);\n if (Object.is(prevValue.selected, newSelected)) return prevValue;\n\n return { value: newValue, selected: newSelected };\n });\n });\n\n useIsomorphicLayoutEffect(() => {\n context.listeners.add(dispatch);\n return () => {\n context.listeners.delete(dispatch);\n };\n }, [context.listeners]);\n\n return value.selected;\n};\n\n/**\n * @name createReactiveContext\n * @description - Creates a typed context selector with optimized updates for state selection\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 {CreateReactiveContextOptions<Value>} [options] - Additional options for context creation\n * @returns {CreateReactiveContextReturn<Value>} Object containing context utilities and components\n *\n * @example\n * const { Provider, useSelector, instance } = createReactiveContext<number>(0);\n */\nexport const createReactiveContext = <Value extends Record<string, any>>(\n defaultValue: Value | undefined = undefined,\n options: CreateReactiveContextOptions = {}\n) => {\n const Context = createContext<ReactiveContextValue<Value>>({\n value: { current: defaultValue as Value },\n listeners: new Set()\n });\n\n const Provider = createProvider(Context.Provider) as unknown as Provider<Value>;\n\n Context.displayName = options.name;\n\n function useSelector(): Value;\n function useSelector<SelectedValue>(selector: (state: Value) => SelectedValue): SelectedValue;\n function useSelector<SelectedValue>(selector?: (state: Value) => SelectedValue) {\n return createReactiveContextSelector(\n Context as unknown as Context<ReactiveContextValue<Value>>,\n selector ?? ((state) => state as unknown as SelectedValue),\n options\n );\n }\n\n return { instance: Context, Provider, useSelector };\n};\n"],"names":["createProvider","originalProvider","props","valueRef","useRef","contextValue","useMemo","useIsomorphicLayoutEffect","startTransition","listener","createElement","createReactiveContextSelector","Context","selector","options","context","use","value","setValue","useState","dispatch","useEvent","newValue","prevValue","newSelected","createReactiveContext","defaultValue","createContext","Provider","useSelector","state"],"mappings":";;;AAyCA,MAAMA,IAAiB,CAAQC,MACc,CAACC,MAAU;AAC9C,QAAAC,IAAWC,EAAOF,EAAM,KAAK,GAC7BG,IAAeC;AAAA,IACnB,OAAO;AAAA,MACL,OAAOH;AAAA,MACP,+BAAe,IAAI;AAAA,IAAA;AAAA,IAErB,CAAA;AAAA,EACF;AAEA,SAAAI,EAA0B,MAAM;AAC9B,IAAK,OAAO,GAAGJ,EAAS,SAASD,EAAM,KAAK,MAC1CC,EAAS,UAAUD,EAAM,OAEzBM,EAAgB,MAAM;AACP,MAAAH,EAAA,UAAU,QAAQ,CAACI,MAAa;AAC3C,QAAAA,EAASN,EAAS,OAAO;AAAA,MAAA,CAC1B;AAAA,IAAA,CACF;AAAA,EACH,GACC,CAACD,EAAM,KAAK,CAAC,GAETQ,EAAcT,GAAkB,EAAE,OAAOI,EAAa,GAAGH,EAAM,QAAQ;AAChF,GAKIS,IAAgC,CACpCC,GACAC,GACAC,IAAwC,CAAA,MACrC;AACG,QAAAC,IAAUC,EAAIJ,CAAO;AAEvB,MAAA,CAACG,KAAWD,EAAQ;AACtB,UAAM,IAAI,MAAM,gBAAgBA,EAAQ,IAAI,iCAAiC;AAG/E,QAAM,CAACG,GAAOC,CAAQ,IAAIC,EAAS;AAAA,IACjC,UAAUN,EAASE,EAAQ,MAAM,OAAO;AAAA,IACxC,OAAOA,EAAQ,MAAM;AAAA,EAAA,CACtB,GAEKK,IAAWC,EAAS,CAACC,MAAoB;AAC7C,IAAAJ,EAAS,CAACK,MAAc;AACtB,UAAI,OAAO,GAAGA,EAAU,OAAOD,CAAQ,EAAU,QAAAC;AAE3C,YAAAC,IAAcX,EAASS,CAAQ;AACrC,aAAI,OAAO,GAAGC,EAAU,UAAUC,CAAW,IAAUD,IAEhD,EAAE,OAAOD,GAAU,UAAUE,EAAY;AAAA,IAAA,CACjD;AAAA,EAAA,CACF;AAED,SAAAjB,EAA0B,OAChBQ,EAAA,UAAU,IAAIK,CAAQ,GACvB,MAAM;AACH,IAAAL,EAAA,UAAU,OAAOK,CAAQ;AAAA,EACnC,IACC,CAACL,EAAQ,SAAS,CAAC,GAEfE,EAAM;AACf,GAeaQ,IAAwB,CACnCC,IAAkC,QAClCZ,IAAwC,CAAA,MACrC;AACH,QAAMF,IAAUe,EAA2C;AAAA,IACzD,OAAO,EAAE,SAASD,EAAsB;AAAA,IACxC,+BAAe,IAAI;AAAA,EAAA,CACpB,GAEKE,IAAW5B,EAAeY,EAAQ,QAAQ;AAEhD,EAAAA,EAAQ,cAAcE,EAAQ;AAI9B,WAASe,EAA2BhB,GAA4C;AACvE,WAAAF;AAAA,MACLC;AAAA,MACAC,MAAa,CAACiB,MAAUA;AAAA,MACxBhB;AAAA,IACF;AAAA,EAAA;AAGF,SAAO,EAAE,UAAUF,GAAS,UAAAgB,GAAU,aAAAC,EAAY;AACpD;"}
@@ -1,32 +1,25 @@
1
- import { useSyncExternalStore as g } from "react";
2
- function a(o) {
1
+ import { useSyncExternalStore as a } from "react";
2
+ const b = (s) => {
3
3
  let t;
4
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));
5
+ const u = typeof e == "function" ? e(t) : e;
6
+ if (!Object.is(u, t)) {
7
+ const f = t;
8
+ t = u, n.forEach((i) => i(t, f));
9
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, {
10
+ }, o = () => t, S = () => t, c = (e) => (n.add(e), () => n.delete(e));
11
+ return typeof s == "function" ? t = s(r, o) : t = s, {
12
12
  set: r,
13
- get: s,
14
- use: (e) => g(
15
- u,
16
- () => e(s()),
17
- () => e(f())
13
+ get: o,
14
+ use: (e) => a(
15
+ c,
16
+ () => e(o()),
17
+ () => e(S())
18
18
  ),
19
- subscribe: u
19
+ subscribe: c
20
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());
21
+ };
29
22
  export {
30
- a as createStore
23
+ b as createStore
31
24
  };
32
25
  //# sourceMappingURL=createStore.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.mjs","sources":["../../../../src/helpers/createStore/createStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype SetStateAction<Value> = ((prev: Value) => Value) | Value;\ntype StateCreator<Value> = (\n set: (action: SetStateAction<Value>) => void,\n get: () => Value\n) => Value;\n\nexport interface StoreApi<Value> {\n getInitialState: () => Value;\n getState: () => Value;\n setState: (action: SetStateAction<Value>) => void;\n subscribe: (listener: (state: Value, prevState: Value) => void) => () => void;\n}\n\n/**\n * @name createStore\n * @description - Creates a store with state management capabilities\n * @category Helpers\n *\n * @template Value - The type of the store state\n *\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
+ {"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 const createStore = <Value>(createState: StateCreator<Value> | Value) => {\n type Listener = (state: Value, prevState: Value) => void;\n let state: Value;\n const listeners: Set<Listener> = new Set();\n\n const setState = (action: SetStateAction<Value>) => {\n const nextState =\n typeof action === 'function' ? (action as (state: Value) => Value)(state) : action;\n\n if (!Object.is(nextState, state)) {\n const prevState = state;\n state = nextState;\n listeners.forEach((listener) => listener(state, prevState));\n }\n };\n\n const getState = () => state;\n const getInitialState = () => state;\n\n const subscribe = (listener: Listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n if (typeof createState === 'function') {\n state = (createState as StateCreator<Value>)(setState, getState);\n } else {\n state = createState;\n }\n\n const useStore = <Selected>(selector: (state: Value) => Selected) =>\n useSyncExternalStore(\n subscribe,\n () => selector(getState()),\n () => selector(getInitialState())\n );\n\n return {\n set: setState,\n get: getState,\n use: useStore,\n subscribe\n };\n};\n"],"names":["createStore","createState","state","listeners","setState","action","nextState","prevState","listener","getState","getInitialState","subscribe","selector","useSyncExternalStore"],"mappings":";AA+Ba,MAAAA,IAAc,CAAQC,MAA6C;AAE1E,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;"}
@@ -0,0 +1,63 @@
1
+ import { useState as u, useEffect as d } from "react";
2
+ const l = (a = "history") => {
3
+ const { search: i, hash: e } = window.location;
4
+ let r = "";
5
+ if (a === "history" && (r = i), a === "hash-params" && (r = e.replace(/^#/, "")), a === "hash") {
6
+ const s = e.indexOf("?");
7
+ r = ~s ? e.slice(s) : "";
8
+ }
9
+ return new URLSearchParams(r);
10
+ }, p = (a, i) => {
11
+ const e = a.toString(), { search: r, hash: t } = window.location;
12
+ if (i === "history") return `${e ? `?${e}` : ""}${t}`;
13
+ if (i === "hash-params")
14
+ return `${r}${e ? `#${e}` : ""}`;
15
+ if (i === "hash") {
16
+ const s = t.indexOf("?"), c = s > -1 ? t.slice(0, s) : t;
17
+ return `${r}${c}${e ? `?${e}` : ""}`;
18
+ }
19
+ throw new Error("Invalid mode");
20
+ }, S = (a, i, e = "replace") => {
21
+ const r = new URLSearchParams();
22
+ Object.entries(i).forEach(([s, c]) => {
23
+ Array.isArray(c) ? c.forEach((h) => r.set(s, String(h))) : r.set(s, String(c));
24
+ });
25
+ const t = p(r, a);
26
+ return e === "replace" && window.history.replaceState({}, "", t), e === "push" && window.history.pushState({}, "", t), r;
27
+ }, y = (a, i = {}) => {
28
+ const { mode: e = "history", write: r = "replace" } = i, t = (n) => typeof n == "string" ? t(new URLSearchParams(n)) : n instanceof URLSearchParams ? Array.from(n.entries()).reduce(
29
+ (o, [f, w]) => {
30
+ if (w === "undefined") return o;
31
+ try {
32
+ o[f] = JSON.parse(w);
33
+ } catch {
34
+ o[f] = w;
35
+ }
36
+ return o;
37
+ },
38
+ {}
39
+ ) : n, [s, c] = u(t(a ?? {})), h = (n, o = "replace") => {
40
+ const f = S(e, { ...s, ...n }, o ?? r);
41
+ c(t(f));
42
+ };
43
+ return d(() => {
44
+ h(s);
45
+ const n = () => {
46
+ const o = l(e);
47
+ h(t(o));
48
+ };
49
+ return window.addEventListener("popstate", n), e !== "history" && window.addEventListener("hashchange", n), () => {
50
+ window.removeEventListener("popstate", n), e !== "history" && window.removeEventListener("hashchange", n);
51
+ };
52
+ }, [e]), {
53
+ value: s,
54
+ set: h
55
+ };
56
+ };
57
+ export {
58
+ p as createQueryString,
59
+ l as getUrlSearchParams,
60
+ S as setUrlSearchParams,
61
+ y as useUrlSearchParams
62
+ };
63
+ //# sourceMappingURL=useUrlSearchParams.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUrlSearchParams.mjs","sources":["../../../../src/hooks/useUrlSearchParams/useUrlSearchParams.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const getUrlSearchParams = (mode: UrlSearchParamsMode = 'history') => {\n const { search, hash } = window.location;\n\n let path = '';\n\n if (mode === 'history') path = search;\n if (mode === 'hash-params') path = hash.replace(/^#/, '');\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n path = ~index ? hash.slice(index) : '';\n }\n\n const searchParams = new URLSearchParams(path);\n\n return searchParams;\n};\n\nexport const createQueryString = (searchParams: URLSearchParams, mode: UrlSearchParamsMode) => {\n const searchParamsString = searchParams.toString();\n const { search, hash } = window.location;\n\n if (mode === 'history') return `${searchParamsString ? `?${searchParamsString}` : ''}${hash}`;\n if (mode === 'hash-params')\n return `${search}${searchParamsString ? `#${searchParamsString}` : ''}`;\n\n if (mode === 'hash') {\n const index = hash.indexOf('?');\n const base = index > -1 ? hash.slice(0, index) : hash;\n\n return `${search}${base}${searchParamsString ? `?${searchParamsString}` : ''}`;\n }\n\n throw new Error('Invalid mode');\n};\n\nexport const setUrlSearchParams = <Params extends UrlParams>(\n mode: UrlSearchParamsMode,\n params: Partial<Params>,\n write: 'push' | 'replace' = 'replace'\n) => {\n const searchParams = new URLSearchParams();\n\n Object.entries(params).forEach(([key, param]) => {\n if (Array.isArray(param)) {\n param.forEach((value) => searchParams.set(key, String(value)));\n } else {\n searchParams.set(key, String(param));\n }\n });\n\n const query = createQueryString(searchParams, mode);\n if (write === 'replace') window.history.replaceState({}, '', query);\n if (write === 'push') window.history.pushState({}, '', query);\n\n return searchParams;\n};\n\n/** The url params type */\nexport type UrlParams = Record<string, any>;\n\n/** The url search params mod */\nexport type UrlSearchParamsMode = 'hash-params' | 'hash' | 'history';\n\n/** The use url search params set options type */\nexport interface UseUrlSearchParamsSetOptions {\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/** The use url search params options type */\nexport interface UseUrlSearchParamsOptions {\n /** The mode to use for writing to the URL */\n mode?: UrlSearchParamsMode;\n /** The mode to use for writing to the URL */\n write?: 'push' | 'replace';\n}\n\n/** The use url search params return type */\nexport interface UseUrlSearchParamsReturn<Params extends UrlParams> {\n value: Params;\n set: (params: Partial<Params>) => void;\n}\n\n/**\n * @name useUrlSearchParams\n * @description - Hook that provides reactive URLSearchParams\n * @category Browser\n *\n * @overload\n * @template Value The type of the url param values\n * @param {UrlSearchParamsMode} mode The URL mode\n * @param {UseUrlSearchParamsOptions<Value>} [options] The URL mode\n * @returns {UseUrlSearchParamsReturn<Value>} The object with value and function for change value\n *\n * @example\n * const { value, set } = useUrlSearchParams('history');\n */\nexport const useUrlSearchParams = <\n Params extends UrlParams,\n SearchParams extends string | UrlParams | URLSearchParams = UrlParams\n>(\n initialValue?: SearchParams,\n options: UseUrlSearchParamsOptions = {}\n): UseUrlSearchParamsReturn<Params> => {\n const { mode = 'history', write: writeMode = 'replace' } = options;\n\n const deserializer = (searchParams: string | UrlParams | URLSearchParams) => {\n if (typeof searchParams === 'string') {\n return deserializer(new URLSearchParams(searchParams));\n }\n\n if (searchParams instanceof URLSearchParams) {\n return Array.from(searchParams.entries()).reduce(\n (acc, [key, value]) => {\n if (value === 'undefined') return acc;\n try {\n acc[key] = JSON.parse(value);\n } catch {\n acc[key] = value;\n }\n return acc;\n },\n {} as Record<string, any>\n );\n }\n\n return searchParams;\n };\n\n const [value, setValue] = useState(deserializer(initialValue ?? {}) as Params);\n\n const set = (params: Partial<Params>, write: 'push' | 'replace' = 'replace') => {\n const searchParams = setUrlSearchParams(mode, { ...value, ...params }, write ?? writeMode);\n setValue(deserializer(searchParams) as Params);\n };\n\n useEffect(() => {\n set(value);\n\n const onParamsChange = () => {\n const searchParams = getUrlSearchParams(mode);\n set(deserializer(searchParams) as Params);\n };\n\n window.addEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.addEventListener('hashchange', onParamsChange);\n\n return () => {\n window.removeEventListener('popstate', onParamsChange);\n if (mode !== 'history') window.removeEventListener('hashchange', onParamsChange);\n };\n }, [mode]);\n\n return {\n value,\n set\n };\n};\n"],"names":["getUrlSearchParams","mode","search","hash","path","index","createQueryString","searchParams","searchParamsString","base","setUrlSearchParams","params","write","key","param","value","query","useUrlSearchParams","initialValue","options","writeMode","deserializer","acc","setValue","useState","set","useEffect","onParamsChange"],"mappings":"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"}