vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 1.35 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("@vexip-ui/config"),s=require("@vexip-ui/utils");let L=1;function _(){return L++}const I=new Map;let S,o;function l(r,a){I.set(r,a),I.size&&!o&&(clearInterval(S),S=setInterval(()=>{o=!0;const e=Date.now();I.forEach(n=>{n.interval&&e-n.updated>n.interval&&(n.timeAgo.value=O(n.datetime,e,n.locale.value,n.wordSpace.value),n.updated=e)})},5e3))}function D(r){I.delete(r),I.size||(clearInterval(S),o=!1)}function O(r,a,e,n){const t=Math.abs(a-r.getTime()),M=a>r.getTime()?e.ago:e.late;let i,u,f=!1;return t<10*s.SECOND_ON_MILLISECONDS?(i=e.justNow,f=!0):t<s.MINUTE_ON_MILLISECONDS?(i=e.second,u=Math.floor(t/s.SECOND_ON_MILLISECONDS)):t<s.HOUR_ON_MILLISECONDS?(i=e.minute,u=Math.floor(t/s.MINUTE_ON_MILLISECONDS)):t<s.DAY_ON_MILLISECONDS?(i=e.hour,u=Math.floor(t/s.HOUR_ON_MILLISECONDS)):t<30*s.DAY_ON_MILLISECONDS?(u=Math.floor(t/s.DAY_ON_MILLISECONDS),u===1?(i=e.yesterday,f=!0):i=e.days):t<365*s.DAY_ON_MILLISECONDS?(u=Math.floor(t/(30*s.DAY_ON_MILLISECONDS)),u===1?(i=e.lastMonth,f=!0):i=e.months):(u=Math.floor(t/365/s.DAY_ON_MILLISECONDS),u===1?(i=e.lastYear,f=!0):i=e.years),f?i:N.makeSentence(`${N.getCountWord(i,u)} ${M}`,n)}exports.computeTimeAgo=O;exports.getId=_;exports.subscribe=l;exports.unsubscribe=D;
//# sourceMappingURL=helper.cjs.map