react-time-ago
Version:
Localized relative date/time formatting in React
3 lines (2 loc) • 12.9 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types"),require("javascript-time-ago")):"function"==typeof define&&define.amd?define(["react","prop-types","javascript-time-ago"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).ReactTimeAgo=t(e.React,e.PropTypes,e.JavascriptTimeAgo)}(this,(function(e,t,n){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(e),a=r(t),i=r(n),u=["date","verboseDate","tooltip","children"];function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function c(t,n){var r=t.date,a=t.verboseDate,i=t.tooltip,c=t.children,s=l(t,u),p=e.useMemo((function(){return r.toISOString()}),[r]);return o.default.createElement("time",f({ref:n},s,{dateTime:p,title:i?a:void 0}),c)}(c=o.default.forwardRef(c)).propTypes={date:a.default.instanceOf(Date).isRequired,verboseDate:a.default.string,tooltip:a.default.bool.isRequired,children:a.default.string.isRequired};var s=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function p(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(r=e[n],o=t[n],!(r===o||s(r)&&s(o)))return!1;var r,o;return!0}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function m(){return"object"===("undefined"==typeof Intl?"undefined":d(Intl))&&"function"==typeof Intl.DateTimeFormat}function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}function b(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var v=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.cache={}}var t,n,r;return t=e,n=[{key:"get",value:function(){for(var e=this.cache,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];for(var o=0,a=n;o<a.length;o++){var i=a[o];if("object"!==y(e))return;e=e[i]}return e}},{key:"put",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=t.pop(),o=t.pop(),a=this.cache,i=0,u=t;i<u.length;i++){var f=u[i];"object"!==y(a[f])&&(a[f]={}),a=a[f]}return a[o]=r}}],n&&b(t.prototype,n),r&&b(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}(),h=new v,g=m(),w=function(e){return e.toString()};var T=function(e,t){void 0===t&&(t=p);var n=null;function r(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];if(n&&n.lastThis===this&&t(r,n.lastArgs))return n.lastResult;var a=e.apply(this,r);return n={lastResult:a,lastArgs:r,lastThis:this},a}return r.clear=function(){n=null},r}((function(e,t){if(!g)return w;var n=function(e){var t=e.toString();if(O[t])return O[t];return O[t]=function(e){if(m())return Intl.DateTimeFormat.supportedLocalesOf(e)[0]}(e)}(e),r=JSON.stringify(t),o=h.get(String(n),r)||h.put(String(n),r,new Intl.DateTimeFormat(n,t));return function(e){return o.format(e)}})),O={};function S(e){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S(e)}function D(e){return(t=e)instanceof Date||function(e){return"object"===S(e)&&"function"==typeof e.getTime}(t)?e:new Date(e);var t}var j=new v;var x="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};for(var k=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){(function(){var t,n,r,o,a,i;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-a)/1e6},n=process.hrtime,o=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})(),i=1e9*process.uptime(),a=o-i):Date.now?(e.exports=function(){return Date.now()-r},r=Date.now()):(e.exports=function(){return(new Date).getTime()-r},r=(new Date).getTime())}).call(x)})),A="undefined"==typeof window?x:window,R=["moz","webkit"],q="AnimationFrame",I=A["request"+q],M=A["cancel"+q]||A["cancelRequest"+q],P=0;!I&&P<R.length;P++)I=A[R[P]+"Request"+q],M=A[R[P]+"Cancel"+q]||A[R[P]+"CancelRequest"+q];if(!I||!M){var F=0,U=0,E=[];I=function(e){if(0===E.length){var t=k(),n=Math.max(0,16.666666666666668-(t-F));F=n+t,setTimeout((function(){var e=E.slice(0);E.length=0;for(var t=0;t<e.length;t++)if(!e[t].cancelled)try{e[t].callback(F)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(n))}return E.push({handle:++U,callback:e,cancelled:!1}),U},M=function(e){for(var t=0;t<E.length;t++)E[t].handle===e&&(E[t].cancelled=!0)}}var N=function(e){return I.call(A,e)},C=N;function V(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,u=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(u)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return L(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return L(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}N.cancel=function(){M.apply(A,arguments)},N.polyfill=function(e){e||(e=A),e.requestAnimationFrame=I,e.cancelAnimationFrame=M};var J={instances:[],add:function(e){var t=this,n=0===this.instances.length;return z(this.instances,e),n&&this.start(),{stop:function(){B(t.instances,e),0===t.instances.length&&t.stop()},forceUpdate:function(){$(e,t.instances)}}},tick:function(){for(var e=Date.now();;){var t=this.instances[0];if(!(e>=t.nextUpdateTime))break;$(t,this.instances)}},scheduleNextTick:function(){var e=this;this.scheduledTick=C((function(){e.tick(),e.scheduleNextTick()}))},start:function(){this.scheduleNextTick()},stop:function(){C.cancel(this.scheduledTick)}};function $(e,t){!function(e){var t=V(e.getNextValue(),2),n=t[0],r=t[1];e.setValue(n),e.nextUpdateTime=r}(e),B(t,e),z(t,e)}function z(e,t){var n=function(e,t){var n=t.nextUpdateTime;return function(e,t){if(0===e.length)return 0;for(var n,r=0,o=e.length-1;r<=o;){var a=t(e[n=Math.floor((o+r)/2)]);if(0===a)return n;if(a<0){if((r=n+1)>o)return r}else if((o=n-1)<r)return r}}(e,(function(e){return e.nextUpdateTime===n?0:e.nextUpdateTime>n?1:-1}))}(e,t);e.splice(n,0,t)}function B(e,t){var n=e.indexOf(t);e.splice(n,1)}function G(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,u=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(u)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function K(t){var n=t.date,r=t.future,o=t.locale,a=t.locales,u=t.timeStyle,f=t.round,l=t.minTimeLeft,c=t.formatVerboseDate,s=t.verboseDateFormat,p=void 0===s?W:s,d=t.updateInterval,m=t.tick,y=void 0===m||m,b=t.now,v=t.timeOffset,h=void 0===v?0:v,g=t.polyfill,w=e.useMemo((function(){return o&&(a=[o]),a.concat(i.default.getDefaultLocale())}),[o,a]),O=e.useMemo((function(){return function(e,t){var n=t.polyfill,r=String(e)+":"+String(n);return j.get(r)||j.put(r,new i.default(e,{polyfill:n}))}(w,{polyfill:g})}),[w,g]);n=e.useMemo((function(){return D(n)}),[n]);var S=e.useCallback((function(){var e,t=(b||Date.now())-h;if(r&&t>=n.getTime()&&(t=n.getTime(),e=!0),void 0!==l){var o=n.getTime()-1e3*l;t>o&&(t=o,e=!0)}var a=G(O.format(n,u,{getTimeToNextUpdate:!0,now:t,future:r,round:f}),2),i=a[0],c=a[1];return[i,t+(c=e?Q:d||c||6e4)]}),[n,r,u,d,f,l,O,b]),x=e.useRef();x.current=S;var k=G(e.useMemo(S,[]),2),A=k[0],R=k[1],q=G(e.useState(A),2),I=q[0],M=q[1],P=e.useRef();e.useEffect((function(){if(y)return P.current=J.add({getNextValue:function(){return x.current()},setValue:M,nextUpdateTime:R}),function(){return P.current.stop()}}),[y]),e.useEffect((function(){if(P.current)P.current.forceUpdate();else{var e=G(S(),1)[0];M(e)}}),[S]);var F=e.useMemo((function(){return T(w,p)}),[w,p]),U=e.useMemo((function(){return c?c(n):F(n)}),[n,c,F]);return{date:n,formattedDate:I,verboseDate:U}}var Q=31536e9,W={weekday:"long",day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit"},X=a.default.oneOfType,Y=a.default.arrayOf,Z=a.default.string,_=a.default.number,ee=a.default.shape,te=a.default.func,ne=X([ee({minTime:_,formatAs:Z.isRequired}),ee({test:te,formatAs:Z.isRequired}),ee({minTime:_,format:te.isRequired}),ee({test:te,format:te.isRequired})]),re=X([Z,ee({steps:Y(ne).isRequired,labels:X([Z,Y(Z)]).isRequired,round:Z})]),oe=["date","future","timeStyle","round","minTimeLeft","locale","locales","formatVerboseDate","verboseDateFormat","updateInterval","tick","now","timeOffset","polyfill","tooltip","component","container","wrapperComponent","wrapperProps"];function ae(){return ae=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ae.apply(this,arguments)}function ie(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ue(e){var t=e.date,n=e.future,r=e.timeStyle,a=e.round,i=e.minTimeLeft,u=e.locale,f=e.locales,l=void 0===f?[]:f,s=e.formatVerboseDate,p=e.verboseDateFormat,d=e.updateInterval,m=e.tick,y=e.now,b=e.timeOffset,v=e.polyfill,h=e.tooltip,g=void 0===h||h,w=e.component,T=void 0===w?c:w,O=e.container,S=e.wrapperComponent,D=e.wrapperProps,j=ie(e,oe),x=K({date:t,future:n,timeStyle:r,round:a,minTimeLeft:i,locale:u,locales:l,formatVerboseDate:s,verboseDateFormat:p,updateInterval:d,tick:m,now:y,timeOffset:b,polyfill:v}),k=x.date,A=x.verboseDate,R=x.formattedDate,q=o.default.createElement(T,ae({date:k,verboseDate:A,tooltip:g},j),R),I=S||O;return I?o.default.createElement(I,ae({},D,{verboseDate:A}),q):q}return ue.propTypes={date:a.default.oneOfType([a.default.instanceOf(Date),a.default.number]).isRequired,locale:a.default.string,locales:a.default.arrayOf(a.default.string),future:a.default.bool,timeStyle:re,round:a.default.string,minTimeLeft:a.default.number,component:a.default.elementType,tooltip:a.default.bool,formatVerboseDate:a.default.func,verboseDateFormat:a.default.object,updateInterval:a.default.oneOfType([a.default.number,a.default.arrayOf(a.default.shape({threshold:a.default.number,interval:a.default.number.isRequired}))]),tick:a.default.bool,now:a.default.number,timeOffset:a.default.number,polyfill:a.default.bool,wrapperComponent:a.default.elementType,wrapperProps:a.default.object},ue=o.default.memo(ue)}));
//# sourceMappingURL=react-time-ago.min.js.map