react-terminal-viewer
Version:
<h1 align="center"> react-terminal-viewer </h1>
47 lines • 1.44 kB
JavaScript
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;