usethishook 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +186 -0
- package/dist/index.cjs +857 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +252 -0
- package/dist/index.d.ts +252 -0
- package/dist/index.js +824 -0
- package/dist/index.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useToggle.ts","../src/hooks/useCounter.ts","../src/hooks/useDisclosure.ts","../src/hooks/useDebounce.ts","../src/hooks/usePrevious.ts","../src/hooks/useInterval.ts","../src/hooks/useOnlineStatus.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useWindowSize.ts","../src/hooks/useOnClickOutside.ts","../src/hooks/useCopyToClipboard.ts","../src/hooks/useLocalStorage.ts","../src/hooks/useDocumentTitle.ts","../src/hooks/useOverlay.tsx","../src/hooks/useStepFlow.tsx","../src/hooks/useAsyncSelect.ts","../src/hooks/useStableCallback.ts","../src/hooks/useOnChange.ts","../src/hooks/useResetState.ts","../src/hooks/useAsyncAction.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useFields.ts","../src/hooks/useList.ts","../src/hooks/useSelection.ts","../src/hooks/useSearchState.ts","../src/hooks/dialogFrame.tsx","../src/hooks/useConfirm.tsx","../src/hooks/usePrompt.tsx","../src/hooks/useControllableState.ts","../src/hooks/useUnsavedChanges.ts","../src/hooks/useElementSize.ts","../src/hooks/useInView.ts","../src/hooks/usePagination.ts"],"names":["useState","useCallback","useRef","useEffect","jsx","subscribe","getSnapshot","getServerSnapshot","useSyncExternalStore","useMemo","jsxs"],"mappings":"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","file":"index.js","sourcesContent":["import { useCallback, useState } from 'react';\n\nexport const useToggle = (initialValue = false) => {\n const [value, setValue] = useState(initialValue);\n\n const toggle = useCallback(() => {\n setValue((previous) => !previous);\n }, []);\n\n const setTrue = useCallback(() => {\n setValue(true);\n }, []);\n\n const setFalse = useCallback(() => {\n setValue(false);\n }, []);\n\n return { value, toggle, setTrue, setFalse, setValue } as const;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useCounter = (initialValue = 0, step = 1) => {\n const [count, setCount] = useState(initialValue);\n\n const increment = useCallback(() => {\n setCount((previous) => previous + step);\n }, [step]);\n\n const decrement = useCallback(() => {\n setCount((previous) => previous - step);\n }, [step]);\n\n const reset = useCallback(() => {\n setCount(initialValue);\n }, [initialValue]);\n\n return { count, increment, decrement, reset, setCount } as const;\n};\n","import { useCallback, useState } from 'react';\n\nexport const useDisclosure = (initialOpen = false) => {\n const [isOpen, setIsOpen] = useState(initialOpen);\n\n const open = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const close = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const toggle = useCallback(() => {\n setIsOpen((previous) => !previous);\n }, []);\n\n return { isOpen, open, close, toggle } as const;\n};\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = <T>(value: T, delayMs = 300): T => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => {\n setDebouncedValue(value);\n }, delayMs);\n\n return () => {\n window.clearTimeout(timeoutId);\n };\n }, [value, delayMs]);\n\n return debouncedValue;\n};\n","import { useRef } from 'react';\n\nexport const usePrevious = <T>(value: T): T | undefined => {\n const currentRef = useRef(value);\n const previousRef = useRef<T | undefined>(undefined);\n\n if (currentRef.current !== value) {\n previousRef.current = currentRef.current;\n currentRef.current = value;\n }\n\n return previousRef.current;\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useInterval = (callback: () => void, delayMs: number | null) => {\n const savedCallback = useRef(callback);\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delayMs === null) return;\n\n const intervalId = window.setInterval(() => {\n savedCallback.current();\n }, delayMs);\n\n return () => {\n window.clearInterval(intervalId);\n };\n }, [delayMs]);\n};\n","import { useSyncExternalStore } from 'react';\n\nfunction subscribe(onStoreChange: () => void) {\n window.addEventListener('online', onStoreChange);\n window.addEventListener('offline', onStoreChange);\n\n return () => {\n window.removeEventListener('online', onStoreChange);\n window.removeEventListener('offline', onStoreChange);\n };\n}\n\nfunction getSnapshot() {\n return navigator.onLine;\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\nexport const useOnlineStatus = () =>\n useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n","import { useEffect, useState } from 'react';\n\nexport const useMediaQuery = (query: string) => {\n const [matches, setMatches] = useState(() => {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n const mediaQueryList = window.matchMedia(query);\n const handleChange = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n setMatches(mediaQueryList.matches);\n mediaQueryList.addEventListener('change', handleChange);\n\n return () => {\n mediaQueryList.removeEventListener('change', handleChange);\n };\n }, [query]);\n\n return matches;\n};\n","import { useEffect, useState } from 'react';\n\ninterface WindowSize {\n width: number;\n height: number;\n}\n\nexport const useWindowSize = (): WindowSize => {\n const [size, setSize] = useState<WindowSize>(() => {\n if (typeof window === 'undefined') return { width: 0, height: 0 };\n return { width: window.innerWidth, height: window.innerHeight };\n });\n\n useEffect(() => {\n const handleResize = () => {\n setSize({ width: window.innerWidth, height: window.innerHeight });\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return size;\n};\n","import { type RefObject, useEffect } from 'react';\n\nexport const useOnClickOutside = <T extends HTMLElement>(\n ref: RefObject<T | null>,\n handler: (event: MouseEvent | TouchEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const element = ref.current;\n if (!element || element.contains(event.target as Node)) return;\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [handler, ref]);\n};\n","import { useCallback, useState } from 'react';\n\ninterface CopyToClipboardResult {\n copiedText: string | null;\n copy: (text: string) => Promise<boolean>;\n reset: () => void;\n}\n\nexport const useCopyToClipboard = (): CopyToClipboardResult => {\n const [copiedText, setCopiedText] = useState<string | null>(null);\n\n const copy = useCallback(async (text: string) => {\n if (!navigator.clipboard) return false;\n\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch {\n setCopiedText(null);\n return false;\n }\n }, []);\n\n const reset = useCallback(() => {\n setCopiedText(null);\n }, []);\n\n return { copiedText, copy, reset };\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nfunction readValue<T>(key: string, fallback: T): T {\n if (typeof window === 'undefined') return fallback;\n\n try {\n const item = window.localStorage.getItem(key);\n return item === null ? fallback : (JSON.parse(item) as T);\n } catch {\n return fallback;\n }\n}\n\nexport const useLocalStorage = <T>(key: string, initialValue: T) => {\n const initialValueRef = useRef(initialValue);\n initialValueRef.current = initialValue;\n\n const [storedValue, setStoredValue] = useState<T>(() => readValue(key, initialValue));\n\n const setValue = useCallback(\n (value: T | ((previous: T) => T)) => {\n setStoredValue((previous) => {\n const nextValue = value instanceof Function ? value(previous) : value;\n\n try {\n window.localStorage.setItem(key, JSON.stringify(nextValue));\n } catch {\n // Ignore write errors (quota, private mode).\n }\n\n return nextValue;\n });\n },\n [key],\n );\n\n useEffect(() => {\n setStoredValue(readValue(key, initialValueRef.current));\n }, [key]);\n\n return [storedValue, setValue] as const;\n};\n","import { useEffect } from 'react';\n\nexport const useDocumentTitle = (title: string) => {\n useEffect(() => {\n const previousTitle = document.title;\n document.title = title;\n\n return () => {\n document.title = previousTitle;\n };\n }, [title]);\n};\n","import { type ComponentType, useCallback, useRef, useState } from 'react';\n\nexport interface OverlayControls<TResult = unknown> {\n isOpen: boolean;\n close: (result?: TResult) => void;\n}\n\nexport const useOverlay = <TProps extends object, TResult = unknown>(\n Overlay: ComponentType<TProps & OverlayControls<TResult>>,\n) => {\n const [isOpen, setIsOpen] = useState(false);\n const [props, setProps] = useState<TProps | null>(null);\n const resolverRef = useRef<((result?: TResult) => void) | null>(null);\n const previousOverflowRef = useRef('');\n\n const open = useCallback((data?: TProps) => {\n setProps(data ?? ({} as TProps));\n setIsOpen(true);\n previousOverflowRef.current = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n\n return new Promise<TResult | undefined>((resolve) => {\n resolverRef.current = resolve;\n });\n }, []);\n\n const close = useCallback((result?: TResult) => {\n setIsOpen(false);\n document.body.style.overflow = previousOverflowRef.current;\n\n if (!resolverRef.current) return;\n resolverRef.current(result);\n resolverRef.current = null;\n }, []);\n\n const render = () => {\n if (!isOpen && !props) return null;\n\n const overlayProps = (props ?? {}) as TProps;\n return <Overlay {...overlayProps} isOpen={isOpen} close={close} />;\n };\n\n return { open, close, render } as const;\n};\n","import { type ComponentType, useCallback, useRef, useState } from 'react';\n\nexport interface StepFlowStepProps<TStepData = unknown> {\n stepIndex: number;\n isLastStep: boolean;\n onNext: (stepData?: TStepData) => void;\n onCancel: () => void;\n}\n\nexport const useStepFlow = <TStepData = unknown>(\n steps: Array<ComponentType<StepFlowStepProps<TStepData>>>,\n) => {\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n const [isActive, setIsActive] = useState(false);\n const resultsRef = useRef<Array<TStepData | undefined>>([]);\n const resolverRef = useRef<((result: Array<TStepData | undefined> | null) => void) | null>(\n null,\n );\n\n const next = useCallback(() => {\n setIsActive(true);\n setCurrentStepIndex(0);\n resultsRef.current = [];\n\n return new Promise<Array<TStepData | undefined> | null>((resolve) => {\n resolverRef.current = resolve;\n });\n }, []);\n\n const completeStep = useCallback(\n (stepData?: TStepData) => {\n resultsRef.current = [...resultsRef.current, stepData];\n\n setCurrentStepIndex((previous) => {\n if (previous + 1 < steps.length) return previous + 1;\n\n if (resolverRef.current) {\n resolverRef.current(resultsRef.current);\n resolverRef.current = null;\n }\n\n setIsActive(false);\n return 0;\n });\n },\n [steps.length],\n );\n\n const cancel = useCallback(() => {\n if (resolverRef.current) {\n resolverRef.current(null);\n resolverRef.current = null;\n }\n\n setIsActive(false);\n setCurrentStepIndex(0);\n resultsRef.current = [];\n }, []);\n\n const renderCurrentStep = useCallback(\n (extraProps: Record<string, unknown> = {}) => {\n if (!isActive) return null;\n\n const StepComponent = steps[currentStepIndex];\n if (!StepComponent) return null;\n\n return (\n <StepComponent\n {...extraProps}\n stepIndex={currentStepIndex}\n isLastStep={currentStepIndex === steps.length - 1}\n onNext={completeStep}\n onCancel={cancel}\n />\n );\n },\n [cancel, completeStep, currentStepIndex, isActive, steps],\n );\n\n return { next, cancel, completeStep, renderCurrentStep, currentStepIndex, isActive } as const;\n};\n","import { useCallback } from 'react';\n\nexport interface AsyncSelectOptions {\n accept?: string;\n multiple?: boolean;\n}\n\nexport const useAsyncSelect = () => {\n const selectFile = useCallback((options: AsyncSelectOptions = {}) => {\n const { accept = '*', multiple = false } = options;\n\n return new Promise<File | File[] | null>((resolve) => {\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = accept;\n input.multiple = multiple;\n input.style.display = 'none';\n\n let isSettled = false;\n\n const settle = (value: File | File[] | null) => {\n if (isSettled) return;\n isSettled = true;\n window.removeEventListener('focus', handleCancel);\n input.remove();\n resolve(value);\n };\n\n const handleChange = (event: Event) => {\n const files = (event.target as HTMLInputElement).files;\n if (!files || files.length === 0) {\n settle(null);\n return;\n }\n\n settle(multiple ? Array.from(files) : files[0] ?? null);\n };\n\n const handleCancel = () => {\n window.setTimeout(() => {\n if (!input.files || input.files.length === 0) settle(null);\n }, 300);\n };\n\n input.addEventListener('change', handleChange);\n input.addEventListener('cancel', () => settle(null));\n window.addEventListener('focus', handleCancel);\n\n document.body.appendChild(input);\n input.click();\n });\n }, []);\n\n return selectFile;\n};\n","import { useCallback, useRef } from 'react';\n\nexport const useStableCallback = <T extends (...args: never[]) => unknown>(fn: T): T => {\n const fnRef = useRef(fn);\n fnRef.current = fn;\n\n const stable = useCallback((...args: never[]) => fnRef.current(...args), []);\n return stable as T;\n};\n","import { useEffect, useRef } from 'react';\nimport { useStableCallback } from './useStableCallback';\n\nexport const useOnChange = <T>(value: T, callback: (current: T, previous: T) => void) => {\n const callbackRef = useStableCallback(callback);\n const previousRef = useRef(value);\n const isFirstRender = useRef(true);\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n previousRef.current = value;\n return;\n }\n\n if (Object.is(previousRef.current, value)) return;\n\n const previous = previousRef.current;\n previousRef.current = value;\n callbackRef(value, previous);\n }, [callbackRef, value]);\n};\n","import { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useResetState = <T>(source: unknown, initialValue: T) => {\n const [state, setState] = useState(initialValue);\n const [trackedSource, setTrackedSource] = useState(source);\n\n if (trackedSource !== source) {\n setTrackedSource(source);\n setState(initialValue);\n }\n\n return [state, setState] as [T, Dispatch<SetStateAction<T>>];\n};\n","import { useCallback, useRef, useState } from 'react';\nimport { useStableCallback } from './useStableCallback';\n\nexport const useAsyncAction = <TArgs extends unknown[], TResult>(\n action: (...args: TArgs) => Promise<TResult>,\n) => {\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const [data, setData] = useState<TResult | undefined>(undefined);\n const runIdRef = useRef(0);\n const stableAction = useStableCallback(action);\n\n const run = useCallback(\n async (...args: TArgs) => {\n const runId = ++runIdRef.current;\n setIsPending(true);\n setError(null);\n\n try {\n const result = await stableAction(...args);\n if (runId !== runIdRef.current) return result;\n setData(result);\n setIsPending(false);\n return result;\n } catch (caught) {\n if (runId !== runIdRef.current) throw caught;\n setError(caught);\n setIsPending(false);\n throw caught;\n }\n },\n [stableAction],\n );\n\n const reset = useCallback(() => {\n runIdRef.current += 1;\n setIsPending(false);\n setError(null);\n setData(undefined);\n }, []);\n\n return { run, isPending, error, data, reset } as const;\n};\n","import { useCallback, useEffect, useRef } from 'react';\nimport { useStableCallback } from './useStableCallback';\n\nexport const useDebouncedCallback = <TArgs extends unknown[]>(\n callback: (...args: TArgs) => void,\n delayMs: number,\n) => {\n const stableCallback = useStableCallback(callback);\n const timeoutRef = useRef(0);\n\n const cancel = useCallback(() => {\n window.clearTimeout(timeoutRef.current);\n }, []);\n\n const run = useCallback(\n (...args: TArgs) => {\n cancel();\n timeoutRef.current = window.setTimeout(() => {\n stableCallback(...args);\n }, delayMs);\n },\n [cancel, delayMs, stableCallback],\n );\n\n useEffect(() => cancel, [cancel]);\n\n return [run, cancel] as const;\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nexport interface FieldIssue {\n path: Array<string | number>;\n message: string;\n}\n\nexport interface FieldSchema<T> {\n safeParse: (\n data: unknown,\n ) => { success: true; data: T } | { success: false; error: { issues: FieldIssue[] } };\n}\n\nfunction collectErrors<T extends object>(issues: FieldIssue[]) {\n const errors: Partial<Record<keyof T, string>> = {};\n for (const issue of issues) {\n const key = issue.path[0];\n if (typeof key !== 'string' && typeof key !== 'number') continue;\n const field = key as keyof T;\n if (errors[field]) continue;\n errors[field] = issue.message;\n }\n return errors;\n}\n\nfunction isShallowEqual<T extends object>(left: T, right: T) {\n const leftKeys = Object.keys(left) as Array<keyof T>;\n const rightKeys = Object.keys(right) as Array<keyof T>;\n if (leftKeys.length !== rightKeys.length) return false;\n return leftKeys.every((key) => Object.is(left[key], right[key]));\n}\n\nexport const useFields = <T extends object>(initialValues: T, schema?: FieldSchema<T>) => {\n const [values, setValues] = useState(initialValues);\n const [errors, setErrors] = useState<Partial<Record<keyof T, string>>>({});\n\n const setField = useCallback(<K extends keyof T>(key: K, value: T[K]) => {\n setValues((previous) => ({ ...previous, [key]: value }));\n setErrors((previous) => {\n if (!previous[key]) return previous;\n const next = { ...previous };\n delete next[key];\n return next;\n });\n }, []);\n\n const reset = useCallback(() => {\n setValues(initialValues);\n setErrors({});\n }, [initialValues]);\n\n const isDirty = useMemo(() => !isShallowEqual(values, initialValues), [initialValues, values]);\n\n const validate = useCallback(() => {\n if (!schema) {\n setErrors({});\n return { ok: true, values } as const;\n }\n\n const parsed = schema.safeParse(values);\n if (parsed.success) {\n setErrors({});\n return { ok: true, values: parsed.data } as const;\n }\n\n const nextErrors = collectErrors<T>(parsed.error.issues);\n setErrors(nextErrors);\n return { ok: false, errors: nextErrors } as const;\n }, [schema, values]);\n\n const submit = useCallback(\n (onValid: (values: T) => void | Promise<void>) => {\n const result = validate();\n if (!result.ok) return result;\n void onValid(result.values);\n return result;\n },\n [validate],\n );\n\n return { values, setField, setValues, reset, isDirty, errors, validate, submit } as const;\n};\n","import { useCallback, useState } from 'react';\n\nexport interface Identifiable {\n id: string;\n}\n\nexport const useList = <T extends Identifiable>(initialItems: T[] = []) => {\n const [items, setItems] = useState(initialItems);\n\n const insert = useCallback((item: T, index?: number) => {\n setItems((previous) => {\n if (index === undefined || index >= previous.length) return [...previous, item];\n const next = [...previous];\n next.splice(Math.max(0, index), 0, item);\n return next;\n });\n }, []);\n\n const update = useCallback((id: string, patch: Partial<T> | ((item: T) => T)) => {\n setItems((previous) =>\n previous.map((item) => {\n if (item.id !== id) return item;\n return typeof patch === 'function' ? patch(item) : { ...item, ...patch };\n }),\n );\n }, []);\n\n const remove = useCallback((id: string) => {\n setItems((previous) => previous.filter((item) => item.id !== id));\n }, []);\n\n const move = useCallback((fromIndex: number, toIndex: number) => {\n setItems((previous) => {\n if (fromIndex < 0 || toIndex < 0 || fromIndex >= previous.length || toIndex >= previous.length) {\n return previous;\n }\n const next = [...previous];\n const [moved] = next.splice(fromIndex, 1);\n if (!moved) return previous;\n next.splice(toIndex, 0, moved);\n return next;\n });\n }, []);\n\n const replace = useCallback((nextItems: T[]) => {\n setItems(nextItems);\n }, []);\n\n return { items, insert, update, remove, move, replace, setItems } as const;\n};\n","import { useCallback, useState } from 'react';\n\nexport type SelectionMode = 'single' | 'multiple';\n\ninterface UseSelectionOptions {\n mode?: SelectionMode;\n initial?: string[];\n}\n\nexport const useSelection = ({ mode = 'multiple', initial = [] }: UseSelectionOptions = {}) => {\n const [selected, setSelected] = useState<string[]>(initial);\n\n const isSelected = useCallback((id: string) => selected.includes(id), [selected]);\n\n const toggle = useCallback(\n (id: string) => {\n setSelected((previous) => {\n if (mode === 'single') return previous[0] === id ? [] : [id];\n return previous.includes(id) ? previous.filter((item) => item !== id) : [...previous, id];\n });\n },\n [mode],\n );\n\n const selectOnly = useCallback((id: string) => {\n setSelected([id]);\n }, []);\n\n const selectAll = useCallback((ids: string[]) => {\n setSelected(mode === 'single' ? ids.slice(0, 1) : [...new Set(ids)]);\n }, [mode]);\n\n const clear = useCallback(() => {\n setSelected([]);\n }, []);\n\n return { selected, isSelected, toggle, selectOnly, selectAll, clear, setSelected } as const;\n};\n","import { useCallback, useMemo, useSyncExternalStore } from 'react';\n\nconst SEARCH_EVENT = 'usethishook:search';\n\nfunction subscribe(onStoreChange: () => void) {\n window.addEventListener('popstate', onStoreChange);\n window.addEventListener(SEARCH_EVENT, onStoreChange);\n return () => {\n window.removeEventListener('popstate', onStoreChange);\n window.removeEventListener(SEARCH_EVENT, onStoreChange);\n };\n}\n\nfunction getSnapshot() {\n return window.location.search;\n}\n\nfunction getServerSnapshot() {\n return '';\n}\n\nfunction writeSearch(params: URLSearchParams) {\n const query = params.toString();\n const url = `${window.location.pathname}${query ? `?${query}` : ''}${window.location.hash}`;\n window.history.replaceState(window.history.state, '', url);\n window.dispatchEvent(new Event(SEARCH_EVENT));\n}\n\nfunction readParams<T extends Record<string, string>>(defaults: T, search: string): T {\n const params = new URLSearchParams(search);\n const next = { ...defaults };\n for (const key of Object.keys(defaults) as Array<keyof T>) {\n const value = params.get(String(key));\n if (value !== null) next[key] = value as T[keyof T];\n }\n return next;\n}\n\nexport const useSearchState = <T extends Record<string, string>>(defaults: T) => {\n const search = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const values = useMemo(() => readParams(defaults, search), [defaults, search]);\n\n const setValues = useCallback(\n (update: Partial<T> | ((previous: T) => T)) => {\n const current = readParams(defaults, window.location.search);\n const next = typeof update === 'function' ? update(current) : { ...current, ...update };\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(next)) {\n if (value === '') continue;\n params.set(key, value);\n }\n writeSearch(params);\n },\n [defaults],\n );\n\n return [values, setValues] as const;\n};\n","import type { CSSProperties, ReactNode } from 'react';\n\nconst backdropStyle: CSSProperties = {\n position: 'fixed',\n inset: 0,\n zIndex: 40,\n display: 'grid',\n placeItems: 'center',\n background: 'rgba(0, 0, 0, 0.6)',\n};\n\nconst panelStyle: CSSProperties = {\n width: 'min(24rem, calc(100vw - 2rem))',\n borderRadius: '1rem',\n background: '#18181b',\n color: '#fafafa',\n padding: '1.25rem',\n boxShadow: '0 24px 80px rgba(0,0,0,0.45)',\n};\n\ninterface DialogFrameProps {\n title: string;\n children: ReactNode;\n}\n\nexport const DialogFrame = ({ title, children }: DialogFrameProps) => (\n <div style={backdropStyle}>\n <div role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"usethishook-dialog-title\" style={panelStyle}>\n <h2 id=\"usethishook-dialog-title\" style={{ margin: '0 0 0.75rem', fontSize: '1.05rem' }}>\n {title}\n </h2>\n {children}\n </div>\n </div>\n);\n\nconst buttonRowStyle: CSSProperties = { display: 'flex', gap: '0.5rem', marginTop: '1rem' };\n\nexport const dialogButtonRowStyle = buttonRowStyle;\n\nexport const primaryButtonStyle: CSSProperties = {\n border: 'none',\n borderRadius: '999px',\n padding: '0.45rem 0.9rem',\n background: '#7c3aed',\n color: 'white',\n cursor: 'pointer',\n};\n\nexport const ghostButtonStyle: CSSProperties = {\n border: '1px solid #3f3f46',\n borderRadius: '999px',\n padding: '0.45rem 0.9rem',\n background: 'transparent',\n color: 'white',\n cursor: 'pointer',\n};\n","import { type OverlayControls, useOverlay } from './useOverlay';\nimport {\n DialogFrame,\n dialogButtonRowStyle,\n ghostButtonStyle,\n primaryButtonStyle,\n} from './dialogFrame';\n\nexport interface ConfirmOptions {\n title: string;\n message?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n danger?: boolean;\n}\n\nconst ConfirmDialog = ({\n title,\n message,\n confirmLabel = 'Confirm',\n cancelLabel = 'Cancel',\n danger,\n isOpen,\n close,\n}: ConfirmOptions & OverlayControls<boolean>) => {\n if (!isOpen) return null;\n\n return (\n <DialogFrame title={title}>\n {message && <p style={{ margin: 0, color: '#d4d4d8', lineHeight: 1.5 }}>{message}</p>}\n <div style={dialogButtonRowStyle}>\n <button\n type=\"button\"\n style={{ ...primaryButtonStyle, background: danger ? '#e11d48' : primaryButtonStyle.background }}\n onClick={() => close(true)}\n >\n {confirmLabel}\n </button>\n <button type=\"button\" style={ghostButtonStyle} onClick={() => close(false)}>\n {cancelLabel}\n </button>\n </div>\n </DialogFrame>\n );\n};\n\nexport const useConfirm = () => {\n const overlay = useOverlay<ConfirmOptions, boolean>(ConfirmDialog);\n\n const confirm = (options: ConfirmOptions) => overlay.open(options).then((result) => Boolean(result));\n\n return { confirm, render: overlay.render } as const;\n};\n","import { useEffect, useState } from 'react';\nimport { type OverlayControls, useOverlay } from './useOverlay';\nimport {\n DialogFrame,\n dialogButtonRowStyle,\n ghostButtonStyle,\n primaryButtonStyle,\n} from './dialogFrame';\n\nexport interface PromptOptions {\n title: string;\n message?: string;\n label?: string;\n initialValue?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n}\n\nconst PromptDialog = ({\n title,\n message,\n label = 'Value',\n initialValue = '',\n confirmLabel = 'Save',\n cancelLabel = 'Cancel',\n isOpen,\n close,\n}: PromptOptions & OverlayControls<string | null>) => {\n const [value, setValue] = useState(initialValue);\n\n useEffect(() => {\n if (isOpen) setValue(initialValue);\n }, [initialValue, isOpen]);\n\n if (!isOpen) return null;\n\n return (\n <DialogFrame title={title}>\n {message && <p style={{ margin: '0 0 0.75rem', color: '#d4d4d8', lineHeight: 1.5 }}>{message}</p>}\n <label style={{ display: 'grid', gap: '0.35rem', fontSize: '0.85rem' }}>\n {label}\n <input\n value={value}\n onChange={(event) => setValue(event.target.value)}\n style={{\n borderRadius: '0.6rem',\n border: '1px solid #3f3f46',\n background: '#09090b',\n color: 'white',\n padding: '0.5rem 0.7rem',\n }}\n />\n </label>\n <div style={dialogButtonRowStyle}>\n <button type=\"button\" style={primaryButtonStyle} onClick={() => close(value)}>\n {confirmLabel}\n </button>\n <button type=\"button\" style={ghostButtonStyle} onClick={() => close(null)}>\n {cancelLabel}\n </button>\n </div>\n </DialogFrame>\n );\n};\n\nexport const usePrompt = () => {\n const overlay = useOverlay<PromptOptions, string | null>(PromptDialog);\n const prompt = (options: PromptOptions) => overlay.open(options).then((result) => result ?? null);\n\n return { prompt, render: overlay.render } as const;\n};\n","import { type SetStateAction, useCallback, useState } from 'react';\n\nexport interface ControllableStateOptions<T> {\n value?: T;\n defaultValue: T;\n onChange?: (value: T) => void;\n}\n\nexport const useControllableState = <T>({\n value,\n defaultValue,\n onChange,\n}: ControllableStateOptions<T>) => {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const isControlled = value !== undefined;\n const current = isControlled ? value : uncontrolled;\n\n const setValue = useCallback(\n (update: SetStateAction<T>) => {\n const next = typeof update === 'function' ? (update as (previous: T) => T)(current) : update;\n if (!isControlled) setUncontrolled(next);\n onChange?.(next);\n },\n [current, isControlled, onChange],\n );\n\n return [current, setValue] as const;\n};\n","import { useCallback, useEffect } from 'react';\n\nexport type LeaveConfirmer = (message: string) => boolean | Promise<boolean>;\n\nexport const useUnsavedChanges = (isDirty: boolean, confirmLeave?: LeaveConfirmer) => {\n useEffect(() => {\n if (!isDirty) return;\n\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n event.preventDefault();\n event.returnValue = '';\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n }, [isDirty]);\n\n const requestLeave = useCallback(\n async (message = 'Leave without saving?') => {\n if (!isDirty) return true;\n if (confirmLeave) return confirmLeave(message);\n return window.confirm(message);\n },\n [confirmLeave, isDirty],\n );\n\n return { confirmLeave: requestLeave } as const;\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport interface ElementSize {\n width: number;\n height: number;\n}\n\nexport const useElementSize = <T extends HTMLElement = HTMLElement>() => {\n const [node, setNode] = useState<T | null>(null);\n const [size, setSize] = useState<ElementSize>({ width: 0, height: 0 });\n\n const ref = useCallback((element: T | null) => {\n setNode(element);\n }, []);\n\n useEffect(() => {\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n const { width, height } = entry.contentRect;\n setSize({ width, height });\n });\n\n observer.observe(node);\n return () => observer.disconnect();\n }, [node]);\n\n return { ref, width: size.width, height: size.height } as const;\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport interface InViewOptions {\n root?: Element | null;\n rootMargin?: string;\n threshold?: number | number[];\n once?: boolean;\n}\n\nexport const useInView = <T extends Element = Element>(options: InViewOptions = {}) => {\n const { root = null, rootMargin = '0px', threshold = 0, once = false } = options;\n const [node, setNode] = useState<T | null>(null);\n const [isInView, setIsInView] = useState(false);\n\n const ref = useCallback((element: T | null) => {\n setNode(element);\n }, []);\n\n useEffect(() => {\n if (!node || typeof IntersectionObserver === 'undefined') return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (!entry) return;\n\n if (entry.isIntersecting) {\n setIsInView(true);\n if (once) observer.disconnect();\n return;\n }\n\n if (!once) setIsInView(false);\n },\n { root, rootMargin, threshold },\n );\n\n observer.observe(node);\n return () => observer.disconnect();\n }, [node, once, root, rootMargin, threshold]);\n\n return { ref, isInView } as const;\n};\n","import { useCallback, useState } from 'react';\n\nexport interface PaginationOptions {\n total: number;\n pageSize?: number;\n initialPage?: number;\n}\n\nfunction pageCountOf(total: number, pageSize: number) {\n if (pageSize <= 0) return 1;\n return Math.max(1, Math.ceil(Math.max(0, total) / pageSize));\n}\n\nexport const usePagination = ({\n total,\n pageSize: initialPageSize = 10,\n initialPage = 1,\n}: PaginationOptions) => {\n const [pageSize, setPageSizeState] = useState(initialPageSize);\n const pageCount = pageCountOf(total, pageSize);\n const [page, setPageState] = useState(initialPage);\n const safePage = Math.min(page, pageCount);\n\n if (safePage !== page) setPageState(safePage);\n\n const setPage = useCallback(\n (nextPage: number) => {\n setPageState(Math.min(pageCount, Math.max(1, nextPage)));\n },\n [pageCount],\n );\n\n const setPageSize = useCallback((nextSize: number) => {\n setPageSizeState(Math.max(1, nextSize));\n setPageState(1);\n }, []);\n\n const next = useCallback(() => {\n setPage(safePage + 1);\n }, [safePage, setPage]);\n\n const prev = useCallback(() => {\n setPage(safePage - 1);\n }, [safePage, setPage]);\n\n return {\n page: safePage,\n pageSize,\n total,\n pageCount,\n offset: (safePage - 1) * pageSize,\n canNext: safePage < pageCount,\n canPrev: safePage > 1,\n setPage,\n setPageSize,\n next,\n prev,\n } as const;\n};\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "usethishook",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A collection of reusable React hooks for everyday UI, state, and browser APIs.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Senthil Kumar Thangavel",
|
|
8
|
+
"url": "https://senthilkumar.mentorbridge.in"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./dist/index.cjs",
|
|
12
|
+
"module": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"sideEffects": false,
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsup",
|
|
29
|
+
"dev": "tsup --watch",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:watch": "vitest",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"prepublishOnly": "npm run typecheck && npm run test && npm run build",
|
|
34
|
+
"playground": "vite --config playground/vite.config.ts",
|
|
35
|
+
"playground:build": "vite build --config playground/vite.config.ts"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"react": ">=18"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@tailwindcss/vite": "^4.3.3",
|
|
42
|
+
"@testing-library/dom": "^10.4.1",
|
|
43
|
+
"@testing-library/react": "^16.3.0",
|
|
44
|
+
"@types/node": "^22.20.2",
|
|
45
|
+
"@types/react": "^19.1.8",
|
|
46
|
+
"@types/react-dom": "^19.3.0",
|
|
47
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
48
|
+
"jsdom": "^26.1.0",
|
|
49
|
+
"react": "^19.1.0",
|
|
50
|
+
"react-dom": "^19.1.0",
|
|
51
|
+
"tailwindcss": "^4.3.3",
|
|
52
|
+
"tsup": "^8.5.0",
|
|
53
|
+
"typescript": "^5.8.3",
|
|
54
|
+
"vite": "^8.3.0",
|
|
55
|
+
"vitest": "^3.2.4"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"react",
|
|
59
|
+
"hooks",
|
|
60
|
+
"custom-hooks",
|
|
61
|
+
"typescript",
|
|
62
|
+
"usethishook"
|
|
63
|
+
],
|
|
64
|
+
"repository": {
|
|
65
|
+
"type": "git",
|
|
66
|
+
"url": "git+https://github.com/senthilkumar979/usethishook.git"
|
|
67
|
+
},
|
|
68
|
+
"bugs": {
|
|
69
|
+
"url": "https://github.com/senthilkumar979/usethishook/issues"
|
|
70
|
+
},
|
|
71
|
+
"homepage": "https://github.com/senthilkumar979/usethishook#readme"
|
|
72
|
+
}
|