@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
43 lines (39 loc) • 1.12 kB
JavaScript
"use client";
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
const require_effect = require('../../utils/effect.cjs');
const require_hooks_use_boolean_index = require('../use-boolean/index.cjs');
let react = require("react");
react = require_rolldown_runtime.__toESM(react);
//#region src/hooks/use-processing/index.ts
/**
* `useProcessing` is a custom hook for handling processing states.
*
* @see https://yamada-ui.com/docs/hooks/use-processing
*/
const useProcessing = (init) => {
const [loading, { off, on }] = require_hooks_use_boolean_index.useBoolean(init);
const countRef = (0, react.useRef)(0);
const start = (0, react.useCallback)(() => {
countRef.current += 1;
on();
}, [on]);
const finish = (0, react.useCallback)(() => {
countRef.current -= 1;
if (countRef.current <= 0) off();
}, [off]);
require_effect.useUnmountEffect(() => {
countRef.current = 0;
});
return (0, react.useMemo)(() => ({
finish,
loading,
start
}), [
finish,
loading,
start
]);
};
//#endregion
exports.useProcessing = useProcessing;
//# sourceMappingURL=index.cjs.map