UNPKG

@modern-kit/react

Version:
66 lines (62 loc) 1.89 kB
'use strict'; var React = require('react'); const useArrayState = (initialValue) => { const [value, setValue] = React.useState( typeof initialValue === "function" ? initialValue() : initialValue ); const setArray = React.useMemo(() => { const setState = (v) => setValue(v); setState.push = (...items) => { setValue((prev) => [...prev, ...items]); }; setState.unshift = (...items) => { setValue((prev) => [...items, ...prev]); }; setState.shift = () => { setValue((prev) => prev.slice(1)); }; setState.pop = () => { setValue((prev) => prev.slice(0, -1)); }; setState.splice = (start, deleteCount, ...items) => { setValue((prev) => { const newArray = [...prev]; newArray.splice(start, deleteCount, ...items); return newArray; }); }; setState.insertAt = (index, item) => { setValue((prev) => { const newArray = [...prev]; newArray.splice(index, 0, item); return newArray; }); }; setState.remove = (...indexes) => { setValue((prev) => prev.filter((_, i) => !indexes.includes(i))); }; setState.removeAt = (index) => { setValue((prev) => prev.filter((_, i) => i !== index)); }; setState.removeBy = (predicate) => { setValue((prev) => prev.filter((item, index) => !predicate(item, index))); }; setState.updateAt = (index, item) => { setValue((prev) => { const newArray = [...prev]; newArray[index] = item; return newArray; }); }; setState.updateBy = (iteratee) => { setValue((prev) => prev.map((item, index) => iteratee(item, index))); }; setState.clear = () => { setValue([]); }; return setState; }, []); return [value, setArray]; }; exports.useArrayState = useArrayState; //# sourceMappingURL=index.cjs.map