103 lines
12 KiB
JavaScript
103 lines
12 KiB
JavaScript
/* ngx-moment (c) 2015, 2016 Uri Shaked / MIT Licence */
|
|
import { __decorate } from "tslib";
|
|
import { Pipe, ChangeDetectorRef, PipeTransform, OnDestroy, NgZone } from '@angular/core';
|
|
import * as moment from 'moment';
|
|
var momentConstructor = moment;
|
|
var TimeAgoPipe = /** @class */ (function () {
|
|
function TimeAgoPipe(cdRef, ngZone) {
|
|
this.cdRef = cdRef;
|
|
this.ngZone = ngZone;
|
|
}
|
|
TimeAgoPipe.prototype.format = function (m) {
|
|
return m.from(momentConstructor(), this.lastOmitSuffix);
|
|
};
|
|
TimeAgoPipe.prototype.transform = function (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;
|
|
};
|
|
TimeAgoPipe.prototype.ngOnDestroy = function () {
|
|
this.removeTimer();
|
|
};
|
|
TimeAgoPipe.prototype.createTimer = function () {
|
|
var _this = this;
|
|
if (this.currentTimer) {
|
|
return;
|
|
}
|
|
var momentInstance = momentConstructor(this.lastValue);
|
|
var timeToUpdate = this.getSecondsUntilUpdate(momentInstance) * 1000;
|
|
this.currentTimer = this.ngZone.runOutsideAngular(function () {
|
|
if (typeof window !== 'undefined') {
|
|
return window.setTimeout(function () {
|
|
_this.lastText = _this.formatFn(momentConstructor(_this.lastValue));
|
|
_this.currentTimer = null;
|
|
_this.ngZone.run(function () { return _this.cdRef.markForCheck(); });
|
|
}, timeToUpdate);
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
});
|
|
};
|
|
TimeAgoPipe.prototype.removeTimer = function () {
|
|
if (this.currentTimer) {
|
|
window.clearTimeout(this.currentTimer);
|
|
this.currentTimer = null;
|
|
}
|
|
};
|
|
TimeAgoPipe.prototype.getSecondsUntilUpdate = function (momentInstance) {
|
|
var 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;
|
|
}
|
|
};
|
|
TimeAgoPipe.prototype.hasChanged = function (value, omitSuffix) {
|
|
return (this.getTime(value) !== this.lastTime ||
|
|
this.getLocale(value) !== this.lastLocale ||
|
|
omitSuffix !== this.lastOmitSuffix);
|
|
};
|
|
TimeAgoPipe.prototype.getTime = function (value) {
|
|
if (moment.isDate(value)) {
|
|
return value.getTime();
|
|
}
|
|
else if (moment.isMoment(value)) {
|
|
return value.valueOf();
|
|
}
|
|
else {
|
|
return momentConstructor(value).valueOf();
|
|
}
|
|
};
|
|
TimeAgoPipe.prototype.getLocale = function (value) {
|
|
return moment.isMoment(value) ? value.locale() : moment.locale();
|
|
};
|
|
TimeAgoPipe.ctorParameters = function () { return [
|
|
{ type: ChangeDetectorRef },
|
|
{ type: NgZone }
|
|
]; };
|
|
TimeAgoPipe = __decorate([
|
|
Pipe({ name: 'amTimeAgo', pure: false })
|
|
], TimeAgoPipe);
|
|
return TimeAgoPipe;
|
|
}());
|
|
export { TimeAgoPipe };
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1hZ28ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb21lbnQvIiwic291cmNlcyI6WyJ0aW1lLWFnby5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDs7QUFFeEQsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxJQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUdqQztJQVVFLHFCQUFvQixLQUF3QixFQUFVLE1BQWM7UUFBaEQsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV4RSw0QkFBTSxHQUFOLFVBQU8sQ0FBZ0I7UUFDckIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCwrQkFBUyxHQUFULFVBQ0UsS0FBeUIsRUFDekIsVUFBb0IsRUFDcEIsUUFBdUM7UUFFdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxXQUFX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QUFPLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTywrQkFBUyxHQUFqQixVQUFrQixLQUF5QjtRQUN6QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25FLENBQUM7O2dCQTdGMEIsaUJBQWlCO2dCQUFrQixNQUFNOztJQVZ6RCxXQUFXO1FBRHZCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO09BQzVCLFdBQVcsQ0F3R3ZCO0lBQUQsa0JBQUM7Q0FBQSxBQXhHRCxJQXdHQztTQXhHWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyogbmd4LW1vbWVudCAoYykgMjAxNSwgMjAxNiBVcmkgU2hha2VkIC8gTUlUIExpY2VuY2UgKi9cblxuaW1wb3J0IHsgUGlwZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuY29uc3QgbW9tZW50Q29uc3RydWN0b3IgPSBtb21lbnQ7XG5cbkBQaXBlKHsgbmFtZTogJ2FtVGltZUFnbycsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgVGltZUFnb1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGN1cnJlbnRUaW1lcjogbnVtYmVyIHwgbnVsbDtcblxuICBwcml2YXRlIGxhc3RUaW1lOiBOdW1iZXI7XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBtb21lbnQuTW9tZW50SW5wdXQ7XG4gIHByaXZhdGUgbGFzdE9taXRTdWZmaXg6IGJvb2xlYW47XG4gIHByaXZhdGUgbGFzdExvY2FsZT86IHN0cmluZztcbiAgcHJpdmF0ZSBsYXN0VGV4dDogc3RyaW5nO1xuICBwcml2YXRlIGZvcm1hdEZuOiAobTogbW9tZW50Lk1vbWVudCkgPT4gc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIGZvcm1hdChtOiBtb21lbnQuTW9tZW50KSB7XG4gICAgcmV0dXJuIG0uZnJvbShtb21lbnRDb25zdHJ1Y3RvcigpLCB0aGlzLmxhc3RPbWl0U3VmZml4KTtcbiAgfVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbW9tZW50Lk1vbWVudElucHV0LFxuICAgIG9taXRTdWZmaXg/OiBib29sZWFuLFxuICAgIGZvcm1hdEZuPzogKG06IG1vbWVudC5Nb21lbnQpID0+IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKHZhbHVlLCBvbWl0U3VmZml4KSkge1xuICAgICAgdGhpcy5sYXN0VGltZSA9IHRoaXMuZ2V0VGltZSh2YWx1ZSk7XG4gICAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5sYXN0T21pdFN1ZmZpeCA9IG9taXRTdWZmaXg7XG4gICAgICB0aGlzLmxhc3RMb2NhbGUgPSB0aGlzLmdldExvY2FsZSh2YWx1ZSk7XG4gICAgICB0aGlzLmZvcm1hdEZuID0gZm9ybWF0Rm4gfHwgdGhpcy5mb3JtYXQuYmluZCh0aGlzKTtcbiAgICAgIHRoaXMucmVtb3ZlVGltZXIoKTtcbiAgICAgIHRoaXMuY3JlYXRlVGltZXIoKTtcbiAgICAgIHRoaXMubGFzdFRleHQgPSB0aGlzLmZvcm1hdEZuKG1vbWVudENvbnN0cnVjdG9yKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlVGltZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0VGV4dDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlVGltZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGltZXIoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFRpbWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW9tZW50SW5zdGFuY2UgPSBtb21lbnRDb25zdHJ1Y3Rvcih0aGlzLmxhc3RWYWx1ZSk7XG4gICAgY29uc3QgdGltZVRvVXBkYXRlID0gdGhpcy5nZXRTZWNvbmRzVW50aWxVcGRhdGUobW9tZW50SW5zdGFuY2UpICogMTAwMDtcblxuICAgIHRoaXMuY3VycmVudFRpbWVyID0gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sYXN0VGV4dCA9IHRoaXMuZm9ybWF0Rm4obW9tZW50Q29uc3RydWN0b3IodGhpcy5sYXN0VmFsdWUpKTtcblxuICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgICAgIH0sIHRpbWVUb1VwZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVGltZXIoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFRpbWVyKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuY3VycmVudFRpbWVyKTtcbiAgICAgIHRoaXMuY3VycmVudFRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNlY29uZHNVbnRpbFVwZGF0ZShtb21lbnRJbnN0YW5jZTogbW9tZW50Lk1vbWVudCkge1xuICAgIGNvbnN0IGhvd09sZCA9IE1hdGguYWJzKG1vbWVudENvbnN0cnVjdG9yKCkuZGlmZihtb21lbnRJbnN0YW5jZSwgJ21pbnV0ZScpKTtcbiAgICBpZiAoaG93T2xkIDwgMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChob3dPbGQgPCA2MCkge1xuICAgICAgcmV0dXJuIDMwO1xuICAgIH0gZWxzZSBpZiAoaG93T2xkIDwgMTgwKSB7XG4gICAgICByZXR1cm4gMzAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMzYwMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhc0NoYW5nZWQodmFsdWU6IG1vbWVudC5Nb21lbnRJbnB1dCwgb21pdFN1ZmZpeD86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5nZXRUaW1lKHZhbHVlKSAhPT0gdGhpcy5sYXN0VGltZSB8fFxuICAgICAgdGhpcy5nZXRMb2NhbGUodmFsdWUpICE9PSB0aGlzLmxhc3RMb2NhbGUgfHxcbiAgICAgIG9taXRTdWZmaXggIT09IHRoaXMubGFzdE9taXRTdWZmaXhcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaW1lKHZhbHVlOiBtb21lbnQuTW9tZW50SW5wdXQpOiBudW1iZXIge1xuICAgIGlmIChtb21lbnQuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgICB9IGVsc2UgaWYgKG1vbWVudC5pc01vbWVudCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS52YWx1ZU9mKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtb21lbnRDb25zdHJ1Y3Rvcih2YWx1ZSkudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxlKHZhbHVlOiBtb21lbnQuTW9tZW50SW5wdXQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gbW9tZW50LmlzTW9tZW50KHZhbHVlKSA/IHZhbHVlLmxvY2FsZSgpIDogbW9tZW50LmxvY2FsZSgpO1xuICB9XG59XG4iXX0=
|