UNPKG

react-state-hooks

Version:
1 lines 15 kB
{"mappings":"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","sources":["src/index.ts","src/useAsyncState.ts","src/useDebounceState.ts","src/useDependentState.ts","src/useHistoryState.ts","src/useImmutableState.ts","src/useListState.ts","src/useNumberState.ts","src/useObjectState.ts","src/usePropState.ts","src/useStoreState.ts","src/useToggleState.ts"],"sourcesContent":["export { default as useAsyncState } from './useAsyncState';\nexport { default as useDebounceState } from './useDebounceState';\nexport { default as useDependentState } from './useDependentState';\nexport { default as useHistoryState } from './useHistoryState';\nexport { default as useImmutableState } from './useImmutableState';\nexport { default as useListState } from './useListState';\nexport { default as useNumberState } from './useNumberState';\nexport { default as useObjectState } from './useObjectState';\nexport { default as usePropState } from './usePropState';\nexport { default as useStoreState } from './useStoreState';\nexport { default as useToggleState } from './useToggleState';\n","import { DependencyList, useCallback, useEffect, useState } from 'react';\n\nexport default function useAsyncState<T>(getter: () => Promise<T>, deps: DependencyList = []) {\n const [state, setState] = useState<T>();\n const [error, setError] = useState<unknown>();\n const [isPending, setIsPending] = useState(true);\n\n const setData: typeof setState = useCallback((value) => {\n setError(undefined);\n setIsPending(false);\n setState((current) => (value instanceof Function ? value(current) : value));\n }, []);\n\n const revalidate = useCallback(async () => {\n setIsPending(true);\n setError(undefined);\n\n try {\n setState(await getter());\n } catch (err) {\n setState(undefined);\n setError(err);\n }\n\n setIsPending(false);\n }, deps);\n\n // Reset\n useEffect(() => {\n revalidate();\n }, [revalidate]);\n\n return [state, setData, { error, isPending, revalidate }] as const;\n}\n","import { useCallback, useRef, useState } from 'react';\r\n\r\nexport default function useDebounceState<T>(initialValue: T, delay = 500) {\r\n const [state, _setState] = useState(initialValue);\r\n\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const setState: typeof _setState = useCallback(\r\n (value) => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n _setState(value);\r\n }, delay);\r\n },\r\n [delay],\r\n );\r\n\r\n return [state, setState] as const;\r\n}\r\n","import { DependencyList, useMemo, useState } from 'react';\r\n\r\nexport default function useDependentState<T>(factory: (current?: T) => T, deps: DependencyList = []) {\r\n const [state, setState] = useState<T>(factory(undefined));\r\n\r\n useMemo(() => {\r\n setState(factory);\r\n }, deps);\r\n\r\n return [state, setState] as const;\r\n}\r\n","import { useCallback, useRef, useState } from 'react';\n\nexport default function useHistoryState<T>(initialState?: T, length: number = 10) {\n const historyRef = useRef<T[]>(typeof initialState === 'undefined' ? [] : [initialState]);\n\n const [state, _setState] = useState<T>(initialState as T);\n\n const setState: typeof _setState = useCallback(\n (value) => {\n const next = value instanceof Function ? value(state) : value;\n\n if (next !== historyRef.current.at(-1)) {\n historyRef.current.push(next);\n\n if (historyRef.current.length > length) {\n const deleteCount = historyRef.current.length - length;\n historyRef.current.splice(0, deleteCount);\n }\n }\n\n _setState(next);\n },\n [length, state, historyRef],\n );\n\n const rollback = useCallback(\n (amount = 1) => {\n setState(historyRef.current.at(-(amount + 1)) as T);\n },\n [historyRef, setState],\n );\n\n return [state, setState, { history: historyRef.current, rollback }] as const;\n}\n","import { useState } from 'react';\n\nexport default function useImmutableState<T>(immutableValue?: T | (() => T)) {\n const [state] = useState<T>(immutableValue as T);\n\n return state;\n}\n","import { useMemo, useState } from 'react';\n\nexport default function useListState<T>(initialState: T[] = []) {\n const [list, setList] = useState<T[]>(initialState);\n\n const actions = useMemo(\n () => ({\n set: (items: T[]) => {\n setList([...items]);\n },\n\n push: (...items: T[]) => {\n setList((prev) => [...prev, ...items]);\n },\n\n insert: (index: number, item: T) => {\n setList((prev) => {\n const next = [...prev];\n next.splice(index, 0, item);\n return next;\n });\n },\n\n remove: (indexOrHandler: number | ((item: T, index: number) => boolean)) => {\n setList((prev) => {\n return typeof indexOrHandler === 'function'\n ? prev.filter((item, index) => !indexOrHandler(item, index)) // Remove todas as ocorrências se for uma função\n : prev.filter((_, i) => i !== indexOrHandler); // Remove pelo índice\n });\n },\n\n update: (indexOrHandler: number | ((item: T, index: number) => boolean), newItem: T) => {\n setList((prev) => {\n return typeof indexOrHandler === 'function'\n ? prev.map((item, index) => (indexOrHandler(item, index) ? newItem : item)) // Atualiza baseado na função\n : prev.map((item, index) => (index === indexOrHandler ? newItem : item)); // Atualiza pelo índice\n });\n },\n\n clear: () => {\n setList([]);\n },\n\n sort: (compareFn?: (a: T, b: T) => number) => {\n setList((prev) => [...prev].sort(compareFn));\n },\n\n filter: (predicate: (value: T, index: number, array: T[]) => boolean) => {\n setList((prev) => prev.filter(predicate));\n },\n }),\n [],\n );\n\n return [list, actions] as const;\n}\n","import { useCallback, useState } from 'react';\n\nexport type NumberStateOptions = {\n min?: number;\n max?: number;\n step?: number;\n};\n\nexport default function useNumberState(initialState?: number, options: NumberStateOptions = {}) {\n const resolveValue = useCallback(\n (value?: number) => {\n if (typeof value === 'number') {\n if (typeof options.min === 'number') {\n value = Math.max(options.min, value);\n }\n\n if (typeof options.max === 'number') {\n value = Math.min(options.max, value);\n }\n\n if (typeof options.step === 'number') {\n value = Math.floor(value / options.step) * options.step;\n }\n }\n\n return value;\n },\n [options],\n );\n\n const [state, _setState] = useState(resolveValue(initialState));\n\n const setState: typeof _setState = useCallback(\n (value) => {\n _setState(resolveValue(value instanceof Function ? value(state) : value));\n },\n [state, resolveValue],\n );\n\n const inc = useCallback(\n (value = options.step ?? 1) => {\n setState((current) => (current ?? 0) + value);\n },\n [setState, options.step],\n );\n\n const dec = useCallback(\n (value = options.step ?? 1) => {\n setState((current) => (current ?? 0) - value);\n },\n [setState, options.step],\n );\n\n return [state, setState, { inc, dec }] as const;\n}\n","import { useCallback, useState } from 'react';\r\n\r\nexport default function useObjectState<T>(initialState?: T) {\r\n const [state, setState] = useState<T>(Object(initialState));\r\n\r\n const updateState = useCallback((value: Partial<T>) => {\r\n setState((current) => ({ ...current, ...value }));\r\n }, []);\r\n\r\n const resetState = useCallback((newValue?: T) => {\r\n setState(Object(newValue));\r\n }, []);\r\n\r\n return [state, updateState, resetState] as const;\r\n}\r\n","import { useEffect, useState } from 'react';\r\n\r\nexport default function usePropState<T>(prop: T | undefined, initialState?: T | (() => T)) {\r\n const [state, setState] = useState<T>((typeof prop !== 'undefined' ? prop : initialState) as T);\r\n\r\n useEffect(() => {\r\n if (typeof prop !== 'undefined') {\r\n setState(prop);\r\n }\r\n }, [prop]);\r\n\r\n return [state, setState] as const;\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nconst store: { [key: string]: any } = {};\n\nconst listeners: { [key: string]: any[] } = {};\n\n/**\n * @reference https://yoavik.com/snippets/use-global-state\n */\nexport default function useStoreState<T>(key: string, initialState?: T | (() => T)) {\n const [state, _setState] = useState<T>(store[key] ?? initialState);\n\n const setState: typeof _setState = useCallback(\n (value) => {\n const next = value instanceof Function ? value(store[key]) : value;\n store[key] = next;\n listeners[key].forEach((listener) => listener(next));\n },\n [key],\n );\n\n // #HACK onBeforeMount\n useMemo(() => {\n // Store the initial state on the first call with this key\n store[key] = store[key] ?? initialState;\n\n // Create an empty array of listener on the first call with this key\n listeners[key] = listeners[key] ?? [];\n }, [key]);\n\n useEffect(() => {\n // Register the observer\n const listener: typeof _setState = (state) => _setState(state);\n listeners[key].push(listener);\n\n // Cleanup when unmounting\n return () => {\n const index = listeners[key].indexOf(listener);\n if (index > -1) {\n listeners[key].splice(index, 1);\n }\n };\n }, [key]);\n\n return [state, setState] as const;\n}\n","import { useReducer } from 'react';\n\nexport default function useToggleState(initialState = false) {\n return useReducer((current) => !current, initialState);\n}\n"],"names":[],"version":3,"file":"index.mjs.map"}