mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-28 03:10:55 +00:00
38 lines
908 B
JavaScript
38 lines
908 B
JavaScript
'use client';
|
|
import { useState } from 'react';
|
|
|
|
function useQueue({
|
|
initialValues = [],
|
|
limit
|
|
}) {
|
|
const [state, setState] = useState({
|
|
state: initialValues.slice(0, limit),
|
|
queue: initialValues.slice(limit)
|
|
});
|
|
const add = (...items) => setState((current) => {
|
|
const results = [...current.state, ...current.queue, ...items];
|
|
return {
|
|
state: results.slice(0, limit),
|
|
queue: results.slice(limit)
|
|
};
|
|
});
|
|
const update = (fn) => setState((current) => {
|
|
const results = fn([...current.state, ...current.queue]);
|
|
return {
|
|
state: results.slice(0, limit),
|
|
queue: results.slice(limit)
|
|
};
|
|
});
|
|
const cleanQueue = () => setState((current) => ({ state: current.state, queue: [] }));
|
|
return {
|
|
state: state.state,
|
|
queue: state.queue,
|
|
add,
|
|
update,
|
|
cleanQueue
|
|
};
|
|
}
|
|
|
|
export { useQueue };
|
|
//# sourceMappingURL=use-queue.mjs.map
|