"use strict"; const React = require("react"); const timm = require("timm"); module.exports = function useIndexedState(initialState = []) { let [ state, setState ] = React.useState(initialState); function setIndexedState(index, value) { setState((oldArray) => { let evaluatedValue = (typeof value === "function") ? value(oldArray[index]) : value; return timm.replaceAt(oldArray, index, evaluatedValue); }); } function resetState() { setState((oldArray) => { return oldArray.map(() => undefined); }); } return [ state, setIndexedState, resetState ]; };