Files
flights_web_raw/apps/angular/node_modules/ngx-moment/esm2015/time-ago.pipe.js
T

99 lines
11 KiB
JavaScript

/* ngx-moment (c) 2015, 2016 Uri Shaked / MIT Licence */
import { Pipe, ChangeDetectorRef, NgZone } from '@angular/core';
import * as moment from 'moment';
const momentConstructor = moment;
export class TimeAgoPipe {
constructor(cdRef, ngZone) {
this.cdRef = cdRef;
this.ngZone = ngZone;
}
format(m) {
return m.from(momentConstructor(), this.lastOmitSuffix);
}
transform(value, omitSuffix, formatFn) {
if (this.hasChanged(value, omitSuffix)) {
this.lastTime = this.getTime(value);
this.lastValue = value;
this.lastOmitSuffix = omitSuffix;
this.lastLocale = this.getLocale(value);
this.formatFn = formatFn || this.format.bind(this);
this.removeTimer();
this.createTimer();
this.lastText = this.formatFn(momentConstructor(value));
}
else {
this.createTimer();
}
return this.lastText;
}
ngOnDestroy() {
this.removeTimer();
}
createTimer() {
if (this.currentTimer) {
return;
}
const momentInstance = momentConstructor(this.lastValue);
const timeToUpdate = this.getSecondsUntilUpdate(momentInstance) * 1000;
this.currentTimer = this.ngZone.runOutsideAngular(() => {
if (typeof window !== 'undefined') {
return window.setTimeout(() => {
this.lastText = this.formatFn(momentConstructor(this.lastValue));
this.currentTimer = null;
this.ngZone.run(() => this.cdRef.markForCheck());
}, timeToUpdate);
}
else {
return null;
}
});
}
removeTimer() {
if (this.currentTimer) {
window.clearTimeout(this.currentTimer);
this.currentTimer = null;
}
}
getSecondsUntilUpdate(momentInstance) {
const howOld = Math.abs(momentConstructor().diff(momentInstance, 'minute'));
if (howOld < 1) {
return 1;
}
else if (howOld < 60) {
return 30;
}
else if (howOld < 180) {
return 300;
}
else {
return 3600;
}
}
hasChanged(value, omitSuffix) {
return (this.getTime(value) !== this.lastTime ||
this.getLocale(value) !== this.lastLocale ||
omitSuffix !== this.lastOmitSuffix);
}
getTime(value) {
if (moment.isDate(value)) {
return value.getTime();
}
else if (moment.isMoment(value)) {
return value.valueOf();
}
else {
return momentConstructor(value).valueOf();
}
}
getLocale(value) {
return moment.isMoment(value) ? value.locale() : moment.locale();
}
}
TimeAgoPipe.decorators = [
{ type: Pipe, args: [{ name: 'amTimeAgo', pure: false },] }
];
TimeAgoPipe.ctorParameters = () => [
{ type: ChangeDetectorRef },
{ type: NgZone }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1hZ28ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90aW1lLWFnby5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDtBQUV4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUE0QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFakMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFHakMsTUFBTSxPQUFPLFdBQVc7SUFVdEIsWUFBb0IsS0FBd0IsRUFBVSxNQUFjO1FBQWhELFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFeEUsTUFBTSxDQUFDLENBQWdCO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUNQLEtBQXlCLEVBQ3pCLFVBQW9CLEVBQ3BCLFFBQXVDO1FBRXZDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFB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QyxPQUFPLEVBQUUsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsS0FBeUI7UUFDekMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuRSxDQUFDOzs7WUF4R0YsSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFOzs7WUFMekIsaUJBQWlCO1lBQTRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBuZ3gtbW9tZW50IChjKSAyMDE1LCAyMDE2IFVyaSBTaGFrZWQgLyBNSVQgTGljZW5jZSAqL1xuXG5pbXBvcnQgeyBQaXBlLCBDaGFuZ2VEZXRlY3RvclJlZiwgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBtb21lbnRDb25zdHJ1Y3RvciA9IG1vbWVudDtcblxuQFBpcGUoeyBuYW1lOiAnYW1UaW1lQWdvJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBUaW1lQWdvUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY3VycmVudFRpbWVyOiBudW1iZXIgfCBudWxsO1xuXG4gIHByaXZhdGUgbGFzdFRpbWU6IE51bWJlcjtcbiAgcHJpdmF0ZSBsYXN0VmFsdWU6IG1vbWVudC5Nb21lbnRJbnB1dDtcbiAgcHJpdmF0ZSBsYXN0T21pdFN1ZmZpeDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsYXN0TG9jYWxlPzogc3RyaW5nO1xuICBwcml2YXRlIGxhc3RUZXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgZm9ybWF0Rm46IChtOiBtb21lbnQuTW9tZW50KSA9PiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgZm9ybWF0KG06IG1vbWVudC5Nb21lbnQpIHtcbiAgICByZXR1cm4gbS5mcm9tKG1vbWVudENvbnN0cnVjdG9yKCksIHRoaXMubGFzdE9taXRTdWZmaXgpO1xuICB9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBtb21lbnQuTW9tZW50SW5wdXQsXG4gICAgb21pdFN1ZmZpeD86IGJvb2xlYW4sXG4gICAgZm9ybWF0Rm4/OiAobTogbW9tZW50Lk1vbWVudCkgPT4gc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQodmFsdWUsIG9taXRTdWZmaXgpKSB7XG4gICAgICB0aGlzLmxhc3RUaW1lID0gdGhpcy5nZXRUaW1lKHZhbHVlKTtcbiAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmxhc3RPbWl0U3VmZml4ID0gb21pdFN1ZmZpeDtcbiAgICAgIHRoaXMubGFzdExvY2FsZSA9IHRoaXMuZ2V0TG9jYWxlKHZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybWF0Rm4gPSBmb3JtYXRGbiB8fCB0aGlzLmZvcm1hdC5iaW5kKHRoaXMpO1xuICAgICAgdGhpcy5yZW1vdmVUaW1lcigpO1xuICAgICAgdGhpcy5jcmVhdGVUaW1lcigpO1xuICAgICAgdGhpcy5sYXN0VGV4dCA9IHRoaXMuZm9ybWF0Rm4obW9tZW50Q29uc3RydWN0b3IodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVUaW1lcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RUZXh0O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVUaW1lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUaW1lcigpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VGltZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb21lbnRJbnN0YW5jZSA9IG1vbWVudENvbnN0cnVjdG9yKHRoaXMubGFzdFZhbHVlKTtcbiAgICBjb25zdCB0aW1lVG9VcGRhdGUgPSB0aGlzLmdldFNlY29uZHNVbnRpbFVwZGF0ZShtb21lbnRJbnN0YW5jZSkgKiAxMDAwO1xuXG4gICAgdGhpcy5jdXJyZW50VGltZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RUZXh0ID0gdGhpcy5mb3JtYXRGbihtb21lbnRDb25zdHJ1Y3Rvcih0aGlzLmxhc3RWYWx1ZSkpO1xuXG4gICAgICAgICAgdGhpcy5jdXJyZW50VGltZXIgPSBudWxsO1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgICAgICAgfSwgdGltZVRvVXBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVUaW1lcigpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5jdXJyZW50VGltZXIpO1xuICAgICAgdGhpcy5jdXJyZW50VGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vjb25kc1VudGlsVXBkYXRlKG1vbWVudEluc3RhbmNlOiBtb21lbnQuTW9tZW50KSB7XG4gICAgY29uc3QgaG93T2xkID0gTWF0aC5hYnMobW9tZW50Q29uc3RydWN0b3IoKS5kaWZmKG1vbWVudEluc3RhbmNlLCAnbWludXRlJykpO1xuICAgIGlmIChob3dPbGQgPCAxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGhvd09sZCA8IDYwKSB7XG4gICAgICByZXR1cm4gMzA7XG4gICAgfSBlbHNlIGlmIChob3dPbGQgPCAxODApIHtcbiAgICAgIHJldHVybiAzMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAzNjAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzQ2hhbmdlZCh2YWx1ZTogbW9tZW50Lk1vbWVudElucHV0LCBvbWl0U3VmZml4PzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmdldFRpbWUodmFsdWUpICE9PSB0aGlzLmxhc3RUaW1lIHx8XG4gICAgICB0aGlzLmdldExvY2FsZSh2YWx1ZSkgIT09IHRoaXMubGFzdExvY2FsZSB8fFxuICAgICAgb21pdFN1ZmZpeCAhPT0gdGhpcy5sYXN0T21pdFN1ZmZpeFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFRpbWUodmFsdWU6IG1vbWVudC5Nb21lbnRJbnB1dCk6IG51bWJlciB7XG4gICAgaWYgKG1vbWVudC5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICAgIH0gZWxzZSBpZiAobW9tZW50LmlzTW9tZW50KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlT2YoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1vbWVudENvbnN0cnVjdG9yKHZhbHVlKS52YWx1ZU9mKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbGUodmFsdWU6IG1vbWVudC5Nb21lbnRJbnB1dCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiBtb21lbnQuaXNNb21lbnQodmFsdWUpID8gdmFsdWUubG9jYWxlKCkgOiBtb21lbnQubG9jYWxlKCk7XG4gIH1cbn1cbiJdfQ==