mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 04:40:32 +00:00
36 lines
808 B
JavaScript
36 lines
808 B
JavaScript
import {useState} from 'react';
|
|
|
|
const useStackableState = (initialState = []) => {
|
|
const [stackableState, setStackableState] = useState(initialState);
|
|
|
|
const indexState = (state) => stackableState.indexOf(state);
|
|
const hasState = (state) => indexState(state) !== -1;
|
|
|
|
const removeState = (state) => {
|
|
if (this.hasState(state)) {
|
|
const index = indexState(state);
|
|
const mutableState = [...stackableState];
|
|
mutableState.splice(index, 1);
|
|
|
|
setStackableState(mutableState);
|
|
}
|
|
};
|
|
const setState = (state) => {
|
|
if (!hasState(state)) {
|
|
setStackableState([
|
|
...stackableState,
|
|
state,
|
|
]);
|
|
}
|
|
};
|
|
|
|
return {
|
|
state: stackableState,
|
|
removeState,
|
|
indexState,
|
|
hasState,
|
|
setState,
|
|
};
|
|
};
|
|
|
|
export default useStackableState; |