UNPKG

use-silly-hooks

Version:

A collection of custom React hooks to simplify state management in your applications. 🚀

145 lines (141 loc) • 4.6 kB
// src/hooks/use-boolean.tsx import { useState, useCallback } from "react"; var useBoolean = (initialValue = false) => { const [value, setValue] = useState(initialValue); const setTrue = useCallback(() => setValue(true), []); const setFalse = useCallback(() => setValue(false), []); const toggle = useCallback(() => setValue((prev) => !prev), []); const reset = useCallback(() => setValue(initialValue), [initialValue]); return [value, setValue, setTrue, setFalse, toggle, reset]; }; // src/hooks/use-string.tsx import { useState as useState2, useCallback as useCallback2 } from "react"; var useString = (initialValue = "") => { const [value, setValue] = useState2(initialValue); const transform = useCallback2((type) => { switch (type) { case "lowercase": setValue((prev) => prev.toLowerCase()); break; case "uppercase": setValue((prev) => prev.toUpperCase()); break; case "capitalize": setValue((prev) => prev.charAt(0).toUpperCase() + prev.slice(1)); break; case "pascal-case": setValue( (prev) => prev.split(/[-_\s]+/).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("") ); break; case "camel-case": setValue( (prev) => prev.split(/[-_\s]+/).map((word, index) => index === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1)).join("") ); break; case "kebab-case": setValue((prev) => prev.toLowerCase().replace(/[\s_]+/g, "-")); break; case "snake-case": setValue((prev) => prev.toLowerCase().replace(/[\s-]+/g, "_")); break; default: break; } }, []); const reset = useCallback2(() => { setValue(initialValue); }, [initialValue]); return [value, setValue, transform, reset]; }; // src/hooks/use-number.tsx import { useState as useState3, useCallback as useCallback3 } from "react"; var useNumber = (initialValue = 0) => { const [value, setValue] = useState3(initialValue); const increment = useCallback3((step = 1) => { setValue((prev) => prev + step); }, []); const decrement = useCallback3((step = 1) => { setValue((prev) => prev - step); }, []); const multiply = useCallback3((factor) => { setValue((prev) => prev * factor); }, []); const divide = useCallback3((divisor) => { if (divisor === 0) return; setValue((prev) => prev / divisor); }, []); const reset = useCallback3(() => { setValue(initialValue); }, [initialValue]); const setMin = useCallback3((min) => { setValue((prev) => Math.max(prev, min)); }, []); const setMax = useCallback3((max) => { setValue((prev) => Math.min(prev, max)); }, []); return [value, setValue, increment, decrement, multiply, divide, reset, setMin, setMax]; }; // src/hooks/use-array.tsx import { useState as useState4, useCallback as useCallback4 } from "react"; var useArray = (initialValue = []) => { const [value, setValue] = useState4(initialValue); const push = useCallback4((item) => { setValue((prev) => [...prev, item]); }, []); const pop = useCallback4(() => { setValue((prev) => prev.slice(0, -1)); }, []); const shift = useCallback4(() => { setValue((prev) => prev.slice(1)); }, []); const unshift = useCallback4((item) => { setValue((prev) => [item, ...prev]); }, []); const clear = useCallback4(() => { setValue([]); }, []); const reset = useCallback4(() => { setValue(initialValue); }, [initialValue]); return [value, setValue, push, pop, shift, unshift, clear, reset]; }; // src/hooks/use-object.tsx import { useState as useState5, useCallback as useCallback5 } from "react"; var useObject = (initialValue) => { const [value, setValue] = useState5(initialValue); const setProperty = useCallback5((key, newValue) => { setValue((prev) => ({ ...prev, [key]: newValue })); }, []); const removeProperty = useCallback5((key) => { setValue((prev) => { const newValue = { ...prev }; delete newValue[key]; return newValue; }); }, []); const clear = useCallback5(() => { setValue({}); }, []); const reset = useCallback5(() => { setValue(initialValue); }, [initialValue]); const merge = useCallback5((newObject) => { setValue((prev) => ({ ...prev, ...newObject })); }, []); return [value, setValue, setProperty, removeProperty, clear, reset, merge]; }; export { useArray, useBoolean, useNumber, useObject, useString }; //# sourceMappingURL=index.js.map