Initalize
This commit is contained in:
58
node_modules/timeago.js/esm/realtime.js
generated
vendored
Normal file
58
node_modules/timeago.js/esm/realtime.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
import { setTimerId, getTimerId, getDateAttribute } from './utils/dom';
|
||||
import { formatDiff, diffSec, nextInterval } from './utils/date';
|
||||
import { getLocale } from './register';
|
||||
// all realtime timer
|
||||
var TIMER_POOL = {};
|
||||
/**
|
||||
* clear a timer from pool
|
||||
* @param tid
|
||||
*/
|
||||
var clear = function (tid) {
|
||||
clearTimeout(tid);
|
||||
delete TIMER_POOL[tid];
|
||||
};
|
||||
// run with timer(setTimeout)
|
||||
function run(node, date, localeFunc, opts) {
|
||||
// clear the node's exist timer
|
||||
clear(getTimerId(node));
|
||||
var relativeDate = opts.relativeDate, minInterval = opts.minInterval;
|
||||
// get diff seconds
|
||||
var diff = diffSec(date, relativeDate);
|
||||
// render
|
||||
node.innerText = formatDiff(diff, localeFunc);
|
||||
var tid = setTimeout(function () {
|
||||
run(node, date, localeFunc, opts);
|
||||
}, Math.min(Math.max(nextInterval(diff), minInterval || 1) * 1000, 0x7fffffff));
|
||||
// there is no need to save node in object. Just save the key
|
||||
TIMER_POOL[tid] = 0;
|
||||
setTimerId(node, tid);
|
||||
}
|
||||
/**
|
||||
* cancel a timer or all timers
|
||||
* @param node - node hosting the time string
|
||||
*/
|
||||
export function cancel(node) {
|
||||
// cancel one
|
||||
if (node)
|
||||
clear(getTimerId(node));
|
||||
// cancel all
|
||||
// @ts-ignore
|
||||
else
|
||||
Object.keys(TIMER_POOL).forEach(clear);
|
||||
}
|
||||
/**
|
||||
* render a dom realtime
|
||||
* @param nodes
|
||||
* @param locale
|
||||
* @param opts
|
||||
*/
|
||||
export function render(nodes, locale, opts) {
|
||||
// by .length
|
||||
// @ts-ignore
|
||||
var nodeList = nodes.length ? nodes : [nodes];
|
||||
nodeList.forEach(function (node) {
|
||||
run(node, getDateAttribute(node), getLocale(locale), opts || {});
|
||||
});
|
||||
return nodeList;
|
||||
}
|
||||
//# sourceMappingURL=realtime.js.map
|
||||
Reference in New Issue
Block a user