UNPKG

react-terminal-viewer

Version:

<h1 align="center"> react-terminal-viewer </h1>

47 lines 1.44 kB
import { useEffect, useRef } from 'react'; var splitContent = function splitContent(content) { var result = []; var start = 0; var len = content.length; var offset = 100000; while (start < len) { result.push(content.substr(start, offset)); start += offset; } return result; }; var batchProcess = function batchProcess(array, callback) { var timer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1; var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; var timerId = timer; if (index > array.length) { return timerId; } var string = array[index]; timerId = setTimeout(function () { callback(string); timerId = batchProcess(array, callback, timer, index + 1); }, array.length >= 2 ? 300 : 0); return timerId; }; var useBatchProcess = function useBatchProcess(callback, incrementalString) { var callbackRef = useRef(callback); var timerRef = useRef(-1); useEffect(function () { callbackRef.current = callback; }); useEffect(function () { clearTimeout(timerRef.current); var array = splitContent(incrementalString); timerRef.current = batchProcess(array, callbackRef.current); }, [incrementalString]); useEffect(function () { return function () { clearTimeout(timerRef.current); }; }, []); return function () { return clearTimeout(timerRef.current); }; }; export default useBatchProcess;